Werbung

Wi-Fi ist ein unverzichtbares Teil des Kits für DIY-Projekte im Internet der Dinge (IoT), aber unser Lieblings-Arduino verfügt nicht über Wi-Fi. Durch Hinzufügen eines Wi-Fi-Schutzschilds können sich die Gesamtkosten auf rund 40 US-Dollar belaufen. Was wäre, wenn ich Ihnen sagen würde, dass es ein Arduino-kompatibles Entwicklungsboard mit integriertem WLAN für weniger als 10 US-Dollar gibt? Nun, das gibt es.

Lernen Sie den Arduino Killer kennen: ESP8266. Es war nur eine Frage der Zeit, bis die Krone vom glänzenden Kopf unseres lieben Arduino-Entwicklungsausschusses gestohlen wurde. Kann man sich in eine Leiterplatte verlieben?

Abgesehen von eingängigen Namen wurde der ESP8266 (auch als NodeMCU bekannt) ursprünglich als kostengünstiges Wi-Fi-Add-On vermarktet für Arduino-Boards, bis die Hacker-Community erkannte, dass Sie das Arduino aus der Gleichung herausschneiden könnten völlig.

In weniger als einem Jahr hat der ESP8266 an Popularität gewonnen und wird jetzt so gut unterstützt und entwickelt, dass Sie aufstehen und zur Kenntnis nehmen müssen, wenn Sie derzeit Arduino verwenden.

instagram viewer
Kaufen Sie jetzt eineBefolgen Sie dann diese Anleitung, um mit der Programmierung Ihres ESP8266 zu beginnen - alles aus der bekannten Arduino IDE heraus.

Sie sind natürlich nicht auf die Verwendung der Arduino-IDE beschränkt - sie sind auch mit Lua kompatibel (was für mich wie ein abgespeckter Python aussieht Anfängeraugen), aber da wir dies aus der Perspektive derer angehen, die wir auf Arduino gelernt haben, werden wir uns ausschließlich damit befassen heute.

Derzeit gibt es einige Modelle des ESP8266, aber ich werde dieses Modell empfehlen: ESP-12E (auch bekannt als NodeMCU 1.0 oder das neueste Geschwister NodeMCU 2.0).

Es ist etwas teurer als die anderen (6,50 US-Dollar im Vergleich zu 4 US-Dollar!), Enthält jedoch den seriellen Treiber, der zum Programmieren des Chips benötigt wird, einen integrierten Leistungsregler sowie viele E / A-Pins. Es wird weitgehend unterstützt und benötigt nur eine USB-Verbindung zum Programmieren oder zur Stromversorgung. Daher ist es am einfachsten zu handhaben. Wenn Sie eine andere Art von 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

Zuerst, Installieren Sie die seriellen Treiber für dieses Board. Möglicherweise müssen Sie Deaktivieren Sie die KEXT-Signatur wenn Sie El Capitan aufgrund neuer Sicherheitssysteme ausführen.

Als Nächstes müssen wir die Unterstützung für ESP8266 durch den Board Manager der Arduino IDE aktivieren. Öffnen Sie die Einstellungen und geben Sie die folgende URL ein Zusätzliche Board Manager-URLs:

URLs des Arduino Board Managers

Klicken Sie auf OK und öffnen Sie die Boards Manager von Werkzeuge -> Platine Menü, suchen Sie nach esp8266 und installieren Sie die Plattform. Sie sollten jetzt eine Auswahl für NodeMCU 1.0 sehen.

Board auswählen

Lassen Sie die CPU und die Upload-Geschwindigkeit unverändert und wählen Sie Ihre neu installierte serielle Schnittstelle aus. Auf dem Mac wird dies als angezeigt cu. SLAB_USBtoUART.

Als erstes Programm würde ich den einfachen Wi-Fi-Scanner vorschlagen - finden Sie ihn von Datei -> Beispiele -> ESP8266WiFi -> WifiScan. Beachten Sie, dass das Hochladen ziemlich langsam ist, aber schließlich wird "Upload abgeschlossen" angezeigt. An diesem Punkt (nicht vorher oder Sie brechen den Upload-Vorgang ab) können Sie den seriellen Monitor öffnen. Sie sollten etwas Ähnliches sehen:

