Vorstellung – Seeedstudio – „Grove Beginner Kit for Arduino“

Von der Firma Seeedstudio habe ich ein Angebot erhalten das „Grove Beginner Kit for Arduino“ kostenfrei zu testen. Dieses habe ich selbstverständlich freudig angenommen und möchte dir in diesem Beitrag das Kit vorstellen.

Seeedstudio - Grove Beginner Kit for Arduino
Seeedstudio – Grove Beginner Kit for Arduino

Bezug

Das „Grove Beginner Kit for Arduino“ kannst du im offiziellen Shop von Seeedstudio für 19,90$ beziehen (ca. 16,92€ stand 30.07.2020). Zu diesem Preis kommen noch die Versandkosten nach Deutschland hinzu und diese sind je nach verwendeten Dienst sehr teuer. Ich habe das Kit mit DHL Express bestellt und somit 27,72$ für den Versand bezahlt.

Ansonsten schwanken die Versandkosten je nach Anbieter.

Seeedstudio Shop - Versandkosten nach Deutschland
Seeedstudio Shop – Versandkosten nach Deutschland

Komischerweise sind die Versandkosten für dieses Board nun auf 28,25$ gestiegen.

Dokumentation von Seeedstudio

Im Shop von Seeedstudio findet man eine englischsprachige Dokumentation „Grove Beginner Kit for Arduino“ welche sehr ausführlich ist. In diesem Adobe PDF Dokument ist sind die im Kit enthaltenen Sensoren & Aktoren verlinkt und mit einfachen Beispielen hinterlegt.

Unboxing

Die Box ist aus bedruckter Pappe und an 3 Stellen sicher verklebt. Wenn man den Deckel öffnet so erblickt man sogleich das Board mit den Sensoren & Aktoren welche den Microcontroller umfassen. Das USB Datenkabel ist in der rechten Seite welche mit „X1 Micro USB Cable inside“ beschriftet ist, verpackt.  In der linken „Tasche“ im Karton findest du 6 Grove Kabel um due Sensoren an den Microcontroller anzuschließen.

Die Grove Verbindungskabelabel benötigst du nur wenn die Sensoren & Aktoren von der Platine gelöst wurden.

Der Karton hat vorne eine kleine, halbrunde Aussparung und somit kann das Board während der Programmierung im Karton verbleiben.

Leider ist auch bei diesem Set das mitgelieferte USB Kabel sehr kurz geraten.
Ich würde empfehlen ein 1m langes Micro USB Kabel zu erwerben und zu verwenden.

Aufbau & Inhalt des „Grove Beginner Kit for Arduino“

Das Kit enthält einen Microcontroller im Format eines Arduino UNO jedoch mit zusätzlichen „Grove – Schnittstellen“. Der Microcontroller kommt mit einem ATMEL M328PU-CN Chip daher.

Microcontroller "ATMEL M328PU"
Microcontroller „ATMEL M328PU“

Der ATMEL M328PU hat folgende technische Daten:

Produktpalette ATMega-Mikrocontroller
MCU Familie AVR ATmega
MCU-Baureihe ATmega328
Datenbus-Weite 8bit
ADC-Auflösung 10bit
CPU Geschwindigkeit 20 MHz
Versorgungsspannung  
min 1.8V
max 5.5V
Schnittstellen I2C, SPI, UART
Anzahl der Timer/Zähler 3
Anzahl der ADC-Kanäle 6
Speicher  
SRAM 2kB
EEPROM 1kB

Noch mehr Informationen zu dem Chip findest du im Datenblatt unter http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf

Im Kit sind neben dem genannten Microcontroller  folgende Sensoren  & Aktoren enthalten:

  • Grove – 5mm LED Shield,
  • Grove – Piezo Buzzer Shield,
  • Grove – 0,96″ OLED Display Shield,
  • Grove – Button Shield,
  • Grove – Drehpotentiometer Shield,
  • Grove – Lichtintensitätssensor Shield,
  • Grove – Geräuschdetektor Shield,
  • Grove – DHT11, Temperatur & rel. Luftfeuchtigkeitssensor Shield,
  • Grove – Luftdrucksensor Shield,
  • Grove – 3 Achsen Lagesensor Shield

