So erstellen Sie Ihre eigene Wi-Fi Connected-Taste mit ESP8266

So erstellen Sie Ihre eigene Wi-Fi Connected-Taste mit ESP8266

Das Internet der Dinge hat ein enormes DIY-Potenzial. Mit genügend Know-how und ein paar billigen Komponenten könnte man ein komplexes System aus vernetzten Geräten aufbauen.





Manchmal möchten Sie jedoch etwas Einfaches. Kein Schnickschnack, nur ein Knopf, der eine einzelne Aufgabe ausführt. Vielleicht kennen Sie so etwas bereits, wenn Sie jemals einen Amazon Dash-Button verwendet haben, um alltägliche Haushaltsgegenstände nachzubestellen.





Heute werden wir eine Wi-Fi-fähige Taste mit einer NodeMCU erstellen und sie so programmieren, dass sie IFTTT verwendet, um ... na ja, alles zu tun! Schriftliche Anweisungen nach dem Video, wenn Sie es vorziehen.





Was du brauchen wirst

Du wirst brauchen:

  • 1 x NodeMCU (ESP8266) Platine, erhältlich für -3 auf AliExpress
  • 1 x Taster
  • 1 x LED (optional)
  • 1 x 220 Ohm Widerstand (optional)
  • Steckbrett und Anschlusskabel
  • Micro-USB zum Programmieren
  • Computer mit installierter Arduino IDE

Abgesehen von der NodeMCU sollten Sie die meisten dieser Teile in jedem Arduino-Starterkit finden können. In diesem Tutorial wird davon ausgegangen, dass Sie die optionale LED und den Widerstand verwenden, dies jedoch nicht unbedingt erforderlich ist.



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 wird befestigt Stift D0 auf einer Seite des Knopfes. Das grüne Kabel verbindet die andere Seite des Knopfes mit dem RST-Pin . Das blaue Kabel läuft von Stift D1 zum Widerstand und LED. Der negative Schenkel der LED wird an der befestigt GND-Pin der NodeMCU.





Wenn das Steckbrett eingerichtet ist, sollte es ungefähr so ​​​​aussehen:

So erstellen Sie einen Screenshot auf einem HP-Laptop ohne Druckbildschirmtaste

Wenn Sie sich fragen, wie ich meine LED mit nur diesen winzigen Kabelstücken zum Massestift bekomme, unser Quick Breadboard-Crashkurs sollte zur Klärung beitragen! Ü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 der Codierung beginnen, müssen Sie einige Vorbereitungen treffen. Falls noch nicht geschehen, richten Sie die Arduino-IDE so ein, dass sie Ihr NodeMCU-Board erkennt. Sie können es zu Ihrer Board-Liste hinzufügen über Datei > Einstellungen .

Eine genauere Erklärung zu diesem Schritt finden Sie in unserem NodeMCU-Einführungsartikel.

Für dieses Projekt werden zwei Bibliotheken benötigt. Navigieren Sie zu Sketch > Bibliothek einschließen > Bibliotheken verwalten . Suchen nach ESP8266WIFI von Ivan Grokhotkov und installieren Sie es. Diese Bibliothek wurde für die Herstellung von Wi-Fi-Verbindungen mit der NodeMCU-Platine geschrieben.

Nächste Suche nach dem IFTTTWebhook von John Romkey und installieren Sie die neueste Version. Diese Bibliothek wurde entwickelt, um das Senden von Webhooks an IFTTT zu vereinfachen.

Das ist die Vorbereitung, die wir brauchen, lasst uns programmieren!

Wie der Code funktioniert

Wir werden die verwenden ESP8266WIFI Bibliothek, um eine Wi-Fi-Verbindung herzustellen. Die IFTTTWebhooks Bibliothek bittet IFTTT – in diesem Fall, auf Twitter zu posten. Weisen Sie dann die NodeMCU-Platine an, in den Ruhezustand zu gehen, wenn sie nicht verwendet wird, um Strom zu sparen.

Wenn die Taste gedrückt wird, wird die D0 und RST Stifte. Dadurch wird das Board zurückgesetzt und der Vorgang wiederholt sich.

Der Groß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 unseren Arduino-Anleitung für Anfänger .

Dieses Tutorial geht den Code in Blöcken durch, um das Verständnis zu erleichtern. Wenn Sie direkt ins Geschäft kommen möchten, finden Sie die kompletter Code bei Pastebin . Beachten Sie, dass Sie in diesem Code weiterhin Ihre Wi-Fi- und IFTTT-Anmeldeinformationen eingeben müssen, damit er funktioniert!

Schritt 3: Tiefschlaf testen

Zu Beginn erstellen wir einen einfachen Test, um zu zeigen, wie Tiefschlaf funktioniert. Öffnen Sie eine neue Skizze in der Arduino IDE. Geben Sie die folgenden beiden Codeblöcke 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 fügen wir unsere Bibliotheken ein und definieren einige Variablen, die wir in unserer Skizze benötigen. Sie werden feststellen, dass der ledPin und der WakePin hier anders nummeriert sind als im obigen Fritzing-Diagramm. Die NodeMCU hat eine andere Pinbelegung als Arduino-Boards. Dies ist jedoch aufgrund dieses praktischen Diagramms kein Problem:

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 unseren seriellen Port ein und verwenden eine while-Schleife, um zu warten, bis er beginnt. Da dieser Code nach Drücken der Reset-Taste ausgelöst wird, drucken wir 'Taste gedrückt' zum seriellen Monitor. Dann sagen wir der NodeMCU, dass sie in den Tiefschlaf gehen soll, bis die Taste die Verbindung verbindet WakePin zum RST Stift wird gedrückt.

Fügen Sie dies schließlich zum Testen zu Ihrem hinzu Schleife() Methode:

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 in den Ruhezustand schicken, bevor das Setup beendet ist, wird die Schleife nie ausgeführt.

Speichern Sie Ihre Skizze und laden Sie sie auf das Board hoch. Öffnen Sie den seriellen Monitor und Sie sollten sehen 'Taste gedrückt.' Jedes Mal, wenn die Taste ausgelöst wird, wird das Board zurückgesetzt und die Meldung wird erneut gedruckt. Es klappt!

Ein Hinweis zum seriellen Monitor

Möglicherweise sind Ihnen bei einigen Ihrer Projekte einige unsinnige Zeichen im seriellen Monitor aufgefallen. Dies liegt normalerweise daran, dass der serielle Monitor nicht auf dieselbe Baudrate eingestellt ist wie der Serial.begin (XXXX) Bewertung.

Viele Anleitungen schlagen vor, die serielle Verbindung für ein Projekt wie dieses mit einer Baudrate von 115200 zu starten. Ich habe viele Kombinationen ausprobiert, und alle hatten vor und nach seriellen Nachrichten einen unterschiedlichen Grad an Kauderwelsch. Laut verschiedenen Forenbeiträgen könnte dies auf ein fehlerhaftes Board oder ein Problem mit der Softwarekompatibilität zurückzuführen sein. Da es sich nicht allzu stark auf das Projekt auswirkt, entscheide ich mich, so zu tun, als würde es nicht passieren.

Windows 10 Computer wacht von selbst auf

Wenn Sie Probleme mit dem seriellen Monitor haben, probieren Sie verschiedene Baudraten aus und sehen Sie, welche für Sie am besten geeignet ist.

Schritt 4: Herstellen einer WLAN-Verbindung

Erstellen Sie nun eine Funktion zum Verbinden 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');
}
}

Diese Methode versucht zehn Mal, eine Verbindung zu Ihrem Netzwerk herzustellen, mit einer Sekunde dazwischen. Erfolgreiche oder fehlgeschlagene Verbindungsdrucke zum seriellen Monitor.

Schritt 5: Aufrufen der Verbindungsmethode

Im Moment ist die connectToWifi() wird nie angerufen. Fügen Sie Ihrer Setup-Funktion zwischen der Meldung „Taste gedrückt“ und dem Senden des Boards in den Ruhezustand einen Anruf hinzu.

connectToWifi();

Falls Sie sich fragen, wo das hingehört, sollte es so aussehen:

Ersetzen Sie oben in der Skizze das ssid und Passwort Variablen mit Ihren Wi-Fi-Anmeldeinformationen. Speichern Sie Ihre Skizze und laden Sie sie auf das Board hoch.

Wenn das Board nun startet, versucht es, sich mit Ihrem Wi-Fi-Netzwerk zu verbinden, 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 mit einer Vielzahl von Webdiensten. Wir haben es in unserem Wi-Fi PC Tower LED-Tutorial verwendet, um eine Benachrichtigung zu senden, wenn eine neue E-Mail eingeht. Heute senden wir damit per Knopfdruck einen Tweet.

Navigieren Sie zum Meine Applets Seite und wählen Sie Neues Applet

Klicke auf +diese und verbinde dich mit Webhooks . Auswählen 'Empfang eine Webanfrage' und benennen Sie Ihre Veranstaltung. Halte es einfach ! Notieren Sie sich den Ereignisnamen, den Sie später Ihrem NodeMCU-Code hinzufügen müssen. Klicken 'Auslöser erstellen' .

Wählen Sie nun +dass . Suche nach Twitter Dienst und stellen Sie eine Verbindung zu ihm her --- Sie müssen ihn autorisieren, um auf Ihrem Twitter-Konto zu posten. Auswählen 'Posten Sie einen Tweet' und wählen Sie Ihre Nachricht.

Auf dem 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. Um den API-Schlüssel zu finden, navigieren Sie zu Meine Applets und wählen Sie Webhooks unter dem Dienstleistungen Tab. Auswählen Dokumentation um auf Ihren Schlüssel zuzugreifen.

Kopieren Sie den Schlüssel und den Ereignisnamen in Ihren Code und ersetzen Sie die dafür 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, nur den Text ersetzen.

Zwischen dem Anrufen der connectToWifi() und das Board in den Ruhezustand schicken, eine Instanz des IFTTTWebhook-Bibliotheksobjekts erstellen. Die LED signalisiert den Abschluss der Aufgabe, bevor der Tiefschlaf wieder beginnt.

wie viel datenverbrauch nutzt youtube tv
//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

Aufruftrigger auf dem Haken -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 Tweet-Button haben.

Wenn es nicht zu funktionieren scheint, ü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.

Fertig! Wie könnten Sie es weiter verbessern?

Dies ist eine grundlegende Version einer Wi-Fi-Taste, aber es gibt viele Möglichkeiten, sie zu verbessern. Der Einfachheit halber wird hier der USB-Anschluss zur Stromversorgung verwendet. Eine Batterie würde es vollständig mobil machen, und ein Gehäuse mit der Schaltung wäre das perfekte 3D-Druckprojekt für Anfänger.

Trotz des Tiefschlafs kann es vorkommen, dass der Akku ziemlich schnell leer wird. Es gibt viele Arduino-Tipps zum Energiesparen die bei solchen Projekten helfen. Obwohl es schwieriger ist als dieses Tutorial, könnte eine batteriebetriebene Wi-Fi-Taste monatelang halten, wenn Sie Ihr eigenes energiebewusstes Arduino von Grund auf neu erstellt haben!

Dieses Projekt wäre perfekt für eine Fernbedienung für Smart-Home-Anwendungen. Es gibt bereits eine beträchtliche Menge an Heimautomatisierungs-Applets auf IFTTT verfügbar. Sobald Sie die Grundlagen verstanden haben, können Sie mit fast jedem Sensor oder Schalter praktisch jeden vorstellbaren Dienst auslösen.

Bildquelle: Vadmary / Depositphotos

Teilen Teilen Tweet Email 6 Audible-Alternativen: Die besten kostenlosen oder günstigen Hörbuch-Apps

Wenn Sie nicht für Hörbücher bezahlen möchten, finden Sie hier einige großartige Apps, mit denen Sie sie kostenlos und legal anhören können.

Weiter lesen
Verwandte Themen
  • Heimwerken
  • Arduino
  • DIY-Projekt-Tutorials
Über den Autor Ian Buckley(216 veröffentlichte Artikel)

Ian Buckley lebt als freiberuflicher Journalist, Musiker, Performer und Videoproduzent in Berlin. Wenn er nicht gerade schreibt oder auf der Bühne steht, bastelt er an DIY-Elektronik oder Code, in der Hoffnung, ein verrückter Wissenschaftler zu werden.

Mehr von Ian Buckley

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren