I den här handledningen lär du dig att skapa en Wi-Fi-aktiverad knapp med NodeMCU och IFTTT.

Hur du skapar din egen Wi-Fi-anslutna knapp med ESP8266

Annons Tingenes Internet har en enorm DIY-potential. Med tillräckligt med kunskap och några få 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 liknande om du någonsin har använt en Amazon Dash-knapp för att ordna vardagliga hushållsartiklar. Idag komm

Annons

Tingenes Internet har en enorm DIY-potential. Med tillräckligt med kunskap och några få 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 liknande om du någonsin har använt en Amazon Dash-knapp för att ordna vardagliga hushållsartiklar.

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

Vad du behöver

Wi-Fi-knappdelar behövs

Du kommer behöva:

  • 1 x NodeMCU (ESP8266) kort, tillgängligt för $ 2-3 på AliExpress
  • 1 x tryckknapp
  • 1 x LED (tillval)
  • 1 x 220 Ohm-motstånd (valfritt)
  • Breadboard- och anslutningskablar
  • Micro USB för programmering
  • Dator med Arduino IDE installerad

Bortsett från NodeMCU, bör du kunna hitta de flesta av dessa delar i alla Arduino-startpaket. 4 bästa startpaket för Arduino-nybörjare. men du behöver en Arduino och några komponenter först. Här är vårt val av fyra av de bästa startpaketet för ... Läs mer. Denna handledning antar att du använder den valfria lysdioden och motståndet, men de är inte nödvändiga.

Steg 1: Ställa in kretsen

Maskinvaruinställningen är mycket enkel för det här projektet. Ställ in ditt bräde enligt detta diagram.

NodeMCU Wi-Fi-knapp Fritzing-diagram

Den lila tråden fäster stift D0 på en sida av knappen. Den gröna ledningen ansluter den andra sidan av knappen till RST-stiftet . Den blå ledningen går från stift D1 till motståndet och lysdioden. LED: s negativa ben fästs på GND-stiftet på NodeMCU.

När brödskivan är satt upp ska den se ut så här:

NodeMCU Wifi-knappens kretsinställning

Om du undrar hur jag har fått min lysdiod att gå till markstiftet med bara de små kablarna, är vår snabba brödskivkorsningskurs Vad är en brödskiva och hur fungerar det? En snabb kraschkurs Vad är en brädbräda och hur fungerar det? En snabb kraschkurs Vill du lära dig DIY-elektronik? Du kanske har fått en brödskiva i ditt startpaket. Men vad är en brödskiva och hur fungerar den? Läs mer bör hjälpa till att rensa upp det! Kontrollera installationen och anslut din NodeMCU till datorn via USB.

Steg 2: Ställa in IDE

Innan du går vidare med kodning måste du göra några förberedelser. Om du inte redan har gjort det, ställ in Arduino IDE för att känna igen ditt NodeMCU-kort. Du kan lägga till den i din kortlista via Arkiv> Inställningar .

URL-adresser för arduino board manager

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

Två bibliotek krävs för detta projekt. Navigera till Skiss> Inkludera bibliotek> Hantera bibliotek . Sök efter ESP8266WIFI av Ivan Grokhotkov och installera den. Detta bibliotek är skrivet för att skapa Wi-Fi-anslutningar med NodeMCU-kortet.

Arduino IDE Library Manager
Nästa sök efter IFTTTWebhook av John Romkey och installera den senaste versionen. Detta bibliotek är utformat för att förenkla processen att skicka webhooks till IFTTT.

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

Hur koden fungerar

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

När du trycker på knappen kommer den att länka D0- och RST- stiften. Detta återställer styrelsen, och processen händer igen.

De flesta koderna i denna handledning är tillräckligt enkla för nybörjare. Som sagt, om du börjar kommer du att hitta 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 företag kan du hitta den fullständiga koden på Pastebin. Observera att du fortfarande måste fylla i dina Wi-Fi- och IFTTT-referenser i den här koden för att den ska fungera!

Steg 3: Testa djup sömn

Till att börja med 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.

 #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" 

Här inkluderar vi våra bibliotek, tillsammans med att definiera några variabler vi kommer att behöva i vår skiss. Du kommer att märka att ledPin och wakePin numreras annorlunda här jämfört med Fritzing-diagrammet ovan. NodeMCU har en annan pinout än Arduino-brädor. Detta är dock inte ett problem på grund av detta praktiska diagram:

NodeMCU__v1.0_pinout

Skapa nu en installationsfunktion:

 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); } 

Här ställer vi in ​​vår seriella port och använder en stundslinga för att vänta tills den börjar. Eftersom den här koden kommer att trigga efter att du har tryckt på återställningsknappen, trycker vi på "Knappen tryckt " på seriemonitorn . Sedan ber vi NodeMCU att gå i djup sömn tills knappen som ansluter wakePin till RST- stiftet trycks ned.