wifi scan test esp8266
Erfolg! Versuchen wir nun, eine Verbindung zu einem herzustellen.

Hier ist ein absolut einfacher Barebone-Code für die Verbindung mit einem Wi-Fi-Netzwerk. Es wird nichts anderes getan, als nur eine Verbindung herzustellen, aber es ist etwas, das Sie zu später hinzufügen können. Denken Sie daran, die YOUR_SSID und YOUR_PASSWORD in Ihre Wi-Fi-Details zu ändern. Laden Sie die serielle Konsole hoch und öffnen Sie sie.

 #include const char * ssid = "YOUR_SSID"; const char * password = "IHR_PASSWORT"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Herstellen einer Verbindung zu"); Serial.println (ssid); WiFi.begin (ssid, Passwort); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi verbunden"); Serial.println ("IP-Adresse:"); Serial.println (WiFi.localIP ()); } void loop () {}

Ist es nicht toll, wie lächerlich einfach das war?

Bevor wir fortfahren, hier das Pinbelegungsdiagramm - es könnte später nützlich sein. Beachten Sie, dass die im Code angegebenen Pin-Nummern die GPIO-Nummern sind, nicht die D0-16, die wahrscheinlich auf Ihrer Platine geschrieben ist. Wenn Sie absolut nicht herausfinden können, warum ein Sensor nicht funktioniert, haben Sie wahrscheinlich die Pin-Nummern verwechselt.

NodeMCU__v1.0_pinout

Schneller Smart Home Sensor mit MQTT und DHT11

Hier ist ein praktisches Beispiel, mit dem Sie Ihr Zuhause sofort überwachen können. Wir werden einen DHT11-Temperatur- und Feuchtigkeitssensor hinzufügen und dann die Werte mithilfe des MQTT-Protokolls melden über das Wi-Fi-Netzwerk, in meinem Fall zu einem OpenHAB DIY-Hausautomationssystem (wenn nicht, möchten Sie vielleicht lesen unser Leitfaden für Anfänger, um OpenHAB auf einem Raspberry Pi zum Laufen zu bringen Erste Schritte mit OpenHAB Home Automation auf Raspberry PiOpenHAB ist eine ausgereifte Open-Source-Plattform für die Hausautomation, die auf einer Vielzahl von Hardware ausgeführt wird Protokollunabhängig, dh es kann eine Verbindung zu nahezu jeder Hausautomationshardware auf dem Markt hergestellt werden heute. Weiterlesen und Teil 2, der sich speziell mit Installieren eines MQTT-Servers OpenHAB Anfängerhandbuch Teil 2: ZWave, MQTT, Regeln und DiagrammeOpenHAB, die Open-Source-Hausautomationssoftware, übertrifft die Fähigkeiten anderer Hausautomationssysteme auf dem Markt bei weitem - aber die Einrichtung ist nicht einfach. In der Tat kann es geradezu frustrierend sein. Weiterlesen ).

Schließen Sie auf der Verkabelungsseite den DHT-Sensor an an GND, 3.3v, und ~ D4 (oder GPIO 2). Das ist alles was wir jetzt brauchen.

Herunterladen diese MQTT- und DHT-Bibliotheken. Auch wenn Sie sie bereits habenLaden Sie diese trotzdem herunter, sichern Sie, was Sie haben, und überschreiben Sie diese. Die neueste DHT11-Bibliothek von Adafruit verwendet einen automatischen Algorithmus zur Bestimmung der Geschwindigkeit, mit der Daten werden vom Sensor gelesen, sind jedoch auf dem ESP8266 fehlerhaft und führen in 90% der Fälle zu Fehlern Lesungen.

Mit der alten Version 1.0 der Bibliothek, die ich im Download enthalten habe, können Sie das Timing manuell ändern: 11 funktioniert am besten für diese ESP2866-Karten. Ich habe auch viele Exemplare der MQTT-Bibliothek durchgesehen, um eine gute zu finden zurückrufen Funktion, schließlich auf dem enthaltenen landen. Sie müssen die Arduino IDE neu starten, nachdem Sie diese ersetzt haben.

