Inhaltsverzeichnis:

WiFi-Temperaturlogger (mit ESP8266) - Gunook
WiFi-Temperaturlogger (mit ESP8266) - Gunook

Video: WiFi-Temperaturlogger (mit ESP8266) - Gunook

Video: WiFi-Temperaturlogger (mit ESP8266) - Gunook
Video: ESP32 DHT Web Server Project 2024, Juli
Anonim
Image
Image
Materialien
Materialien

Hallo, ich freue mich, Sie hier zu sehen. Ich hoffe, dass Sie in diesem instructable einige nützliche Informationen finden. Senden Sie mir gerne Anregungen, Fragen, … Hier einige Eckdaten und ein kurzer Überblick über das Projekt. Für mobile Benutzer: Video. Lass mich im Kommentarbereich wissen, was du von dem Projekt hältst, danke. Ich habe vor kurzem ein NodeMcu (esp8266-basiertes) Board gekauft, nur um es auszuprobieren, also ist dies kein wirklich fortgeschrittenes Projekt. Aber es funktioniert und es ist das, was ich brauche, also ist es in Ordnung. Die Hauptfunktion dieses Datenloggers besteht darin, die Temperatur zu erfassen und auf einem Server zu speichern. Auf diese Weise können Benutzer Daten und Grafiken online überprüfen, auch wenn sie sich nicht am selben Ort des Loggers befinden (z. B. für eine Wetterstation). Eine weitere nützliche Funktion ist das im Code enthaltene OTA-Update, mit dem der Benutzer die Software einfach aktualisieren und anpassen kann. Ich werde zwei Sensoren und ihre zugehörige Erfassungsmethode analysieren, um alle Vor- und Nachteile abzuwägen.

Spoiler: Nach einigen Tests habe ich festgestellt, dass ein digitaler Sensor wie der DS18B20 die beste Lösung ist, da er Stabilität und höhere Genauigkeit bietet. Es ist bereits wasserdicht und mit dem Kabel.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien
Materialien
Materialien

Dies ist ein minimales Projekt mit nur wenigen externen Komponenten, dafür wird die Stücklistenliste sehr kurz sein. Sehen wir uns jedoch an, welches Material angefordert wird:

  • NodeMcu V3 (oder jeder kompatible ESP8266 μProzessor);
  • RGB-LED (gemeinsame Anode);
  • Widerstände für LED (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Integriertes Thermometer);
  • LM35 (Texas-Instrument-Thermometer);
  • Externer Akku (optional);
  • Kabel;
  • Connector (um es "fortgeschrittener" zu machen);
  • Box (optional, wieder um es "fortgeschrittener" zu machen);
  • LED-Halter (optional);

