I denne tutorial lærer du, hvordan du opretter en Wi-Fi-aktiveret knap ved hjælp af NodeMCU og IFTTT.

Sådan opretter du din egen Wi-Fi-tilsluttede knap med ESP8266

Reklame Tingenes Internet har et stort DIY-potentiale. Med tilstrækkelig know-how og et par billige komponenter kan du opbygge et komplekst system med tilsluttede enheder. Nogle gange vil du dog have noget simpelt. Ingen klokker eller fløjter, bare en knap, der udfører en enkelt opgave. Du er muligvis allerede bekendt med noget som dette, hvis du nogensinde har brugt en Amazon Dash-knap til at ombestille hverdagens husholdningsartikler. I

Reklame

Tingenes Internet har et stort DIY-potentiale. Med tilstrækkelig know-how og et par billige komponenter kan du opbygge et komplekst system med tilsluttede enheder.

Nogle gange vil du dog have noget simpelt. Ingen klokker eller fløjter, bare en knap, der udfører en enkelt opgave. Du er muligvis allerede bekendt med noget som dette, hvis du nogensinde har brugt en Amazon Dash-knap til at ombestille hverdagens husholdningsartikler.

I dag opretter vi en Wi-Fi-aktiveret knap ved hjælp af en NodeMCU, og programmerer den til at bruge IFTTT til at gøre… godt, hvad som helst! Skriftlige instruktioner efter videoen, hvis du foretrækker det.

Hvad du har brug for

Wi-Fi-knapdele er nødvendige

Du får brug for:

  • 1 x NodeMCU (ESP8266) bord, tilgængeligt for $ 2-3 på AliExpress
  • 1 x trykknap
  • 1 x LED (valgfri)
  • 1 x 220 Ohm-modstand (valgfri)
  • Breadboard og hookup ledninger
  • Micro USB til programmering
  • Computer med Arduino IDE installeret

Bortset fra NodeMCU, skal du være i stand til at finde de fleste af disse dele i ethvert Arduino-startkit 4 Bedste Startsæt til Arduino-begyndere 4 Bedste Startsæt til Arduino-begyndere Der er masser af gode begyndere Arduino-projekter, som du kan bruge til at komme i gang, men du har brug for en Arduino og nogle komponenter først. Her er vores udvalg af 4 af de bedste starter sæt til ... Læs mere. Denne tutorial antager, at du bruger den valgfri LED og modstand, men de er ikke væsentlige.

Trin 1: Opsætning af kredsløbet

Hardwareopsætningen er meget enkel til dette projekt. Opsæt dit bord i henhold til dette diagram.

NodeMCU Wi-Fi-knap Fritzing-diagram

Den lilla ledning fastgør stift D0 til den ene side af knappen. Den grønne ledning forbinder den anden side af knappen til RST-stiften . Den blå ledning løber fra stift D1 til modstand og LED. LED'ets negative ben fastgøres til GND-stiften på NodeMCU.

Når brødbrættet er sat op, skal det se sådan ud:

NodeMCU Wifi-knapkredsopsætning

Hvis du undrer dig over, hvordan jeg har fået min LED til jordnålen ved hjælp af bare de små bits af kabel, er vores hurtige brødbrætkursusforløb Hvad er et brødbræt, og hvordan fungerer det? Et hurtigt nedbrudskursus Hvad er en bagbræt, og hvordan fungerer det? Et hurtigt nedbrudskursus Vil du lære DIY-elektronik? Du har måske modtaget en brødbræt i dit startsæt. Men hvad er et brødbræt, og hvordan fungerer det? Læs mere skal hjælpe med at rydde op! Kontroller din opsætning, og tilslut din NodeMCU til computeren via USB.

Trin 2: Opsætning af IDE

Før du går videre med kodning, skal du lave nogle forberedelser. Hvis du ikke allerede har gjort det, skal du indstille Arduino IDE til at genkende dit NodeMCU-kort. Du kan tilføje det til din tavleliste via Fil> Præferencer .

URL-adresser til arduino board manager

Du kan finde en mere detaljeret forklaring af dette trin i vores NodeMCU introduktionsartikel.

Der kræves to biblioteker til dette projekt. Gå til Sketch> Inkluder bibliotek> Administrer biblioteker . Søg efter ESP8266WIFI af Ivan Grokhotkov og installer det. Dette bibliotek er skrevet til oprettelse af Wi-Fi-forbindelser med NodeMCU-tavlen.

