Kako z gumbom ESP8266 povezati svoj gumb Wi-Fi

Kako z gumbom ESP8266 povezati svoj gumb Wi-Fi

Internet stvari ima velik DIY potencial. Z dovolj znanja in nekaj poceni komponent bi lahko zgradili kompleksen sistem povezanih naprav.





Včasih pa si želite nekaj preprostega. Brez zvoncev in piščal, le gumb, ki opravlja eno samo nalogo. Morda ste že poznali kaj takega, če ste kdaj uporabili gumb Amazon Dash za preureditev vsakodnevnih gospodinjskih predmetov.





Danes bomo z NodeMCU naredili gumb, ki omogoča Wi-Fi, in ga programirali za uporabo IFTTT za ... no, karkoli! Pisna navodila po videoposnetku, če želite.





Kaj boste potrebovali

Boste potrebovali:

  • 1 x plošča NodeMCU (ESP8266), na voljo za 2-3 USD na AliExpressu
  • 1 x gumb
  • 1 x LED (neobvezno)
  • 1 x 220 ohmski upor (neobvezno)
  • Plošča in priključne žice
  • Mikro USB za programiranje
  • Računalnik z nameščenim Arduino IDE

Poleg NodeMCU bi morali večino teh delov najti v katerem koli začetnem kompletu Arduino. Ta vadnica bo predpostavljala, da uporabljate izbirno LED in upor, vendar nista bistvena.



1. korak: Nastavitev vezja

Nastavitev strojne opreme je za ta projekt zelo preprosta. Ploščo nastavite v skladu s tem diagramom.

Vijolična žica se pritrdi nožica D0 na eni strani gumba. Zelena žica povezuje drugo stran gumba z RST pin . Modra žica teče od nožica D1 na upor in LED. Negativna noga LED se pritrdi na Pin GND NodeMCU.





Ko je plošča nastavljena, bi morala izgledati nekako tako:

kako sestaviti digitalno anteno za televizijo

Če se sprašujete, kako mi LED prihaja do ozemljitvenega zatiča samo s temi drobnimi deli kabla, hitro hitri tečaj omarice bi morala pomagati razčistiti! Preverite nastavitve in priključite NodeMCU na računalnik prek USB -ja.





2. korak: Nastavitev IDE

Preden začnete s kodiranjem, se morate nekaj pripraviti. Če tega še niste storili, nastavite Arduino IDE, da prepozna vašo ploščo NodeMCU. Lahko ga dodate na seznam svojih plošč prek Datoteka> Nastavitve .

Podrobnejšo razlago tega koraka najdete v našem uvodnem članku NodeMCU.

Za ta projekt sta potrebni dve knjižnici. Pomaknite se do Skica> Vključi knjižnico> Upravljanje knjižnic . Išči ESP8266WIFI avtorja Ivan Grokhotkov in ga namestite. Ta knjižnica je napisana za vzpostavitev povezav Wi-Fi s ploščo NodeMCU.

Naslednje iskanje za IFTTTWebhook avtorja John Romkey in namestite najnovejšo različico. Ta knjižnica je zasnovana za poenostavitev postopka pošiljanja spletnih klicev na IFTTT.

To je vse, kar potrebujemo za pripravo, dovolite kodiranje!

Kako bo kodeks deloval

Uporabili bomo ESP8266WIFI knjižnico za vzpostavitev povezave Wi-Fi. The IFTTTWebhooks knjižnica zahteva od IFTTT --- v tem primeru objavo na Twitterju. Nato dajte plošči NodeMCU, da spi, ko je ne uporabljate, da prihranite energijo.

Ko pritisnete gumb, bo povezal D0 in RST zatiči. To ponastavi ploščo in postopek se ponovi.

Večina kode v tej vadnici je dovolj preprosta za začetnike. Če pa začenjate, boste po tem, ko boste začeli, veliko lažje razumeli Vodnik za začetnike Arduino .

