Så här gör du din egen Wi-Fi-anslutna knapp med ESP8266

Så här gör du din egen Wi-Fi-anslutna knapp med ESP8266 / DIY

Dina Internet har stor potential för DIY. Med tillräckligt med know-how och några billiga komponenter kan du bygga ett komplext system med anslutna enheter.

Ibland vill du dock ha något enkelt. Inga klockor eller visselpipor, bara en knapp som utför en enda uppgift. Du kanske redan är bekant med något sådant om du någonsin har använt en Amazon Dash-knapp för att omorganisera vardagliga hushållsartiklar.

Idag ska vi göra en Wi-Fi-aktiverad knapp med en NodeMCU, och programmera den för att använda IFTTT att göra ... ja, vad som helst! Skriftliga instruktioner efter videon, om du föredrar det.

Vad du behöver

Du kommer behöva:

  • 1 x NodeMCU (ESP8266) styrelse, tillgänglig för $ 2-3 på AliExpress
  • 1 x tryckknapp
  • 1 x LED (tillval)
  • 1 x 220 ohm motstånd (tillval)
  • Brödbräda och kopplingstrådar
  • Micro USB för programmering
  • Dator med Arduino IDE installerad

Bortsett från NodeMCU borde du kunna hitta de flesta av dessa delar i alla Arduino-startpaket. 4 Bästa startpaket för Arduino-nybörjare 4 bästa startpaket för Arduino-nybörjare Det finns gott om bra nybörjare Arduino-projekt som du kan använda för att komma igång, men du behöver en Arduino och några komponenter först. Här är vårt val av 4 av de bästa startpaket för ... Läs mer. Denna handledning förutsätter att du använder den extra LED och motståndet, men de är inte nödvändiga.

Steg 1: Ställa in kretsen

Hårdvaruinstallationen är väldigt enkel för det här projektet. Ställ in din bräda enligt detta diagram.

Den lila tråden bifogas stift D0 till ena sidan av knappen. Den gröna ledningen kopplar den andra sidan av knappen till RST-stift. Den blå ledningen går från stift D1 till motstånd och LED. LED: ns negativa ben sitter fast vid GND pin av NodeMCU.

När brödbrädet är satt upp ska det se ut så här:

Om du undrar hur jag har min LED-lampa på marken med bara de små bitarna av kabel, vår snabba breadboard crash course Vad är en brödbräda och hur fungerar det? En snabbkraschkurs Vad är en brödbräda och hur fungerar det? En snabb Crash Course Vill du lära dig DIY elektronik? Du kanske har fått ett brödbräda i startpaketet. Men vad är en brödbräda och hur fungerar det? Läs mer ska hjälpa till med att rensa upp det! Kontrollera din installation och fäst din NodeMCU till datorn via USB.

Steg 2: Ställa in IDE

Innan du fortsätter med kodning måste du göra några förberedelser. Om du inte redan har installerat Arduino IDE för att känna igen ditt NodeMCU-kort. Du kan lägga till den i din brädarlista via Arkiv> Inställningar.

Du kan hitta en mer detaljerad förklaring av detta steg i vår introduktionsartikel från NodeMCU.

Det krävs två bibliotek för detta projekt. Navigera till Skissa> Inkludera bibliotek> Hantera bibliotek. Söka efter ESP8266WIFI av Ivan Grokhotkov och installera den. Detta bibliotek är skrivet för att göra Wi-Fi-anslutningar med NodeMCU-kortet.


Nästa sökning efter IFTTTWebhook av John Romkey och installera den senaste versionen. Biblioteket är utformat för att förenkla processen att skicka webhooks till IFTTT.

Det är all den förberedelse vi behöver, låter koda!

Hur koden kommer att fungera

Vi använder ESP8266WIFI bibliotek för att upprätta en Wi-Fi-anslutning. De IFTTTWebhooks biblioteket gör en begäran till IFTTT-i det här fallet att skicka till Twitter. Därefter instruerar NodeMCU-styrelsen att sova när den inte används för att spara ström.

När knappen trycks in kopplar den den D0 och RST stift. Detta återställer styrelsen, och processen händer igen.

Det mesta av koden i denna handledning är enkel nog för nybörjare. Med det sagt, om du börjar, hittar du det mycket lättare att förstå efter att ha följt vår Arduino nybörjarguide.

