ESP32 Tutorial 46/55 - Fernüberwachung der Temperatur mit HiveMQ MQTT | SunFounders ESP32-Kit
In diesem Tutorial werden wir ein Fernüberwachungssystem für Temperatur mit dem ESP32 und dem MQTT-Protokoll erstellen. Dieses Projekt ermöglicht es uns, Temperatursensordaten an einen MQTT-Broker zu veröffentlichen und eine LED remote über eine Weboberfläche zu steuern. Durch Drücken eines Knopfs können wir Temperaturmesswerte in die Cloud senden, und wir können auch Befehle empfangen, um die LED ein- oder auszuschalten.
Der ESP32 ist ein leistungsstarker Mikrocontroller, der über integriertes Wi-Fi und Bluetooth verfügt, was ihn ideal für Anwendungen im Internet der Dinge (IoT) macht. In diesem Setup verwenden wir einen NTC-Thermistor zur Messung der Temperatur, einen Druckknopf zum Auslösen der Messungen und eine LED zur Anzeige des Status. Die Daten werden an HiveMQ gesendet, einen beliebten MQTT-Broker, wo sie remote abgerufen werden können (im Video bei 00:45).
Hardware erklärt
Für dieses Projekt werden wir die folgenden Komponenten nutzen:
- ESP32 Mikrocontroller:Dieses Board dient als zentrale Verarbeitungseinheit, die Wi-Fi-Verbindungen und MQTT-Kommunikationen verarbeitet.
- NTC-Thermistor:Dieser Temperatursensor ändert seinen Widerstand basierend auf der Temperatur. Er liefert ein analoges Signal, das der ESP32 lesen kann, um die aktuelle Temperatur zu bestimmen.
- LED:Diese lichtemittierende Diode wird verwendet, um den Status basierend auf Befehlen anzuzeigen, die über MQTT empfangen werden.
- Knopf drücken:Dieser Button wird den ESP32 dazu bringen, die Temperatur zu messen und sie an den MQTT-Broker zu veröffentlichen.
Datenblattdetails
| Hersteller | SunFounder |
|---|---|
| Teilenummer | ESP32 |
| Logik/IO-Spannung | 3,3 V |
| Versorgungsspannung | 5 V (über USB) |
| Ausgangsstrom (pro Kanal) | 12 mA max |
| PWM-Frequenzrichtlinien | Bis zu 40 kHz |
| Eingabelogikschwellen | 0,3 V (niedrig), 2,4 V (hoch) |
| Thermische Grenzen | -40 bis 85 °C |
| Paket | ESP32-WROOM-32 |
- Stellen Sie sicher, dass die richtigen Spannungsniveaus eingehalten werden, um Schäden zu vermeiden.
- Verwenden Sie Pull-up-Widerstände für den Druckknopf, um stabile Messwerte zu gewährleisten.
- Entkopplungskondensatoren können helfen, die Stromversorgung zu stabilisieren.
- Seien Sie vorsichtig mit der Verkabelung des Thermistors, um falsche Ablesungen zu vermeiden.
- Überprüfen Sie die Details Ihres MQTT-Brokers für eine erfolgreiche Verbindung.
Verdrahtungsanweisungen

Um die Komponenten zu verdrahten, beginnen Sie damit, den NTC-Thermistor anzuschließen. Verbinden Sie einen Pin des Thermistors mit der 3,3 V Versorgung des ESP32. Der andere Pin wird mit Pin 36 des ESP32 verbunden und sollte auch mit einem 10 kΩ Widerstand verbunden sein, der dann mit Masse verbunden ist. Dies erzeugt einen Spannungsteiler, der es dem ESP32 ermöglicht, den Widerstand des Thermistors zu messen.
Als nächstes schließen Sie die LED an. Der längere Pin (Anode) der LED wird über einen 220 Ω Widerstand mit Pin 4 des ESP32 verbunden, während der kürzere Pin (Kathode) mit Ground verbunden wird. Für den Taster verbinden Sie eine Seite mit 3,3 V und die andere Seite mit Pin 14 des ESP32. Zusätzlich schließen Sie einen 10 kΩ Widerstand vom Taster-Pin zu Ground an, um einen stabilen LOW-Zustand zu gewährleisten, wenn der Taster nicht gedrückt ist.
Benötigte Bibliothek installieren
DiePubSubClientDie Bibliothek wird hier verwendet, Sie können sie von der installieren.Bibliotheksmanager.
Code-Beispiele & Anleitung
Im Setup initialisieren wir die serielle Kommunikation, richten die WLAN-Verbindung ein und konfigurieren den MQTT-Server. Hier ist ein Ausschnitt des Setup-Codes:
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}Dieser Teil des Codes stellt die Verbindung zum Wi-Fi-Netzwerk her und richtet den MQTT-Server ein. Die Pin-Modi für den Knopf und die LED werden ebenfalls hier konfiguriert.
Die Schleifenfunktion überprüft kontinuierlich den Zustand des Knopfes und veröffentlicht Temperaturdaten, wenn er gedrückt wird. Hier ist ein fokussierter Auszug aus der Schleife:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
if (digitalRead(buttonPin)) {
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
char tempString[8];
dtostrf(thermistor(), 1, 2, tempString);
client.publish("SF/TEMP", tempString);
}
}
}In dieser Schleife überprüfen wir, ob der ESP32 mit dem MQTT-Broker verbunden ist. Wenn der Knopf gedrückt wird, liest er die Temperatur vom Thermistor und veröffentlicht sie alle 5 Sekunden im Thema "SF/TEMP".
Demonstration / Was zu erwarten ist
Wenn das Projekt eingerichtet und in Betrieb ist, wird durch Drücken der Taste die aktuelle Temperatur an den MQTT-Broker veröffentlicht. Sie können diese Daten von jedem MQTT-Client aus überwachen. Zusätzlich können Sie Nachrichten senden, um die LED zu steuern; das Senden von "on" wird sie einschalten, während "off" sie ausschaltet. Achten Sie im Video um 15:30 auf das erwartete Verhalten, wo die Temperaturmesswerte nach jedem Tastendruck angezeigt werden.
Video-Zeitstempel
- 00:00 Start
- 2:05 Einführung in das Projekt
- 7:06 Kostenloser HiveMQ-Dienst
- 7:56 Verkabelung erklärt
- 11:11 Arduino-Code erklärt
- 18:46 Auswahl des ESP32-Boards und des COM-Ports in der Arduino IDE
- 20:30 Demonstration des HiveMQ Free Brokers
Common Course Links
Common Course Files
Ressourcen & Referenzen
-
Dokumentation
Dateien📁
Keine Dateien verfügbar.