Ta vadnica gre skozi kode v kosih, da pomaga razumeti. Če želite preiti neposredno na posel, lahko najdete popolno kodo na Pastebinu . Upoštevajte, da boste v tej kodi še vedno morali vnesti poverilnice za Wi-Fi in IFTTT!

3. korak: Preizkusite globok spanec

Za začetek bomo ustvarili preprost test, ki bo pokazal, kako deluje globok spanec. Odprite novo skico v Arduino IDE. Vnesite naslednja dva koda kode.

#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'

Tukaj vključujemo naše knjižnice skupaj z opredelitvijo nekaj spremenljivk, ki jih potrebujemo v skici. Opazili boste, da sta ledPin in wakePin oštevilčena tukaj v primerjavi z zgornjim diagramom Fritzing. NodeMCU ima drugačen pinout od plošč Arduino. Vendar zaradi tega priročnega diagrama to ni problem:

Zdaj ustvarite nastavitveno funkcijo:

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);
}

Tu nastavimo naša serijska vrata in z zanko while počakamo, da se začne. Ker se bo ta koda sprožila po pritisku gumba za ponastavitev, tiskamo 'Gumb pritisnjen' na serijski monitor. Nato NodeMCU -ju povemo, naj preide v globok spanec, dokler gumb, ki povezuje wakePin do RST pin je pritisnjen.

Nazadnje, za testiranje, dodajte to v svojo zanka () metoda:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Običajno skice Arduino po nastavitvi izvajajo funkcijo zanke neprekinjeno. Ker pošljemo ploščo v stanje spanja, preden se nastavitev konča, se zanka nikoli ne zažene.

Skico shranite in naložite na tablo. Odprite serijski monitor in videli boste 'Gumb pritisnjen.' Vsakič, ko se gumb sproži, se plošča ponastavi in ​​sporočilo se natisne znova. Deluje!

Opomba o serijskem monitorju

Morda ste med nekaterimi svojimi projekti na serijskem monitorju opazili nekaj nesmiselnih likov. Običajno je to posledica tega, da serijskega monitorja ne nastavite na enako hitrost prenosa kot Serial.begin (XXXX) oceniti.

Mnogi vodniki predlagajo, da se za takšen projekt začne serijska povezava s hitrostjo prenosa 115200. Preizkusil sem veliko kombinacij in vse so imele različne stopnje neumnosti pred in po serijskih sporočilih. Glede na različne objave na forumih je to lahko posledica okvare plošče ali združljivosti programske opreme. Ker to ne vpliva preveč na projekt, se odločim, da se pretvarjam, da se to ne dogaja.

kaj smh pomeni v besedilnih sporočilih

Če imate težave s serijskim monitorjem, poskusite z različnimi hitrostmi prenosa in poglejte, katera vam najbolj ustreza.

4. korak: Povežite se z omrežjem Wi-Fi

Zdaj ustvarite funkcijo za povezavo z omrežjem Wi-Fi.

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');
}
}

Ta metoda se poskuša desetkrat povezati z vašim omrežjem s sekundo vmes. Uspešna ali neuspešna povezava natisne serijski monitor.

5. korak: Klicanje načina povezave

Trenutno, connectToWifi () se nikoli ne pokliče. Dodajte klic svoji nastavitveni funkciji med sporočilom 'Pritisk na gumb' in pošiljanjem plošče v stanje spanja.

connectToWifi();

Če se sprašujete, kje to ustreza, bi moralo izgledati tako:

Na vrhu skice zamenjajte ssid in geslo spremenljivke z vašimi poverilnicami za Wi-Fi. Skico shranite in naložite na tablo.

Zdaj, ko se plošča zažene, se bo poskušala povezati z vašim omrežjem Wi-Fi, preden se vrne v nastavitveno funkcijo. Zdaj nastavimo integracijo IFTTT.

6. korak: Nastavitev integracije IFTTT

IFTTT omogoča integracijo z veliko paleto spletnih storitev. Uporabili smo ga v naši vadnici LED stolp za Wi-Fi PC, da pošljemo opozorilo, ko prejmemo novo e-poštno sporočilo. Danes ga bomo uporabili za pošiljanje tweeta s pritiskom na gumb.

