Internetul este plin de lucruri care au un mare potential de bricolaj. Cu suficient know-how si cateva componente ieftine, puteti construi un sistem complex de conectate pentru dispozitive.
Uneori, totusi, vrei ceva simplu. Fara clopotei sau fluiere, doar un buton care indeplineste o singura sarcina. Este posibil sa fiti deja familiarizati cu asa ceva daca ati folosit vreodata un buton Amazon Dash pentru a reordona articolele de uz casnic de zi cu zi. Astazi vom crea un buton activat pentru Wi-Fi folosind un NodeMCU.
Ce vei avea nevoie
O placa NodeMCU (ESP8266), disponibila pentru 2-3 USD pe AliExpress. 1 x buton Un LED (optional). 1 x rezistor de 220 Ohm (optional). Placa de conectare si cabluri de conectare. Micro USB pentru programare. Computer cu Arduino IDE instalat.
Pe langa NodeMCU, ar trebui sa puteti gasi majoritatea acestor piese in orice kit de pornire Arduino. Acest tutorial va presupune ca utilizati LED-ul si rezistenta optionale, dar acestea nu sunt esentiale.
Pasul 1: Configurati circuitul
Configurarea hardware-ului este foarte simpla pentru acest proiect. Configurati-va placa conform acestei diagrame.
Firul violet conecteaza pinul D0 la o parte a butonului. Firul verde conecteaza cealalta parte a butonului la pinul RST. Firul albastru merge de la pinul D1 la rezistor si LED. Piciorul negativ al LED-ului se conecteaza la pinul GND al NodeMCU.
Verificati setarile si conectati NodeMCU la computer prin USB.
Pasul 2: Configurarea IDE-ului
Inainte de a continua cu codificarea, trebuie sa faceti cateva pregatiri. Daca nu ati facut-o deja, configurati Arduino IDE pentru a va recunoaste placa NodeMCU. Il puteti adauga la lista dvs. de panouri prin Fisier > Preferinte.
Pentru acest proiect sunt necesare doua biblioteci. Navigati la Schita > Includeti biblioteca > Gestionati bibliotecile. Cautati ESP8266WIFI de Ivan Grokhotkov si instalati-l. Aceasta biblioteca este scrisa pentru a realiza conexiuni Wi-Fi la placa NodeMCU.
In continuare, cautati IFTTTWebhook de John Romkey si instalati cea mai recenta versiune. Aceasta biblioteca este conceputa pentru a simplifica procesul de trimitere a webhook-urilor catre IFTTT.
Cum va functiona codul?
Vom folosi biblioteca ESP8266WIFI pentru a stabili o conexiune Wi-Fi. Biblioteca IFTTTWebhooks solicita IFTTT, in acest caz, sa posteze pe Twitter. Apoi solicita placii NodeMCU sa stea in stare de repaus atunci cand nu este utilizata pentru a economisi energie.
Cand butonul este apasat, acesta va lega pinii D0 si RST. Aceasta reseteaza placa si procesul are loc din nou.
Pasul 3: Incearca Deep Sleep
Pentru a incepe, vom crea un test simplu pentru a arata cum functioneaza somnul profund. Deschideti o noua schita in Arduino IDE. Introduceti urmatoarele doua fragmente de cod.
Aici, includem bibliotecile noastre, impreuna cu definitia unor variabile de care vom avea nevoie in schita noastra. Veti observa ca valorile ledPin si wakePin sunt numerotate diferit aici in comparatie cu diagrama Fritzing de mai sus. NodeMCU are un pinout diferit pentru placile Arduino. Cu toate acestea, aceasta nu este o problema datorita acestei diagrame utile:
Creati o functie de configurare:
Aici, configuram portul nostru serial si folosim o bucla while pentru a astepta pana cand incepe. Deoarece acest cod se va declansa dupa ce butonul de resetare este apasat, imprimam „Button Apasat” pe monitorul serial. Apoi, ii spunem lui NodeMCU sa intre in modul de repaus profund pana cand este apasat butonul care conecteaza piciorul wakePin la pinul RST.
De obicei, schitele Arduino ruleaza functia de bucla in mod continuu dupa configurare. Deoarece am pus placa in somn inainte de finalizarea instalarii, bucla nu ruleaza niciodata.
Salvati schita si incarcati-o pe tabla alba. Deschideti monitorul serial si veti vedea „Buton apasat”. De fiecare data cand butonul este declansat, placa se reseteaza si mesajul este imprimat din nou. Lucrari!
S-ar putea sa fi observat cateva personaje prostii pe monitorul serial in timpul unor proiecte. De obicei, acest lucru se datoreaza faptului ca monitorul serial nu este setat la aceeasi viteza in baud ca rata Serial.begin (XXXX).
Multe ghiduri sugereaza pornirea conexiunii seriale la o viteza de transmisie de 115200 pentru un proiect ca acesta. Am incercat multe combinatii si toate au avut diferite grade de farfurie inainte si dupa mesajele in serie. Potrivit diverselor postari pe forum, acest lucru s-ar putea datora unei probleme de compatibilitate cu placa sau software-ul. Deoarece nu afecteaza prea mult proiectul, aleg sa ma prefac ca nu se intampla.
Daca intampinati probleme cu monitorul serial, incercati diferite rate de transmisie si vedeti ce functioneaza cel mai bine pentru dvs.
Pasul 4: Conectati-va la Wi-Fi
Acum creati o functie pentru a va conecta la reteaua dvs. Wi-Fi.
Aceasta metoda incearca sa se conecteze la retea de zece ori cu o secunda intre ele. Succesul sau esecul conexiunii este imprimat pe monitorul serial.
Pasul 5: Apelati metoda de conectare
In acest moment, connectToWifi nu este niciodata apelat. Adaugati un apel la functia de configurare intre mesajul „Buton apasat” si trimiteti placa in somn.
In partea de sus a schitei, inlocuiti variabilele ssid si parola cu acreditarile dvs. Wi-Fi. Salvati schita si incarcati-o pe tabla alba.
Acum, cand placa porneste, va incerca sa se conecteze la reteaua Wi-Fi, inainte de a reveni la functia de configurare. Acum, sa setam integrarea IFTTT.
Pasul 6: Configurarea integrarii IFTTT
IFTTT permite integrarea cu o gama larga de servicii web. Il folosim in tutorialul nostru Wi-Fi Computer Tower LED pentru a trimite o alerta de fiecare data cand este primit un nou e-mail. Astazi il vom folosi pentru a trimite un tweet prin apasarea unui buton.
Navigati la pagina Appletele mele si selectati Applet nou.
Faceti clic pe + acesta si conectati-va la Webhooks. Selecteaza „Primeste o solicitare web” si denumeste evenimentul tau. Nu te complica! Notati numele evenimentului, va trebui sa-l adaugati la codul NodeMCU mai tarziu. Faceti clic pe „Creati declansator”.
Acum selectati + asta. Gasiti serviciul Twitter si conectati-va; trebuie sa autorizati ca acesta sa fie publicat pe contul dvs. de Twitter. Selecteaza „Posteaza un Tweet” si alege mesajul tau.
Urmatorul ecran va va cere sa revizuiti applet-ul. Faceti clic pe Terminare. Asta e!
Pasul 7: Adaugati acreditarile IFTTT la cod
Inapoi in Arduino IDE, va trebui sa adaugati cheia API-ului IFTTT si numele evenimentului la variabilele definite. Pentru a gasi cheia API, accesati Aplicatiile mele si selectati Webhooks din fila Servicii. Selectati Documentatie pentru a va accesa cheia.
Copiati cheia si numele evenimentului in codul dvs., inlocuind orice nume temporar setate pentru ele.
Retineti ca backtick-urile trebuie sa ramana, ele doar inlocuiesc textul.
Intre apelarea connectToWifi() si trimiterea placii in somn. Creeaza o instanta a obiectului biblioteca IFTTTWebhook. LED-ul semnalizeaza finalizarea sarcinii inainte de a incepe din nou somnul profund.
Declansatorul de apel de pe obiectul carlig se declanseaza in afara applet-ului IFTTT si ar trebui sa fie postat in contul tau Twitter. Salvati schita si incarcati-o. Acum ar trebui sa aveti un buton Twitter complet functional.
Daca nu pare sa functioneze, verificati cu atentie codul si acreditarile pentru posibile erori. Daca intr-adevar ramaneti blocat, obtineti codul complet de mai sus si comparati-l cu al dvs.
Terminat! Cum ai putea sa o faci si mai buna?
Aceasta este o versiune de baza a unui buton Wi-Fi, dar exista multe moduri in care poate fi imbunatatit. Pentru simplitate, aici se foloseste conexiunea USB pentru alimentare. O baterie l-ar face pe deplin mobil, iar o carcasa care contine circuitele ar fi proiectul perfect de imprimare 3D pentru incepatori.
In ciuda faptului ca se utilizeaza somnul profund, bateria se poate descarca destul de repede. Exista multe sfaturi pentru economisirea energiei Arduino care ajuta in aceste tipuri de proiecte. Desi este mai dificil decat acest tutorial, daca ti-ai construit propriul Arduino constient de energie de la zero, un buton Wi-Fi alimentat de baterie ar putea dura luni de zile!
Acest proiect ar fi perfect pentru o telecomanda pentru aplicatii smart home. Exista deja un numar considerabil de aplicatii de automatizare a locuintei disponibile pe IFTTT. Odata ce aveti notiunile de baza, puteti utiliza aproape orice senzor sau comutator pentru a activa aproape orice serviciu pe care vi-l puteti imagina.