Arduino IDE Library Manager
Næste søgning efter IFTTTWebhook af John Romkey og installer den nyeste version. Dette bibliotek er designet til at forenkle processen med at sende webhooks til IFTTT.

Det er al den forberedelse, vi har brug for, lader kode!

Sådan fungerer koden

Vi bruger ESP8266WIFI- biblioteket til at etablere en Wi-Fi-forbindelse. IFTTTWebhooks- biblioteket anmoder IFTTT — i dette tilfælde om at sende til Twitter. Instruer derefter NodeMCU-kortet til at sove, når det ikke bruges til at spare strøm.

Når der trykkes på knappen, forbinder den D0- og RST- stifterne. Dette nulstiller bestyrelsen, og processen sker igen.

Det meste af koden i denne tutorial er enkel nok for begyndere. Når det er sagt, hvis du begynder, finder du det meget lettere at forstå efter at have fulgt vores Arduino begynderguide.

Denne tutorial gennemgår koden i bidder for at hjælpe med forståelsen. Hvis du vil komme direkte til virksomheden, kan du finde den komplette kode hos Pastebin. Bemærk, at du stadig skal udfylde dine Wi-Fi- og IFTTT-legitimationsoplysninger i denne kode for at den skal fungere!

Trin 3: Test af dyb søvn

For at begynde med opretter vi en simpel test for at vise, hvordan dyb søvn fungerer. Åbn en ny skitse i Arduino IDE. Indtast følgende to kodebunker.

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

Her inkluderer vi vores biblioteker sammen med at definere et par variabler, som vi har brug for i vores skitse. Du vil bemærke, at ledPin og wakePin er nummereret forskelligt her sammenlignet med Fritzing-diagrammet ovenfor. NodeMCU har en anden pinout end Arduino-tavler. Dette er dog ikke et problem på grund af dette praktiske diagram:

NodeMCU__v1.0_pinout

Opret nu en opsætningsfunktion:

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

Her opsætter vi vores serielle port og bruger en stund-loop til at vente, indtil den begynder. Da denne kode udløses efter at have trykket på nulstillingsknappen, udskriver vi “Knap trykket” til den serielle skærm. Derefter beder vi NodeMCU om at gå i dyb søvn, indtil der trykkes på knappen, der forbinder wakePin til RST- stiften.

Til slut, til test, tilføj dette til din loop () -metode:

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

Normalt kører Arduino-skitser løkkenfunktionen kontinuerligt efter opsætning. Da vi sender brættet til at sove, inden opsætningen slutter, kører løkken aldrig.

Gem din skitse og upload den til tavlen. Åbn den serielle skærm, og du skal se "Tryk på knappen." Hver gang knappen udløses, nulstilles tavlen, og meddelelsen udskrives igen. Det virker!

Knap Trykt Serial Monitor Test

En note om den serielle skærm

Du har muligvis bemærket nogle nonsens-tegn på seriemonitoren under nogle af dine projekter. Dette skyldes normalt ikke, at den serielle skærm indstilles til den samme baudhastighed som Serial.begin (XXXX) .

Mange guider foreslår, at du starter den serielle forbindelse med en baudhastighed på 115200 for et projekt som dette. Jeg prøvede mange kombinationer, og de havde alle forskellig grad af gibberish før og efter serielle meddelelser. I henhold til forskellige forumindlæg kan dette være et problem med et defekt bord eller softwarekompatibilitetsproblem. Da det ikke påvirker projektet for dårligt, vælger jeg at foregive, at det ikke sker.

Hvis du har problemer med den serielle skærm, kan du prøve forskellige baudhastigheder og se, hvad der fungerer bedst for dig.

Trin 4: Forbindelse til Wi-Fi

Opret nu en funktion til at oprette forbindelse til dit Wi-Fi-netværk.

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

Denne metode forsøger at oprette forbindelse til dit netværk ti gange med et sekund imellem. Succes eller fiasko af forbindelse udskrives til den serielle skærm.

Trin 5: Opkald til forbindelsesmetoden

Lige nu kaldes connectToWifi () aldrig. Føj et opkald til din opsætningsfunktion mellem meddelelsen "Tryk på knappen" og send bordet i dvale.

 connectToWifi(); 

