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

  • Owen Little
  • 0
  • 5276
  • 1213
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

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 valg af 4 af de bedste starter sæt til…. 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.

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

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

Hvis du undrer dig over, hvordan jeg har fået min LED til at gå ned i jordstiften 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? 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.

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

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


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 bibliotek for at etablere en Wi-Fi-forbindelse. Det IFTTTWebhooks biblioteket anmoder om 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 ben. 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 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" #definere adgangskode "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_E 

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:

Opret nu en opsætningsfunktion:

tom opsætning () Serial.begin (115200); mens (! Serial)  Serial.println (""); // udskriv en tom linje før og efter knap Tryk på Serial.println ("Tryk på knappen"); Serial.println (""); // udskriv en tom linje 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 tryk på nulstillingsknappen, udskriver vi “Tryk på knappen” til den serielle skærm. Derefter beder vi NodeMCU om at gå i dyb søvn indtil knappen, der forbinder wakePin til RST benet trykkes ned.

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

void loop () // hvis dyb søvn fungerer, kører denne kode aldrig. Serial.println ("Dette skulle ikke blive udskrevet");  

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 seriemonitoren, så skal du se “Tryk på knappen.” Hver gang knappen udløses, nulstilles tavlen, og meddelelsen udskrives igen. Det virker!

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, at den serielle skærm ikke indstilles til den samme baudhastighed som Serial.begin (XXXX) sats.

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 ("Opretter forbindelse til: SSID-NAVN"); // uncomment næste linje for at vise SSID navn //Serial.print(ssid); WiFi.begin (ssid, password); Serial.println (""); // udskriv en tom linje Serial.print ("Forsøger at oprette forbindelse:"); // forsøg at oprette forbindelse i 10 sekunder int i = 10; mens (WiFi.status ()! = WL_CONNECTED && i> = 0) forsinkelse (1000); Serial.print (i); Serial.print (","); jeg--;  Serial.println (""); // udskriv en tom linje // printforbindelsesresultat, hvis (WiFi.status () == WL_CONNECTED) Serial.print ("Tilsluttet."); Serial.println (""); // udskriv en tom linje Serial.print ("NodeMCU ip-adresse:"); Serial.println (WiFi.localIP ());  else Serial.println ("Forbindelse mislykkedes - kontroller dine legitimationsoplysninger eller forbindelse");  

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, connectToWifi () kaldes aldrig. Føj et opkald til din opsætningsfunktion mellem “Tryk på knappen” besked og sende brættet i dvale.

connectToWifi (); 

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


Øverst på skitsen skal du udskifte SSID og adgangskode variabler 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 Mine æbler side, og vælg Ny applet

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


Vælg nu +at. Søg efter Twitter service og oprette forbindelse til det-du bliver nødt til at autorisere det til at sende til din Twitter-konto. Vælg “Indsend en tweet” og vælg din besked.


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. Gå til API for at finde API-nøglen Mine æbler og vælg Webhooks under Services fane. 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.

#definér IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #definér IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

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

Mellem at ringe til connectToWifi () og at sende tavlen i dvale, oprette en forekomst af IFTTTWebebook-bibliotekets objekt. LED signalerer færdiggørelse af opgaven, før dyb søvn begynder igen.

// netop tilsluttet til Wi-Fi IFTTTWhakekrog (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); forsinkelse (200); digitalWrite (ledPin, LOW); // nu sender bord til at sove 

Opkaldstrigger på krog objekt fyrer af IFTTT-appleten, og skal postes til din Twitter-konto. Gem din skitse og upload den. Du skal nu have en fuldt funktionel tweeting-knap.

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 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. tilgængelig 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




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.