Sådan laver du din egen knap til Wi-Fi-forbindelse med ESP8266

Sådan laver du din egen knap til Wi-Fi-forbindelse med ESP8266

Internet of Things har et stort DIY -potentiale. Med tilstrækkelig knowhow og et par billige komponenter kunne du bygge et komplekst system med tilsluttede enheder.





Nogle gange vil du dog gerne have noget simpelt. Ingen klokker eller fløjter, bare en knap, der udfører en enkelt opgave. Du kender måske allerede sådan noget, hvis du nogensinde har brugt en Amazon Dash -knap til at genbestille dagligvarer.





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





Hvad du skal bruge

Du får brug for:

  • 1 x NodeMCU (ESP8266) -kort, tilgængeligt til 2-3 $ på AliExpress
  • 1 x trykknap
  • 1 x LED (valgfri)
  • 1 x 220 Ohm modstand (valgfrit)
  • Brødbræt og tilslutningstråde
  • Micro USB til programmering
  • Computer med Arduino IDE installeret

Bortset fra NodeMCU burde du kunne finde de fleste af disse dele i ethvert Arduino -startsæt. Denne vejledning antager, at du bruger valgfri LED og modstand, men de er ikke afgørende.



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 ledning fastgøres pin D0 til den ene side af knappen. Den grønne ledning forbinder den anden side af knappen med RST pin . Den blå ledning løber fra pin D1 til modstanden og LED. LEDens negative ben fastgøres til GND pin af NodeMCU.





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

bedste videoredigeringsapp til Android

Hvis du undrer dig over, hvordan jeg har fået min LED til at gå til jordnålen ved hjælp af bare de små stykker kabel, er vores hurtige brødbræt crash kursus burde hjælpe med at rydde op! Kontroller din opsætning, og tilslut din NodeMCU til computeren via USB.





Trin 2: Opsætning af IDE

Inden du fortsætter med kodning, skal du tage nogle forberedelser. Hvis du ikke allerede har gjort det, skal du konfigurere Arduino IDE til at genkende dit NodeMCU -kort. Du kan tilføje det til din tavleliste via Fil> Indstillinger .

Du kan finde en mere detaljeret forklaring på dette trin i vores NodeMCU -introduktionsartikel.

To biblioteker kræves til dette projekt. Naviger til Skitse> Inkluder bibliotek> Administrer biblioteker . Søge efter ESP8266WIFI af Ivan Grokhotkov og installer det. Dette bibliotek er skrevet til at oprette Wi-Fi-forbindelser med NodeMCU-kortet.

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 alt det forberedelse, vi har brug for, lad os kode!

Sådan fungerer koden

Vi vil bruge ESP8266WIFI bibliotek for at oprette en Wi-Fi-forbindelse. Det IFTTTWebhooks biblioteket anmoder IFTTT --- i dette tilfælde om at sende til Twitter. Instruer derefter NodeMCU -kortet om at sove, når det ikke er i brug for at spare strøm.

Når der trykkes på knappen, vil det forbinde D0 og RST stifter. Dette nulstiller tavlen, og processen sker igen.

Det meste af koden i denne vejledning er enkel nok til begyndere. Når det er sagt, hvis du starter, finder du det meget lettere at forstå efter at have fulgt vores Arduino begyndere guide .

Denne vejledning gennemgår koden i bidder for at hjælpe med forståelsen. Hvis du ønsker at komme direkte i gang med virksomheden, kan du finde komplet kode på Pastebin . Bemærk, at du stadig skal udfylde dine Wi-Fi- og IFTTT-legitimationsoplysninger i denne kode, for at den kan fungere!

Trin 3: Test af dyb søvn

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

#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, vi skal bruge 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 boards. Dette er dog ikke et problem på grund af dette praktiske diagram:

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 konfigurerer vi vores serielle port og bruger et stykke loop til at vente, indtil den begynder. Da denne kode udløses efter at have trykket på reset -knappen, udskriver vi 'Knap trykket' til den serielle skærm. Derefter fortæller vi NodeMCU at gå i dyb søvn, indtil knappen forbinder wakePin til RST knappen trykkes ned.

Endelig, 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 loop -funktionen kontinuerligt efter opsætning. Da vi sender tavlen i dvale, før 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!

