In diesem Beitrag möchte ich dir zeigen, wie du an einem Calliope Mini den Sensor DHT11 ein LCD-Display per Grove Schnittstelle anschließt.
Den Calliope Mini habe ich dir bereits im Beitrag Vorstellung des Calliope Mini vorgestellt.
Hier soll es nun darum gehen, wie man an diesen Mikrocontroller einen Sensor für das Messen der Temperatur sowie relative Luftfeuchtigkeit und die entsprechende Ausgabe auf einem 16×2 LCD-Display anschließt.
Aufbau des Calliope Mini
Der Calliope Mini verfügt über diverse Anschlüsse, wie Bsp für Sensoren / Aktoren und auch einer Batterie. An den Spitzen des Mikrocontrollers findest du jeweils Anschlüsse für die Stromversorgung und auch Pins für Sensoren.
Benötigte Ressourcen für dieses Projekt
Wenn du dieses Projekt nachbauen möchtest, dann benötigst du:
- einen Calliope Mini*,
- ein Micro-USB Datenkabel*,
- einen DHT11 Sensor*,
- ein LCD-Display*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Dem Calliope Mini liegt ein kleines Datenkabel bei, jedoch ist dieses sehr kurz.
Aufbau der Schaltung
Durch die verwendeten Grove Kabel ist der Anschluss und somit die Schaltung recht schnell erledigt, denn diese werden lediglich mit dem Sensor / dem Display und einen der beiden Ports verbunden. Die Stecker bzw. die Buchsen sind so aufgebaut, dass ein verkehrtes Einstecken nicht ohne größere Gewalt möglich ist.
Das LCD-Display wird per I²C angeschlossen, hier dient der Grove Sockel beim Taster “A” (siehe Grafik), den DHT11 Sensor schließen wir dann an den übrig gebliebenen Sockel beim Taster “B” an.
Programmieren
Das kleine Projekt wird in zwei Stufen programmiert. Im nachfolgenden YouTube Video zeige ich dir, wie du dieses Projekt mit dem Onlinetool MakeCode von Microsoft erstellst.
Schritt 1 – Ausgeben der Sensorwerte auf der LED Matrix
Im ersten Schritt wollen wir die Sensorwerte auslesen und auf der LED Matrix ausgeben.
Wenn der Taster A betätigt wird, wird die relative Luftfeuchtigkeit, beim Betätigen des Tasters B wird die Temperatur in Grad Celsius ausgegeben.
Hier der Code als Download:
Schritt 2 – Ausgeben der Sensorwerte auf einem LCD-Display
Im oben verlinkten YouTube Video habe ich dir bereits erklärt, wie das Programm erstellt wird.
Besonders zu nennen ist hier die kleine Pause von 2 Sekunden zwischen dem Schreiben der ersten und zweiten Zeile auf dem LCD-Display. Das Problem liegt hierbei beim DHT11 Sensor, welcher die Daten nicht so schnell hintereinander liefern kann.
Hier der Code als Download:
Importieren von HEX-Dateien
Du kannst die fertigen HEX-Dateien, entweder direkt auf deinen Calliope Mini kopieren oder im Onlinetool Make Code diese Dateien importieren.
Sehr schöner Beitrag.
Freue mich schon das Projekt in meine Sammlung aufzunehmen.
Ich muss nur noch auf die Lieferung des DHT11 warten.
Viele Grüße
Danach kommt dann der nächste Schritt:
Eine Wetterstation braucht neben Temperatur und Luftfeuchte noch den Luftdruck.
Also brauchen wir einen Sensor, der alles vereint: BME280
Ich habe mir diesen Sensor, den ich mit Arduino und ESP zahlreich verwendet habe, nun auch als Grove-Version bestellt. Ich werde also ihr Calliope-Projekt DHT11 auf diesen Sensor anwenden. Für die LCD-Ausgabe muss ich mir noch etwas überlegen, da 2 Zeilen mit je 16 Zeichen eigentlich zu klein sind. Hier wäre ein LCD 2004 mit 4 Zeilen und je 20 Zeichen besser. Mal schauen, ob es diesen als Grove-Version gibt.
Viele Grüße
Ich danke herzlich für das Projekt, es funktioniert auch gut mit Makecode. Ich nutze es für begabte Grunschulkinder, ich würde mich freuen, wenn sie es auch in lab.open-roberta.org programmieren könnten.
Hallo Sieglinde,
auch ich arbeite seit 2 Jahren über die Hector Kinderakademie mit Calliope und Open Roberta Lab.
Bin jetzt dabei auf MakeCode umzustellen, weil es einfach sinnvolle Erweiterungen dafür gibt.
Vielleicht können wir uns dazu mal austauschen.
Gruß Dieter
Sehr schön; bin auf Euer Programm gestoßen, da ich auf der Suche bin nach dem Grad-Zeichen ( ° ) für das LCD-Display. Leider klappt der Steuerkode ” /0xDF ” nicht. Habt Ihr eine Lösung ?
Hi,
ich habe das gerade einmal getestet.
Also es können wirklich nur bestimmte Zeichen auf dem Display angezeigt werden.
Darunter befinden sich auch ein paar Sonderzeichen nur das Grad-Celsius Zeichen leider nicht.
Gruß
Stefan
Danke Stefan für die schnelle Antwort.
Wenn man die Arduino IDE zum Compilieren für den Calliope verwendet ( und dort den Prozessor Nordic Semiconductor nRF5 mit einbindet ), gelingt das Grad-Zeichen aber ohne Probleme. Guckst Du hier :
#include
#include “rgb_lcd.h”
rgb_lcd lcd;
void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.setCursor(0, 0);
lcd.print(“K\xF5\che: 23 \xDF\C”); // Küche : 23 °C
}
Hi, ja das stimmt nur in MakeCode klappt das leider nicht.
Gruß
Stefan