Hinweis: Wie gesagt, Sie müssen eine der beiden Methoden auswählen. Wenn Sie sich für das Thermometer LM35 entscheiden, benötigen Sie einige andere Komponenten:

  • Attiny45/85;
  • AVR-Programmierer (oder Arduino als ISP);
  • Widerstand (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm Streifenstecker (optional)
  • Diode (2x1N914)
  • Perfboard oder PCB;

Schritt 2: Auswahl des Sensors

Auswahl des Sensors
Auswahl des Sensors

Die Auswahl des Sensors kann ein schwieriger Schritt sein: Heutzutage gibt es tonnenweise Wandler (TI bietet 144 verschiedene Elemente) sowohl analog als auch digital mit unterschiedlichen Temperaturbereichen, Genauigkeiten und Gehäusen. Analoge Sensoren (46 Teile von TI erhältlich):Pros:

  • Der Datenlogger kann leicht von der Temperatur auf eine andere Größe (Spannung, Strom, …) umgestellt werden;
  • Kann etwas billiger sein;
  • Einfach zu bedienen, da keine spezielle Bibliothek erforderlich ist;

Nachteile:

  • Erfordert ADC (der die Genauigkeit der Messung beeinflussen kann) und andere externe Komponenten. Da esp8266 nur einen ADC hat (und nicht wirklich genau) würde ich vorschlagen, einen externen zu verwenden.
  • Benötigt ein spezielles Kabel mit Rauschunterdrückung, da jede induzierte Spannung das Ergebnis verändern kann.

Nach einigem Nachdenken entschied ich mich für LM35, einen linearen Sensor mit +10mV/°C Skalierungsfaktor mit 0,5°C Genauigkeit und einem sehr geringen Strom (ca. 60uA) bei einer Betriebsspannung von 4V bis 30V. Für weitere Details empfehle ich das Datenblatt: LM35.

Digitale Sensoren (sehr empfehlenswert)Vorteile:

Fast alle externen Komponenten erforderlich;

Integrierter ADC

Nachteile:

Fordern Sie eine Bibliothek oder Software an, um das digitale Signal zu decodieren (I2C, SPI, Seriell, One Wire, …);

Teurer;

Ich habe mich für DS18B20 entschieden, weil ich bei Amazon einen Satz von 5 wasserdichten Sensoren gefunden habe und weil es im Internet weithin dokumentiert ist. Hauptmerkmal ist 9-12-Bit-Messung, 1-Wire-Bus, 3,0 bis 5,5 Versorgungsspannung, 0,5 °C Genauigkeit. Nochmals für weitere Details hier das Datenblatt: DS18B20.

Schritt 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Lassen Sie uns analysieren, wie ich den externen ADC und andere Funktionen für das LM35-Thermometer implementiert habe. Ich habe ein Kabel mit drei Drähten gefunden, eines mit Abschirmung und zwei ohne. Ich beschloss, einen Entkopplungskondensator hinzuzufügen, um die Versorgungsspannung in der Nähe des Sensors zu stabilisieren. Um die analoge Temperatur in eine digitale umzuwandeln, habe ich den Attiny85-Mikroprozessor in einem dip8-Paket verwendet (weitere Informationen finden Sie im Datenblatt: attiny85). Das Wichtigste für uns ist der 10-Bit-ADC (nicht wirklich der beste, aber für mich ausreichend präzise). Um mit Esp8266 zu kommunizieren, habe ich mich für die serielle Kommunikation entschieden, wobei zu berücksichtigen ist, dass esp8266 mit 3,3 V und attiny85 bei 5 V arbeitet (da es den Sensor mit Strom versorgen muss). Um das zu erreichen, habe ich einen einfachen Spannungsteiler verwendet (siehe Schema). Um die negative Temperatur zu lesen, müssen wir einige externe Komponenten hinzufügen (2x1N914 und 1x18k Widerstand), da ich keine negative Stromversorgung verwenden möchte. Hier ist der Code: TinyADC-Repository. Hinweis: Um diesen Code zu kompilieren, müssen Sie ihn installieren attiny to ide (fügen Sie dies in die Option ein: https://drazzy.com/package_drazzy.com_index.json), wenn Sie nicht wissen, wie es geht, suchen Sie einfach bei Google. Oder laden Sie die.hex-Datei direkt hoch.

Schritt 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Ich habe diese Sensoren bei Amazon gekauft (5 kostet ca. 10€). Es kam mit einer Edelstahlabdeckung und einem 1m langen Kabel an. Dieser Sensor kann 9 bis 12 Bit Temperaturdaten zurückgeben. Viele Sensoren können an denselben Pin angeschlossen werden, da alle eine eindeutige ID haben. Um den DS18B20 an esp8266 anzuschließen, können Sie einfach dem Schaltplan folgen (zweites Foto). Da ich beschlossen habe, dass mein Logger drei Sonden hätte, musste ich unterscheiden, welche welche ist. Also dachte ich daran, ihnen eine Farbe zu geben, die per Software mit ihrer Adresse verknüpft ist. Ich habe einen Schrumpfschlauch verwendet (drittes Foto).

Schritt 5: ESP8266-Code

ESP8266-Code
ESP8266-Code
ESP8266-Code
ESP8266-Code

Da ich neu in dieser Welt bin, habe ich beschlossen, viele Bibliotheken zu verwenden. Wie in der Einleitung erwähnt, sind die Hauptmerkmale:

  • OTA-Update: Sie müssen esp8266 nicht jedes Mal an Ihren Computer anschließen, wenn Sie den Code hochladen müssen (Sie müssen dies nur beim ersten Mal tun);
  • Wireless-Manager, wenn sich das Wireless-Netzwerk ändert, müssen Sie die Skizze nicht erneut hochladen. Sie können einfach die Netzwerkparameter für die Verbindung mit dem ESP8266-Zugangspunkt erneut konfigurieren.
  • Thingspeak-Datenübertragung;
  • Sowohl LM35 als auch DS18B20 werden unterstützt;
  • Einfache Benutzeroberfläche (RGB-LED zeigt einige nützliche Informationen an);

Bitte entschuldigen Sie mich, weil meine Software nicht die beste und nicht wirklich gut sortiert ist. Vor dem Hochladen auf das Gerät müssen Sie einige Parameter ändern, um den Code an Ihr Setup anzupassen. Hier können Sie die Software herunterladen. Gemeinsame LM35- und DS18B20-KonfigurationSie müssen Pin-Definition, Token, Kanalnummer, Benutzer und Passwort für das OTA-Update ändern. Linie von 15 bis 23.

#define rot YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "Hostadresse auswählen"; // nicht wirklich benötigt Sie können esp8266-webupdate verlassen const char* update_path = "/firmware"; //um die Adresse für die Aktualisierung zu ändern, zB: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char* update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey = "WRITEAPIHERE";

Schritt 6: ESP8266-Code: LM35-Benutzer

Sie müssen die Attiny-Platine an esp8266 anschließen, um die ADC-Einheit mit Strom zu versorgen, verwenden Sie den VU-Pin und den G-Pin. Sie müssen auswählen, welchen Pin Sie für die serielle Kommunikation verwenden möchten (um die Hardware-Seriell für Debugzwecke frei zu halten). Tx-Pin muss ausgewählt werden, wird aber nicht wirklich verwendet. (Zeile 27). SoftwareSerial mySerial (RXPIN, TXPIN); Oben müssen Sie hinzufügen: #define LM35USER

Schritt 7: ESP8266-Code: DS18B20-Benutzer

Als erstes müssen Sie die Geräteadresse für jeden Sensor identifizieren. Kompilieren und programmieren Sie diesen Code für das ESP und suchen Sie seriell nach den Ergebnissen. Code finden Sie hier (suchen Sie nach diesem Titel auf der Seite: «Einzelne DS18B20-interne Adressen lesen»). Schließen Sie nur einen Sensor an, um die Adresse zu erhalten, die Ergebnisse sollten in etwa so aussehen (Zufallszahl hier! Nur als Beispiel): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Dann müssen Sie meinen Code im Abschnitt " Konfiguration für DS18B20" (Zeile 31 bis 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION //(von 9 bis 12) #define delayDallas READINTERVAL //(In Millisekunden, Minimum ist 15s oder 15000mS) DeviceAddress blueSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB 0x12}; // ÄNDERN SIE MIT IHRER ADRESSE DeviceAddress redSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ÄNDERN SIE MIT IHRER ADRESSE DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ÄNDERN SIE MIT IHRER ADRESSE Oben müssen Sie Folgendes hinzufügen: #define DSUSER

Schritt 8: ESP8266 Kleiner Trick

ESP8266 Kleiner Trick
ESP8266 Kleiner Trick

Nach ein wenig Testen habe ich festgestellt, dass, wenn Sie esp8266 ohne Programmierung anschließen, der Code nicht ausgeführt wird, bis Sie einmal Reset drücken. Um dieses Problem zu lösen, habe ich nach ein wenig Recherche festgestellt, dass Sie einen Pull-up-Widerstand von 3,3 V zu D3 hinzufügen müssen. Dadurch wird der Prozessor angewiesen, den Code aus dem Flash-Speicher zu laden. Mit dieser Methode kann D3 direkt zur Dateneingabe für DS18B20-Sensoren verwendet werden.

Schritt 9: Erstmaliger Betrieb

Erstmaliger Betrieb
Erstmaliger Betrieb
Erstmaliger Betrieb
Erstmaliger Betrieb

Wenn Sie den Code korrekt hochgeladen haben, aber nie die Wifi-Manager-Bibliothek verwenden, ist es an der Zeit, Ihre WLAN-Verbindung zu konfigurieren. Warten Sie, bis die RGB-LED schneller als zuvor blinkt, suchen Sie dann mit Ihrem Handy oder PC das WLAN-Netzwerk namens "AutoConnectAp" und stellen Sie eine Verbindung her. Öffnen Sie nach der Verbindung einen Webbrowser und geben Sie 192.168.4.1 ein. Sie finden die GUI-Oberfläche des WLAN-Managers (siehe Fotos) und klicken auf "WLAN konfigurieren". Warten Sie, bis esp8266 WLAN-Netzwerke durchsucht hat, und wählen Sie das gewünschte aus. Passwort eingeben und "Speichern" drücken. Esp8266 wird neu gestartet (diesmal ist RGB-LED egal, da es zufällige Informationen ausgibt) und verbindet sich mit dem Netzwerk.

Schritt 10: Fazit

Abschluss
Abschluss
Abschluss
Abschluss
Abschluss
Abschluss
Abschluss
Abschluss

Am Ende ist hier eine Grafik, die vom Datenlogger in Aktion aufgenommen wurde, während ich meine Gefrierschranktemperatur aufzeichnete. In Orange ist der DS18B20 und in Blau der LM35 und seine Schaltung. Sie können den größten Unterschied in der Genauigkeit vom digitalen zum analogen Sensor (mit meiner schlechten "ADC-Schaltung") sehen, der einige nicht-physikalische Daten liefert. Zusammenfassend kann ich sagen, wenn Sie diesen Logger bauen möchten, empfehle ich die Verwendung des digitalen Temperatursensors DS18B20, da er einfacher zu lesen und fast "plug and play", es ist stabiler und genauer, es läuft mit 3,3 V und benötigt nur einen Pin für viele Sensoren. Danke für die Aufmerksamkeit, ich hoffe, dass dieses Projekt gut für Sie ist und Sie haben habe einige nützliche Informationen gefunden. Und wer es realisieren möchte, ich wünsche mir, dass ich alle notwendigen Informationen gegeben habe. Wenn Sie nicht alles fragen können, beantworte ich gerne alle Fragen. Da ich kein Englisch spreche, lassen Sie es mich bitte wissen, wenn etwas nicht stimmt oder nicht verständlich ist. Wenn Ihnen dieses Projekt gefallen hat, stimmen Sie es bitte für die Wettbewerbe ab und/oder hinterlassen Sie einen Kommentar ☺. Es wird mich ermutigen, immer wieder neue Inhalte zu aktualisieren und zu veröffentlichen. Dankeschön.

Empfohlen: