Hvordan lage din egen Wi-Fi-tilkoblede knapp med ESP8266

Hvordan lage din egen Wi-Fi-tilkoblede knapp med ESP8266

Tingenes internett har et stort 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 kan allerede være kjent med noe slikt hvis du noen gang har brukt en Amazon Dash -knapp for å omorganisere dagligvarer.





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





Hva du trenger

Du vil trenge:

  • 1 x NodeMCU (ESP8266) -kort, tilgjengelig for $ 2-3 på AliExpress
  • 1 x trykknapp
  • 1 x LED (valgfritt)
  • 1 x 220 Ohm motstand (valgfritt)
  • Brødbrett og tilkoblingskabler
  • Micro USB for programmering
  • Datamaskin med Arduino IDE installert

Bortsett fra NodeMCU, bør du kunne finne de fleste av disse delene i ethvert Arduino -startsett. Denne opplæringen antar at du bruker valgfri LED og motstand, men de er ikke viktige.



Trinn 1: Sette opp kretsen

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

Den lilla tråden festes pin D0 til den ene siden av knappen. Den grønne ledningen kobler den andre siden av knappen til RST -pinne . Den blå ledningen går fra pin D1 til motstanden og LED. Det negative benet på LED -en festes til GND -pinne av NodeMCU.





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

hvordan ser jeg abonnentene mine på youtube

Hvis du lurer på hvordan jeg har fått min LED til å gå til bakkenålen med bare de små kabelbitene, er det raskt krasjkurs for brødbrett burde hjelpe til med å rydde opp! Kontroller oppsettet og fest NodeMCU til datamaskinen via USB.





Trinn 2: Konfigurere IDE

Før du fortsetter med koding, må du gjøre noen forberedelser. Hvis du ikke allerede har gjort det, kan du konfigurere Arduino IDE for å gjenkjenne NodeMCU -kortet. Du kan legge den til i tavellisten din via Fil> Innstillinger .

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

To biblioteker kreves for dette prosjektet. Navigere 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-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 forberedelsen vi trenger, la oss kode!

Hvordan koden vil fungere

Vi bruker ESP8266WIFI bibliotek for å opprette en Wi-Fi-tilkobling. De IFTTTWebhooks bibliotek sender en forespørsel til IFTTT --- i dette tilfellet om å legge ut på Twitter. Be deretter NodeMCU -kortet om å sove når det ikke er i bruk for å spare strøm.

Når du trykker på knappen, kobles den til D0 og RST pinner. Dette tilbakestiller brettet, og prosessen skjer igjen.

Det meste av koden i denne opplæringen er enkel nok for nybegynnere. Når det er sagt, vil du finne det mye lettere å forstå etter at du har startet Arduino nybegynnerguide .

Denne opplæringen går gjennom koden i biter for å hjelpe deg med å forstå. Hvis du ønsker å komme i gang med virksomheten, kan du finne komplett kode på Pastebin . Vær oppmerksom på at du fortsatt må fylle ut Wi-Fi- og IFTTT-legitimasjonen i denne koden for at den skal fungere!

Trinn 3: Testing av 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.

#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 vår skisse. Du vil legge merke til at ledPin og wakePin er nummerert annerledes her sammenlignet med Fritzing -diagrammet ovenfor. NodeMCU har en annen pinout enn Arduino -kort. Dette er imidlertid ikke et problem på grunn av dette hendige diagrammet:

Lag nå en oppsettfunksjon:

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 konfigurerer vi vår serielle port, og bruker en stund -sløyfe til å vente til den begynner. Siden denne koden vil utløses etter at du har trykket på tilbakestillingsknappen, skriver vi ut 'Trykk på knappen' til den serielle skjermen. Deretter forteller vi NodeMCU å gå i dyp søvn til knappen som kobler til wakePin til RST pinnen trykkes.

Til slutt, for testing, legg dette til din Løkke() 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 til å sove før oppsettet avsluttes, løper løkken aldri.

Lagre skissen din og last den opp til tavlen. Åpne den serielle skjermen, og du bør se 'Trykk på knappen.' Hver gang knappen aktiveres, nullstilles tavlen og meldingen skrives ut igjen. Det fungerer!

En merknad om seriell skjerm

Du har kanskje lagt merke til noen tullfigurer i den serielle skjermen under noen av prosjektene dine. Dette skyldes vanligvis at den serielle skjermen ikke er satt til samme overføringshastighet som Serial.begin (XXXX) vurdere.