Hier ist die vollständiger Code für das Projekt. Oben finden Sie alle Variablen, die Sie ändern müssen, einschließlich Wi-Fi-Details, MQTT-Server (eine URL kann verwendet werden Wenn Sie stattdessen einen Cloud-Server verwenden (obwohl keine Authentifizierung vorhanden ist) und Kanäle, auf denen Daten veröffentlicht werden sollen.

So funktioniert es und ein paar Hinweise:

  • Zuerst stellen wir eine Verbindung zum Wi-Fi her, dann zum 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 auf den relevanten MQTT-Kanälen. Wenn Sie feststellen, dass die meisten Messwerte zu einer Fehlermeldung führen, haben Sie die falsche Version der DHT-Bibliothek - Downgrade auf Version 1.0.
  • client.loop () Übergibt die Steuerung an die MQTT-Bibliothek, sodass diese auf eingehende Nachrichten reagieren kann.
  • Da ist ein Nachricht erhalten() Funktion, mit der wir eingehende Nachrichten verarbeiten - führen Sie einfach eine if-Anweisung aus, um die Nutzdaten mit der erwarteten Nachricht zu vergleichen. Damit können Sie beispielsweise ein Relais aktivieren.
  • Nachdem ich diese einige Tage lang 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 gegeben Ich habe nicht die Codierungsfähigkeiten, um damit umzugehen, und es könnte sich um die Kernbibliotheken handeln. Ich habe mich für einen einfachen Soft-Reset entschieden Tag. Genau einen Tag nach der ersten Aktivierung der Sensorknoten starten sie sich neu.
  • Wenn diese billigen DHT11-Module mit 3,3 V betrieben werden, sind die Feuchtigkeitswerte weitaus niedriger als sie sein sollten. Ich habe dies mit einer einfachen Multiplikation gelöst und gegen einen kommerziellen Sensor kalibriert. Ich würde Ihnen raten, dies auch anhand Ihrer eigenen bekannten Quelle zu bestätigen, bevor Sie sich auf die Messwerte verlassen. Alternativ können Sie sie mit 5V versorgen - aber Sie müssen einen 5V-3,3V-Logikpegel-Shifter zwischen dem Daten-Pin und dem ESP8266 platzieren, sonst wird er beschädigt.

Wenn alles gut gegangen ist, sollten Sie jetzt Sensorwerte in Ihrem MQTT-Broker erhalten und können diese wie in beschrieben mit OpenHAB verbinden Teil 2 unseres Anfängerleitfadens OpenHAB Anfängerhandbuch Teil 2: ZWave, MQTT, Regeln und DiagrammeOpenHAB, die Open-Source-Hausautomationssoftware, übertrifft die Fähigkeiten anderer Hausautomationssysteme auf dem Markt bei weitem - aber die Einrichtung ist nicht einfach. In der Tat kann es geradezu frustrierend sein. Weiterlesen , wo ich Ihnen auch gezeigt habe, wie man die Daten grafisch darstellt.

Feuchtigkeitsgraph von Openhab

Leb wohl, Arduino, wir haben dich so geliebt. Nur ein Scherz: Nicht überall in meinem Haus kann sogar WLAN genutzt werden. Für diese Spots benötige ich daher noch ein Mesh-Netzwerk mit Arduino- und RF-Empfängern.

Für ein lustiges Projekt schauen Sie sich das an Wie erstelle ich eine Wi-Fi-Taste mit dem ESP8266? So stellen Sie mit ESP8266 Ihre eigene Wi-Fi-Verbindungstaste herIn diesem Tutorial erfahren Sie, wie Sie mit NodeMCU und IFTTT eine Wi-Fi-fähige Schaltfläche erstellen. Weiterlesen .

Aber was machen Sie mit ESP8266? Haben Sie Projekte mit ESP8266, die Sie gerne bei MakeUseOf sehen würden? Lass es uns in den Kommentaren wissen!

James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.