Treffen Sie den Arduino-Killer ESP8266
Wi-Fi ist ein unverzichtbares Kit für alle DIY-Projekte des Internet of Things (IoT), aber unser Lieblings-Arduino wird nicht mit Wi-Fi geliefert. Durch das Hinzufügen eines Wi-Fi-Schilds können die Gesamtkosten auf etwa 40 US-Dollar steigen. Was ist, wenn ich Ihnen sagte, es gibt ein Arduino-kompatibles Entwicklungsboard mit integriertem WLAN für weniger als 10 US-Dollar? Nun, das gibt es.
Triff den Arduino-Killer: ESP8266. Es war nur eine Frage der Zeit, bis die Krone vom glänzenden Kopf unseres lieben Arduino-Entwicklungsboards gestohlen wurde. Kann man sich in eine Leiterplatte verlieben??
Abgesehen von den einprägsamen Namen wurde der ESP8266 (auch als NodeMCU bekannt) ursprünglich als kostengünstiges WLAN-Add-On für Arduino-Boards vermarktet, bis die Hacker-Community feststellte, dass man das Arduino völlig aus der Gleichung nehmen konnte.
In weniger als einem Jahr hat der ESP8266 an Popularität gewonnen und ist jetzt so gut unterstützt und entwickelt, dass Sie, wenn Sie Arduino verwenden, aufstehen und auf sich aufmerksam machen müssen. Kaufen Sie jetzt einen und befolgen Sie diese Anleitung, um mit der Programmierung Ihres ESP8266 zu beginnen - alles innerhalb der bekannten Arduino-IDE.
Sie sind natürlich nicht auf die Verwendung der Arduino IDE beschränkt - sie sind auch mit Lua kompatibel (was für meine Neulinge wie ein abgespeckter Python aussieht), aber da wir dies aus der Perspektive derer angehen, die wir gelernt haben auf Arduino werden wir das heute exklusiv behandeln.
Es gibt mittlerweile einige Modelle von ESP8266, aber ich werde dieses Modell weiterempfehlen: ESP-12E (auch bekannt als NodeMCU 1.0 oder das neueste Geschwister NodeMCU 2.0).
Es ist etwas teurer als die anderen (6,50 $ im Vergleich zu 4 $!), Enthält jedoch den seriellen Treiber, der zum Programmieren des Chips benötigt wird, und hat einen eingebauten Leistungsregler sowie viele IO-Pins. Es wird weitgehend unterstützt und benötigt außer einer USB-Verbindung zur Programmierung oder Stromversorgung wirklich nichts. Daher ist es am einfachsten, damit zu arbeiten. Wenn Sie eine andere ESP8266-Karte kaufen, benötigen Sie möglicherweise einen separaten 3,3-V-Leistungsregler und einen geeigneten FTDI-Anschluss für die Programmierung.
Erste Schritte mit ESP8266-12E und Arduino
Installieren Sie zuerst die seriellen Treiber für diese Karte. Möglicherweise müssen Sie die KEXT-Signatur deaktivieren, wenn Sie El Capitan aufgrund neuer Sicherheitssysteme ausführen.
Als Nächstes müssen Sie die Unterstützung für ESP8266 vom Board-Manager der Arduino IDE aktivieren. Öffnen Sie die Einstellungen und geben Sie die folgende URL an der entsprechenden Stelle ein Zusätzliche Board Manager-URLs:
Klicken Sie auf OK und öffnen Sie dann die Boards Manager von Werkzeuge -> Board Suchen Sie im Menü nach esp8266 und installieren Sie die Plattform. Sie sollten jetzt eine Auswahl für NodeMCU 1.0 sehen.
Behalten Sie die CPU- und Upload-Geschwindigkeit bei, und wählen Sie Ihren neu installierten seriellen Port aus. Auf dem Mac wird dies als angezeigt cu.SLAB_USBtoUART.
Als erstes Programm empfehle ich den einfachen Wi-Fi-Scanner - finden Sie ihn aus Datei -> Beispiele -> ESP8266WiFi -> WifiScan. Beachten Sie, dass der Upload ziemlich langsam ist, aber irgendwann wird es sagen “Upload abgeschlossen” An diesem Punkt (nicht vor oder Sie brechen den Upload-Vorgang ab) können Sie den seriellen Monitor öffnen. Sie sollten etwas Ähnliches sehen:
Erfolg! Versuchen wir jetzt, eine Verbindung herzustellen.
Hier ist ein absolut einfacher Barebones-Code für die Verbindung zu einem Wi-Fi-Netzwerk. Es macht nichts anderes als nur Verbinden, aber es ist etwas, das Sie später hinzufügen können. Vergessen Sie nicht, die YOUR_SSID und YOUR_PASSWORD in Ihre Wi-Fi-Details zu ändern. Laden Sie die serielle Konsole hoch, und Sie sollten sehen, dass die Verbindung hergestellt wird.
#include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () Serial.begin (115200); Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin (SSID, Passwort); while (WiFi.status ()! = WL_CONNECTED) delay (500); Serialdruck ("."); Serial.println (""); Serial.println ("WiFi connected"); Serial.println ("IP-Adresse:"); Serial.println (WiFi.localIP ()); void loop ()
Ist es nicht toll, wie lächerlich einfach das war?
Bevor wir weitermachen, hier ist das Pinbelegungsdiagramm - es könnte später nützlich sein. Beachten Sie, dass die PIN-Nummern, auf die sich der Code bezieht, die GPIO-Nummern sind, nicht die D0-16, die wahrscheinlich auf der Platine Ihrer Platine steht. Wenn Sie absolut nicht herausfinden können, warum ein Sensor nicht funktioniert, haben Sie wahrscheinlich die Pin-Nummern gemischt.
Schneller Smart Home Sensor mit MQTT und DHT11
Hier ist ein praktisches Beispiel, das Sie sofort zur Überwachung Ihres Hauses verwenden können. Wir fügen einen DHT11-Temperatur- und Luftfeuchtigkeitssensor hinzu und melden die Werte mithilfe des MQTT-Protokolls über das Wi-Fi-Netzwerk. In meinem Fall an ein OpenHAB-Heimautomationssystem (falls nicht, sollten Sie unseren Anfängerleitfaden lesen.) Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi OpenHAB ist eine ausgereifte Open-Source-Plattform für Heimautomation, die auf einer Vielzahl von Hardware ausgeführt wird und protokollunabhängig ist Es kann an fast jede Hausautomationshardware angeschlossen werden, die derzeit auf dem Markt erhältlich ist.Lesen Sie mehr und Teil 2, der sich speziell mit der Installation eines MQTT-Servers befasst. OpenHAB-Beginnerhandbuch Teil 2: ZWave, MQTT, Regeln und Diagramme OpenHAB-Beginnerhandbuch Teil 2: ZWave, MQTT, Rules and Charting OpenHAB, die Open-Source-Software für die Hausautomation, übertrifft bei weitem die Fähigkeiten anderer Hausautomationssysteme auf dem Markt - aber es ist nicht einfach, sich einzurichten handeln, kann es geradezu frustrierend sein. Weiterlesen ).
Verbinden Sie auf der Verdrahtungsseite den DHT-Sensor mit GND, 3,3 v, und ~ D4 (oder GPIO 2). Das ist alles, was wir jetzt brauchen.
Laden Sie diese MQTT- und DHT-Bibliotheken herunter. Auch wenn Sie sie schon haben, Laden Sie diese trotzdem herunter, sichern Sie Ihre Inhalte und überschreiben Sie sie. Die neueste DHT11-Bibliothek von Adafruit verwendet einen automatischen Algorithmus, um die Geschwindigkeit zu bestimmen, mit der Daten vom Sensor gelesen werden. Auf ESP8266 ist dies jedoch fehlerhaft, und in 90% der Fälle führt dies zu fehlerhaften Messwerten.
Mit der alten Version 1.0 der Bibliothek, die ich in den Download aufgenommen habe, können Sie das Timing manuell ändern: 11 funktioniert am besten für diese ESP2866-Boards. Ich habe auch viele Exemplare der MQTT-Bibliothek durchgesehen und versucht, eine gute zu finden Ruf zurück Funktion, schließlich landet auf dem eingeschlossenen. Sie müssen die Arduino IDE neu starten, nachdem Sie diese ersetzt haben.
Hier ist der vollständige Code für das Projekt. Am oberen Rand befinden sich alle Variablen, die Sie ändern müssen, einschließlich WLAN-Details, MQTT-Server (stattdessen kann bei Verwendung eines Cloud-Servers eine URL verwendet werden, obwohl keine Authentifizierung vorhanden ist) und Kanäle, auf denen Daten veröffentlicht werden können.
So funktioniert's und ein paar Anmerkungen:
- Zuerst verbinden wir uns mit dem Wi-Fi, dann mit dem MQTT-Server und beginnen dann mit dem Main Schleife().
- In der Schleife fragen wir den DHT-Sensor alle 60 Sekunden ab und veröffentlichen die Messwerte an die entsprechenden MQTT-Kanäle. Wenn Sie die meisten Messergebnisse in einer Fehlernachricht finden, haben Sie die falsche Version der DHT-Bibliothek - Downgrade auf v1.0.
- client.loop () übergibt die Kontrolle an die MQTT-Bibliothek und kann auf eingehende Nachrichten reagieren.
- Da ist ein Nachricht erhalten() Funktion, bei der eingehende Nachrichten verarbeitet werden - führen Sie einfach eine einfache if-Anweisung aus, um die Nutzdaten mit der erwarteten Nachricht zu vergleichen. Sie können damit beispielsweise ein Relais aktivieren.
- Nachdem ich diese für ein paar Tage ausgeführt hatte, stellte ich fest, dass sie zufällig nicht mehr funktionieren würden - ich gehe davon aus, dass dies eine Art Speicherverlust ist, aber wenn ich nicht über die Codierfähigkeiten verfüge, die sich damit beschäftigen, könnte es mit den Kernbibliotheken sein, ich habe mich jeden Tag für einen einfachen soft reset entschieden. Genau einen Tag, nachdem die Sensorknoten zum ersten Mal aktiviert wurden, starten sie sich selbst neu.
- Wenn diese günstigen DHT11-Module mit 3,3 V betrieben werden, sind die Luftfeuchtigkeitswerte viel niedriger als sie sollten. Ich habe dieses Problem mit einer einfachen Multiplikation gelöst und mit einem kommerziellen Sensor kalibriert. Ich würde Ihnen raten, sich auch von Ihrer eigenen bekannten Quelle zu überzeugen, bevor Sie sich auf die Messwerte verlassen. Alternativ versorgen Sie sie mit 5V - aber Sie müssen zwischen dem Daten-Pin und dem ESP8266 einen 5-V-3,3-V-Logikpegelschieber platzieren, andernfalls wird er beschädigt.
Wenn alles gut gelaufen ist, sollten Sie jetzt Sensorablesungen in Ihrem MQTT-Broker erhalten und können diese mit OpenHAB verbinden, wie in Teil 2 unseres Anfängerleitfadens OpenHAB-Beginnerhandbuch Teil 2 beschrieben: ZWave, MQTT, Rules und Charting OpenHAB Beginner's Leitfaden Teil 2: ZWave, MQTT, Regeln und Diagramme OpenHAB, die Open-Source-Software für Heimautomation, übertrifft bei weitem die Fähigkeiten anderer auf dem Markt verfügbarer Hausautomationssysteme. Die Einrichtung ist jedoch nicht einfach. In der Tat kann es geradezu frustrierend sein. Lesen Sie mehr, wo ich Ihnen auch gezeigt habe, wie Sie die Daten grafisch darstellen.
Leb wohl, Arduino, wir haben dich so geliebt. Nur ein Scherz: Nicht überall in meinem Haus gibt es sogar WLAN, also brauche ich für diese Spots immer noch ein Maschennetz mit Arduino- und RF-Empfängern.
Für ein unterhaltsames Projekt erfahren Sie, wie Sie mit dem ESP8266 eine Wi-Fi-Schaltfläche erstellen. So erstellen Sie eine eigene Wi-Fi-Schaltfläche mit ESP8266 So stellen Sie eine eigene Wi-Fi-Schaltfläche mit ESP8266 her In diesem Lernprogramm erfahren Sie, was Sie tun können So erstellen Sie eine Wi-Fi-fähige Schaltfläche mit NodeMCU und IFTTT. Weiterlesen .
Aber was machen Sie mit ESP8266? Alle Projekte mit ESP8266, die Sie bei MakeUseOf aufgeschrieben haben möchten? Lass es uns in den Kommentaren wissen!
Erfahren Sie mehr über: Arduino, Elektronik, Internet der Dinge, Smart Sensor.