Cum să vă creați propriul buton conectat la Wi-Fi cu ESP8266

Cum să vă creați propriul buton conectat la Wi-Fi cu ESP8266

Internetul obiectelor are un vast potențial DIY. Cu suficient know-how și câteva componente ieftine, ați putea construi un sistem complex de dispozitive conectate.





Uneori, însă, vrei ceva simplu. Fără clopote sau fluiere, doar un buton care îndeplinește o singură sarcină. S-ar putea să fiți deja familiarizați cu așa ceva dacă ați folosit vreodată un buton Amazon Dash pentru a reordona articolele de uz casnic de zi cu zi.





Astăzi vom crea un buton activat Wi-Fi folosind un NodeMCU și îl vom programa pentru a utiliza IFTTT pentru a face ... ei bine, orice! Instrucțiuni scrise în urma videoclipului, dacă preferați.





De ce veți avea nevoie

Vei avea nevoie:

  • 1 x placa NodeMCU (ESP8266), disponibilă pentru 2-3 USD pe AliExpress
  • 1 x Buton
  • 1 x LED (opțional)
  • 1 rezistor de 220 Ohm (opțional)
  • Cablu și fire de conectare
  • Micro USB pentru programare
  • Computer cu Arduino IDE instalat

În afară de NodeMCU, ar trebui să puteți găsi majoritatea acestor piese în orice kit de pornire Arduino. Acest tutorial va presupune că utilizați LED-ul și rezistorul opțional, dar nu sunt esențiale.



Pasul 1: Configurarea circuitului

Configurarea hardware-ului este foarte simplă pentru acest proiect. Configurați-vă placa conform acestei diagrame.

Sârma mov se atașează pinul D0 într-o parte a butonului. Firul verde conectează cealaltă parte a butonului la PIN RST . Firul albastru curge de la pinul D1 la rezistor și LED. Piciorul negativ al LED-ului se atașează la PIN GND a NodeMCU.





Când panoul de verificare este configurat, ar trebui să arate cam așa:

controlerul cu fir Xbox nu funcționează

Dacă vă întrebați cum am condus LED-ul meu la pinul de la sol folosind doar acele mici bucăți de cablu, rapidul nostru curs de prăbușire ar trebui să ajute la clarificare! Verificați configurarea și atașați NodeMCU la computer prin USB.





Pasul 2: Configurarea IDE

Înainte de a continua cu codificarea, trebuie să faceți câteva pregătiri. Dacă nu ați făcut-o deja, configurați IDE-ul Arduino pentru a vă recunoaște placa NodeMCU. Puteți să-l 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.

Pentru acest proiect sunt necesare două biblioteci. Navigheaza catre Schiță> Includeți bibliotecă> Gestionați bibliotecile . Caută ESP8266WIFI de Ivan Grokhotkov și instalează-l. Această bibliotecă este scrisă pentru a face conexiuni Wi-Fi cu placa NodeMCU.

Următoarea căutare a IFTTTWebhook de John Romkey și instalați cea mai recentă versiune. Această bibliotecă este concepută pentru a simplifica procesul de trimitere a webhook-urilor către IFTTT.

Aceasta este toată pregătirea de care avem nevoie, permite codul!

Cum va funcționa codul

Vom folosi ESP8266WIFI bibliotecă pentru a stabili o conexiune Wi-Fi. The IFTTTWebhooks biblioteca face o cerere către IFTTT --- în acest caz, pentru a posta pe Twitter. Apoi, instruiți placa NodeMCU să doarmă când nu este utilizată pentru a economisi energie.

Când butonul este apăsat, acesta va lega fișierul D0 și RST pini. Aceasta resetează placa și procesul se întâmplă din nou.

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 urmați Ghid pentru începători Arduino .

Acest tutorial trece prin codul în bucăți pentru a ajuta la înțelegere. Dacă doriți să ajungeți direct la afaceri, puteți găsi cod complet la Pastebin . Rețineți că va trebui în continuare să completați acreditările Wi-Fi și IFTTT în acest cod pentru a funcționa!

Pasul 3: Testarea somnului profund

Pentru început, vom crea un test simplu pentru a arăta cum funcționează somnul profund. Deschideți o nouă schiță în IDE Arduino. Introduceți următoarele două bucăți de cod.

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

Aici, includem bibliotecile noastre, împreună cu definirea câtorva variabile de care vom avea nevoie în schița noastră. Veți observa că ledPin și wakePin sunt numerotate diferit aici comparativ cu diagrama Fritzing de mai sus. NodeMCU are un pinout diferit de plăcile Arduino. Totuși, aceasta nu este o problemă, datorită acestei diagrame utile:

Acum creați o funcție de configurare:

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

Aici, ne configurăm portul serial și folosim o buclă de timp pentru a aștepta până începe. Deoarece acest cod se va declanșa după apăsarea butonului de resetare, imprimăm „Buton apăsat” la monitorul serial. Apoi, îi spunem NodeMCU să intre în somn profund până când butonul conectează wakePin la RST pinul este apăsat.

În cele din urmă, pentru testare, adăugați acest lucru la buclă() metodă:

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

De obicei, schițele Arduino rulează funcția de buclă continuu după configurare. Deoarece trimitem placa în repaus înainte de finalizarea configurării, bucla nu rulează niciodată.

Salvați schița și încărcați-o pe tablă. Deschideți monitorul serial și ar trebui să vedeți „Butonul apăsat”. De fiecare dată când butonul se declanșează, placa se resetează și mesajul se imprimă din nou. Functioneaza!

O notă despre monitorul serial

Este posibil să fi observat câteva caractere aiurea în monitorul serial în timpul unor proiecte. Acest lucru se datorează de obicei lipsei de setare a monitorului serial la aceeași rată de transmisie ca Serial.begin (XXXX) rată.

Multe ghiduri sugerează pornirea conexiunii seriale la o rată de baud de 115200 pentru un proiect ca acesta. Am încercat multe combinații și toate aveau diferite grade de gâlbâială înainte și după mesaje în serie. Potrivit diferitelor postări de pe forum, acest lucru ar putea fi cauzat de o problemă de compatibilitate a plăcii sau a software-ului. Deoarece nu afectează prea rău proiectul, aleg să mă prefac că nu se întâmplă.

cum să spuneți ce tip de placă de bază aveți

Dacă aveți probleme cu monitorul serial, încercați diferite rate de transmisie și vedeți care 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('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');
}
}

Această metodă încearcă să se conecteze la rețeaua dvs. 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 se numește niciodată. Adăugați un apel la funcția de configurare între mesajul „Buton apăsat” și trimiterea plăcii în repaus.

connectToWifi();

În cazul în care vă întrebați unde se potrivește acest lucru, ar trebui să arate astfel:

În partea de sus a schiței înlocuiți ssid și parola variabile cu acreditările dvs. Wi-Fi. Salvați schița și încărcați pe tablă.

Acum, când placa pornește, va încerca să se conecteze la rețeaua dvs. Wi-Fi, înainte de a reveni la funcția de configurare. Acum, să configurăm integrarea IFTTT.

Pasul 6: Configurarea integrării IFTTT

IFTTT permite integrarea cu o gamă largă de servicii web. L-am folosit în tutorialul cu LED-uri Wi-Fi PC turn pentru a trimite o alertă ori de câte ori este primit un nou e-mail. Astăzi îl vom folosi pentru a trimite un tweet la apăsarea unui buton.

Navigați la Appletele mele și selectați Applet nou

Click pe + asta și conectați-vă la Webhooks . Selectați „Primiți o solicitare web” și denumiți-vă evenimentul. Nu te complica ! Notați numele evenimentului, va trebui să îl adăugați mai târziu la codul dvs. NodeMCU. Clic „Creați declanșatorul” .

Acum selectați + asta . Căutați Stare de nervozitate serviciului și conectați-vă la acesta --- va trebui să îl autorizați să posteze în contul dvs. Twitter. Selectați „Postează un tweet” și alegeți mesajul.

Următorul ecran vă va cere să revizuiți applet-ul. Faceți clic pe Terminare. Asta e!

Pasul 7: Adăugarea acreditării IFTTT la cod

Înapoi în IDE-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 filă. Selectați Documentație pentru a vă accesa cheia.

Copiați cheia și numele evenimentului în codul dvs., înlocuind numele temporare configurate pentru acestea.

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

Rețineți, virgulele inversate trebuie să rămână, doar să înlocuiască textul.

Între apelul connectToWifi () și trimitând placa în repaus, creați o instanță a obiectului de bibliotecă IFTTTWebhook. LED-ul semnalează finalizarea sarcinii înainte ca somnul profund să înceapă din nou.

îți poți vedea abonații pe YouTube
//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

Declanșator de apel pe cârlig obiectul declanșează applet-ul IFTTT și ar trebui să fie postat î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 acreditările pentru a găsi greșeli. Dacă într-adevăr rămâneți blocat, obțineți codul complet de sus și comparați-l cu al dvs.

Terminat! Cum ați putea să o îmbunătățiți în continuare?

Aceasta este o versiune de bază a unui buton Wi-Fi, dar există mai multe moduri în care ar putea fi îmbunătățit. Pentru simplitate, conexiunea USB este utilizată aici pentru alimentare. O baterie ar face-o complet mobilă, iar o carcasă care ține circuitul ar fi proiectul perfect de imprimare 3D pentru începători.

În ciuda utilizării somnului profund, este posibil să descoperiți că o baterie se va epuiza destul de repede. Există multe Sfaturi pentru economisirea energiei Arduino care ajută la acest tip de proiecte. Deși este mai dificil decât acest tutorial, dacă ți-ai creat propriul Arduino conștient de energie de la zero, un buton Wi-Fi alimentat de la baterie ar putea dura câteva luni!

Acest proiect ar fi perfectul pentru o telecomandă pentru aplicații inteligente de acasă. Există deja o cantitate considerabilă de applet-uri de automatizare pentru casă disponibil pe IFTTT. Odată ce ați descărcat elementele de bază, puteți utiliza aproape orice senzor sau comutator pentru a declanșa practic orice serviciu vă puteți imagina.

Credit de imagine: Vadmary / Depositphotos

Acțiune Acțiune Tweet E-mail 6 alternative sonore: cele mai bune aplicații gratuite sau ieftine pentru cărți audio

Dacă nu vă place să plătiți pentru cărți audio, iată câteva aplicații grozave care vă permit să le ascultați gratuit și legal.

Citiți în continuare
Subiecte asemănătoare
  • DIY
  • Arduino
  • Tutoriale de proiect DIY
Despre autor Ian Buckley(216 articole publicate)

Ian Buckley este un jurnalist independent, muzician, interpret și producător video care locuiește în Berlin, Germania. Când nu scrie sau pe scenă, se ocupă de electronice sau coduri DIY în speranța de a deveni un om de știință nebun.

Mai multe de la Ian Buckley

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona
Categorie Diy