Auf der Wiki Seite https://wiki.seeedstudio.com/ findest du zu jedem Sensor & Aktor ein sehr ausführliches Beispiel von Seeedstudio.

Aufbau des Microcontrollers Seeeduino Lotus

Dem Kit liegt der Microcontroller Seeeduino Lotus bei, welcher wie bereits erwähnt den Chip ATMEL M328PU hat.

Seeeduino Lotus
Seeeduino Lotus

Der Microcontroller kommt mit 12 vormontierten Grove Schnittstellen daher wobei davon

  • 6 digitale (D2, D3, D4, D5, D6, D7),
  • 3 analoge (A0, A2, A6),
  • 2 I2C, sowie
  • 1 UART 

verbunden sind.

Ansonsten hat der Microcontroller den gleichen Formfaktor wie der Arduino UNO und somit kann man auf diesen Shields wie nachfolgend dargestellt stecken und programmieren.

 

Den Seeeduino Lotus kannst du auch separat im Shop von Seeedstudio für 17,5$ bestellen.

Aufbau der Schaltungen

Die Sensoren & Aktoren sind auf einer Platine mit dem Microcontroller verbunden. Du kannst diese Shields jedoch auch trennen und somit einzeln mithilfe der 6 mitgelieferten Grove Kabel an den Microcontroller anstecken.

In diesem Beitrag belasse ich jedoch diese Module an dem Board denn ein großer Vorteil ist dabei das diese Module nicht „wild auf dem Schreibtisch herumfliegen“. In einigen Blogbeiträgen hatte ich zumeist das Problem das die Kabel etwas zu starr sind und somit die Platzierung der Module nur mit Hilfe einiger Tricks möglich war. Einer dieser Tricks ist zbsp. die Verwendung von UHU patafix. Diese Klebepads lassen sich Rückstandsfrei von Platinen und Schreibtischoberflächen lösen und beliebig wiederverwenden.

Erster betrieb am Computer

Wenn du das Board an den Computer (oder über eine Powerbank, USB Ladegerät) anschließt dann wird bereits ein Programm ausgeführt. Es wird die Lichtintensität gemessen und auf dem 0,96″ OLED Display als Zahl sowie in einem Kreisdiagramm angezeigt. Des Weiteren wird die rote 5mm LED blinken wenn du den Taster betätigst.

 

Programmieren

Das Standardprogramm zeigt schon einpaar Funktionen jedoch kann man natürlich weitaus mehr mit diesem Board machen und genau darum soll es sich in diesem Abschnitt drehen. Hier möchte ich dir nun zeigen wie du die verschiedenen Sensoren & Aktoren mit der Arduino IDE programmierst.

Die meisten der vorhandenen Sensoren & Aktoren habe ich bereits in separaten Beiträgen auf diesem Blog behandelt jedoch möchte ich dir hier nun einpaar kleine Projekte zeigen welche du ganz einfach nachbauen bzw. programmieren kannst.

Als erstes Beispiel wollte ich gerne ein Beispiel nehmen in welchem die Werte der 3 Umweltsensoren auf dem OLED Display angezeigt werden. Jedoch verfügt der Seeeduino Lotus nur über 32KB Speicher und somit ist dieses sehr eingegrenzt und schon mit der Bibliothek für das Display mehr als 84% belegt.

Speicherbelegung - Sketch mit U8g2 Bibliothek
Speicherbelegung – Sketch mit U8g2 Bibliothek

Man beachte die letzte Zeile in der Konsolenausgabe! Dieses ist nicht einfach nur eine Warnung, in einem kleinen Test hat sich gezeigt das der Microcontroller ausfällt bzw. neustartet. 

auslesen der Umweltsensoren

Zunächst wollen wir die Umweltsensoren auslesen und die Werte auf dem 0,96″ OLED Display anzeigen lassen.

Zu diesen Sensoren zählen:

  • der analoge Lichtintensitätssensor,
  • der DHT11 Sensor (Temperatur, rel. Luftfeuchtigkeit)

0,96″ OLED Display

Das 0,96″ OLED Display ist per I2C an den Seeeduino Lotus angeschlossen, d.h. wir benötigen zunächst die Adresse von dem Display. Diese finden wir leider nicht in dem entsprechenden Wiki Artikel Grove – 0,96″ OLED Display jedoch können wir den I2C Scanner von Arduino Playground verwenden. In der Ausgabe des Sketches findest du dann 3 Adressen eine davon ist das Display (0x03c).

Ausgabe des I2C Scanners auf dem seriellen Monitor der Arduino IDE
Ausgabe des I2C Scanners auf dem seriellen Monitor der Arduino IDE

Bibliothek für den betrieb des Displays

Für den Betrieb des Displays benötigst du die Bibliothek u8g2 diese kannst du bequem über den Bibliotheksverwalter der Arduino IDE installieren.

Bibliothek u8g2 im Bibliotheksverwalter der Arduino IDE
Bibliothek u8g2 im Bibliotheksverwalter der Arduino IDE

Wie du eine Bibliothek in der Arduino IDE einbindest habe ich im Beitrag Arduino IDE, Einbinden einer Bibliothek erläutert.

„Hello World!“ auf dem Display

Hier nun ein kleines Beispiel wie man einen Text auf dem Display darstellen kann. Diesen Sketch werden wir dann weiterentwickeln und die Werte der verschiedenen Umweltsensoren anzuzeigen.

//Einbinden der benötigten Bibliotheken für das 0,96 Zoll Display
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

//definieren eines Display Objektes für die Kommunikation über I2C
//Adresse des Displays ist 0x03c
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);

//eine globale Variable für das zählen eines Index
int index = 0;

void setup() {
  u8g2.begin(); //Beginn der kommunikation mit dem Display
  u8g2.setFlipMode(1); //drehen des Displays um 180°
}

void loop() {
  //Wenn der Index größer 999 dann soll von 0 begonnen werden
  if(index > 999){
    index = 0;
  }

  //leeren des Displays
  //Wenn das Display nicht geleert wird dann wird die Position mit einem neuen Text überschrieben
  //ggf. bereits gesetzte Pixel werden nicht gelöscht und bleiben somit erhalten
  u8g2.clear();
  u8g2.clearBuffer();
  //setzen der Schriftart
  u8g2.setFont(u8g2_font_ncenB08_tr);

  //schreiben des Textes Hello World! in die erste Zeile an Position 0
  u8g2.drawStr(0, 10, "Hello World!");

  //Da der Funktion drawStr nur char Arrays übergeben werden können
  //müssen wir die aktuelle Zahl des Indexes in ein char umwandeln.
  char charValue[3];
  dtostrf(++index, 6, 0, charValue);

  //schreiben des aktuellen Index in die zweite Zeile an Position 0
  u8g2.drawStr(0, 20, charValue);
  //absenden der gespeicherten Texte
  u8g2.sendBuffer();

  //eine kleine Pause von 75ms.
  delay(75);
}
Text "Hello World!" auf dem 0,96" OLED Display
Text „Hello World!“ auf dem 0,96″ OLED Display

analoger Lichtintensitätssensor

Auf der Wiki Seite Grove – Light Sensor findest du die offizielle Beschreibung (in englischer Sprache) des analogen Lichtintensitätssensors.

analoger Lichtintensitätssensor mit Grove Schnittstelle
analoger Lichtintensitätssensor mit Grove Schnittstelle

Der analoge Lichtintensitätssensor ist am analogen Pin A6 angeschlossen und wird mit dem Befehl

int value = analogRead(A6);

ausgelesen.

Um diesen Wert nun auf dem OLED Display anzeigen zu lassen müssen wir diesen Zahlenwert zunächst in ein char Array umwandeln.

