IoT-Geräte können coole Dinge tun, aber ein wesentlicher Teil der Gleichung ist, wie sie kommunizieren. Sie können das mit einem ESP-01-Modul verwalten.
Ein begrenztes Budget bedeutet nicht unbedingt, dass Sie keine fortgeschrittenen DIY-Projekte übernehmen können. Wenn Sie nach einem kleinen, erschwinglichen und praktischen WLAN-Modul suchen, um Ihre IoT-Projekte zu erweitern, ist das ESP-01-Modul eine gute Wahl. Die Integration eines solchen Moduls in ein leichtgewichtiges Protokoll wie MQTT kann jedoch schwierig sein, insbesondere wenn Sie neu in der IoT-Entwicklung sind.
Die Programmierung des ESP-01-Boards allein kann im Vergleich zu anderen Modulen der ESP8266-Serie eine Herausforderung darstellen. Aber lassen Sie uns die Grundlagen der gesamten Hardware- und Software-Einrichtung durchgehen, die Sie benötigen, um mit der Verwendung des Moduls zu beginnen, sowie die einfache und prozedurale Einrichtung von MQTT.
Vorstand kennenlernen
ESP8266 ESP-01 ist ein kleines und kompaktes WLAN-Modul, das mit einem ESP8266EX-Chip ausgestattet ist, einem hochintegrierten SoC, der für IoT-Anwendungen entwickelt wurde.
Das Modul enthält einen drahtlosen Einzelchip-Mikrocontroller mit einem TCP/IP-Protokollstapel und kann eine Verbindung zu einem drahtlosen Netzwerk herstellen oder als Zugangspunkt fungieren. Das ESP-01-Modul verfügt außerdem über einen 2x4-Pin-Header, der Zugriff auf seine GPIO-Pins, Strom und Masse sowie die UART-Schnittstelle bietet.
Einrichten der Hardware
Das Modul ist überhaupt nicht Breadboard-freundlich. Der Einfachheit halber können Sie ein vorgefertigtes Erweiterungsboard kaufen oder einfach den altmodischen Weg gehen – mit Überbrückungsdrähten und einem Steckbrett.
Es gibt einen speziellen Programmierer, das ESP8266 Serial Module Board, das Ihre Programmiererfahrung erleichtern kann. Wenn Sie diesen Weg bevorzugen, DIYHOBI hat ein praktisches Tutorial zum Flashen eines Programms in das ESP-01-Modul mit einem Programmiergerät (einschließlich des USB-zu-TTL-Konvertermoduladapters CH340G).
Sie können das Modul jedoch weiterhin mit einem Arduino-Board programmieren. Schauen Sie sich den Schaltplan unten als Referenz an.
Obwohl es verlockend aussehen mag, empfehlen wir im Allgemeinen nicht, das Modul direkt an den 3,3-V-Pin des Arduino anzuschließen, da es mehr Strom benötigt, als der Pin liefert. Schließen Sie stattdessen den Arduino an 5V an einen 3,3-V-Spannungsregler wie LM1117 / LD117 anschließen und dann das WLAN-Modul über den Regler mit Strom versorgen.
Schließen Sie die nicht an VCC Und CH_PD Pins des ESP an die 5V Stift des Arduino. Anschließen des Moduls an 5V Strom kann es beschädigen.
Alle Kondensatoren sind 10uF und der Widerstand ist a 1K Widerstand.
Software Anforderungen
Das ESP-01-Modul wird häufig mit der Arduino-Plattform verwendet. Daher ist die Einrichtung der Software ziemlich einfach, insbesondere wenn Sie mit Arduino C vertraut sind. Wenn Sie jedoch mit Raspberry besser vertraut sind, gibt es viele davon Raspberry Pi IoT-Projekte Du kannst es versuchen.
Das sind die Grundvoraussetzungen:
- Ein MQTT-Broker oder -Server (wie Mosquitto oder CloudMQTT).
- Eine Arduino-IDE mit der ESP8266-Kernbibliothek.
- Die PubSubClient-Bibliothek für Arduino.
Sie müssen bedenken, dass Sie mit Ihrem eigenen MQTT-Server vor Ort innerhalb Ihrer Projekte flexibel sind.
Installieren der erforderlichen Bibliotheken
Laden Sie zunächst die Arduino IDE herunter und installieren Sie sie auf Ihrem Computer. Öffnen Sie nach der Installation die Arduino IDE und gehen Sie zu Datei > Einstellungen.
Im Zusätzliche Boards Manager-URLs Geben Sie im Feld folgende URL ein:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klicken OK um das Einstellungsfenster zu schließen.
Als nächstes gehen Sie zu Werkzeug > Planke > Vorstandsmanager.
Dann suche nach esp8266 und installieren Sie das esp8266-Board-Paket – dieses enthält alle notwendigen Bibliotheken für das ESP-01-Modul.
Um die PubSubClient-Bibliothek zu installieren, gehen Sie zu Skizzieren > Bibliothek einschließen > Bibliotheken verwalten.
Suchen nach PubSubClient und klicken Sie auf die Bibliothek, um sie zu installieren.
Sobald Sie alle notwendigen Bibliotheken installiert haben, können Sie mit der Programmierung des ESP-01-Moduls beginnen. Beachten Sie jedoch, dass Sie die verwenden können Wifi.h die in der Bibliothek enthalten ist, oder laden Sie die herunter ESPWifi.h Bibliothek und fügen Sie es in Ihre Skizze ein.
Herstellen einer Verbindung zwischen ESP-01 und MQTT-Broker
Ein MQTT-Broker ist ein Server, der als Vermittler zwischen MQTT-Clients fungiert. Es ermöglicht Clients, Nachrichten über ein Publish-Subscribe-Modell aneinander zu senden und zu empfangen.
Um Ihr ESP-01-Modul mit einem MQTT-Broker zu verbinden, müssen Sie die IP-Adresse und die Portnummer des Brokers in Ihrem Code angeben. Sie müssen auch eine eindeutige Client-ID angeben, die Ihr ESP-01-Modul gegenüber dem Broker identifiziert.
Fügen Sie zunächst die erforderlichen Bibliotheken oben in Ihre Skizze ein
#enthalten <ESP8266WLAN.H>
#enthalten <PubSubClient.H>
Als nächstes definieren Sie die WiFi- und MQTT-Verbindungsdetails.
konstverkohlen*ssid= "IHRE_SSID";
konstverkohlen* Passwort = "IHR PASSWORT";
konstverkohlen* mqtt_server = "IHR_MQTT_SERVER";
Vergessen Sie nicht, die Platzhalter durch Ihre eigenen WLAN- und MQTT-Verbindungsdetails zu ersetzen.
Erstellen Sie danach einen WLAN-Client und verbinden Sie sich mit Ihrem lokalen WLAN-Netzwerk:
WiFiClient espClient;
Leeresetup_wifi(){
Verzögerung (10);
WiFi.begin (ssid, Passwort);
während (WiFi.status() != WL_CONNECTED) {
Verzögerung (500);
}
}
Diese Funktion sollte im aufgerufen werden aufstellen() Funktion Ihrer Skizze.
Als Nächstes müssen Sie einen MQTT-Client erstellen und sich mit Ihrem MQTT-Broker verbinden:
PubSubClient Klient(espClient);
Leereneu verbinden(){
während (!client.connected()) {
Wenn (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Abonnieren Sie ein Thema
client.subscribe("Test/Thema");
} anders {
Verzögerung (5000);
}
}
}
Sobald Sie sich mit Ihrem MQTT-Broker verbunden haben, können Sie mit dem Veröffentlichen und Abonnieren von Themen beginnen.
Veröffentlichen von Daten von ESP-01 zu MQTT Broker
Nachdem Sie nun Ihr ESP01-Modul erfolgreich mit dem MQTT-Broker verbunden haben, schauen wir uns an, wie Sie Daten vom ESP-01 an den Broker veröffentlichen können.
Verwenden Sie zum Veröffentlichen von Daten die client.publish() Funktion zum Veröffentlichen einer Nachricht an die im Thema Thema.
client.publish("im Thema", "Hallo von ESP-01");
Dadurch wird die Nachricht "Hello from ESP-01" an die veröffentlicht im Thema Thema.
Sie können auch Sensordaten vom ESP-01 an den Broker veröffentlichen. Wenn Sie beispielsweise einen Temperatursensor an Ihr ESP-01 angeschlossen haben, können Sie die Temperaturdaten wie unten gezeigt an den Broker veröffentlichen.
schweben Temperatur = 25.5;
Schnur temperatureString = Schnur(Temperatur);
verkohlen TemperaturChar[5];
temperatureString.toCharArray(TemperaturChar, 5);
client.publish("Zeit", temperatureChar);
Dadurch werden die Temperaturdaten an die veröffentlicht Temp Thema.
Daten können je nach Anforderungen Ihres Projekts in einer Endlosschleife oder in regelmäßigen Abständen veröffentlicht werden. Stellen Sie sicher, dass Sie den Broker nicht mit zu vielen Daten überschwemmen und dass Sie in angemessenen Abständen veröffentlichen.
Abonnieren von MQTT-Themen und Empfangen von Daten auf ESP-01
Um ein Thema zu abonnieren, verwenden Sie die client.subscribe() Funktion. Für unseren Fall unten abonniert der Client die ausThema Thema.
client.subscribe("outTopic");
Sobald Sie ein Thema abonniert haben, können Sie Nachrichten empfangen, die zu diesem Thema veröffentlicht wurden, indem Sie das verwenden client.loop() Funktion in der Schleife() Funktion in der folgenden Skizze:
LeereSchleife(){
Wenn (!Klient.in Verbindung gebracht()) {
wieder verbinden ();
}
Klient.Schleife();
}
Dadurch wird kontinuierlich nach neuen Nachrichten gesucht und die Callback-Funktion ausgeführt, wenn eine neue Nachricht eingegangen ist.
Um empfangene Nachrichten zu verarbeiten, definieren Sie eine Callback-Funktion wie die unten gezeigte:
LeereRuf zurück(verkohlen* Thema, Byte* Nutzlast, unsigniert int Länge){
// Drucken Sie die empfangene Nachricht
Seriell.drucken("Nachricht zum Thema erhalten: ");
Seriell.drucken(Thema);
Seriell.drucken(". Nachricht: ");
für (int ich=0;ichSeriell.drucken((verkohlen)Nutzlast[ich]);
}
Seriell.println();
}
Diese Funktion wird aufgerufen, wenn eine neue Nachricht zum abonnierten Thema empfangen wird. Es druckt die empfangene Nachricht an den seriellen Monitor.
Verwenden von QoS-Stufen (Quality of Service) und Sicherheitsfunktionen
Eine der wichtigsten Techniken zur Bearbeitung von Anfragen ist die Verwendung von QoS-Levels (Quality of Service) für Ihre MQTT-Nachrichten. QoS-Stufen definieren, wie der Broker und die Abonnenten mit Ihren Nachrichten umgehen sollen. Es gibt drei QoS-Stufen: 0, 1 und 2.
QoS-Level 0 ist am unzuverlässigsten, da Nachrichten nur einmal gesendet werden und nicht garantiert werden, dass sie dem Abonnenten zugestellt werden. QoS-Level 1 ist zuverlässiger, da Nachrichten mindestens einmal gesendet und garantiert mindestens einmal an den Teilnehmer zugestellt werden. QoS-Level 2 ist am zuverlässigsten, da Nachrichten genau einmal gesendet und garantiert genau einmal an den Teilnehmer zugestellt werden. Wie Ihre Geräte kommunizieren, hängt von anderen ab häufige Sicherheitsprobleme und -behebungen für das Internet der Dinge (IoT). Sie möchten auf dem Laufenden bleiben.
Um QoS-Stufen zu verwenden, können Sie die gewünschte Stufe beim Veröffentlichen von Nachrichten mithilfe von angeben client.publish() Funktion:
client.publish("Thema", "Hallo Welt!", 1);
Dadurch wird die Nachricht veröffentlicht Hallo Welt! zum Thema Thema mit QoS-Ebene 1.
Eine weitere fortschrittliche Technik ist die Verwendung Letzter Wille und Testament (LWT) Mitteilungen. LWT-Nachrichten sind Nachrichten, die vom Broker gesendet werden, wenn ein Client unerwartet die Verbindung trennt. Wir glauben, dass dies wichtig ist, um Offline-Geräte zu erkennen oder Aktionen auszulösen, wenn ein Gerät die Verbindung trennt.
Um LWT-Meldungen zu verwenden, können Sie die LWT-Meldung beim Herstellen einer Verbindung zum Broker mithilfe von angeben client.setWill() Funktion:
client.setWill("Status", "offline", 1, WAHR);
Dadurch wird die LWT-Meldung auf gesetzt offline auf der Status Thema mit QoS-Level 1 und dem Retain-Flag auf gesetzt WAHR.
Bereiten Sie sich auf Ihr nächstes IoT-Projekt vor
Das ESP-01-Modul ist eine erschwingliche und kompakte Lösung für IoT-Projekte, und die Verwendung mit MQTT kann Ihr Projekt auf die nächste Stufe bringen. Obwohl die anfängliche Einrichtung entmutigend sein kann, machen die Vorteile von MQTT, wie z. B. leichte Kommunikation und hohe Skalierbarkeit, es zu einer lohnenden Investition.