So stellen Sie mit ESP8266 Ihren eigenen WLAN-Button her
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 verbundener Geräte aufbauen.
Manchmal möchte man jedoch etwas einfaches. Kein Schnickschnack, nur eine Schaltfläche, die eine einzelne Aufgabe erledigt. Sie sind möglicherweise bereits mit so etwas vertraut, wenn Sie mit einer Amazon Dash-Schaltfläche Alltagsgegenstände des täglichen Gebrauchs neu ordnen.
Heute werden wir eine Wi-Fi-fähige Schaltfläche mit einer NodeMCU erstellen und so programmieren, dass IFTTT verwendet wird. Nun, alles! Schriftliche Anweisungen nach dem Video, wenn Sie möchten.
Was du brauchen wirst
Du wirst brauchen:
- 1 x NodeMCU (ESP8266) board, verfügbar für $ 2-3 auf AliExpress
- 1 x Drucktaste
- 1 x LED (optional)
- 1 x 220 Ohm Widerstand (optional)
- Breadboard- und Anschlussdrähte
- Micro USB zur Programmierung
- Computer mit der installierten Arduino IDE
Abgesehen von der NodeMCU sollten Sie die meisten dieser Teile in jedem Arduino-Starter-Kit finden. 4 Beste Starter-Kits für Arduino-Anfänger 4 Beste Starter-Kits für Arduino-Anfänger Es gibt viele großartige Arduino-Anfängerprojekte, mit denen Sie beginnen können. Sie benötigen jedoch zuerst ein Arduino und einige Komponenten. Hier ist unsere Auswahl aus 4 der besten Starter-Kits für… Read More. In diesem Lernprogramm wird davon ausgegangen, dass Sie die optionale LED und den optionalen 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 gemäß diesem Diagramm ein.
Der violette Draht hängt an Pin D0 auf einer Seite der Taste. Das grüne Kabel verbindet die andere Seite der Taste mit der RST-Pin. Der blaue Draht läuft ab Pin D1 auf den Widerstand und die LED. Das negative Bein der LED hängt am GND-Pin der NodeMCU.
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 zum Erdungsstift gebracht habe, ist unser Schnell-Crash-Kurs "Was ist ein Breadboard und wie funktioniert es?" Ein schneller Crash-Kurs Was ist ein Breadboard und wie funktioniert es? Schneller Crash-Kurs Möchten Sie DIY-Elektronik lernen? Sie haben möglicherweise ein Steckbrett in Ihrem Starter-Kit erhalten. Aber was ist ein Steckbrett und wie funktioniert es? Mehr lesen sollte helfen, es aufzuklären! Überprüfen Sie Ihr Setup und verbinden Sie Ihre NodeMCU über USB mit dem Computer.
Schritt 2: Einrichten der IDE
Bevor Sie mit der Codierung beginnen, müssen Sie einige Vorbereitungen treffen. Wenn Sie dies noch nicht getan haben, richten Sie die Arduino IDE so ein, dass Ihre NodeMCU-Karte erkannt wird. Sie können es über Ihre Boardliste hinzufügen Datei> Voreinstellungen.
Eine ausführlichere Erklärung zu diesem Schritt finden Sie in unserem NodeMCU-Einführungsartikel.
Für dieses Projekt werden zwei Bibliotheken benötigt. Navigiere zu Skizze> Bibliothek einschließen> Bibliotheken verwalten. Suchen nach ESP8266WIFI von Ivan Grokhotkov und installieren Sie es. Diese Bibliothek wurde zum Herstellen von WLAN-Verbindungen mit der NodeMCU-Karte geschrieben.
Nächste Suche nach dem IFTTTWebhook von John Romkey und installieren Sie die neueste Version. Diese Bibliothek soll das Senden von Webhooks an IFTTT vereinfachen.
Das ist alles, was wir brauchen, lasst uns Code schreiben!
Wie funktioniert der Code?
Wir werden die verwenden ESP8266WIFI Bibliothek, um eine Wi-Fi-Verbindung herzustellen. Das IFTTTWebhooks Bibliothek fordert eine Anfrage an IFTTT-in diesem Fall, um bei Twitter zu posten. Dann weisen Sie das NodeMCU-Board an, in den Ruhezustand zu wechseln, wenn Sie es nicht verwenden, um Strom zu sparen.
Wenn die Taste gedrückt wird, wird die Verknüpfung mit der Taste hergestellt D0 und RST Stifte. Dies setzt die Karte zurück und der Vorgang wird erneut ausgeführt.
Der größte Teil des Codes in diesem Lernprogramm ist für Anfänger einfach genug. Das heißt, wenn Sie anfangen, werden Sie es viel leichter verstehen, wenn Sie unserem Arduino-Anfängerleitfaden folgen.
Dieses Tutorial führt den Code in Abschnitten durch, um das Verständnis zu erleichtern. Wenn Sie direkt mit dem Geschäft beginnen möchten, finden Sie den vollständigen Code bei Pastebin. Beachten Sie, dass Sie in diesem Code immer noch Ihre Wi-Fi- und IFTTT-Anmeldeinformationen eingeben müssen, damit er funktioniert!
Schritt 3: Testen Sie den tiefen Schlaf
Zu Beginn 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.
#umfassen #umfassen #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_RUF_RUF #
Hier fügen 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 das obige Fritzing-Diagramm. Die NodeMCU hat eine andere Pinbelegung als Arduino-Boards. Dies ist jedoch kein Problem aufgrund dieses praktischen Diagramms:
Erstellen Sie nun eine Setup-Funktion:
void setup () Serial.begin (115200); while (! Serial) Serial.println (""); // Druckt eine leere Zeile vor und nach dem Button Press Serial.println ("Button Pressed"); Serial.println (""); // eine leere Zeile drucken ESP.deepSleep (wakePin);
Hier richten wir unsere serielle Schnittstelle ein und warten mit einer while-Schleife, bis sie beginnt. Da dieser Code nach Drücken der Reset-Taste ausgelöst wird, wird gedruckt “Taste gedrückt” zum seriellen Monitor. Dann sagen wir der NodeMCU, dass sie in den Tiefschlaf gehen soll, bis der Knopf das verbindet wakePin zum RST Pin wird gedrückt.
Zum Schluss fügen Sie dies zum Testen hinzu Schleife() Methode:
void loop () // Wenn Deep Sleep funktioniert, wird dieser Code niemals ausgeführt. Serial.println ("Dies sollte nicht gedruckt werden");
Normalerweise führen Arduino-Skizzen die Loop-Funktion nach dem Setup kontinuierlich aus. Da wir die Platine in den Ruhezustand versetzen, bevor das Setup beendet ist, läuft die Schleife niemals.
Speichern Sie Ihre Skizze und laden Sie sie auf die Tafel hoch. Öffnen Sie den seriellen Monitor und Sie sollten sehen “Taste gedrückt.” Bei jedem Auslösen der Schaltfläche wird die Platine zurückgesetzt und die Nachricht wird erneut gedruckt. Es klappt!
Ein Hinweis zum seriellen Monitor
Bei einigen Ihrer Projekte haben Sie möglicherweise einige unsinnige Zeichen im seriellen Monitor bemerkt. Dies liegt in der Regel daran, dass der serielle Monitor nicht auf die gleiche Baudrate wie der eingestellt wird Serienbeginn (XXXX) Bewertung.
Viele Handbücher schlagen vor, die serielle Verbindung für ein Projekt wie dieses mit einer Baudrate von 115200 zu starten. Ich habe viele Kombinationen ausprobiert und sie hatten vor und nach seriellen Nachrichten unterschiedliche Ausmaße. Laut verschiedenen Forenbeiträgen kann dies auf ein fehlerhaftes Board oder ein Problem mit der Softwarekompatibilität zurückzuführen sein. Da es das Projekt nicht allzu sehr beeinträchtigt, wähle ich vor, so zu tun, als würde es nicht passieren.
Wenn Sie Probleme mit dem seriellen Monitor haben, versuchen Sie es mit anderen Baudraten und prüfen Sie, welche für Sie am besten geeignet ist.
Schritt 4: Herstellen einer Verbindung zum WLAN
Erstellen Sie nun eine Funktion zum Verbinden mit Ihrem WLAN-Netzwerk.
void connectToWifi () Serial.print ("Verbinden mit: SSID NAME"); // unkommentieren Sie die nächste Zeile, um den SSID-Namen anzuzeigen //Serial.print(ssid); WiFi.begin (SSID, Passwort); Serial.println (""); // Druckt eine leere Zeile Serial.print ("Verbindungsversuch:"); // Versuche 10 Sekunden lang eine Verbindung herzustellen int i = 10; while (WiFi.status ()! = WL_CONNECTED && i> = 0) delay (1000); Seriendruck (i); Serialdruck (","); ich--; Serial.println (""); // Druckt eine leere Zeile // Druckverbindungsergebnis if (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // Druckt eine leere Zeile Serial.print ("NodeMCU-IP-Adresse:"); Serial.println (WiFi.localIP ()); else Serial.println ("Verbindung fehlgeschlagen - Überprüfen Sie Ihre Anmeldeinformationen oder Verbindung");
Diese Methode versucht, zehn Mal eine Verbindung mit Ihrem Netzwerk herzustellen, dazwischen eine Sekunde. Erfolgreicher oder fehlgeschlagener Verbindungsdruck an den seriellen Monitor.
Schritt 5: Aufruf der Verbindungsmethode
Genau jetzt die connectToWifi () wird nie gerufen. Fügen Sie Ihrer Setup-Funktion einen Anruf zwischen den hinzu “Taste gedrückt” Nachricht und Senden des Boards in den Schlaf.
connectToWifi ();
Falls Sie sich fragen, wo das passt, sollte es so aussehen:
Ersetzen Sie oben in der Skizze das ssid und Passwort Variablen mit Ihren WLAN-Anmeldeinformationen. Speichern Sie Ihre Skizze und laden Sie sie auf die Tafel hoch.
Wenn die Karte jetzt hochgefahren wird, versucht sie, sich mit Ihrem WLAN-Netzwerk zu verbinden, bevor Sie zur Setup-Funktion zurückkehren. Jetzt können Sie die IFTTT-Integration einrichten.
Schritt 6: Einrichten der IFTTT-Integration
IFTTT ermöglicht die Integration mit einer Vielzahl von Web-Services. Wir haben es in unserem Wi-Fi-PC-Tower-Lernprogramm verwendet, um eine Benachrichtigung zu senden, sobald eine neue E-Mail empfangen wird. Heute verwenden wir es, um auf Knopfdruck einen Tweet zu senden.
Navigieren Sie zu Meine Applets Seite und wählen Sie Neues Applet
Klicke auf +diese und verbinden mit Webhooks. Wählen “Erhalten Sie eine Webanfrage” und benennen Sie Ihre Veranstaltung. Halte es einfach! Notieren Sie sich den Namen des Ereignisses. Sie müssen ihn später zu Ihrem NodeMCU-Code hinzufügen. Klicken “Trigger erstellen”.
Jetzt auswählen +Das. Suche nach dem Twitter Service und verbinden Sie sich damit - Sie müssen es autorisieren, um auf Ihrem Twitter-Account zu posten. Wählen “Einen Tweet posten” 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 definierten Variablen den IFTTT-API-Schlüssel und den Ereignisnamen hinzufügen. Um den API-Schlüssel zu finden, navigieren Sie zu Meine Applets und wählen Sie Webhooks unter dem Dienstleistungen Tab. Wählen Dokumentation um auf Ihren Schlüssel zuzugreifen.
Kopieren Sie den Schlüssel und den Namen des Ereignisses 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 stehen müssen und nur den Text ersetzen.
Zwischen dem Aufruf der connectToWifi () Wenn Sie die Karte in den Ruhezustand versetzen, erstellen Sie eine Instanz des IFTTTWebhook-Bibliotheksobjekts. Die LED signalisiert den Abschluss der Aufgabe, bevor der Tiefschlaf erneut beginnt.
// gerade mit Wi-Fi verbunden IFTTTWebhook Hook (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); DigitalWrite (LEDPin, HIGH); Verzögerung (200); DigitalWrite (LEDPin, LOW); // jetzt schick Board zum schlafen
Aufruftrigger auf der Haken Das Objekt löst das IFTTT-Applet aus und sollte auf Ihrem Twitter-Konto posten. 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.
Erledigt! Wie können Sie es weiter verbessern??
Dies ist eine Basisversion einer Wi-Fi-Taste, die jedoch auf viele Arten verbessert werden kann. Zur Vereinfachung wird der USB-Anschluss hier zur Stromversorgung verwendet. Eine Batterie würde es völlig mobil machen, und ein Gehäuse, das die Schaltung hält, wäre das perfekte Einsteigerprojekt für den 3D-Druck.
Trotz Tiefschlaf kann es vorkommen, dass eine Batterie schnell leer wird. Es gibt viele Arduino-Energiespartipps, die bei solchen Projekten helfen. Schwieriger als dieses Tutorial: Wenn Sie Ihr eigenes, energiebewusstes Arduino von Grund auf neu erstellen, kann eine batteriebetriebene Wi-Fi-Taste für Monate halten!
Dieses Projekt eignet sich hervorragend 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 Smart Home Automation. 10 der besten IFTTT-Rezepte für Smart Home Automation. Hier sind zehn unserer Favoriten für den Einstieg. Weitere Informationen finden Sie auf IFTTT. Sobald Sie sich mit den Grundlagen vertraut gemacht haben, können Sie mit fast jedem Sensor oder Schalter praktisch jeden Service auslösen, den Sie sich vorstellen können.
Bild-Gutschrift: Vadmary / Depositphotos
Erfahren Sie mehr über: Arduino, DIY-Projekt-Tutorials.