Slik lager du din egen Wi-Fi-tilkoblede knapp med ESP8266
Annonse
Tingenes internett har et enormt DIY-potensial. Med nok kunnskap og noen få billige komponenter, kan du bygge et komplekst system med tilkoblede enheter.
Noen ganger vil du imidlertid ha noe enkelt. Ingen bjeller eller fløyter, bare en knapp som utfører en enkelt oppgave. Du er kanskje allerede kjent med noe slikt hvis du noen gang har brukt en Amazon Dash-knapp til å ordne hverdagens husholdningsartikler.
I dag vil vi lage en Wi-Fi-aktivert knapp ved hjelp av en NodeMCU, og programmere den for å bruke IFTTT for å gjøre ... vel, hva som helst! Skriftlige instruksjoner etter videoen, hvis du foretrekker det.
Hva du trenger
Du vil trenge:
- 1 x NodeMCU (ESP8266) brett, tilgjengelig for $ 2-3 på AliExpress
- 1 x trykknapp
- 1 x LED (valgfritt)
- 1 x 220 Ohm-motstand (valgfritt)
- Breadboard og hookup ledninger
- Micro USB for programmering
- Datamaskin med Arduino IDE installert
Bortsett fra NodeMCU, bør du være i stand til å finne de fleste av disse delene i alle Arduino-startpakker. 4 beste startesett for Arduino-nybegynnere 4 beste startpakker for Arduino-nybegynnere Det er mange gode Arduino-prosjekter du kan bruke for å komme i gang, men du trenger en Arduino og noen komponenter først. Her er vårt utvalg av de 4 beste startpakkene for ... Les mer. Denne veiledningen antar at du bruker valgfri LED og motstand, men at de ikke er viktige.
Trinn 1: Sette opp kretsløpet
Maskinvareoppsettet er veldig enkelt for dette prosjektet. Sett opp brettet ditt i henhold til dette diagrammet.
Den lilla ledningen fester pin D0 på den ene siden av knappen. Den grønne ledningen kobler den andre siden av knappen til RST-pinnen . Den blå ledningen går fra pinne D1 til motstand og LED. Det negative benet på LED festes til GND-pinnen på NodeMCU.
Når brødbordet er satt opp skal det se slik ut:
Hvis du lurer på hvordan jeg har fått LED-en min til å gå i bakken med bare de bittesmå kabelbitene, er det raske brødbrettet vårt. Hva er en brødplate, og hvordan fungerer det? En rask krasjkurs Hva er en brødbrett og hvordan fungerer det? Et raskt krasjkurs Vil du lære DIY-elektronikk? Du har kanskje fått en brødbrett i startpakken. Men hva er en brødplate og hvordan fungerer den? Les mer skal hjelpe deg med å rydde opp! Sjekk oppsettet og fest NodeMCU til datamaskinen via USB.
Trinn 2: Konfigurere IDE
Før du går videre med koding, må du gjøre noen forberedelser. Hvis du ikke allerede har gjort det, kan du sette opp Arduino IDE for å gjenkjenne NodeMCU-brettet. Du kan legge den til i styrelisten din via Fil> Innstillinger .
Du kan finne en mer detaljert forklaring av dette trinnet i introduksjonsartikkelen til NodeMCU.
Det kreves to biblioteker for dette prosjektet. Naviger til Skisse> Inkluder bibliotek> Administrer biblioteker . Søk etter ESP8266WIFI av Ivan Grokhotkov og installer den. Dette biblioteket er skrevet for å lage Wi-Fi-tilkoblinger med NodeMCU-brettet.
Neste søk etter IFTTTWebhook av John Romkey og installer den siste versjonen. Dette biblioteket er designet for å forenkle prosessen med å sende webhooks til IFTTT.
Det er all forberedelsen vi trenger, lar kode!
Hvordan koden vil fungere
Vi bruker ESP8266WIFI- biblioteket for å opprette en Wi-Fi-forbindelse. IFTTTWebhooks- biblioteket ber en forespørsel til IFTTT — i dette tilfellet om å legge ut på Twitter. Deretter instruerer NodeMCU-styret om å sove når den ikke er i bruk for å spare strøm.
Når du trykker på knappen, vil den knytte D0- og RST- pinnene. Dette tilbakestiller styret, og prosessen skjer igjen.
Det meste av koden i denne opplæringen er enkel nok for nybegynnere. Når det er sagt, hvis du begynner, vil du finne det mye lettere å forstå etter å ha fulgt vår Arduino nybegynnerguide.
Denne opplæringen går gjennom koden i biter for å hjelpe deg med forståelsen. Hvis du vil komme direkte til virksomheten, kan du finne den komplette koden hos Pastebin. Vær oppmerksom på at du fremdeles må fylle ut Wi-Fi- og IFTTT-legitimasjonene i denne koden for at den skal fungere!
Trinn 3: Test dyp søvn
For å begynne skal vi lage en enkel test for å vise hvordan dyp søvn fungerer. Åpne en ny skisse i Arduino IDE. Legg inn følgende to kodebiter.
#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 bibliotekene våre, sammen med å definere noen få variabler vi trenger i skissen vår. Du vil legge merke til at ledPin og wakePin er nummerert annerledes her sammenlignet med Fritzing-diagrammet over. NodeMCU har en annen pinout enn Arduino-tavler. Dette er ikke noe problem på grunn av dette praktiske diagrammet:
Opprett nå en konfigurasjonsfunksjon:
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 setter vi opp serieporten vår, og bruker en stundsløyfe til å vente til den begynner. Siden denne koden vil utløses etter å ha trykket på tilbakestillingsknappen, skriver vi ut “Button Pressed” til seriemonitoren. Deretter ber vi NodeMCU om å gå i dyp søvn til knappen som kobler wakePin til RST- pinnen er trykket.
Til slutt, for testing, legger du dette til din loop () -metode:
void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); }
Vanligvis kjører Arduino-skisser løkkefunksjonen kontinuerlig etter oppsett. Siden vi sender brettet i dvale før oppsettet avsluttes, løper sløyfen aldri.
Lagre skissen din og last den opp på tavlen. Åpne seriemonitoren, og du skal se “Button Pressed.” Hver gang knappen utløses, tilbakestilles brettet og meldingen skrives ut igjen. Det fungerer!
En merknad om seriemonitoren
Du har kanskje lagt merke til noen tullete tegn på seriemonitoren under noen av prosjektene dine. Dette skyldes vanligvis at seriemonitoren ikke er satt til samme baudhastighet som Serial.begin (XXXX) .
Mange guider foreslår å starte seriekoblingen med en baudhastighet på 115200 for et prosjekt som dette. Jeg prøvde mange kombinasjoner, og de hadde alle ulik grad av søppel før og etter serielle meldinger. I henhold til forskjellige foruminnlegg kan dette være et problem med et brett eller programvarekompatibilitetsproblem. Siden det ikke påvirker prosjektet for dårlig, velger jeg å late som det ikke skjer.
Hvis du har problemer med seriemonitoren, kan du prøve forskjellige baudfrekvenser og se hvilke som fungerer best for deg.
Trinn 4: Koble til Wi-Fi
Lag nå en funksjon for tilkobling til Wi-Fi-nettverket.
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 metoden prøver å koble til nettverket ti ganger med et sekund i mellom. Suksess eller svikt i tilkoblingen skrives ut til seriemonitoren.
Trinn 5: Ringe tilkoblingsmetoden
Akkurat nå blir connectToWifi () aldri ringt. Legg til en samtale i konfigurasjonsfunksjonen mellom meldingen “Button Pressed” og sendt brettet i dvale.
connectToWifi();
I tilfelle du lurer på hvor dette passer, skal det se slik ut:
Øverst på skissen erstatt ssid- og passordvariablene med Wi-Fi-legitimasjonen. Lagre skissen din og last den opp på tavlen.
Når brettet nå starter, vil det prøve å koble seg til Wi-Fi-nettverket ditt, før det går tilbake til konfigurasjonsfunksjonen. La oss nå konfigurere IFTTT-integrasjonen.
Trinn 6: Sette opp IFTTT-integrasjon
IFTTT tillater integrasjon med et stort utvalg av webtjenester. Vi brukte den i vår Wi-Fi PC Tower LED-veiledning for å sende et varsel hver gang en ny e-post mottas. I dag bruker vi den til å sende en tweet ved å trykke på en knapp.
Naviger til siden Mine appleter, og velg Ny applet
Klikk på + dette og koble til Webhooks . Velg "Motta en nettforespørsel" og gi navnet til arrangementet ditt. Hold det enkelt ! Skriv ned hendelsesnavnet, må du legge det til i NodeMCU-koden senere. Klikk “Create Trigger” .
Velg + det . Søk etter Twitter- tjenesten og koble til den - du må autorisere den for å legge ut på Twitter-kontoen din. Velg “Legg ut en tweet” og velg meldingen.
Neste skjermbilde ber deg om å se gjennom appletten. Klikk ferdig. Det er det!
Trinn 7: Legge til IFTTT-legitimasjon til koden
Tilbake i Arduino IDE må du legge til IFTTT API-nøkkel og hendelsesnavn til dine definerte variabler. For å finne API-nøkkelen, naviger til Mine appleter og velg Webhooks under fanen Tjenester . Velg Dokumentasjon for å få tilgang til nøkkelen.
Kopier nøkkelen og hendelsesnavnet til koden din, og erstatt de midlertidige navnene som er satt opp for dem.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Merk at de inverterte kommaene må være, bare erstatte teksten.
Mellom å ringe connectToWifi () og sende styret i dvale, oppretter du en forekomst av IFTTTWebhook bibliotekobjekt. LED-signalet signaliserer oppgaven er fullført før dyp søvn begynner igjen.
//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
Ringeutløseren på krokobjektet skyter av IFTTT-appleten, og bør legges ut på Twitter-kontoen din. Lagre skissen din og last den opp. Nå skal du ha en fullt funksjonell tweeting-knapp.
Hvis det ikke ser ut til å fungere, må du sjekke nøye koden og legitimasjonen for feil. Hvis du virkelig blir sittende fast, kan du hente den fulle koden ovenfra og sammenligne den med din egen.
Ferdig! Hvordan kan du forbedre det ytterligere?
Dette er en grunnleggende versjon av en Wi-Fi-knapp, men det er mange måter det kan forbedres. For enkelhets skyld brukes USB-tilkoblingen til strøm her. Et batteri vil gjøre det helt mobilt, og en sak som holder kretsen ville være det perfekte nybegynner 3D-utskriftsprosjektet.
Til tross for at du bruker dyp søvn, kan det hende du finner ut at et batteri vil gå tomt ganske raskt. Det er mange tips om strømsparing fra Arduino som hjelper i denne typen prosjekter. Selv om det er vanskeligere enn denne opplæringen, hvis du lagde din egen strømbevisste Arduino fra bunnen av, kan en batteridrevet Wi-Fi-knapp vare i flere måneder!
Dette prosjektet vil gjøre det perfekte for en fjernkontroll for smarthusapplikasjoner. Det er allerede en betydelig mengde hjemmeautomatiseringsprogrammer 10 av de beste IFTTT-oppskriftene for smarthusautomasjon 10 av de beste IFTTT-oppskriftene for smarthusautomatisering. De riktige IFTTT-oppskriftene for ditt smarte hjem kan spare deg for tid, krefter og energi. Her er ti av favorittene våre for å komme i gang. Les mer tilgjengelig på IFTTT. Når du har fått det grunnleggende, kan du bruke nesten hvilken som helst sensor eller bryter for å utløse praktisk talt alle tjenester du kan forestille deg.
Bildekreditt: Vadmary / Depositphotos
Utforsk mer om: Arduino, DIY Project Tutorials.