Slutligen, för test, lägg till detta till din loop () -metod:

 void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); } 

Vanligtvis kör Arduino-skisser löpfunktionen kontinuerligt efter installationen. Eftersom vi skickar brädet för att sova innan installationen slutar körs slingan aldrig.

Spara din skiss och ladda upp den till brädet. Öppna den seriella bildskärmen så ser du “Knappen trycks ned.” Varje gång knappen startas återställs brädet och meddelandet skrivs ut igen. Det fungerar!

Knapp Tryckt Serial Monitor Test

En anmärkning om seriemonitorn

Du kanske har lagt märke till några nonsensfigurer i seriemonitorn under några av dina projekt. Detta beror vanligtvis på att inte serielmonitorn ställer in samma baudhastighet som Serial.begin (XXXX) .

Många guider föreslår att du startar den seriella anslutningen till en baudhastighet på 115200 för ett projekt som detta. Jag försökte många kombinationer, och de hade alla olika grader av gibberish före och efter seriella meddelanden. Enligt olika forumposter kan det här vara fel på en brist eller ett programkompatibilitetsproblem. 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 seriemonitorn kan du prova olika baudhastigheter och se vilka som fungerar bäst för dig.

Steg 4: Ansluta till Wi-Fi

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

 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"); } } 

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

Steg 5: Ring anslutningsmetoden

Just nu heter connectToWifi () aldrig. Lägg till ett samtal till din inställningsfunktion mellan meddelandet "Button Pressed" och skicka kortet i vila.

 connectToWifi(); 

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

Där connectToWifi () passar
Byt upp ssid- och lösenordsvariablerna längst upp i skissen med dina Wi-Fi-referenser. Spara din skiss och ladda upp till brädet.

När kortet nu startar kommer det att försöka ansluta till ditt Wi-Fi-nätverk innan det går tillbaka till installationsfunktionen. Låt oss nu ställa in IFTTT-integrationen.

Steg 6: Ställa in IFTTT-integration

IFTTT tillåter integration med en mängd olika webbtjänster. Vi använde den i vår Wi-Fi PC Tower LED-tutorial för att skicka en varning varje gång ett nytt e-postmeddelande tas emot. Idag kommer vi att använda den för att skicka en tweet med en knapptryckning.

Navigera till sidan Mina apparater och välj Ny applet

Klicka på + detta och anslut till Webhooks . Välj "Ta emot en webbbegäran" och namnge ditt evenemang. Håll det enkelt ! Skriv ner evenemangets namn, du måste lägga till det i din NodeMCU-kod senare. Klicka på "Skapa utlösare" .

Webbfrågan med IFTTT-webhooks
Välj + det . Sök efter Twitter- tjänsten och anslut till den - du måste godkänna den för att publicera till ditt Twitter-konto. Välj ”Skicka en tweet” och välj ditt meddelande.

IFTTT - Skicka Tweet
Nästa skärm kommer att be dig om att granska appletten. Klicka på finish. 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ändelsens namn till dina definierade variabler. För att hitta API-nyckeln navigerar du till Mina appar och väljer Webhooks under fliken Tjänster . 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 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 kommorna måste stanna, bara ersätta texten.

Skapa en instans av IFTTTWebhook-bibliotekets objekt mellan att ringa connectToWifi () och skicka kortet i vila. Lysdioden signalerar avslutad uppgift innan djup sömn börjar igen.

 //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 

Kallautlösaren på krokobjektet avfyrar IFTTT-appletten och bör skicka till ditt Twitter-konto. Spara din skiss och ladda upp den. Du borde nu ha en fullt funktionell tweeting-knapp.

Arbetar Wi-Fi-knapp Gif

Om det inte verkar fungera, kolla noga igenom din kod och referenser för misstag. Om du verkligen fastnar får du full kod ovanifrån och jämför den med din egen.

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

Detta är en grundversion av en Wi-Fi-knapp, men det finns många sätt det kan förbättras. För enkelhets skull 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örjar 3D-utskriftsprojektet.

Trots att du använder djup sömn, kan det hända att ett batteri skulle ta slut ganska snabbt. Det finns många Arduino-energibesparande tips som hjälper till i denna typ av projekt. Även om det är svårare än denna självstudie, om du gjorde din egen kraftmedvetna Arduino från början, kunde en batteridriven Wi-Fi-knapp pågå i månader!

Detta projekt skulle göra det perfekta för en fjärrkontroll för smarta hemapplikationer. Det finns redan en betydande mängd hemmeautomatiseringsprogram 10 av de bästa IFTTT-recepten för smarta hem-automatisering 10 av de bästa IFTTT-recept för smarta hemmeautomation 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ängligt på IFTTT. När du har lagt ner grunderna kan du använda nästan vilken sensor som helst eller växla för att utlösa praktiskt taget alla tjänster du kan föreställa dig.

Bildkredit: Vadmary / Depositphotos

Utforska mer om: Arduino, DIY Project Tutorials.