So stellen Sie mit dem ESP8266 eine eigene Wi-Fi-Verbindung her
Werbung
Das Internet der Dinge hat ein enormes DIY-Potenzial. Mit genügend Know-how und ein paar billigen Komponenten können Sie ein komplexes System von verbundenen Geräten aufbauen.
Manchmal möchten Sie jedoch etwas Einfaches. Kein Schnickschnack, nur eine Taste, die eine einzelne Aufgabe ausführt. Möglicherweise sind Sie bereits mit so etwas vertraut, wenn Sie jemals eine Amazon Dash-Schaltfläche verwendet haben, um alltägliche Haushaltsgegenstände neu zu ordnen.
Heute werden wir eine Wi-Fi-fähige Schaltfläche mit einer NodeMCU erstellen und sie so programmieren, dass sie IFTTT verwendet, um ... nun, alles! Schriftliche Anweisungen nach dem Video, wenn Sie es vorziehen.
Was du brauchen wirst
Du wirst brauchen:
- 1 x NodeMCU (ESP8266) Board, verfügbar für $ 2-3 auf AliExpress
- 1 x Druckknopf
- 1 x LED (optional)
- 1 x 220 Ohm Widerstand (optional)
- Steckbrett und Anschlussdrähte
- Micro USB zur Programmierung
- Computer mit installierter Arduino IDE
Abgesehen von der NodeMCU sollten Sie in der Lage sein, die meisten dieser Teile in jedem Arduino-Starterkit zu finden. 4 Best Starter Kits für Arduino-Anfänger 4 Best Starter Kits für Arduino-Anfänger Es gibt viele großartige Anfänger-Arduino-Projekte, mit denen Sie beginnen können. Aber du brauchst zuerst ein Arduino und einige Komponenten. Hier ist unsere Auswahl von 4 der besten Starter-Kits für ... Read More. In diesem Lernprogramm wird davon ausgegangen, dass Sie die optionale LED und den Widerstand verwenden, diese sind jedoch nicht unbedingt erforderlich.
Schritt 1: Einrichten der Schaltung
Das Hardware-Setup ist für dieses Projekt sehr einfach. Richten Sie Ihr Board nach diesem Schema ein.
Der lila Draht verbindet Pin D0 mit einer Seite der Taste. Das grüne Kabel verbindet die andere Seite der Taste mit dem RST-Pin . Das blaue Kabel verläuft von Pin D1 zum Widerstand und zur LED. Der negative Zweig der LED wird an den GND-Pin der NodeMCU angeschlossen.
Wenn das Steckbrett eingerichtet ist, sollte es ungefähr so aussehen:
Wenn Sie sich fragen, wie ich meine LED mit nur diesen winzigen Kabelstücken auf den Erdungsstift gebracht habe, finden Sie in unserem Schnellkurs zum Absturz von Steckbrettern, Was ist ein Steckbrett und wie funktioniert es? Ein kurzer Crashkurs Was ist ein Steckbrett und wie funktioniert es? Ein schneller Crashkurs Möchten Sie DIY-Elektronik lernen? Möglicherweise haben Sie ein Steckbrett in Ihrem Starterkit erhalten. Aber was ist ein Steckbrett und wie funktioniert es? Lesen Sie mehr sollte helfen, es zu klären! Überprüfen Sie Ihr Setup und schließen Sie Ihre NodeMCU über USB an den Computer an.
Schritt 2: Einrichten der IDE
Bevor Sie mit dem Codieren beginnen können, müssen Sie einige Vorbereitungen treffen. Wenn Sie dies noch nicht getan haben, richten Sie die Arduino IDE so ein, dass sie Ihre NodeMCU-Karte erkennt. Sie können es über Datei> Einstellungen zu Ihrer Forenliste hinzufügen.
Eine ausführlichere Erläuterung dieses Schritts finden Sie in unserem NodeMCU-Einführungsartikel.
Für dieses Projekt werden zwei Bibliotheken benötigt. Navigieren Sie zu Skizze> Bibliothek einschließen> Bibliotheken verwalten . Suchen Sie nach ESP8266WIFI von Ivan Grokhotkov und installieren Sie es. Diese Bibliothek wurde für das Herstellen von Wi-Fi-Verbindungen mit der NodeMCU-Karte erstellt.
Suchen Sie anschließend nach dem IFTTTWebhook von John Romkey und installieren Sie die neueste Version. Diese Bibliothek soll das Senden von Webhooks an IFTTT vereinfachen.
Das ist die ganze Vorbereitung, die wir brauchen, lasst uns Code!
Wie der Code funktioniert
Wir werden die ESP8266WIFI- Bibliothek verwenden, um eine Wi-Fi-Verbindung herzustellen. Die IFTTTWebhooks- Bibliothek sendet eine Anfrage an IFTTT - in diesem Fall, um auf Twitter zu posten. Weisen Sie dann die NodeMCU-Karte an, in den Ruhezustand zu wechseln, wenn sie nicht verwendet wird, um Strom zu sparen.
Wenn die Taste gedrückt wird, werden die Pins D0 und RST verbunden . Dadurch wird die Karte zurückgesetzt und der Vorgang wiederholt sich.
Der größte Teil des Codes in diesem Tutorial ist für Anfänger einfach genug. Das heißt, wenn Sie anfangen, werden Sie es viel einfacher zu verstehen finden, nachdem Sie unserem Arduino Anfänger-Handbuch gefolgt sind.
Dieses Tutorial geht den Code in Teilen durch, um das Verständnis zu erleichtern. Wenn Sie direkt zum Geschäft kommen möchten, finden Sie den vollständigen Code bei Pastebin. Beachten Sie, dass Sie in diesen Code noch Ihre WLAN- und IFTTT-Anmeldeinformationen eingeben müssen, damit er funktioniert!
Schritt 3: Tiefschlaf testen
Zunächst erstellen wir einen einfachen Test, um zu zeigen, wie der Tiefschlaf funktioniert. Öffnen Sie eine neue Skizze in der Arduino IDE. Geben Sie die folgenden zwei Codeabschnitte ein.
#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Hier schließen wir unsere Bibliotheken ein und definieren einige Variablen, die wir in unserer Skizze benötigen. Sie werden feststellen, dass ledPin und wakePin hier anders nummeriert sind als im obigen Fritzing-Diagramm. Die NodeMCU hat eine andere Pinbelegung als Arduino-Boards. Dies ist jedoch kein Problem, da das folgende Diagramm praktisch ist:
Erstellen Sie nun eine Setup-Funktion:
void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }
Hier richten wir unsere serielle Schnittstelle ein und warten mit einer while-Schleife, bis sie beginnt. Da dieser Code nach dem Drücken der Reset-Taste ausgelöst wird, drucken wir "Taste gedrückt " auf den seriellen Monitor. Dann weisen wir die NodeMCU an, in den Tiefschlaf zu gehen, bis der Knopf gedrückt wird, der den WakePin mit dem RST- Pin verbindet.
Fügen Sie zum Testen Folgendes zu Ihrer loop () -Methode hinzu:
void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); }
Normalerweise führen Arduino-Skizzen die Schleifenfunktion nach dem Setup kontinuierlich aus. Da wir das Board vor Abschluss des Setups in den Ruhezustand versetzen, wird die Schleife nie ausgeführt.
Speichern Sie Ihre Skizze und laden Sie sie auf die Tafel hoch. Öffnen Sie den seriellen Monitor und es sollte „Button Pressed“ ( Taste gedrückt) angezeigt werden . Jedes Mal, wenn die Taste ausgelöst wird, wird die Karte zurückgesetzt und die Meldung erneut gedruckt. Es klappt!
Ein Hinweis zum seriellen Monitor
Möglicherweise haben Sie während einiger Ihrer Projekte Unsinnszeichen im seriellen Monitor bemerkt. Dies liegt normalerweise daran, dass der serielle Monitor nicht auf die gleiche Baudrate eingestellt ist wie die Serial.begin- Rate (XXXX) .
In vielen Handbüchern wird empfohlen, die serielle Verbindung für ein solches Projekt mit einer Baudrate von 115200 zu starten. Ich habe viele Kombinationen ausprobiert, und alle hatten vor und nach seriellen Nachrichten ein unterschiedliches Maß an Kauderwelsch. Laut verschiedenen Forenbeiträgen kann dies an einem fehlerhaften Board oder an einem Softwarekompatibilitätsproblem liegen. Da es das Projekt nicht allzu sehr beeinflusst, tue ich so, als ob es nicht passiert.
Wenn Sie Probleme mit dem seriellen Monitor haben, probieren Sie verschiedene Baudraten aus und finden Sie heraus, welche für Sie am besten geeignet ist.
Schritt 4: Verbindung mit Wi-Fi
Erstellen Sie nun eine Funktion zum Herstellen einer Verbindung mit Ihrem Wi-Fi-Netzwerk.
void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); } }
Bei dieser Methode wird zehn Mal innerhalb einer Sekunde versucht, eine Verbindung zu Ihrem Netzwerk herzustellen. Die Verbindung zum seriellen Monitor wurde erfolgreich hergestellt oder konnte nicht hergestellt werden.
Schritt 5: Aufrufen der Verbindungsmethode
Im Moment wird connectToWifi () nie aufgerufen. Fügen Sie Ihrer Setup-Funktion einen Anruf zwischen der Meldung „Button Pressed“ und dem Einschlafen des Boards hinzu.
connectToWifi();
Wenn Sie sich fragen, wo das passt, sollte es so aussehen:
Ersetzen Sie oben in der Skizze die Variablen ssid und password durch Ihre Wi-Fi-Anmeldeinformationen. Speichern Sie Ihre Skizze und laden Sie sie in das Forum hoch.
Wenn das Board nun startet, versucht es, eine Verbindung zu Ihrem Wi-Fi-Netzwerk herzustellen, bevor es zur Setup-Funktion zurückkehrt. Lassen Sie uns nun die IFTTT-Integration einrichten.
Schritt 6: Einrichten der IFTTT-Integration
IFTTT ermöglicht die Integration in eine Vielzahl von Webdiensten. Wir haben es in unserem Tutorial für Wi-Fi-PC-Tower-LEDs verwendet, um eine Warnung zu senden, wenn eine neue E-Mail eingeht. Heute senden wir damit auf Knopfdruck einen Tweet.
Navigieren Sie zur Seite " Meine Applets " und wählen Sie " Neues Applet"
Klicken Sie auf + dies und stellen Sie eine Verbindung zu Webhooks her . Wählen Sie „Webanfrage empfangen“ und benennen Sie Ihre Veranstaltung. Halte es einfach ! Notieren Sie sich den Ereignisnamen. Sie müssen ihn später zu Ihrem NodeMCU-Code hinzufügen. Klicken Sie auf "Trigger erstellen" .
Wählen Sie nun + das aus . Suchen Sie nach dem Twitter- Dienst und stellen Sie eine Verbindung zu ihm her. Sie müssen ihn zum Posten in Ihrem Twitter-Konto autorisieren. Wählen Sie "Tweet veröffentlichen" und wählen Sie Ihre Nachricht.
Im nächsten Bildschirm werden Sie aufgefordert, das Applet zu überprüfen. Klicken Sie auf Fertig stellen. Das ist es!
Schritt 7: Hinzufügen von IFTTT-Anmeldeinformationen zum Code
Zurück in der Arduino IDE müssen Sie Ihren IFTTT-API-Schlüssel und den Ereignisnamen zu Ihren definierten Variablen hinzufügen. Navigieren Sie zum Suchen des API-Schlüssels zu " Meine Applets" und wählen Sie " Webhooks" auf der Registerkarte " Dienste" aus . Wählen Sie Dokumentation, um auf Ihren Schlüssel zuzugreifen.
Kopieren Sie den Schlüssel und den Ereignisnamen in Ihren Code und ersetzen Sie die für sie eingerichteten temporären Namen.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Beachten Sie, dass die Anführungszeichen bleiben müssen und nur den Text ersetzen.
Erstellen Sie zwischen dem Aufrufen von connectToWifi () und dem Einschlafen der Karte eine Instanz des Bibliotheksobjekts IFTTTWebhook. Die LED signalisiert die Beendigung der Aufgabe, bevor der Tiefschlaf wieder beginnt.
//just connected to Wi-Fi IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger(); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep
Das Aufrufen des Auslösers für das Hook- Objekt wird vom IFTTT-Applet ausgelöst und sollte auf Ihrem Twitter-Konto veröffentlicht werden. Speichern Sie Ihre Skizze und laden Sie sie hoch. Sie sollten jetzt einen voll funktionsfähigen Tweeting-Button haben.
Wenn es nicht funktioniert, überprüfen Sie Ihren Code und Ihre Anmeldeinformationen sorgfältig auf Fehler. Wenn Sie wirklich nicht weiterkommen, holen Sie sich den vollständigen Code von oben und vergleichen Sie ihn mit Ihrem eigenen.
Getan! Wie können Sie es weiter verbessern?
Dies ist eine Grundversion einer Wi-Fi-Schaltfläche, aber es gibt viele Möglichkeiten, diese zu verbessern. Der Einfachheit halber wird hier der USB-Anschluss für die Stromversorgung verwendet. Eine Batterie würde es vollkommen mobil machen, und ein Gehäuse, in dem sich die Schaltung befindet, wäre das perfekte 3D-Druckprojekt für Anfänger.
Trotz Tiefschlaf können Sie feststellen, dass der Akku schnell leer wird. Es gibt viele Tipps zum Energiesparen in Arduino, die bei solchen Projekten hilfreich sind. Obwohl dies schwieriger als dieses Tutorial ist, könnte ein batteriebetriebener Wi-Fi-Knopf Monate halten, wenn Sie Ihr eigenes energiebewusstes Arduino von Grund auf neu erstellt haben!
Dieses Projekt eignet sich perfekt für eine Fernbedienung für Smart-Home-Anwendungen. Es gibt bereits eine beträchtliche Anzahl von Hausautomations-Applets 10 der besten IFTTT-Rezepte für die intelligente Hausautomation 10 der besten IFTTT-Rezepte für die intelligente Hausautomation Die richtigen IFTTT-Rezepte für Ihr intelligentes Haus können Ihnen Zeit, Mühe und Energie sparen. Hier sind zehn unserer Favoriten, um Ihnen den Einstieg zu erleichtern. Weitere Informationen finden Sie auf IFTTT. Sobald Sie die Grundlagen verstanden haben, können Sie mit fast jedem Sensor oder Schalter praktisch jeden Service auslösen, den Sie sich vorstellen können.
Bildnachweis: Vadmary / Depositphotos
Erfahren Sie mehr über: Arduino, DIY Project Tutorials.