Ausgeben der Temperaturwerte des DS18B20 Sensors auf dem M5StickC

In diesem Beitrag möchte ich dir zeigen wie du auf dem Display des M5StickC die Temperaturwerte des DIY Grove DS18B20 Shields 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:

Du findest auf den Portalen Wish.com, aliexpress.com und leider 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 keine solcher Fehler gehabt.

Bauteile für das DIY Grove DS18B20 Shield
Bauteile für das DIY Grove DS18B20 Shield

Aufbau der Schaltung

Hier nun erst einmal der Aufbau der Schaltung in der Anwendung Fritzing.

Aufbau der Schaltung für den Temperatursensor DS18B20
Aufbau der Schaltung für den Temperatursensor DS18B20

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 auseinander setzen. (In diese Buchse kann man das Kabel nur in eine Richtung stecken (ohne Gewalt).)

Pinout des Grove Connectors für den Microcontroller M5StickC
Pinout des Grove Connectors für den Microcontroller M5StickC

das fertige Shield mit einem DS18B20 Temperatursensor

Hier nun das fertige Shield mit DS18B20 Temperatursensor und Grove Schnittstelle.

fertiges Grove Ds18B20 Shield
fertiges Grove Ds18B20 Shield

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.

Bibliothek - M5StickC im Bibliotheksverwalter der Arduino IDE
Bibliothek – M5StickC im Bibliotheksverwalter der Arduino IDE

Für den digitalen Temperatursensor DS18B20 findest du ebenso eine passende Bibliothek.

Bibliothek DallasTemperature für den DS18B20
Bibliothek DallasTemperature für den DS18B20

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.

Pfad zum Beispielcode für das Display am M5StickC
Pfad zum Beispielcode für das Display am M5StickC

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);
}
M5StickC mit DIY Grove DS18B20 Shield
M5StickC mit DIY Grove DS18B20 Shield 

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.

M5StickC mit DIY Grove DS18B20 Shield, um 90° gedrehtes Display
M5StickC mit DIY Grove DS18B20 Shield, um 90° gedrehtes Display

Download

Hier nun der fertige Sketch / das Programm zum anzeigen des Wertes eines digitalen Temperatursensors DS18B20 am M5StickC.

 

Schreibe einen Kommentar

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