Faceți cunoștință cu ucigașul Arduino ESP8266

Faceți cunoștință cu ucigașul Arduino ESP8266 / DIY

Wi-Fi este un element esențial al kitului pentru proiectele DIY de pe Internet of Things (IoT), dar arduinul nostru preferat nu vine cu Wi-Fi, iar adăugarea unui scut Wi-Fi poate aduce costul total la aproximativ 40 de dolari. Ce-ar fi dacă ți-aș spune că există o placă de disc compatibilă cu Arduino cu built-in Wi-Fi pentru mai puțin de 10 $? Ei bine, există.

Faceți cunoștință cu ucigașul Arduino: ESP8266. A fost doar o chestiune de timp înainte ca coroana să fie furată de capul strălucitor al sculei noastre de dezvoltare arduino. Este posibil sa te indragostesti de o placa de circuit?

Numele de salvare deoparte, ESP8266 (cunoscut și ca NodeMCU) a fost inițial comercializat ca un add-on low-cost Wi-Fi pentru plăcile Arduino, până când comunitatea hackerilor a dat seama că ai putea tăia Arduino din ecuație.

În mai puțin de un an, ESP8266 a urcat în popularitate și acum este atât de bine susținut și dezvoltat încât, dacă utilizați în prezent Arduino, trebuie să vă ridicați și să luați notă. Cumpărați unul acum, apoi urmați împreună cu acest ghid pentru a începe să vă programați ESP8266 - toate din cadrul ID-ului Arduino familiar.

Nu vă limitați la folosirea IDE-ului Arduino, desigur - sunt compatibile și cu Lua (care arată ca un Python subțire pentru ochii mei novici), dar din moment ce abordăm acest lucru din perspectiva celor care am învățat pe Arduino, asta vom acoperi exclusiv astăzi.

Există destul de multe modele de ESP8266 în jurul valorii de acum, dar am de gând să meargă mai departe și să recomande acest lucru: ESP-12E (de asemenea, cunoscut sub numele de NodeMCU 1.0, sau este cel mai nou sibling NodeMCU 2.0).

Este ceva mai scump decât ceilalți (6.50 dolari, comparativ cu 4 dolari!), Dar include driverul serial necesar programării cipului, are un regulator de putere încorporat, precum și o mulțime de IO-uri. Este susținut pe scară largă și într-adevăr nu are nevoie de nimic în afară de o conexiune USB pentru programare sau putere, deci este mai ușor să lucrați cu. Dacă cumpărați orice alt tip de placă ESP8266, este posibil să aveți nevoie de un regulator de putere separat de 3.3V și o conexiune FTDI adecvată pentru programare.

Noțiuni de bază cu ESP8266-12E și Arduino

Mai întâi, instalați driverele seriale pentru această placă. Este posibil să trebuiască să dezactivați semnarea KEXT dacă executați El Capitan din cauza noilor sisteme de securitate.

Apoi, trebuie să activați asistența pentru ESP8266 de la administratorul de bord al IDE Arduino. Deschideți Preferințe și introduceți următoarea adresă URL unde se afișează Adresele URL suplimentare ale Managerului de bord:

Apăsați Ok, apoi deschideți Consiliul de administrație din Instrumente -> Consiliul meniu, căutați esp8266 și instalați platforma. Ar trebui să vedeți acum o alegere pentru NodeMCU 1.0.

Lăsați procesorul și viteza de încărcare ca atare și selectați noul serial serial de instalare. Pe Mac, acesta apare ca cu.SLAB_USBtoUART.

Ca un prim program, aș sugera scanerul Wi-Fi simplu - găsiți-l de la Fișier -> Exemple -> ESP8266WiFi -> WifiScan. Rețineți că este destul de greu să încărcați, dar în cele din urmă se va spune “încărcarea făcută” și la acel moment (nu înainte, sau veți rupe procesul de încărcare), puteți deschide monitorul serial. Ar trebui să vedeți ceva similar cu acesta:


Succes! Acum, să încercăm să ne conectăm la unul.

Iată un cod simplu simplu pentru conectarea la o rețea Wi-Fi. Nu face altceva decât să se conecteze, dar este ceva ce poți adăuga prea târziu. Nu uitați să schimbați YOUR_SSID și YOUR_PASSWORD la detaliile dvs. Wi-Fi. Încărcați, deschideți consola Serial și ar trebui să vedeți că se conectează.

 #include const char * ssid = "YOUR_SSID"; const char * parola = "NUMĂRUL PERSONAL"; WiFiClient wifiClient; void setup () Serial.begin (115200); Serial.print ("Conectarea la"); Serial.println (ssid); WiFi.begin (ssid, parola); în timp ce (WiFi.status ()! = WL_CONNECTED) întârziere (500); Serial.print ( "");  Serial.println (""); Serial.println ("WiFi conectat"); Serial.println ("Adresa IP:"); Serial.println (WiFi.localIP ());  void loop () 

Nu e minunat cât de ridicol de simplu a fost asta?

Înainte de a continua, iată diagrama pinout - ar putea fi utilă mai târziu. Rețineți că numerele de coduri la care se face referire în cod sunt numerele GPIO, nu D0-16, probabil scris pe placa de bord PCB. Dacă absolut, în mod pozitiv nu știți de ce un senzor nu funcționează, probabil că ați amestecat numerele de pin.

Smart Smart Home Sensor cu MQTT și DHT11