//Wert des analogen Lichtintensitätssensors lesen
int value = analogRead(A6);
//ein char Array mit maximal 3 Stellen reservieren
char charValue[3]; 
//den Zahlenwert in das char Array kopieren
dtostrf(++index, 6, 0, charValue);
//schreiben des char Arrays in den Speicher des Displays
u8g2.drawStr(0, 20, charValue);

Der minimale analoge Wert ist 0 und der maximale Wert ist 1023.

Hier nun der komplette Sketch zum anzeigen des aktuellen Wertes des analogen Lichtintensitätssensors.

//Einbinden der benötigten Bibliotheken für das 0,96 Zoll Display
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

//definieren eines Display Objektes für die Kommunikation über I2C
//Adresse des Displays ist 0x03c
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);

void setup() {
  Serial.begin(9600);
  u8g2.begin(); //Beginn der kommunikation mit dem Display
  u8g2.setFlipMode(1); //drehen des Displays um 180°
}

void loop() {
  u8g2.clearBuffer();
  //setzen der Schriftart
  u8g2.setFont(u8g2_font_ncenB08_tr);

  //schreiben des Textes Hello World! in die erste Zeile an Position 0
  u8g2.drawStr(0, 10, "Lichtintensitaetssensor");

  //Wert des analogen Lichtintensitätssensors lesen
  float value = analogRead(A6);
  Serial.print("Wert: ");
  Serial.println(value);
  //ein char Array mit maximal 3 Stellen reservieren
  char charValue[3]; 
  //den Zahlenwert in das char Array kopieren
  dtostrf(value, 6, 0, charValue);
  //schreiben des char Arrays in den Speicher des Displays
  u8g2.drawStr(0, 25, charValue);

  //Zeichnen eines Prozentbalkens auf das Display
  float percentage = (value / 750)*100; //berechnen des Prozentwertes
  String percText = String(percentage, 1)+"%"; //schreiben des Textes
  char pCharArr[8]; //ein char Array mit 8 Stellen reservieren
  percText.toCharArray(pCharArr, 8); //kopieren des Textes in das char Array
  u8g2.drawBox(0,35,percentage,10); //zeichnen des Prozenbalkens
  u8g2.drawStr(85, 25, pCharArr); //schreiben des Textes

  //absenden der gespeicherten Texte
  u8g2.sendBuffer();

  //eine kleine Pause von 500ms.
  delay(500);
}
Grove Lichtintensitätssensor & OLED Display
Grove Lichtintensitätssensor & OLED Display
Video

 

DHT11 Sensor

Der DHT11 Sensor liefert die Temperatur sowie die relative Luftfeuchtigkeit. Diesen Sensor habe ich bereits in diversen Beiträgen vorgestellt zbsp. Arduino Lektion 6: Sensor DHT11, Temperatur und relative Luftfeuchtigkeit messen. Auf der offiziellen Wiki Seite zum Sensor DHT11 von Seeedstudio findest du eine sehr ausführliche Beschreibung sowie einpaar Beispiele.

DHT11 Sensor (Temperatur & rel. Luftfeuchtigkeit) mit Grove Schnittstelle
DHT11 Sensor (Temperatur & rel. Luftfeuchtigkeit) mit Grove Schnittstelle
technische Daten des DHT11 Sensors
  • Messbereich der relativen Luftfeuchtigkeit 20% bis 90%
  • Toleranz des Messbereiches für die relative Luftfeuchtigkeit ±5%
  • Messbereich der Temperatur 0 bis 60°C
  • Toleranz des Messbereiches für die Temperatur ±2°C
  • Betriebsspannung 5V
Bibliothek für den DHT11 Sensor

Im Bibliotheksverwalter der Arduino IDE findest du einige Bibliotheken für den DHT11 Sensor. Ich habe bisher sehr gute Erfahrungen mit der Bibliothek von Adafruit gesammelt welche auch für den DHT21, DHT22, geeignet ist.

Bibliothek für den DHTxx Sensor von Adafruit
Bibliothek für den DHTxx Sensor von Adafruit