Mange guider foreslår at du starter seriell tilkobling med en baudhastighet på 115200 for et prosjekt som dette. Jeg prøvde mange kombinasjoner, og de hadde alle forskjellige grader av krangling før og etter seriemeldinger. I følge forskjellige foruminnlegg kan dette skyldes et defekt brett eller problem med programvarekompatibilitet. Siden det ikke påvirker prosjektet for dårlig, velger jeg å late som om det ikke skjer.

windows klarte ikke å fullføre formatet micro sd -kort

Hvis du har problemer med den serielle skjermen, kan du prøve forskjellige overføringshastigheter og se hvilken som fungerer best for deg.

Trinn 4: Koble til Wi-Fi

Lag nå en funksjon for å koble 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 ditt ti ganger med et sekund i mellom. Vellykket eller mislykket forbindelse med utskrifter til den serielle skjermen.

Trinn 5: Ringe tilkoblingsmetoden

Akkurat nå, connectToWifi () blir aldri ringt. Legg til en samtale til oppsettfunksjonen mellom 'Button Pressed' -meldingen og send styret i dvale.

connectToWifi();

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

På toppen av skissen erstatter du ssid og passord variabler med Wi-Fi-legitimasjonen din. Lagre skissen din og last den opp til tavlen.

Når kortet starter, vil det prøve å koble seg til Wi-Fi-nettverket før det går tilbake til oppsettfunksjonen. La oss nå sette opp IFTTT -integrasjonen.

Trinn 6: Konfigurere IFTTT -integrasjon

IFTTT tillater integrasjon med et stort utvalg av webtjenester. Vi brukte den i vår Wi-Fi PC tower LED-opplæring 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 Mine appleter side, og velg Ny applett

Klikk på +dette og koble til Webhooks . Plukke ut 'Motta en nettforespørsel' og navngi arrangementet ditt. Hold det enkelt ! Noter hendelsesnavnet, du må legge det til NodeMCU -koden senere. Klikk 'Opprett utløser' .

Velg nå +det . Søk etter Twitter tjenesten og koble til den --- du må autorisere den til å legge ut på Twitter-kontoen din. Plukke ut 'Legg ut en tweet' og velg meldingen din.

Den neste skjermen vil be deg om å gå gjennom appleten. Klikk på ferdig. Det er det!

Trinn 7: Legge til IFTTT -legitimasjon i koden

Tilbake i Arduino IDE må du legge til IFTTT API -nøkkelen og hendelsesnavnet i de definerte variablene. For å finne API -nøkkelen, naviger til Mine appleter og velg Webhooks under Tjenester kategorien. Plukke ut Dokumentasjon for å få tilgang til nøkkelen din.

Kopier nøkkelen og hendelsesnavnet til koden, 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'

Vær oppmerksom på at de inverterte kommaene må forbli, bare erstatt teksten.

Mellom å ringe til connectToWifi () og sender styret i dvale, opprett en forekomst av IFTTTWebhook -bibliotekobjektet. Lysdioden signaliserer at oppgaven er fullført før dyp søvn begynner igjen.

hvordan du ser tittelen på en slettet youtube -video
//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

Ringer utløser på krok objektet avfyrer IFTTT -appleten, og skal legges ut på Twitter -kontoen din. Lagre skissen din og last den opp. Du bør nå ha en fullt funksjonell tweeting -knapp.

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

Ferdig! Hvordan kan du forbedre det ytterligere?

Dette er en grunnleggende versjon av en Wi-Fi-knapp, men det kan forbedres på mange måter. For enkelhets skyld brukes USB -tilkoblingen for strøm her. Et batteri ville gjøre det helt mobilt, og et etui 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 går tomt ganske raskt. Det er mange Arduino tips om strømsparing som hjelper i slike 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 hjemmeautomatiseringsappletter tilgjengelig på IFTTT. Når du har det grunnleggende nede, kan du bruke nesten hvilken som helst sensor eller bytte til å utløse praktisk talt alle tjenester du kan forestille deg.

Bildekreditt: Vadmary / Depositphotos

Dele Dele kvitring E -post 6 hørbare alternativer: De beste gratis eller billige lydbokappene

Hvis du ikke liker å betale for lydbøker, er det noen flotte apper som lar deg lytte til dem gratis og lovlig.

Les neste
Relaterte temaer
  • DIY
  • Arduino
  • DIY -prosjektopplæringer
Om forfatteren Ian Buckley(216 artikler publisert)

Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller står på scenen, pusler han med DIY elektronikk eller kode i håp om å bli en gal forsker.

Mer fra Ian Buckley

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere