Slik lager du din egen Wi-Fi-tilkoblede knapp med ESP8266

Slik lager du din egen Wi-Fi-tilkoblede knapp med ESP8266 / DIY

Tingenes Internett har stort potensial for DIY. Med nok kunnskap og et par billige komponenter kan du bygge et komplekst system med tilkoblede enheter.

Noen ganger vil du imidlertid ha noe enkelt. Ingen klokker eller fløyter, bare en knapp som utfører en enkelt oppgave. Du kan kanskje allerede være kjent med noe sånt hvis du noen gang har brukt en Amazon Dash-knapp for å omordne hverdagens husholdningsartikler.

I dag skal vi lage en Wi-Fi-aktivert knapp ved hjelp av en NodeMCU, og programmer den til å bruke IFTTT til å gjøre ... vel, alt! Skriftlige instruksjoner som følger videoen, hvis du foretrekker det.

Hva du trenger

Du vil trenge:

  • 1 x NodeMCU (ESP8266) bord, 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 kunne finne de fleste av disse delene i en hvilken som helst Arduino startpakke. 4 Best Starter Kit for Arduino Beginners 4 Best Starter Kit for Arduino Beginners Det er mange flotte nybegynnere Arduino prosjekter som du kan bruke for å komme i gang, men du trenger en Arduino og noen komponenter først. Her er vårt utvalg av 4 av de beste startpakker for ... Les mer. Denne opplæringen vil anta at du bruker den valgfrie lysdioden og motstanden, men de er ikke avgjørende.

Trinn 1: Konfigurere kretsen

Maskinvareoppsettet er veldig enkelt for dette prosjektet. Sett opp styret ditt i henhold til dette diagrammet.

Den lilla wire festes pin D0 til den ene siden av knappen. Den grønne ledningen kobler den andre siden av knappen til RST pin. Den blå ledningen løper fra pin D1 til motstand og LED. Det negative benet på lysdioden festes til GND pin av NodeMCU.

Når brødbrettet er satt opp, bør det se slik ut:

Hvis du lurer på hvordan jeg har LED-lampen min, går jeg på bakken med bare de små kablene, vår hurtige breadboard-kollisjonskurs Hva er et brødbrett og hvordan virker det? En rask crash-kurs Hva er et brødbrett og hvordan virker det? En rask crash kurs Ønsker du å lære DIY elektronikk? Du har kanskje fått et brødbrett i startpakken. Men hva er et brødbrett og hvordan fungerer det? Les mer skal bidra til å rydde opp! Sjekk oppsettet ditt og fest NodeMCU til datamaskinen via USB.

Trinn 2: Sette opp IDE

Før du fortsetter med koding, må du gjøre noen forberedelser. Hvis du ikke allerede har konfigurert, må du opprette Arduino IDE for å gjenkjenne ditt NodeMCU-kort. Du kan legge den til i brettelisten din via Fil> Innstillinger.

Du finner en mer detaljert forklaring på dette trinnet i vår introduksjonsartikkel fra NodeMCU.

Det kreves to biblioteker for dette prosjektet. Navigere til Skisse> Inkluder bibliotek> Administrer biblioteker. Søk etter ESP8266WIFI av Ivan Grokhotkov og installere den. Dette biblioteket er skrevet for å lage Wi-Fi-forbindelser med NodeMCU-kortet.


Neste søk etter IFTTTWebhook av John Romkey og installer den nyeste versjonen. Dette biblioteket er designet for å forenkle prosessen med å sende webhooks til IFTTT.

Det er alt forberedelsene vi trenger, lar kode!

Hvordan koden vil fungere

Vi bruker ESP8266WIFI bibliotek for å etablere en Wi-Fi-tilkobling. De IFTTTWebhooks biblioteket gjør en forespørsel til IFTTT-i dette tilfellet, for å legge inn på Twitter. Deretter instruerer NodeMCU-styret om å sove når det ikke er i bruk for å spare strøm.

Når du trykker på knappen, vil den koble til D0 og RST pinner. Dette nullstiller styret, og prosessen skjer igjen.

Mesteparten av koden i denne opplæringen er enkel nok for nybegynnere. Når det er sagt, hvis du starter, finner du det mye lettere å forstå etter å ha fulgt vår Arduino nybegynnerguide.