I tilfælde af at du undrer dig over, hvor dette passer, skal det se sådan ud:

Hvor connectToWifi () passer
Udskift ssid- og adgangskodevariabler øverst på skitsen med dine Wi-Fi-legitimationsoplysninger. Gem din skitse og upload til tavlen.

Når tavlen nu starter, vil den forsøge at oprette forbindelse til dit Wi-Fi-netværk, før det vender tilbage til installationsfunktionen. Lad os nu konfigurere IFTTT-integrationen.

Trin 6: Opsætning af IFTTT-integration

IFTTT tillader integration med en lang række webservices. Vi brugte det i vores Wi-Fi PC tower LED-tutorial til at sende en advarsel, når der modtages en ny e-mail. I dag bruger vi det til at sende en tweet med et tryk på en knap.

Naviger til siden Mine appleter, og vælg Ny applet

Klik på + dette og opret forbindelse til Webhooks . Vælg "Modtag en webanmodning" og navngiv din begivenhed. Hold det enkelt ! Noter begivenhedsnavnet, skal du tilføje det til din NodeMCU-kode senere. Klik på "Opret trigger" .

Webanmodning med IFTTT Webhooks
Vælg nu + det . Søg efter Twitter- tjenesten og opret forbindelse til den - du bliver nødt til at autorisere den til at sende til din Twitter-konto. Vælg "Opret en tweet", og vælg din besked.

IFTTT - Send Tweet
Den næste skærm beder dig om at gennemgå appletten. Klik på finish. Det er det!

Trin 7: Tilføjelse af IFTTT-legitimationsoplysninger til koden

Tilbage i Arduino IDE skal du tilføje din IFTTT API-nøgle og begivenhedsnavn til dine definerede variabler. For at finde API-nøglen skal du navigere til Mine applets og vælge Webhooks under fanen Services . Vælg Dokumentation for at få adgang til din nøgle.

Kopier nøglen og begivenhedsnavnet til din kode ved at erstatte de midlertidige navne, der er oprettet for dem.

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

Bemærk, at de inverterede kommaer skal forblive, kun erstatte teksten.

Opret en forekomst af IFTTTWebhook-bibliotekets objekt mellem at ringe til connectToWifi () og sende tavlen i dvale. LED signalerer færdiggørelse af opgaven, før dyb søvn begynder 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 

Opkaldstrigger på krogobjektet affyres IFTTT-appleten og bør postes til din Twitter-konto. Gem din skitse og upload den. Du skal nu have en fuldt funktionel tweeting-knap.

Arbejdende Wi-Fi-knap Gif

Hvis det ikke ser ud til at fungere, skal du tjekke din kode og legitimationsoplysninger nøje for fejl. Hvis du virkelig sidder fast, skal du hente den fulde kode ovenfra og sammenligne den med din egen.

Færdig! Hvordan kan du forbedre det yderligere?

Dette er en grundlæggende version af en Wi-Fi-knap, men der er mange måder, det kan forbedres. For enkelheds skyld bruges USB-forbindelsen til strøm her. Et batteri ville gøre det helt mobilt, og en sag, der holder kredsløbet, ville være det perfekte nybegynder 3D-udskrivningsprojekt.

På trods af at du bruger dyb søvn, kan du opleve, at et batteri ville løbe tør hurtigt. Der er mange Arduino strømbesparende tip, der hjælper i denne type projekter. Selvom det er vanskeligere end denne tutorial, hvis du lavede din egen strømbevidste Arduino fra bunden, kunne en batteridrevet Wi-Fi-knap vare i flere måneder!

Dette projekt ville gøre det perfekte til en fjernbetjening til smarte hjem-applikationer. Der er allerede en betydelig mængde hjemmeautomatiseringsprogrammer 10 af de bedste IFTTT-opskrifter til Smart Home Automation 10 af de bedste IFTTT-opskrifter til Smart Home Automation De rigtige IFTTT-opskrifter til dit smarte hjem kan spare dig for tid, kræfter og energi. Her er ti af vores favoritter til at komme i gang. Læs mere tilgængeligt på IFTTT. Når du har fået det grundlæggende nede, kan du bruge næsten enhver sensor eller switch til at udløse praktisk talt enhver service, du kan forestille dig.

Billedkredit: Vadmary / Depositphotos

Udforsk mere om: Arduino, DIY-projektvejledninger.