Auch dieser Bibliothek liegt ein Beispiel bei, bei diesem Beispiel muss man jedoch als DHTTYPE den Wert DHT11 wählen, und als DHTPIN 3. Ansonsten ist auch dieses Beispiel sofort auf diesem Board lauffähig.

Anzeigen der Werte auf dem OLED Display

Wollen wir nun die Werte auf dem OLED Display anzeigen.

Ich nutze hier als Basis das Beispiel von der Wiki Seite zum DHT11 von Seeedstudio.

#include "DHT.h" //Bibliothek für den DHT11 Sensor
#include <Arduino.h>
#include <U8x8lib.h> //Bibliothek für das OLED Display
#define DHTPIN 3 // der DHT11 Sensor ist am digitalen Pin D3 angeschlossen
#define DHTTYPE DHT11 // DHT 11
//neues DHT Objekt für den Zugriff auf den Sensor
DHT dht(DHTPIN, DHTTYPE);
//neues Objekt für den Zugriff auf das Display
U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(U8X8_PIN_NONE);

void setup(void) {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  //ausgabe des Textes auf der seriellen Schnittstelle
  Serial.println("DHTxx test!");
  //beginn der Kommunikation mit dem Sensor
  dht.begin();
  //beginn der Kommunikation mit dem Display
  u8x8.begin();
  //Energiesparmodus
  u8x8.setPowerSave(0);
  //Display um 180° drehen
  u8x8.setFlipMode(1);
}
void loop(void) {
  //Variablen für das speichern der Temperatur und der rel. Luftfeuchtigkeit
  float tempC, tempF, humi;
  //lesen der Temperatur in Celsius
  tempC = dht.readTemperature();
  //lesen der Temperatur in Fahrenheit
  tempF = dht.readTemperature(true);
  //lesen der rel. Luftfeuchtigkeit
  humi = dht.readHumidity();

  //setzen der Schriftart
  u8x8.setFont(u8x8_font_chroma48medium8_r);
  
  //Positionieren des Coursors
  u8x8.setCursor(0, 40);
  //schreiben des Textes...
  u8x8.print("Temp:");
  //schreiben der Temperatur
  u8x8.print(tempC);
  //schreiben des Textes...
  u8x8.print("C");
  
  //Positionieren des Coursors
  u8x8.setCursor(0, 25);
  //schreiben des Textes...
  u8x8.print("Temp:");
  //schreiben der Temperatur
  u8x8.print(tempF);
  //schreiben des Textes...
  u8x8.print("F");
  
  //Positionieren des Coursors
  u8x8.setCursor(0, 10);
  //schreiben des Textes...
  u8x8.print("Humidity:");
  //schreiben des rel. Luftfeuchtigkeit
  u8x8.print(humi);
  //schreiben des Textes...
  u8x8.print("%");
  
  //Display aktualisieren
  u8x8.refreshDisplay();
  //eine kurze Pause von 200ms
  delay(200);
}
Sensordaten des DHT11 auf dem OLED Display
Sensordaten des DHT11 auf dem OLED Display

Fazit & pers. Meinung

Das Seeedstudio – „Grove Beginner Kit for Arduino“ ist gerade für Anfänger sehr gut geeignet denn es entfällt das doch recht fehleranfällige verkabeln der Sensoren. Auf dem Board sind die entsprechenden Ports der Sensoren & Aktoren beschriftet und im online verfügbaren PDF Dokument sind einige Beispiele vorhanden so kann man quasi gleich loslegen mit der Programmierung. Die Texte sind jedoch in englischer Sprache und der Quellcode selber ist nur sehr spärlich dokumentiert.

Der Preis von 19,9$ ist für die Anzahl der Bauteile inkl. Microcontroller okay, es ist jetzt nicht das günstigste Kit welches man erhalten kann aber dafür hat man einen Microcontroller mit Grove Schnittstellen und genau für diese Schnittstelle gibt es so einige interessante Sensoren & Aktoren im Shop von Seeedstudio.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.