Denna handledning går igenom koden i bitar för att hjälpa till med förståelsen. Om du vill gå direkt till affärer kan du hitta den fullständiga koden på Pastebin. Observera att du fortfarande måste fylla i din Wi-Fi- och IFTTT-behörighet i den här koden för att den ska fungera!

Steg 3: Testa djup sömn

För att börja, skapar vi ett enkelt test för att visa hur djup sömn fungerar. Öppna en ny skiss i Arduino IDE. Ange följande två kodbitar.

#inkludera  #inkludera  #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #definierat lösenord "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Här inkluderar vi våra bibliotek, tillsammans med att definiera några variabler som vi behöver i vår skiss. Du kommer märka att ledPin och wakePin numreras annorlunda här jämfört med Fritzing diagrammet ovan. NodeMCU har en annan pinout till Arduino boards. Detta är dock inte ett problem tack vare det här praktiska diagrammet:

Skapa nu en inställningsfunktion:

tomrumsinställning () Serial.begin (115200); medan (! Serial)  Serial.println (""); // Skriv ut en tom rad före och efter knappen. Tryck på Serial.println ("Knapptryckt"); Serial.println (""); // Skriv ut en tom linje ESP.deepSleep (wakePin);  

Här ställer vi upp vår seriella port och använder en stundslinga för att vänta tills den börjar. Eftersom denna kod kommer att utlösas efter att du tryckt på återställningsknappen skriver vi ut “Knappen Tryck” till seriell bildskärm. Då berättar vi NodeMCU att gå in i djup sömn tills knappen som förbinder wakePin till RST stiftet trycks ned.

Slutligen, för testning, lägg till detta till din slinga() metod:

tomrumsling () // Om djup sömn fungerar, kommer den här koden aldrig att springas. Serial.println ("Detta får inte skrivas ut");  

Vanligtvis gör Arduino-skisser loop-funktionen kontinuerligt efter installationen. Eftersom vi skickar brädan till viloläge innan installationen slutar, körs slingan aldrig.

Spara din skiss och ladda upp den till styrelsen. Öppna seriell bildskärm och du bör se “Knappen Tryck.” Varje gång knappen utlöses, återställs styrelsen och meddelandet skrivs ut igen. Det fungerar!

En anteckning om seriell bildskärm

Du kanske har märkt några nonsenspersoner i seriell bildskärm under några av dina projekt. Detta beror vanligtvis inte på att seriell bildskärm ställs till samma baudhastighet som Serial.begin (XXXX) Betygsätta.

Många guider föreslår att du startar seriell anslutning med en baudhastighet på 115200 för ett projekt som detta. Jag försökte många kombinationer, och alla hade varierande grader av gibberish före och efter seriella meddelanden. Enligt olika foruminlägg kan detta vara en felaktig problem med brädet eller programkompatibiliteten. Eftersom det inte påverkar projektet för dåligt väljer jag att låtsas att det inte händer.

Om du har problem med seriell bildskärm, prova olika baudpriser och se vilka som passar bäst för dig.

Steg 4: Anslut till Wi-Fi

Skapa nu en funktion för anslutning till ditt Wi-Fi-nätverk.

void connectToWifi () Serial.print ("Anslutning till: SSID NAME"); // Ej kommenterad nästa rad för att visa SSID-namn //Serial.print(ssid); WiFi.begin (ssid, lösenord); Serial.println (""); // Skriv ut en tom rad Serial.print ("Försöker ansluta:"); // försök att ansluta i 10 sekunder int i = 10; medan (WiFi.status ()! = WL_CONNECTED && i> = 0) fördröjning (1000); Serial.print (i); Serial.print (","); jag--;  Serial.println (""); // Skriv ut en tom linje // Skriv ut anslutningsresultat om (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // Skriv ut en tom rad Serial.print ("NodeMCU ip address:"); Serial.println (WiFi.localIP ());  else Serial.println ("Anslutning misslyckades - kontrollera din legitimation eller anslutning");  

Den här metoden försöker ansluta till ditt nätverk tio gånger med en sekund däremellan. Framgång eller fel på anslutningen skrivs ut till seriell bildskärm.

Steg 5: Ringa anslutningsmetoden

