Publicitate
Wi-Fi este un kit esențial pentru orice proiecte de bricolaj pentru Internet of Things (IoT), dar Arduino-ul nostru preferat nu vine cu Wi-Fi, iar adăugarea într-un scut Wi-Fi poate aduce costul total la aproximativ 40 USD. Ce se întâmplă dacă ți-aș spune că există o placă dev-compatibilă cu Arduino, cu Wi-Fi încorporat pentru mai puțin de 10 USD? Ei bine, există.
Faceți cunoștință cu Arduino Killer: ESP8266. Era doar o chestiune de timp înainte ca coroana să fie furată din capul strălucitor al dragului nostru consiliu de dezvoltare Arduino. Este posibil să te îndrăgostești de o placă de circuit?
Numele captivante deoparte, ESP8266 (cunoscut și sub denumirea de NodeMCU) a fost inițial comercializat ca un accesoriu Wi-Fi cu costuri reduse pentru tablourile Arduino, până când comunitatea de hackeri și-a dat seama că îl puteți elimina pe Arduino din ecuație în întregime.
În mai puțin de un an, ESP8266 a cunoscut o 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 în picioare și să luați notă.
Cumpără unul acum, apoi urmați împreună cu acest ghid pentru a începe programarea ESP8266 - totul din interiorul IDE familiar Arduino.Bineînțeles, nu vă limitați să folosiți IDE Arduino - sunt compatibili și cu Lua (care arată ca un Python slimmed în jos pentru mine ochi novici), dar din moment ce abordăm acest lucru din perspectiva celor care au învățat despre Arduino, tocmai ceea ce acoperim în mod exclusiv azi.
Există destul de multe modele de ESP8266 în prezent, dar o să merg mai departe și o să vă recomand acest lucru: ESP-12E (de asemenea, cunoscut sub numele de NodeMCU 1.0, sau este cel mai nou fratele NodeMCU 2.0).
Este puțin mai scump decât ceilalți (6,50 USD comparativ cu 4 $!), Dar include șoferul necesar pentru programarea cipului și are un regulator de alimentare încorporat, precum și o mulțime de pini IO. Este acceptat pe scară largă și nu are nevoie de nimic, în afară de o conexiune USB pentru programare sau alimentare, deci este cel mai ușor de utilizat. Dacă cumpărați orice alt tip de placă ESP8266, este posibil să aveți nevoie de un regulator separat de 3,3 v și de o conexiune FTDI adecvată pentru programare.
Noțiuni introductive cu ESP8266-12E și Arduino
Primul, instalați driverele de serie pentru acest consiliu. Este posibil să aveți nevoie dezactivează semnarea KEXT dacă executați El Capitan din cauza noilor sisteme de securitate.
În continuare, trebuie să activăm 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 spune Adrese URL adiționale ale managerului de bord:
Apăsați OK, apoi deschideți butonul Directorul de bord din Instrumente -> placă meniu, căutați esp8266 și instalați platforma. Acum ar trebui să vedeți o alegere pentru NodeMCU 1.0.
Lăsați procesorul și viteza de încărcare așa cum este și selectați portul serial instalat nou. Pe Mac, aceasta apare ca cu. SLAB_USBtoUART.
Ca prim program, aș sugera scanerul Wi-Fi simplu - îl găsiți de la Fișier -> Exemple -> ESP8266WiFi -> WifiScan. Rețineți că este destul de lent încărcarea, dar în cele din urmă va spune „încărcarea terminată” și la acel moment (nu înainte sau veți sparge procesul de încărcare), puteți deschide monitorul serial. Ar trebui să vezi ceva similar cu acesta:
Succes! Acum, încercăm să ne conectăm la unul.
Iată un cod barebones absolut simplu pentru conectarea la o rețea Wi-Fi. Nu face altceva decât să vă conectați, dar puteți adăuga prea târziu. Nu uitați să schimbați YOUR_SSID și YOUR_PASSWORD în detaliile dvs. Wi-Fi. Încărcați, deschideți consola Serial și ar trebui să o vedeți conectând.
#include const char * ssid = "YOUR_SSID"; const char * parola = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Conectare la"); Serial.println (ssid); WiFi.begin (ssid, parolă); while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ( ""); } Serial.println (""); Serial.println („WiFi conectat”); Serial.println ("Adresa IP:"); Serial.println (WiFi.localIP ()); } bucla void () {}
Nu este minunat cât de ridicol de simplu a fost?
Înainte de a continua, iată diagrama de precizare - ar putea fi util mai târziu. Rețineți că numerele de pin la care se face referire în cod sunt numerele GPIO, nu D0-16 probabil scrise pe PCB-ul dvs. de bord. Dacă nu vă dați seama de ce nu funcționează un senzor, probabil că ați amestecat numerele de pin.
Senzor rapid inteligent pentru casă 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 folosind protocolul MQTT prin intermediul rețelei Wi-Fi, în cazul meu către un sistem de automatizare casnică OpenHAB DIY (dacă nu, poate doriți să citiți al nostru ghid pentru incepatori pentru a deschide OpenHAB și a rula pe un Raspberry Pi Noțiuni introductive cu OpenHAB Home Automation pe Raspberry PiOpenHAB este o platformă de automatizare casă matură, open source, care rulează pe o varietate de hardware și este protocol agnostic, ceea ce înseamnă că se poate conecta la aproape orice hardware de automatizare de pe piață azi. Citeste mai mult , și partea 2, care se ocupă în mod specific instalarea unui server MQTT Ghid pentru începători OpenHAB Partea 2: ZWave, MQTT, Reguli și GraficeOpenHAB, software-ul de automatizare casă open source, depășește cu mult capacitățile celorlalte sisteme de automatizare casnică de pe piață - dar nu este ușor de configurat. De fapt, poate fi absolut frustrant. Citeste mai mult ).
Pe partea de cablare, conectați senzorul DHT la GND, 3.3v, și ~ D4 (sau GPIO 2). Aceasta este tot ce avem nevoie pentru moment.
Descarca aceste biblioteci MQTT și DHT. Chiar dacă le ai deja, descărcați-le oricum, copiați copiile, și suprascrieți-le cu acestea. Cea mai recentă bibliotecă DHT11 de la Adafruit utilizează un algoritm automat pentru a determina viteza cu care datele sunt citite de la senzor, dar este buggy pe ESP8266 și 90% din timp au rezultat eșuat lecturi.
Cu versiunea veche 1.0 a bibliotecii pe care am inclus-o în descărcare, puteți modifica manual sincronizarea: 11 funcționează cel mai bine pentru aceste plăci ESP2866. De asemenea, am trecut prin multe exemplare ale bibliotecii MQTT încercând să găsesc unul bun suna inapoi funcție, în final aterizarea pe cea inclusă. Va trebui să reporniți ID-ul Arduino după înlocuirea acestora.
Iată cod complet pentru proiect. În partea de sus sunt toate variabilele pe care trebuie să le schimbați, inclusiv detaliile Wi-Fi, serverul MQTT (se poate utiliza o adresă URL în schimb, dacă utilizați un server cloud, deși nu există autentificare în loc) și canalele pentru a publica date.
Iată cum funcționează și câteva note:
- Mai întâi ne conectăm la Wi-Fi, apoi la serverul MQTT, apoi începem principala buclă().
- În buclă, poluăm senzorul DHT la fiecare 60 de secunde și publicăm lecturi pe canalele MQTT relevante. Din nou, dacă găsiți cea mai mare parte a rezultatelor citirilor într-un mesaj de eșec, aveți versiunea greșită a bibliotecii DHT - downgrade la v1.0.
- client.loop () trece controlul la biblioteca MQTT, permițându-i să reacționeze la mesajele primite.
- Există un mesaj receptionat() funcție în care gestionăm mesajele primite - faceți doar o declarație simplă dacă comparați sarcina utilă cu mesajul pe care îl așteptați. Puteți utiliza acest lucru pentru a activa un releu, de exemplu.
- După ce au rulat acestea câteva zile, am descoperit că se vor opri la întâmplare - presupun că este un fel de scurgere de memorie, dar dat Nu am abilitatea de codare pentru a face față și s-ar putea să fie cu bibliotecile de bază, am optat pentru o simplă resetare soft fiecare zi. Exact la o zi după ce nodurile senzorilor sunt activate pentru prima dată, se vor reporni.
- Când alimentați aceste module DHT11 ieftine de la 3.3v, valorile umidității sunt mult mai mici decât ar trebui. Am rezolvat acest lucru printr-o simplă înmulțire și am calibrat pe un senzor comercial. V-am sfătui să vă confirmați și împotriva propriei surse cunoscute, înainte de a vă baza pe lecturi. Alternativ, alimentează-le 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 decurs bine, acum ar trebui să primiți citire de senzori în brokerul dvs. MQTT și puteți continua conectarea acestora la OpenHAB așa cum este detaliat în partea 2 din ghidul nostru pentru începători Ghid pentru începători OpenHAB Partea 2: ZWave, MQTT, Reguli și GraficeOpenHAB, software-ul de automatizare casă open source, depășește cu mult capacitățile celorlalte sisteme de automatizare casnică de pe piață - dar nu este ușor de configurat. De fapt, poate fi absolut frustrant. Citeste mai mult , unde v-am arătat, de asemenea, cum să graficați datele.
Adio Arduino, te-am iubit așa. Pur și simplu glumesc: nu oriunde în casa mea chiar puteți primi Wi-Fi, așa că pentru acele locuri, voi avea totuși nevoie de o rețea de plasă cu receptori Arduino și RF.
Pentru un proiect distractiv, consultați cum se face un buton Wi-Fi cu ESP8266 Cum să vă faceți propriul buton conectat la Wi-Fi cu ESP8266În acest tutorial, veți învăța cum să creați un buton activat Wi-Fi folosind NodeMCU și IFTTT. Citeste mai mult .
Dar ce vei face cu ESP8266? Aveți vreun proiect care utilizează ESP8266 pe care doriți să îl vedeți scris la MakeUseOf? Spuneți-ne în comentarii!
James are licență în inteligență artificială și este certificat CompTIA A + și Network +. Este dezvoltatorul principal al MakeUseOf și își petrece timpul liber jucând VR paintball și boardgames. Construiește calculatoare de când era mic.