Denne opplæringen går gjennom koden i biter for å hjelpe til med forståelsen. Hvis du vil komme deg direkte til bedriften, kan du finne den komplette koden på Pastebin. Merk at du fortsatt må fylle ut Wi-Fi og IFTTT-legitimasjonene i denne koden for at den skal fungere!

Trinn 3: Testing dyp søvn

For å begynne, lager vi en enkel test for å vise hvor dyp søvn fungerer. Åpne en ny skisse i Arduino IDE. Skriv inn følgende to kodebiter.

#inkludere  #inkludere  #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #definert passord "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Her inkluderer vi våre biblioteker, sammen med å definere noen variabler vi trenger i vår skiss. Du vil merke at ledPin og wakePin er nummerert annerledes her sammenlignet med Fritzing diagrammet ovenfor. NodeMCU har en annen pinout til Arduino boards. Dette er ikke et problem skjønt, på grunn av dette praktiske diagrammet:

Opprett nå en oppsettfunksjon:

ugyldig oppsett () Serial.begin (115200); mens (! Serial)  Serial.println (""); // skriv ut en tom linje før og etter Knapp Trykk Serial.println ("Knapp trykkes"); Serial.println (""); // skriv ut en tom linje ESP.deepSleep (wakePin);  

Her setter vi opp vår serielle port, og bruker en stundsløyfe til å vente til den begynner. Siden denne koden vil utløse etter at du har trykket på tilbakestillingsknappen, skriver vi ut “Knappen er trykket” til seriell skjerm. Deretter forteller vi NodeMCU å gå inn i dyp søvn til knappen knytter sammen wakePin til RST pin er trykket.

Til slutt, for testing, legg dette til din løkke () metode:

tomromsløyfe () // dyp søvn fungerer, vil denne koden aldri løpe. Serial.println ("Dette skal ikke skrives ut");  

Vanligvis løser Arduino-skisser løkkefunksjonen kontinuerlig etter oppsett. Siden vi sender brettet til å sove før oppsettet avsluttes løper løkken aldri.

Lagre skissen og last opp den til brettet. Åpne seriell skjerm, og du bør se “Knappen er trykket.” Hver gang knappen utløser, styrer styret og meldingen skrives ut igjen. Det fungerer!

En merknad om seriell skjerm

Du har kanskje lagt merke til noen nonsenspersoner i seriell skjermen under noen av prosjektene dine. Dette skyldes vanligvis ikke at den serielle skjermen stilles til samme baudrate som Serial.begin (XXXX) sats.

Mange guider foreslår at du starter seriell tilkobling med en baudrate på 115200 for et prosjekt som dette. Jeg prøvde mange kombinasjoner, og de alle hadde varierende grader av gibberish før og etter serielle meldinger. Ifølge ulike foruminnlegg kan dette være ned til en feilbrett eller programvarekompatibilitetsproblem. Da det ikke påvirker prosjektet så dårlig, velger jeg å late som det ikke skjer.

Hvis du har problemer med seriell skjerm, kan du prøve forskjellige baudpriser og se hvilke som passer best for deg.

Trinn 4: Koble til Wi-Fi

Opprett nå en funksjon for tilkobling til Wi-Fi-nettverket ditt.

void connectToWifi () Serial.print ("Koble til: SSID NAME"); // uncomment neste linje for å vise SSID navn //Serial.print(ssid); WiFi.begin (ssid, passord); Serial.println (""); // skriv ut en tom linje Serial.print ("Forsøk på å koble til:"); // Prøv å koble i 10 sekunder int i = 10; mens (WiFi.status ()! = WL_CONNECTED && i> = 0) forsinkelse (1000); Serial.print (i); Serial.print (","); Jeg--;  Serial.println (""); // Skriv ut en tom linje // Skriv ut forbindelsesresultatet hvis (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // skriv ut en tom linje Serial.print ("NodeMCU ip address:"); Serial.println (WiFi.localIP ());  ellers Serial.println ("Connection mislyktes - kontroller legitimasjonene dine eller tilkoblingen");  

Denne metoden forsøker å koble til nettverket ditt ti ganger med et sekund i mellom. Suksess eller svikt av tilkobling skrives ut til seriell skjerm.

Trinn 5: Kaller tilkoblingsmetoden

