Cum de a face propriul dvs. Wi-Fi conectat buton cu ESP8266
Internetul obiectelor are un potențial vast de DIY. Cu suficient know-how și câteva componente ieftine, ați putea construi un sistem complex de dispozitive conectate.
Uneori, totuși, vrei ceva simplu. Fără clopote sau fluiere, doar un buton care efectuează o singură sarcină. S-ar putea să fiți deja familiarizați cu ceva asemănător dacă ați folosit vreodată un buton Amazon Dash pentru a reordona obiectele de uz casnic de zi cu zi.
Astăzi vom face un buton activat pe Wi-Fi utilizând un NodeMCU și îl vom programa să folosească IFTTT pentru a face ... bine, orice! Instrucțiuni scrise care urmează videoclipului, dacă preferați.
Ce ai nevoie
Vei avea nevoie:
- 1 x placă NodeMCU (ESP8266), disponibilă pentru $ 2-3 pe AliExpress
- 1 x Buton
- 1 x LED (opțional)
- Rezistor 1 x 220 Ohm (opțional)
- Plăci de bord și fire de legătură
- Micro USB pentru programare
- Calculator cu IDE Arduino instalat
În afară de NodeMCU, ar trebui să puteți găsi cele mai multe dintre aceste piese în orice kit de start Arduino 4 cele mai bune truse de pornire pentru începători Arduino 4 cele mai bune truse de pornire pentru începători Arduino Există o mulțime de proiecte arduino începători excelente pe care le puteți utiliza pentru a începe, dar va trebui mai întâi un Arduino și câteva componente. Iată pick-ul nostru de 4 dintre cele mai bune kituri de pornire pentru ... Read More. Acest tutorial va presupune că utilizați LED-ul și rezistorul opțional, dar ele nu sunt esențiale.
Pasul 1: Instalarea circuitului
Setarea hardware-ului este foarte simplă pentru acest proiect. Configurați-vă bordul conform acestei diagrame.
Sârmă purpuriu se atașează pin D0 pe o parte a butonului. Sârma verde conectează cealaltă parte a butonului la RST pin. Sârmă albastră rulează de la pin D1 la rezistor și LED. Piciorul negativ al LED-ului se atașează la GND pin din NodeMCU.
Când panoul de paine este configurat ar trebui să arate ceva de genul:
Dacă vă întrebați cum mi-am luat LED-ul merge la pin PIN folosind doar acele mici bucăți de cablu, cursul nostru de rapid breadboard crash Ce este un Breadboard și cum funcționează? Un curs rapid de prăbușire Ce este un Breadboard și cum funcționează? Un curs de crash rapid Vrei să înveți electronice DIY? S-ar putea să fi primit un pachet de pâine în kit-ul de pornire. Dar ce este un breadboard și cum funcționează? Citește mai mult ar trebui să ajute la clarificare! Verificați setarea și atașați NodeMCU la computer prin USB.
Pasul 2: Configurarea IDE
Înainte de a continua cu codificarea, trebuie să faceți niște pregătiri. Dacă nu ați făcut-o deja, configurați ID-ul Arduino pentru a vă recunoaște placa NodeMCU. Puteți să o adăugați la lista de forumuri prin Fișier> Preferințe.
Puteți găsi o explicație mai detaliată a acestui pas în articolul nostru introductiv NodeMCU.
Două biblioteci sunt necesare pentru acest proiect. Navigheaza catre Schiță> Includeți Biblioteca> Administrați Bibliotecile. Caută ESP8266WIFI de Ivan Grokhotkov și instalați-l. Această bibliotecă este creată pentru a realiza conexiuni Wi-Fi cu placa NodeMCU.
Următoarea căutare pentru IFTTTWebhook de John Romkey și instalați ultima versiune. Această bibliotecă este concepută pentru a simplifica procesul de trimitere a hârtiilor web la IFTTT.
Asta e tot pregătirea de care avem nevoie, permiteți codul!
Cum va funcționa codul
Vom folosi ESP8266WIFI bibliotecă pentru a stabili o conexiune Wi-Fi. IFTTTWebhooks biblioteca face o cerere la IFTTT - în acest caz, să posteze pe Twitter. Apoi, instruiți placa NodeMCU să doarmă atunci când nu este utilizată pentru a economisi energie.
Când butonul este apăsat, va fi conectat D0 și RST pini. Acest lucru resetează placa, iar procesul se reia.
Majoritatea codului din acest tutorial este suficient de simplu pentru începători. Acestea fiind spuse, dacă începeți, veți găsi mult mai ușor de înțeles după ce ați urmat ghidul nostru pentru începători Arduino.
Acest tutorial trece prin cod în bucăți pentru a ajuta la înțelegere. Dacă doriți să ajungeți direct la afaceri, puteți găsi codul complet la Pastebin. Rețineți că va trebui să completați acreditările Wi-Fi și IFTTT în acest cod pentru a funcționa!
Pasul 3: Testarea adormirii profunde
Pentru a începe, vom crea un test simplu pentru a arăta cât de profund funcționează somnul. Deschideți o nouă schiță în IDE-ul Arduino. Introduceți următoarele două fragmente de cod.
#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define parola "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Aici, includem bibliotecile noastre, împreună cu definirea câtorva variabile de care avem nevoie în schița noastră. Veți observa că ledPin și wakePin sunt numerotate diferit aici în comparație cu diagrama Fritzing de mai sus. NodeMCU are un pinout diferit la plăcile Arduino. Aceasta nu este o problemă, totuși, datorită acestei diagrame la îndemână:
Acum creați o funcție de configurare:
void setup () Serial.begin (115200); în timp ce (! Serial) Serial.println (""); // tipăriți o linie goală înainte și după buton Apăsați pe Serial.println ("Butonul apăsat"); Serial.println (""); // tipăriți o linie goală ESP.deepSleep (wakePin);
Aici, ne-am înființat portul serial și folosim o buclă pentru a aștepta până când începe. Deoarece acest cod va declanșa după apăsarea butonului de resetare, vom imprima “Butonul presat” la monitorul serial. Apoi, îi spunem NodeMCU să meargă în somn profund până la butonul de conectare wakePin la RST pin este apăsat.
În cele din urmă, pentru testare, adăugați acest lucru la dvs. buclă() metodă:
void loop () // dacă somnul profund este de lucru, acest cod nu va rula niciodată. Serial.println ("Nu trebuie imprimat");
De obicei, schițele Arduino rulează funcția de buclă continuu după configurare. Din moment ce trimitem bordul la culcare înainte ca încheierea să se încheie, bucla nu se execută niciodată.
Salvați schița și încărcați-o în tablă. Deschideți monitorul serial și ar trebui să vedeți “Butonul presat.” De fiecare dată când butonul declanșează, placa se resetează și mesajul se imprimă din nou. Functioneaza!
O notă despre monitorul serial
S-ar putea să fi observat unele caractere prostii pe monitorul serial în timpul unora dintre proiectele tale. Acest lucru se datorează, de obicei, faptului că nu este setat monitorul serial la aceeași rată de baud ca și Serial.begin (XXXX) rată.
Multe ghiduri sugerează pornirea conexiunii seriale la o rată de transfer de 115200 pentru un astfel de proiect. Am încercat mai multe combinații și toate aveau diferite grade de nebunie înainte și după mesajele seriale. Potrivit diferitelor posturi pe forum, acest lucru ar putea fi la un nivel defect al plăcii sau al problemei de compatibilitate cu software-ul. Deoarece nu afectează prea mult proiectul, aleg să pretind că nu se întâmplă.
Dacă întâmpinați probleme cu monitorul serial, încercați diferite rate de transfer și vedeți ce funcționează cel mai bine pentru dvs..
Pasul 4: Conectarea la Wi-Fi
Acum creați o funcție pentru conectarea la rețeaua Wi-Fi.
void connectToWifi () Serial.print ("Conectarea la: SSID NAME"); // deconectați linia următoare pentru a afișa numele SSID //Serial.print(ssid); WiFi.begin (ssid, parola); Serial.println (""); // tipăriți o linie necomandată Serial.print ("Încercarea de a conecta:"); // încercați să vă conectați timp de 10 secunde int i = 10; în timp ce (WiFi.status ()! = WL_CONNECTED && i> = 0) întârziere (1000); Serial.print (i); Serial.print (","); Eu--; Serial.println (""); // tipăriți o linie goală // tipăriți rezultatul conexiunii dacă (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // tipăriți o linie necomandată Serial.print ("Adresa ip NodeMCU:"); Serial.println (WiFi.localIP ()); altceva Serial.println ("Conectarea a eșuat - verificați-vă acreditările sau conexiunea");
Această metodă încearcă să se conecteze la rețea de zece ori cu o secundă între ele. Succesul sau eșecul conexiunii se imprimă pe monitorul serial.
Pasul 5: Apelarea metodei de conectare
Chiar acum, connectToWifi () nu este chemat niciodată. Adăugați un apel la funcția de configurare între “Butonul presat” mesaj și trimiterea board-ului la culcare.
connectToWifi ();
În cazul în care vă întrebați unde se potrivește, ar trebui să arate astfel:
În partea de sus a schiței, înlocuiți-o ssid și parola variabilele cu acreditările dvs. Wi-Fi. Salvați schița și încărcați-o în tablă.
Acum când boot-urile de pe placă vor încerca să se conecteze la rețeaua Wi-Fi, înainte de a reveni la funcția de configurare. Acum, permiteți configurarea integrării IFTTT.
Pasul 6: Configurarea integrării IFTTT
IFTTT permite integrarea cu o gamă largă de servicii web. Am folosit-o în tutorialul nostru cu LED-uri pentru PC-uri Wi-Fi pentru a trimite o alertă ori de câte ori este primit un nou e-mail. Astăzi o vom folosi pentru a trimite un tweet la apăsarea unui buton.
Navigați la Appletele mele și selectați Applet nou
Click pe +acest și conectați-vă la Webhooks. Selectați “Primiți o solicitare web” și numele evenimentului. Nu te complica! Notați numele evenimentului, va trebui să îl adăugați mai târziu în codul dvs. NodeMCU. Clic “Creați declanșator”.
Acum selectați +acea. Căutați Stare de nervozitate serviciu și conectați-vă la el - va trebui să-l autorizați să posteze pe contul dvs. Twitter. Selectați “Postați un tweet” și alegeți mesajul.
Următorul ecran vă va cere să examinați aplicația. Faceți clic pe terminați. Asta e!
Pasul 7: Adăugarea de acreditări IFTTT la cod
Înapoi în ID-ul Arduino va trebui să adăugați cheia API IFTTT și numele evenimentului la variabilele definite. Pentru a găsi cheia API, navigați la Appletele mele și selectați Webhooks sub Servicii tab. Selectați Documentație pentru a accesa cheia.
Copiați cheia și numele evenimentului în codul dvs., înlocuindu-i numele temporare configurate pentru acestea.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Notă, virgulele inversate trebuie să rămână, înlocuiesc numai textul.
Între apelarea connectToWifi () și trimiterea plăcii la culcare, creați o instanță a obiectului bibliotecii IFTTTWebhook. LED-ul semnalează încheierea sarcinii înainte de a începe somnul profund.
// doar conectat la Wi-Fi IFTTTWebhook hook (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); întârziere (200); digitalWrite (ledPin, LOW); // trimite acum bord pentru a dormi
Apelarea declanșatorului pe cârlig obiect incorecte din applet-ul IFTTT și ar trebui să postați în contul dvs. Twitter. Salvați schița și încărcați-o. Acum ar trebui să aveți un buton de tweeting complet funcțional.
Dacă nu pare să funcționeze, verificați cu atenție codul și datele de identificare pentru greșeli. Dacă într-adevăr rămâneți blocat, obțineți codul complet de mai sus și comparați-l cu cel al dvs..
Terminat! Cum poți să-l îmbunătățești mai departe?
Aceasta este o versiune de bază a butonului Wi-Fi, dar există multe modalități de îmbunătățire a acestuia. Pentru simplitate, conexiunea USB este utilizată aici pentru alimentarea cu energie electrică. O baterie ar face-o în întregime mobilă, iar un caz care ține circuitul ar fi proiectul perfect de imprimare 3D începător.
În ciuda folosirii somnului profund, puteți găsi o baterie care se va epuiza destul de repede. Există multe sfaturi de economisire a energiei Arduino care ajută la aceste tipuri de proiecte. În timp ce este mult mai dificil decât acest tutorial, dacă ați făcut din propria dvs. arduino cu putere conștientă de la zero, un buton Wi-Fi alimentat de baterii ar putea dura luni!
Acest proiect ar fi perfect pentru o telecomandă pentru aplicații inteligente de acasă. Există deja o cantitate considerabilă de aplicații de automatizare a locuințelor 10 din cele mai bune rețete IFTTT pentru Smart Home Automation 10 dintre cele mai bune rețete IFTTT pentru Smart Home Automation Retetele potrivite IFTTT pentru locuința inteligentă vă pot economisi timp, efort și energie. Iată zece dintre preferatele noastre pentru a începe. Citiți mai multe disponibile pe IFTTT. Odată ce obțineți elementele de bază, puteți utiliza aproape orice senzor sau comutator pentru a declanșa practic orice serviciu pe care îl puteți imagina.
Credit de imagine: Vadmary / Depositphotos
Explorați mai multe despre: Arduino, DIY Project Tutorials.