Der Bau Ihres DIY-Arduino-Thermometers ist eine unterhaltsame und praktische Möglichkeit, Ihre Bastelfähigkeiten zu erweitern, aber wo sollten Sie anfangen? Tauchen Sie mit uns in die Verdrahtung und Codierung ein, die zum Drehen eines Arduino, eines DS18B20-Temperaturfühlers, und ein OLED-Display in ein präzises digitales Thermometer, das gut in Räumen, Aquarien und sogar funktionieren kann draußen.

Was brauchen Sie, um ein digitales Arduino-Thermometer zum Selbermachen herzustellen?

Alle diese Komponenten finden Sie auf Websites wie eBay und Amazon.

Ein Arduino-Board

Sie können für dieses Projekt fast jeden Arduino mit einem 5-V-Ausgang verwenden. Wir verwenden ein Arduino Pro Micro, damit unser fertiges Thermometer kompakt ist, aber Sie können eine größere Platine wie ein Arduino Uno verwenden, wenn Sie das Löten für dieses Projekt vermeiden möchten.

DS18B20 Temperatursonde

DS18B20-Temperatursensoren sind als kleine eigenständige Sensoren, Leiterplatten mit angeschlossenen Sensoren oder als wasserdichte Sonden an langen Drähten erhältlich. Wir haben uns für letzteres entschieden, da wir damit unser Thermometer in einem Aquarium verwenden können, aber Sie können jede Variante des DS18B20-Temperatursensors auswählen. Im Gegensatz zu anderen Arten von Temperatursensoren liefern DS18B20s ein Direkt-zu-Digital-Signal an Ihren Arduino und nicht die analogen Signale, die von Optionen wie LM35-Temperatursensoren stammen.

instagram viewer

Ein OLED/LCD-Bildschirm

Das Display, das Sie für Ihr Thermometer wählen, hat einen großen Einfluss auf das fertige Produkt. Wir haben für unser Thermometer ein 1,3-Zoll-I2C-kompatibles monochromes weißes OLED-Display ausgewählt, aber Sie können wählen, was Sie möchten, solange es I2C unterstützt.

Zusätzliche Kleinteile

  • 4,7K (Kiloohm) Widerstand
  • 28 bis 22 AWG Silikon/PVC-isolierter Draht
  • Ein Steckbrett (optional für diejenigen, die nicht löten möchten)

Verkabelung Ihres DIY-Thermometers

Die Verdrahtung für dieses Projekt ist viel einfacher als Sie sich vorstellen können. Mit dem obigen Schaltplan können Sie mit wenig Aufwand Ihr eigenes DIY-Digitalthermometer erstellen, aber wir haben das Diagramm unten auch unterteilt, um es einfacher zu befolgen.

Verdrahtung des Temperaturfühlers DS18B20

Die korrekte Verdrahtung Ihrer DS18B20-Temperatursonde ist für dieses Projekt von entscheidender Bedeutung, und Sie müssen sicherstellen, dass Sie den zuvor erwähnten 4,7-K-Widerstand verwenden, oder Ihre Sonde wird nicht richtig funktionieren. Die Sonde wird mit drei Drähten geliefert: Masse (normalerweise schwarz), VCC (normalerweise rot) und Daten.

  • VCC wird an einen 5-V-Pin Ihres Arduino angeschlossen
  • Ground verbindet sich mit einem GND-Pin auf Ihrem Arduino
  • Daten können mit jedem digitalen Pin auf Ihrem Arduino verbunden werden (wir haben Digital Pin 15 ausgewählt)
  • Die Daten- und VCC-Leitungen müssen ebenfalls mit einem 4,7-K-Widerstand miteinander verbunden werden

Verkabelung des I2C OLED-Displays

Da wir eine I2C-Verbindung zwischen unserem OLED-Display und unserem Arduino verwenden, müssen wir nur vier Drähte anschließen, bevor wir unser Display verwenden können: VCC, Masse, SDA und SCL. Nahezu jeder moderne Arduino verfügt über integrierte SDA- und SCL-Pins, die die Möglichkeit bieten, bis zu 128 einzigartige I2C-Komponenten mit einer einzigen Platine zu verbinden.

Unser Arduino Pro Micro hat SDA auf digitalem Pin 2 und SCL auf digitalem Pin 3, aber Sie müssen möglicherweise nach einem Pinout-Diagramm der spezifischen Platine suchen, die Sie ausgewählt haben, bevor Sie beginnen.

  • VCC wird an einen 5-V-Pin Ihres Arduino angeschlossen
  • Ground verbindet sich mit einem GND-Pin auf Ihrem Arduino
  • SDA verbindet sich mit dem SDA-Pin auf Ihrem Arduino
  • SCL wird mit dem SCL-Pin Ihres Arduino verbunden

Testen Ihrer Schaltung

