In diesem Beitrag möchte ich dir zeigen, wie du auf dem Display des M5StickC die Temperaturwerte des DIY Grove DS18B20 Shield ausgeben kannst.
Der M5StickC verfügt über eine Groove Schnittstelle und somit kann man recht einfach ein passendes Shield an diesen verpolungssicher anschließen. Leider gibt es jedoch derzeit noch kein Grove Shield mit einem Temperatursensor DS18B20 auf dem Markt.
erstellen eines Grove DS18B20 Shields
Wollen wir also diese kleine Marktlücke schließen und ein Grove Shield mit Temperatursensor DS18B20 erstellen.
Es werden folgende Bauteile benötigt:
- einen Temperatursensor DS18B20*,
- 4,7 kOhm Widerstand*,
- verschieden farbige Kabel* (Litze),
- ein Stück Lochrasterplatine*,
- einen Grove Connector*
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!
Du findest auf den Portalen Wish.com, aliexpress.com und bedauerlicherweise auch auf ebay.de sehr günstige Lochrasterplatinen. Diese Lochrasterplatinen sind jedoch nicht nur günstig, sondern auch billig, d.h. beim Löten lösen sich des Öfteren die Lötaugen von dem Epoxidharz. Mit den grünen Platinen habe ich bisher keinen solchen Fehler gehabt.
Aufbau der Schaltung
Hier nun erst einmal der Aufbau der Schaltung in der Anwendung Fritzing.
Aufbau eines Grove Connectors
Da wir für diese Schaltung einen Grove Connector verwenden, müssen wir uns zwangsläufig mit dem Pinout dieser Schnittstelle auseinandersetzen. (In diese Buchse kann man das Kabel nur in eine Richtung stecken (ohne Gewalt).)
das fertige Shield mit einem DS18B20 Temperatursensor
Hier jetzt das fertige Shield mit DS18B20 Temperatursensor und Grove Schnittstelle.
Wenn du genau wissen möchtest, wie du dir dieses Shield löten kannst so schreibe mir doch eine Mail oder über das Kontaktformular.
Programmieren
benötigte Bibliotheken
Damit wir den M5StickC programmieren können, benötigen wir neben dem ESP Boardtreiber zusätzlich einige Bibliotheken. Wie du den ESP Boardtreiber installierst, habe ich im ersten Beitrag zum M5StickC M5StickC – Ein ESP32 Zwerg mit nützlichen onboard Funktionen in einem coolen Gehäuse gezeigt.
Für die Sensoren & Aktoren des M5StickC findest du im Bibliotheksverwalter der Arduino IDE eine “Bibliothekspaket” welches alle Bibliotheken enthält.
Für den digitalen Temperatursensor DS18B20 findest du ebenso eine passende Bibliothek.
Quellcode
Nachdem wir die Bibliotheken installiert haben können wir mit der Programmierung beginnen. Der Bibliothek “M5StickC” liegen diverse Beispiele bei und natürlich auch eines für das Display. Als Grundlage habe ich somit das Beispiel aus dem Pfad “Beispiele” > “M5StickC” > “Basics” > “Display” genommen.
Dieses Beispiel brauchte ich nur für die Ausgabe des Temperatursensors DS18B20 erweitern. (Den Sensor selber habe bereits im Beitrag Arduino Lektion 48: Temperatursensor DS18B20 ausgiebig vorgestellt.)
//Einbinden der Bibliotheken //Bibliothekssammlung für den M5StickC //diese enthält alle Bibliotheken für die Sensoren & Aktoren des M5StickC //somit auch für das LCD Display #include <M5StickC.h> //Bibliothek für den digitalen Temperatursensor DS18B20 #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 33 //Sensor DS18B20 am GPIO Pin G33 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); //Setup, einrichten des Microcontrollers void setup() { M5.begin(); } void loop(){ //Textgröße auf 1 M5.Lcd.setTextSize(1); //Hintergrundfarbe Schwarz M5.Lcd.fillScreen(BLACK); //Textfarbe Weiß M5.Lcd.setTextColor(WHITE); //den ersten Text an der Position , Zeile 10, Spalte 10, setzen M5.Lcd.setCursor(10, 10); //schreiben des Textes "Temperatur" M5.Lcd.print("Temperatur"); //anfordern der Temperatur sensors.requestTemperatures(); //lesen der Temperatur in Celsius //die Bibliothek gibt zusätzlich die Möglichkeit //den Wert auch in Fahrenheit auszugeben //Der gelesene Temperaturwert wird auf 2 Nachkommastellen gekürzt, //und um den Buchstaben "C" für Celsius erweitert. String text = String(sensors.getTempCByIndex(0),2)+"C"; //setzen des Curosrs an der Position, Zeile 20, Spalte 10 M5.Lcd.setCursor(10, 20); //schreiben der Temperatur M5.Lcd.print(text); //aktualisieren des Displays M5.update(); //eine Pause von 800ms. delay(800); }
Drehen des Displays
In meinem Beispiel habe ich die Schriftgröße auf “1” gesetzt, diese ist optimal für die Darstellung im Hochformat. Wenn du jedoch das Display im Querformat nutzt dann kannst eine deutlich größere Schriftart wählen und somit ist der Temperaturwert besser lesbar.
Um das Display zu drehen musst du den Befehl
M5.Lcd.setRotation(3);
eingeben.
Download
Hier nun der fertige Sketch / das Programm zum anzeigen des Wertes eines digitalen Temperatursensors DS18B20 am M5StickC.
1 thought on “Ausgeben der Temperaturwerte des DS18B20 Sensors auf dem M5StickC”