En bemærkning om den serielle skærm

Du har muligvis bemærket nogle nonsens tegn i den serielle skærm under nogle af dine projekter. Dette skyldes normalt, at den serielle skærm ikke er indstillet til den samme baudhastighed som Serial.begin (XXXX) sats.

Mange guider foreslår at starte den serielle forbindelse med en baudhastighed på 115200 for et projekt som dette. Jeg prøvede mange kombinationer, og de havde alle forskellige grader af gibberish før og efter serielle meddelelser. Ifølge forskellige forumindlæg kan dette skyldes et defekt kort eller softwarekompatibilitetsproblem. Da det ikke påvirker projektet for dårligt, vælger jeg at lade som om det ikke sker.

facebook login med mobilnummer

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

Trin 4: Tilslutning til Wi-Fi

Opret nu en funktion til 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. Udskrivning til forbindelsen til den serielle skærm lykkedes eller mislykkedes.

Trin 5: Opkald til forbindelsesmetoden

Lige nu er connectToWifi () kaldes aldrig. Tilføj et opkald til din opsætningsfunktion mellem meddelelsen 'Button Pressed' og afsendelse af tavlen i dvale.

connectToWifi();

Hvis du undrer dig over, hvor det passer, skal det se sådan ud:

Øverst på skitsen udskiftes ssid og adgangskode variabler med dine Wi-Fi-legitimationsoplysninger. Gem din skitse og upload til tavlen.

Når kortet nu starter, vil det forsøge at oprette forbindelse til dit Wi-Fi-netværk, før det vender tilbage til opsætningsfunktionen. 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 et tweet med et tryk på en knap.

Naviger til Mine applets side, og vælg Ny applet

Klik på +dette og oprette forbindelse til Webhooks . Vælg 'Modtag en webanmodning' og navngiv din begivenhed. Hold det simpelt ! Noter begivenhedsnavnet, du skal føje det til din NodeMCU -kode senere. Klik på 'Opret udløser' .

Vælg nu +det . Søg efter Twitter service og oprette forbindelse til den --- du skal godkende den til at sende til din Twitter-konto. Vælg 'Send et tweet' og vælg din besked.

Den næste skærm vil bede dig om at gennemgå appleten. Klik på afslut. 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 hændelsesnavn til dine definerede variabler. For at finde API -nøglen skal du navigere til Mine applets og vælg Webhooks under Services fane. Vælg Dokumentation for at få adgang til din nøgle.

Kopier nøglen og hændelsesnavnet til din kode, og erstat de midlertidige navne, der er konfigureret til dem.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

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

Mellem at ringe til connectToWifi () og sender tavlen i dvale, opret en forekomst af IFTTTWebhook -bibliotekobjektet. LED'en signalerer, at opgaven er afsluttet, før dyb søvn begynder igen.

hvordan man gemmer som png i illustrator
//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

Opkaldsudløser på krog objekt udløser IFTTT -appleten, og det skal postes på 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 virke, skal du kontrollere din kode og legitimationsoplysninger omhyggeligt for fejl. Hvis du virkelig sidder fast, skal du få 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 kan forbedres på mange måder. For enkelheds skyld bruges USB -forbindelsen til strøm her. Et batteri ville gøre det helt mobilt, og en kuffert, der holder kredsløbet, ville være det perfekte nybegynder 3D -printprojekt.

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

Dette projekt ville gøre det perfekte til en fjernbetjening til smarte hjemmeapplikationer. Der er allerede en betydelig mængde hjemmeautomatiseringsappletter 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

Del Del Tweet E -mail 6 hørbare alternativer: De bedste gratis eller billige lydbogsapps

Hvis du ikke har lyst til at betale for lydbøger, her er nogle gode apps, der lader dig lytte til dem gratis og lovligt.

Læs Næste
Relaterede emner
  • gør det selv
  • Arduino
  • DIY projektvejledninger
Om forfatteren Ian Buckley(216 artikler udgivet)

Ian Buckley er freelance journalist, musiker, performer og videoproducent bosat i Berlin, Tyskland. Når han ikke skriver eller på scenen, piller han med DIY -elektronik eller kode i håb om at blive en gal videnskabsmand.

Mere fra Ian Buckley

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere