A look at the Open smart rich shield

The first shield we will look at is the OPEN-SMART Rich Shield, this is a very useful shield which is ideal for beginners wishing to learn about the Arduino.

Lets look at some images of this shield

open smart rich shield back
open smart rich shield front

First of all we will look at the various features and components of this shield, you can probably see these in the images above

The shield has 2 buttons, 1 potentiometer, 1 NTC thermistor, 1 Light Dependent resistor, 4 LEDs of various colors (Yellow, Blue, Green and Red), 1 IR receiver, 1 buzzer, 1 DHT11 tempertaure and humidity module, 1 4 digit 7 segment display which is controlled by a TM1637 and a 24C02 EEPROM which is on the bottom of the shield

There are also I2C connectors and an RS232 connector for connecting external devices such as an I2C temperature sensor which results could then be displayed on the 7 segment display

These features make this ideal for learning without having to use breadboards, wires and external components.

Lets look at a couple of code examples for this shield

DHT11 Example

// Depends on the following Arduino libraries:
// - Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN            12         // Pin which is connected to the DHT sensor.
#define DHTTYPE           DHT11     // DHT 11 
uint32_t delayMS;
void setup() 
  // Initialize device.
  Serial.println("DHTxx Unified Sensor Example");
  // Print temperature sensor details.
  sensor_t sensor;
  // Set delay between sensor readings based on sensor details.
  delayMS = sensor.min_delay / 1000;
void loop() 
  // Delay between measurements.
  // Get temperature event and print its value.
  sensors_event_t event;  
  if (isnan(event.temperature)) 
    Serial.println("Error reading temperature!");
    Serial.print("Temperature: ");
    Serial.println(" *C");
  // Get humidity event and print its value.
  if (isnan(event.relative_humidity)) 
    Serial.println("Error reading humidity!");
    Serial.print("Humidity: ");

Flashing LED example

#define LED1 7
#define LED2 6
#define LED3 5
#define LED4 4
uint8_t led[4];
void setup() 
  led[0] = LED1;
  led[1] = LED2;
  led[2] = LED3;
  led[3] = LED4;
  for(unsigned int i=0; i < 4; i++)
        pinMode(led[i], OUTPUT);
void loop() 
  for(uint8_t i=1;i < 5; i++)
    LEDon(i);//turn on LED i
    LEDoff(i);//turn off it.
void LEDon(uint8_t num)//num = 1, 2, 3, 4
 if((num > 0) && (num < 5))
digitalWrite(led[num-1], HIGH);
void LEDoff(uint8_t num)//num = 1, 2, 3, 4
 if((num > 0) && (num < 5))
   digitalWrite(led[num-1], LOW);

We have several other examples on our github link below, including a library which was written for the board which also includes several examples and also there is a schematic of the board

Github link

Lets look at the price of the shield, we use Aliexpress to buy our parts. There are 2 options, the first is just the shield the other also includes an IR remote

Starter kit Rich Shield with Infrared Receiver LED Buzzer Button DHT11 Light Sensor Temperature Sensor Module for Arduino UNO R3 – $4.99

Rich Shield + IR Remote with Infrared Receiver LED Buzzer Button Light Sensor Temperature Sensor 24C02 EEPROM for Arduino UNO R3 – $5.66


There are a couple of shields that are suited for beginners which we will look at on this site but in my opinion this is the best one out there, the fact you can get one of these for under $5 is a steal.