Iată un exemplu practic pe care îl puteți folosi imediat pentru a vă monitoriza casa. Vom adăuga un senzor de temperatură și umiditate DHT11, apoi vom raporta valorile utilizând protocolul MQTT în rețeaua Wi-Fi, în cazul meu, la un sistem de automatizare a locuinței OpenHAB DIY (dacă nu, poate doriți să citiți ghidul nostru pentru începători obtinerea OpenHAB in functiune pe o Raspberry Pi Initierea cu OpenHAB Home Automation pe Raspberry Pi Initierea cu OpenHAB Home Automation pe Raspberry Pi OpenHAB este o platforma matura, open source, care ruleaza pe o varietate de hardware si este protocol agnostic, adica se poate conecta la aproape orice hardware de automatizare de acasă de pe piață astăzi.Citește mai mult și partea 2, care se ocupă în special de instalarea unui server MQTT OpenHAB Ghidul începătorului Partea 2: ZWave, MQTT, Reguli și cartografiere OpenHAB Ghidul începătorului Partea 2: ZWave, MQTT, Reguli și Charting OpenHAB, software-ul de acasă open source, depășește cu mult capabilitățile altor sisteme de automatizare a locuințelor de pe piață - dar nu este ușor să vă configurați. act, poate fi frustrant. Citeste mai mult ).

Pe partea cablajului, conectați senzorul DHT la GND, 3.3v, și ~ D4 (sau GPIO 2). Asta e tot ce avem nevoie de acum.

Descărcați aceste biblioteci MQTT și DHT. Chiar dacă le aveți deja, descărcați-le oricum, copiați-vă ceea ce aveți și suprascrieți-le cu acestea. Cea mai recentă bibliotecă DHT11 de la Adafruit folosește un algoritm automat pentru a determina viteza de citire a datelor de la senzor, dar este buggy pe ESP8266 și 90% din timp duce la citiri eșuate.

Cu versiunea veche 1.0 a bibliotecii pe care am inclus-o în descărcare, puteți schimba manual momentul: 11 funcționează cel mai bine pentru aceste panouri ESP2866. De asemenea, am parcurs numeroase copii ale bibliotecii MQTT, încercând să găsesc unul bun suna inapoi funcția, în cele din urmă aterizarea pe cea inclusă. Va trebui să reporniți ID-ul Arduino după înlocuirea acestora.

Iată codul complet al proiectului. În partea de sus sunt toate variabilele pe care trebuie să le schimbați, inclusiv detalii despre Wi-Fi, serverul MQTT (o adresă URL poate fi utilizată în schimb dacă utilizează un server cloud, deși nu există autentificare) și canale pentru publicarea datelor.

Iată cum funcționează și câteva note:

  • Mai întâi ne conectăm la Wi-Fi, apoi pe serverul MQTT, apoi începem principalul buclă().
  • În buclă, analizăm senzorul DHT la fiecare 60 de secunde și publicăm citirile către canalele relevante MQTT. Din nou, dacă găsiți că majoritatea citirilor generează un mesaj de eroare, aveți versiunea greșită a bibliotecii DHT - downgrade la v1.0.
  • client.loop () transmite controlul către biblioteca MQTT, permițându-i să reacționeze la mesajele primite.
  • E a mesaj receptionat() funcția în care gestionăm mesajele primite - trebuie doar să faceți o declarație simplă dacă doriți să comparați încărcătura utilă cu mesajul pe care îl așteptați. Ați putea folosi acest lucru pentru a activa un releu, de exemplu.
  • După ce le-am rupt câteva zile, mi-am dat seama că ar înceta la întâmplare să lucreze - presupun că este un fel de scurgeri de memorie, dar având în vedere că nu am abilitatea de a codifica acest lucru și ar putea fi cu bibliotecile de bază, eu "ați optat pentru o resetare ușoară ușoară în fiecare zi. Exact la o zi după ce nodurile senzorilor sunt activate pentru prima oară, se vor reporni.
  • Când alimentăm aceste module ieftine de la 3.3V, valorile umidității sunt mult mai mici decât ar trebui să fie. Am rezolvat acest lucru cu o multiplicare simpla si am calibrat impotriva unui senzor comercial. Vă sfătuiesc să confirmați și împotriva sursei cunoscute, înainte de a vă baza pe lecturi. Alternativ, le puterea cu 5V - dar trebuie să plasați un schimbător de nivel logic de 5V-3.3V între pinul de date și ESP8266 sau îl veți deteriora.

Dacă totul a mers bine, ar trebui să primiți cititoare de senzori în brokerul dvs. MQTT și puteți continua să le conectați la OpenHAB așa cum este detaliat în partea a 2 a ghidului nostru de începători. Ghidul începătorului OpenHAB Partea 2: ZWave, MQTT, Reguli și cartografiere OpenHAB Beginner's Ghidul Partea 2: ZWave, MQTT, reguli și cartografiere OpenHAB, software-ul pentru automatizarea casei open source, depășește cu mult capabilitățile altor sisteme de automatizare a locuințelor de pe piață - dar nu este ușor de configurat. De fapt, poate fi frustrant. Citiți mai multe, unde vă arăt, de asemenea, cum să scrieți datele.

Adio Arduino, te-am iubit așa. Doar glumesc: nu peste tot in casa mea poate chiar sa aiba Wi-Fi, asa ca pentru acele locuri voi avea nevoie de o retea de retea cu receptoare Arduino si RF.

Pentru un proiect distractiv, verificați cum să faceți un buton Wi-Fi cu ESP8266 Cum să faceți propriul dvs. buton conectat Wi-Fi cu ESP8266 Cum să faceți propriul dvs. buton conectat Wi-Fi cu ESP8266 În acest tutorial, veți afla cum să creați un buton cu funcția Wi-Fi utilizând NodeMCU și IFTTT. Citeste mai mult .

Dar ce vei face cu ESP8266? Toate proiectele care utilizează ESP8266 doriți să vedeți scrise la MakeUseOf? Spuneți-ne în comentariile!

Explorați mai multe despre: Arduino, Electronica, Internetul obiectelor, Smart Sensor.