Pomaknite se do Moji jabolki stran in izberite Nov programček

Kliknite na +to in se povežite z Spletne kljuke . Izberite 'Prejemanje spletne zahteve' in poimenujte svoj dogodek. Naj bo preprosto ! Zapišite si ime dogodka, kasneje ga boste morali dodati v kodo NodeMCU. Kliknite 'Ustvari sprožilec' .

Zdaj izberite +to . Poiščite Twitter storitev in se povežite z njim-pooblastiti ga boste morali za objavo v svojem računu Twitter. Izberite 'Objavi tvit' in izberite svoje sporočilo.

Naslednji zaslon vas bo prosil, da pregledate programček. Kliknite dokončaj. To je to!

7. korak: Kodeksu dodajte poverilnice IFTTT

Nazaj v IDE Arduino boste morali definiranim spremenljivkam dodati ključ API -ja IFTTT in ime dogodka. Če želite poiskati ključ API, se pomaknite do Moji jabolki in izberite Spletne kljuke pod Storitve zavihek. Izberite Dokumentacija za dostop do ključa.

Kopirajte ključ in ime dogodka v kodo, pri čemer zamenjajte začasna imena, ki ste jih nastavili zanje.

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

Upoštevajte, da obrnjene vejice morajo ostati, samo zamenjati besedilo.

Med klicem na connectToWifi () in pošiljanje plošče v stanje spanja ustvarite primerek knjižničnega predmeta IFTTTWebhook. LED signalizira dokončanje naloge, preden se globok spanec ponovno začne.

zakaj se moj telefon ne vklopi
//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

Sprožilec klica na kljuka objekt sproži programček IFTTT in bi ga moral objaviti v svojem računu Twitter. Shranite skico in jo naložite. Zdaj bi morali imeti popolnoma funkcionalen gumb za tvitanje.

Če se zdi, da ne deluje, natančno preglejte kodo in poverilnice za napake. Če se res zataknete, vzemite celotno kodo od zgoraj in jo primerjajte s svojo.

Končano! Kako bi ga lahko še izboljšali?

To je osnovna različica gumba Wi-Fi, vendar obstaja veliko načinov, kako bi ga lahko izboljšali. Zaradi poenostavitve se tukaj za napajanje uporablja povezava USB. Baterija bi bila popolnoma mobilna, ohišje z vezjem pa popoln začetniški projekt 3D tiskanja.

Kljub globokemu spanju boste morda ugotovili, da se bo baterija precej hitro izpraznila. Veliko jih je Nasveti za varčevanje z energijo Arduino ki pomagajo pri tovrstnih projektih. Čeprav je težje od te vadnice, če bi lastni Arduino, ki se zaveda energije, naredili iz nič, bi lahko gumb Wi-Fi na baterijski pogon deloval več mesecev!

Ta projekt bi bil kot nalašč za daljinski upravljalnik za aplikacije pametnega doma. Obstaja že precejšnja količina programčki za avtomatizacijo doma na voljo na IFTTT. Ko odkrijete osnove, lahko s skoraj vsakim senzorjem ali stikalom sprožite skoraj vsako storitev, ki si jo lahko zamislite.

Zasluge za sliko: Vadmary / Depositphotos

Deliti Deliti Cvrkutati E-naslov 6 zvočnih alternativ: najboljše brezplačne ali poceni aplikacije za avdio knjige

Če ne želite plačati za zvočne knjige, je tukaj nekaj odličnih aplikacij, ki vam omogočajo, da jih poslušate brezplačno in zakonito.

Preberite Naprej
Sorodne teme
  • DIY
  • Arduino
  • DIY Project Tutoriali
O avtorju Ian Buckley(216 objavljenih člankov)

Ian Buckley je samostojni novinar, glasbenik, izvajalec in video producent, ki živi v Berlinu v Nemčiji. Ko ne piše ali na odru, se ukvarja z elektroniko ali kodo DIY v upanju, da bo postal nor znanstvenik.

Več od Iana Buckleyja

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite
Kategorija Diy