Just nu connectToWifi () kallas aldrig. Lägg till ett samtal till din inställningsfunktion mellan “Knappen Tryck” meddelande och skicka brädet att sova.

connectToWifi (); 

Om du undrar var detta passar ska det se ut så här:


Överst på skissen ersätt SSID och Lösenord variabler med dina Wi-Fi-uppgifter. Spara din skiss och ladda upp till styrelsen.

Nu när styrelsen startar, försöker den ansluta till ditt Wi-Fi-nätverk innan du återgår till installationsfunktionen. Nu kan vi konfigurera IFTTT-integrationen.

Steg 6: Konfigurera IFTTT Integration

IFTTT möjliggör integration med en mängd olika webbtjänster. Vi använde det i vår Wi-Fi PC Tower LED-handledning för att skicka en varning när en ny e-post är mottagen. Idag använder vi den för att skicka en tweet med en knapptryckning.

Navigera till Mina appletter sidan och välj Ny applet

Klicka på +detta och anslut till Webhooks. Välj “Ta emot en webbförfrågan” och namnge din händelse. Håll det enkelt! Notera händelsens namn, du måste lägga till det i din NodeMCU-kod senare. Klick “Skapa utlösare”.


Välj nu +den där. Sök efter Twitter service och ansluta till den - du måste godkänna att den skickas till ditt Twitter-konto. Välj “Lägg in en tweet” och välj ditt meddelande.


Nästa skärm kommer att be dig att granska appleten. Klicka på avsluta. Det är allt!

Steg 7: Lägga till IFTTT-referenser till koden

Tillbaka i Arduino IDE måste du lägga till din IFTTT API-nyckel och händelse namn till dina definierade variabler. För att hitta API-nyckeln, navigera till Mina appletter och välj Webhooks under tjänster flik. Välj Dokumentation för att komma åt din nyckel.

Kopiera nyckeln och händelsens namn till din kod, och ersätt de tillfälliga namnen som har ställts in för dem.

#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Observera att de inverterade kommatecken måste stanna, ersätt bara texten.

Mellan att ringa connectToWifi () och skicka brädan till vila, skapa en förekomst av bibliotekets IFTTTWebhook-objekt. LED-signalerna avslutar uppgiften innan djup sömn börjar igen.

// bara ansluten till Wi-Fi IFTTTWebhook-krok (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); fördröjning (200); digitalWrite (ledPin, LOW); // nu skickar ombord att sova 

Ringa utlösare på krok objektbränder från IFTTT-appleten, och bör posta till ditt Twitter-konto. Spara din skiss och ladda upp den. Du borde nu ha en fullt fungerande tweeting-knapp.

Om det inte verkar fungera, kolla noggrant igenom din kod och dina uppgifter. Om du fastnar fast får du den fullständiga koden från ovan och jämföra den med dig själv.

Gjort! Hur kan du förbättra det vidare?

Det här är en grundläggande version av en Wi-Fi-knapp, men det finns många sätt att det kan förbättras. För enkelheten används USB-anslutningen för ström här. Ett batteri skulle göra det helt mobilt, och ett fall som håller kretsen skulle vara det perfekta nybörjare 3D-utskriftsprojektet.

Trots att du använder djup sömn, kan du hitta ett batteri skulle gå slut ganska snabbt. Det finns många energisparande tips från Arduino som hjälper till med dessa typer av projekt. Medan du är svårare än den här handledningen, kan du använda en batteridriven Wi-Fi-knapp om du skapade din egen kraftmedveten Arduino från början!

Detta projekt skulle göra det perfekta för en fjärrkontroll för smarta hemanvändningar. Det finns redan en stor mängd hemautomatiseringsappletter 10 av de bästa IFTTT-recepten för smart hemautomatisering 10 av de bästa IFTTT-recepten för smart hemautomatisering De rätta IFTTT-recepten för ditt smarta hem kan spara tid, ansträngning och energi. Här är tio av våra favoriter för att komma igång. Läs mer tillgänglig på IFTTT. När du har grunderna nere kan du använda nästan vilken som helst sensor eller växla för att utlösa praktiskt taget vilken tjänst du kan tänka dig.

Bildkrediter: Vadmary / Depositphotos

Utforska mer om: Arduino, DIY Project Tutorials.