Es ist wichtig, dass Sie die Schaltung testen, die Sie erstellt haben, bevor Sie mit dem Schreiben des endgültigen Codes dafür beginnen, aber Sie können die Beispielprojekte verwenden, die mit den unten beschriebenen Bibliotheken geliefert werden, um die Schaltung zu testen, die Sie haben gemacht.

Codieren Ihres Temperatursensors und OLED-Displays

Das Codieren Ihres DIY-Digitalthermometers ist schwieriger als das Verkabeln, aber die Arduino IDE kann dafür verwendet werden, um es einfacher zu machen.

Auswahl der richtigen Bibliotheken

  • OLED-Display-Bibliothek: Wir verwenden die Adafruit_SH1106.h-Bibliothek für unser Display, da dies die Bibliothek ist, mit der es funktioniert. Andere OLED-Displays verwenden möglicherweise ihre eigenen Bibliotheken, wie die Adafruit_SSD1306.h-Bibliothek, und Sie können normalerweise auf der Produktseite, von der Sie Ihr Display erhalten haben, herausfinden, welche Sie benötigen.
  • DS18B20 Temperatursonde: Wir brauchen zwei Bibliotheken für unseren Temperaturfühler. DallasTemperature.h wird verwendet, um Temperaturdaten zu sammeln, und OneWire.h, um unsere Single-Wire-Verbindung zu ermöglichen.

Nachdem diese Bibliotheken installiert und in Ihr Projekt eingefügt wurden, sollte Ihr Code in etwa so aussehen wie im folgenden Snippet. Beachten Sie, dass wir auch Code enthalten haben, um die Pins für unsere Komponenten festzulegen.

#enthalten  //Bibliothek anzeigen
#enthalten
#enthalten //Temp-Sondenbibliothek
#define OLED_RESET -1
Adafruit_SH1106-Anzeige (OLED_RESET);
#define ONE_WIRE_BUS 15 //Stift für die Datenleitung der Temperatursonde
OneWire OneWire (ONE_WIRE_BUS); // Sagen Sie OneWire, welchen Pin wir verwenden
DallasTemperatursensoren(&oneWire); //OneWire-Referenz zu Dallas Temperature

Aufbau der Funktionen

  • ungültige Einrichtung: Wir verwenden den Standard Einrichten Funktion, um sowohl unser Display als auch unseren Temperaturfühler zu initialisieren.
  • Leere Schleife: Unser Standard Schleife Funktion wird nur verwendet, um unsere aufzurufen Anzeige Funktion.
  • ungültige Anzeige: Wir haben a hinzugefügt Anzeige Funktion, die unsere aufruft Temp Funktion und informiert unser Display.
  • int Temp: Unsere Temp Funktion wird verwendet, um einen Temperaturmesswert für unsere zu erhalten Anzeige Funktion.

Nach Abschluss sollte dies wie im folgenden Snippet aussehen.

ungültige Einrichtung () {
}
Leere Schleife () {
}
ungültige Anzeige () {
}
intTemp() {
}

Kodierung des OLED-Displays

Bevor wir Code zu unserer hinzufügen können Anzeige Funktion müssen wir sicherstellen, dass das OLED-Panel in unserer initialisiert ist ungültige Einrichtung Funktion. Zuerst verwenden wir a display.begin Befehl, um die Anzeige zu starten, gefolgt von a display.clearDisplay Befehl, um sicherzustellen, dass die Anzeige klar ist.

ungültige Einrichtung () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Änderung basierend auf Ihrer Anzeigebibliothek
display.clearDisplay ();
}

Von hier aus können wir Code zu unserer hinzufügen Anzeige Funktion. Dies beginnt mit einem anderen display.clearDisplay Befehl, bevor Sie eine neue Integer-Variable mit einem Wert deklarieren, der den aufruft Temp Funktion (wir werden dies später behandeln). Wir können diese Variable dann verwenden, um die Temperatur mit dem folgenden Code auf dem Display anzuzeigen.

ungültige Anzeige () {
display.clearDisplay ();
int intTemp = Temp (); // Ruft unsere Temp-Funktion auf
display.setTextSize (3); //Legt unsere Textgröße fest
display.setTextColor (WEISS); // Legt unsere Textfarbe fest
display.setCursor (5, 5); //Setzt unsere Textposition auf dem Display
display.print (intTemp); //Druckt den von der Temp-Funktion bereitgestellten Wert aus
display.drawCircle (44, 7, 3, WEISS); //Zeichnet ein Gradsymbol
display.setCursor (50, 5);
display.print("C"); // Fügt C hinzu, um anzuzeigen, dass unsere Temperatur in Celsius angegeben ist
}

Kodierung des DS18B20 Temperaturfühlers

Wie unser Display benötigt auch unser Temperaturfühler einen Setup-Code, um die Komponente zu initialisieren.

ungültige Einrichtung () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay ();
Sensoren.begin ();
}

Als nächstes ist es an der Zeit, die Sonde selbst zu programmieren, und wir müssen Code zu unserer hinzufügen Temp Funktion. Zuerst werden wir die Temperatur von unserer Sonde anfordern, dann das Ergebnis als Float-Variable aufzeichnen und in eine Ganzzahl umwandeln. Wenn dieser Vorgang erfolgreich ist, wird die Temperatur auf die zurückgestellt Anzeige Funktion.

intTemp() {
sensors.requestTemperatures (); // Senden Sie den Befehl, um Temperaturen zu erhalten
float tempC = sensors.getTempCByIndex (0); // Dies fordert die Temperatur in Celsius an und weist sie einem Schwimmer zu
int intTemp = (int) tempC; //Dies wandelt den Float in eine Ganzzahl um
if (tempC != DEVICE_DISCONNECTED_C) //Überprüfen Sie, ob unser Lesen funktioniert hat
{
Rückgabe intTemp; //Geben Sie unseren Temperaturwert an die Display-Funktion zurück
}
}

Beenden

Schließlich müssen wir nur noch unsere Hauptsache sagen Schleife Funktion zum Aufrufen unserer Anzeige Funktion mit jedem Zyklus des Codes und hinterlässt ein Projekt, das so aussieht.

#enthalten  //Bibliothek anzeigen
#enthalten
#enthalten //Temp-Sondenbibliothek
#define OLED_RESET -1
Adafruit_SH1106-Anzeige (OLED_RESET);
#define ONE_WIRE_BUS 15 //Stift für die Datenleitung der Temperatursonde
OneWire OneWire (ONE_WIRE_BUS); // Sagen Sie OneWire, welchen Pin wir verwenden
DallasTemperatursensoren(&oneWire); //OneWire-Referenz zu Dallas Temperature
ungültige Einrichtung () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay ();
Sensoren.begin ();
}
Leere Schleife () {
Anzeige(); // Ruft unsere Anzeigefunktion auf
}
ungültige Anzeige () {
display.clearDisplay ();
int intTemp = Temp (); // Ruft unsere Temp-Funktion auf
display.setTextSize (3); //Legt unsere Textgröße fest
display.setTextColor (WEISS); // Legt unsere Textfarbe fest
display.setCursor (5, 5); //Setzt unsere Textposition auf dem Display
display.print (intTemp); //Druckt den von der Temp-Funktion bereitgestellten Wert aus
display.drawCircle (44, 7, 3, WEISS); //Zeichnet ein Gradsymbol
display.setCursor (50, 5);
display.print("C"); // Fügt C hinzu, um anzuzeigen, dass unsere Temperatur in Celsius angegeben ist
}
intTemp() {
sensors.requestTemperatures (); // Senden Sie den Befehl, um Temperaturen zu erhalten
float tempC = sensors.getTempCByIndex (0); // Dies fordert die Temperatur in Celsius an und weist sie einem Schwimmer zu
int intTemp = (int) tempC; //Dies wandelt den Float in eine Ganzzahl um
if (tempC != DEVICE_DISCONNECTED_C) //Überprüfen Sie, ob unser Lesen funktioniert hat
{
Rückgabe intTemp; //Geben Sie unseren Temperaturwert an die Display-Funktion zurück
}
}

Bauen Sie ein DIY-Digitalthermometer

Dieses Projekt sollte Spaß machen und informativ sein und Ihnen gleichzeitig die Möglichkeit geben, einen praktischen Gegenstand herzustellen. Wir haben diesen Code so einfach wie möglich gestaltet, aber Sie können ihn beim Lernen als Grundlage für ein komplizierteres Projekt verwenden.

15 großartige Arduino-Projekte für Anfänger

Sie interessieren sich für Arduino-Projekte, sind sich aber nicht sicher, wo Sie anfangen sollen? Diese Anfängerprojekte zeigen Ihnen, wie Sie anfangen können.

Lesen Sie weiter

TeilenTwitternEmail
Verwandte Themen
  • DIY
  • Arduino
  • Elektronik
Über den Autor
Samuel L. Garbett (35 veröffentlichte Artikel)

Samuel ist ein in Großbritannien ansässiger Technologieautor mit einer Leidenschaft für alles, was mit Heimwerken zu tun hat. Nachdem er Unternehmen in den Bereichen Webentwicklung und 3D-Druck gegründet und viele Jahre als Autor gearbeitet hat, bietet Samuel einen einzigartigen Einblick in die Welt der Technologie. Er konzentriert sich hauptsächlich auf DIY-Tech-Projekte und liebt nichts mehr, als lustige und aufregende Ideen zu teilen, die Sie zu Hause ausprobieren können. Außerhalb der Arbeit trifft man Samuel normalerweise beim Radfahren, beim Spielen von PC-Videospielen oder beim verzweifelten Versuch, mit seiner Haustierkrabbe zu kommunizieren.

Mehr von Samuel L. Garbett

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich anzumelden