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
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
[codesyntax lang=”cpp”]
// 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 DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; void setup() { Serial.begin(9600); // Initialize device. dht.begin(); Serial.println("DHTxx Unified Sensor Example"); // Print temperature sensor details. sensor_t sensor; dht.temperature().getSensor(&sensor); // Set delay between sensor readings based on sensor details. delayMS = sensor.min_delay / 1000; } void loop() { // Delay between measurements. delay(delayMS); // Get temperature event and print its value. sensors_event_t event; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println("Error reading temperature!"); } else { Serial.print("Temperature: "); Serial.print(event.temperature); Serial.println(" *C"); } // Get humidity event and print its value. dht.humidity().getEvent(&event); if (isnan(event.relative_humidity)) { Serial.println("Error reading humidity!"); } else { Serial.print("Humidity: "); Serial.print(event.relative_humidity); Serial.println("%"); } }
[/codesyntax]
Flashing LED example
[codesyntax lang=”cpp”]
#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); LEDoff(i+1); } } void loop() { for(uint8_t i=1;i < 5; i++) { LEDon(i);//turn on LED i delay(500); 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); }
[/codesyntax]
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
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
Summary
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.