Akkurat nå, connectToWifi () er aldri kalt. Legg til et anrop til oppsettfunksjonen mellom “Knappen er trykket” melding og sende brettet til å sove.

connectToWifi (); 

Hvis du lurer på hvor dette passer, bør det se slik ut:


På toppen av skissen erstatte ssid og passord variabler med Wi-Fi-legitimasjonene dine. Lagre skissen din og last opp til brettet.

Nå når styret støtter det, vil det forsøke å koble til Wi-Fi-nettverket ditt før du går tilbake til oppsettfunksjonen. Nå kan vi sette opp IFTTT-integrasjonen.

Trinn 6: Konfigurere IFTTT-integrasjon

IFTTT tillater integrering med et stort utvalg av webtjenester. Vi brukte den i vår Wi-Fi PC Tower LED-opplæring for å sende et varsel når en ny e-post er mottatt. I dag bruker vi den til å sende en tweet ved å trykke på en knapp.

Naviger til Mine applets side, og velg Ny applet

Klikk på +dette og koble til Webhooks. Å velge “Motta en webforespørsel” og navnet ditt arrangement. Hold det enkelt! Merk ned hendelsesnavnet, du må legge det til din NodeMCU-kode senere. Klikk “Opprett Trigger”.


Velg nå +at. Søk etter Twitter service og koble til den - du må autorisere den til å legge inn på din Twitter-konto. Å velge “Legg inn en tweet” og velg meldingen din.


Neste skjerm vil be deg om å se gjennom appleten. Klikk på ferdig. Det er det!

Trinn 7: Legge til IFTTT-legitimasjon til koden

Tilbake i Arduino IDE må du legge til IFTTT API-nøkkelen og hendelsesnavnet til de definerte variablene. For å finne API-tasten, naviger til Mine applets og velg Webhooks under tjenester fane. Å velge dokumentasjon for å få tilgang til nøkkelen din.

Kopier nøkkelen og hendelsesnavnet i koden din, og erstatt de midlertidige navnene som er opprettet for dem.

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

Merk at de omvendte kommaene må forbli, bare erstatt teksten.

Mellom å ringe connectToWifi () og send styret til å sove, opprett en forekomst av biblioteket IFTTTWebhook. LED-signalene ferdigstilles før dyp søvn begynner igjen.

// bare koblet til Wi-Fi IFTTTWebhook krok (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); forsinkelse (200); digitalWrite (ledPin, LOW); // nå sende bord til å sove 

Kaller utløseren på krok objektbranner fra IFTTT-applet, og bør legge inn på din Twitter-konto. Lagre skissen din og last opp den. Du burde nå ha en fullt funksjonell tweeting-knapp.

Hvis det ikke ser ut til å fungere, må du sjekke koden og legitimasjonen nøye for feil. Hvis du virkelig sitter fast, får du full koden ovenfra og sammenligner den med din egen.

Ferdig! Hvordan kan du forbedre det videre?

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 et tilfelle som holder kretsen, vil være det perfekte nybegynner 3D-utskriftsprosjektet.

Til tross for at du bruker dyp søvn, kan det hende du finner et batteri som skulle løpe ganske fort. Det er mange Arduino strømsparing tips som hjelper i denne typen prosjekter. Mens det er vanskeligere enn denne opplæringen, kan du bruke en batteridrevet Wi-Fi-knapp, hvis du har laget din egen kraftbevisste Arduino fra nå av, i flere måneder!

Dette prosjektet ville gjøre det perfekt for en fjernkontroll for smarte hjemmeapplikasjoner. Det er allerede en betydelig mengde hjemmautomatiseringsapplets 10 av de beste IFTTT-oppskrifter for smart hjemmeautomatisering 10 av de beste IFTTT-oppskrifter for smart hjemmeautomatisering De rette IFTTT-oppskrifter for ditt smarte hjem kan spare tid, krefter og energi. Her er ti av våre favoritter for å komme i gang. Les mer tilgjengelig på IFTTT. Når du har det grunnleggende nede, kan du bruke nesten hvilken som helst sensor eller bytte for å utløse praktisk talt enhver tjeneste du kan forestille deg.

Bilde Kreditt: Vadmary / Depositphotos

Utforsk mer om: Arduino, DIY Project Tutorials.