Oglas

Wi-Fi je bistven pribor za vse projekte naredi sam na internetu (IoT), vendar naš najljubši Arduino ne prihaja z Wi-Fi, če dodate ščit Wi-Fi, pa znaša skupne stroške približno 40 dolarjev. Kaj pa, če bi vam rekel, da obstaja arduino združljiva razvijalna plošča z vgrajenim Wi-Fi-jem za manj kot 10 dolarjev? No, obstaja.

Spoznajte Arduino morilca: ESP8266. Bilo je le vprašanje časa, kdaj je bilo krono ukradeno iz sijoče glave naše drage razvojne plošče Arduino. Ali se je mogoče zaljubiti v vezje?

ESP8266 (znan tudi kot NodeMCU) je bil prvotno na tržišču kot nizkocenovni dodatek Wi-Fi za Arduino plošče, dokler hekerska skupnost ni ugotovila, da lahko Arduino izločiš iz enačbe popolnoma.

V manj kot letu dni je ESP8266 dosegel svojo priljubljenost, zdaj pa je tako dobro podprt in razvit, da se boste, če trenutno uporabljate Arduino, vstali in se seznanili. Kupite ga zdaj, nato sledite tem navodilom, da začnete programirati svoj ESP8266 - vse iz znane Arduino IDE.

Seveda niste omejeni na uporabo Arduino IDE - združljivi so tudi z Lua (kar je videti kot vitki Python v moj novomeške oči), a ker se tega lotevamo z vidika tistih, ki smo se naučili na Arduinu, bomo to pokrivali izključno danes.

instagram viewer

Trenutno je na voljo kar nekaj modelov ESP8266, vendar bom nadaljeval in priporočam tega: ESP-12E (znan tudi kot NodeMCU 1.0, ali pa je to najnovejši brat NodeMCU 2.0).

Je nekoliko dražji od ostalih (6,50 USD v primerjavi s 4 $!), Vendar vključuje serijski gonilnik, potreben za programiranje čipa, in ima vgrajen regulator moči, ter veliko IO zatičev. Je široko podprta in resnično ne potrebuje ničesar, razen povezave USB za programiranje ali napajanje, zato je najlažje delati. Če kupite katero koli drugo ploščo ESP8266, boste morda potrebovali ločen 3,3-voltni regulator moči in ustrezen FTDI priključek za programiranje.

Uvod v uporabo z ESP8266-12E in Arduino

Prvič, namestite serijske gonilnike za ta odbor. Morda boste morali onemogoči KEXT podpisovanje če imate zaradi novih varnostnih sistemov El Capitan.

Nato moramo omogočiti podporo za ESP8266 od upravitelja odbora Arduino IDE. Odprite nastavitve in vnesite naslednji naslov, kjer piše Dodatni URL-ji upravitelja odbora:

URL-ji upravitelja plošče arduino

Pritisnite OK in odprite Upravitelj odborov iz Orodja -> Tabla meni, poiščite esp8266 in namestite platformo. Zdaj bi morali videti izbiro za NodeMCU 1.0.

izberite ploščo

Pustite CPU in naložite hitrost, kakršna je, in izberite novo nameščeno serijsko vrata. V Macu se to zdi kot cu. SLAB_USBtoUART.

Kot prvi program predlagam preprost skener Wi-Fi - poiščite ga Datoteka -> Primeri -> ESP8266WiFi -> WifiScan. Upoštevajte, da je nalaganje precej počasno, vendar bo sčasoma rečeno "opravljeno nalaganje" in na tej točki (ne prej ali pa boste prekinili postopek nalaganja) lahko odprete serijski monitor. Pri tem bi morali videti nekaj podobnega:

Wi-Fi test esp8266
Uspeh! Zdaj pa poskusimo povezati enega.

Tu je popolnoma preprosta koda brezžičnih povezav za povezavo z omrežjem Wi-Fi. To ni nič drugega kot samo povezovanje, ampak je nekaj, kar lahko dodate tudi pozneje. Ne pozabite samo spremeniti YOUR_SSID in YOUR_PASSWORD v svoje podatke o Wi-Fi. Naložite, odprite serijsko konzolo in videli bi, da se povezuje.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; nastavitev ničnosti () {Serial.begin (115200); Serial.print ("Povezava z"); Serijski.println (ssid); WiFi.begin (ssid, geslo); medtem ko (WiFi.status ()! = WL_CONNECTED) {zamik (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi povezan"); Serial.println ("IP naslov:"); Serial.println (WiFi.localIP ()); } void loop () {}

Ali ni super, kako smešno je bilo to preprosto?

Preden nadaljujemo, je tu shema zaključka - morda bo uporabna pozneje. Upoštevajte, da so številke pin iz kode številke GPIO in ne, da je D0-16 verjetno zapisan na plošči vaše plošče. Če absolutno ne morete ugotoviti, zakaj senzor ne deluje, ste verjetno zmešali številke pin.

NodeMCU__v1.0_pinout

Hiter pametni senzor za dom z MQTT in DHT11

Tu je praktičen primer, ki ga lahko uporabite takoj za spremljanje svojega doma. Dodali bomo senzor temperature in vlažnosti DHT11, nato pa vrednosti sporočili s protokolom MQTT prek omrežja Wi-Fi, v mojem primeru do sistema za avtomatizacijo doma OpenHAB DIY (če ni, boste morda želeli prebrati naše začetniki vodnik za pripravo in zagon OpenHAB-a na Raspberry Pi Uvod v OpenHAB domačo avtomatizacijo na Raspberry PiOpenHAB je zrela, odprtokodna platforma za avtomatizacijo doma, ki deluje na različni strojni opremi in je protokol agnostik, kar pomeni, da se lahko poveže s skoraj katero koli strojno opremo za avtomatizacijo doma na trgu danes. Preberi več in 2. del, ki se posebej ukvarja z namestitev strežnika MQTT OpenHAB Vodnik za začetnike 2. del: ZWave, MQTT, Pravila in grafikoniOpenHAB, odprtokodna programska oprema za domačo avtomatizacijo, daleč presega zmogljivosti drugih sistemov za domačo avtomatizacijo na trgu - vendar jih ni enostavno postaviti. V resnici je lahko naravnost frustrirajoče. Preberi več ).

Na strani ožičenja priključite senzor DHT na BND, 3.3v, in ~ D4 (ali GPIO 2). To je vse, kar za zdaj potrebujemo.

Prenesi te knjižnice MQTT in DHT. Tudi če jih že imate, vseeno jih prenesite, varnostno kopirajte vse, kar imate, in jih prepišite. Najnovejša knjižnica DHT11 iz Adafruit uporablja samodejni algoritem za določanje hitrosti, s katero podatki se berejo s senzorja, vendar je ESP8266 hrošč in 90% časa povzroči neuspeh odčitki.

S staro različico 1.0 knjižnice, ki sem jo vključil v prenos, lahko ročno spremenite čas: 11 najbolje deluje na teh ploščah ESP2866. Pregledala sem tudi veliko kopij knjižnice MQTT in poskušala najti enega dobrega poklicati nazaj funkcija, končno pristanek na vključeni. Po zamenjavi teh boste morali znova zagnati Arduino IDE.

Tukaj je popolna koda za projekt. Na vrhu so vse spremenljivke, ki jih morate spremeniti, vključno s podrobnostmi o Wi-Fi-ju, strežnikom MQTT (lahko uporabite URL namesto tega uporabljate strežnik v oblaku, čeprav ni preverjanja pristnosti in kanale za objavo podatkov.

Tukaj je opisano, kako deluje in nekaj opomb:

  • Najprej se povežemo z omrežjem Wi-Fi, nato s strežnikom MQTT, nato začnemo glavni zanka ().
  • V zanki vsakih 60 sekund oprašujemo senzor DHT in objavimo odčitke ustreznim MQTT kanalom. Če spet ugotovite, da večina odčitkov povzroči sporočilo o napaki, imate napačno različico knjižnice DHT - znižajte na v1.0.
  • client.loop () prenaša nadzor nad knjižnico MQTT in mu omogoča, da reagira na dohodna sporočila.
  • Tam je messageReceived () funkcija, kjer obdelujemo dohodna sporočila - naredite preprosto, če izjavo primerjate z bremenom s sporočilom, ki ga pričakujete. To lahko na primer uporabite za aktiviranje releja.
  • Ko sem jih nekaj dni izvajal, sem ugotovil, da bodo naključno nehali delovati - predvidevam, da gre za nekakšno puščanje spomina, vendar glede na to Nimam veščine kodiranja, s katero bi se lahko ukvarjal s tem in morda je to z osnovnimi knjižnicami, odločil sem se za preprosto mehko ponastavitev vsakega dan. Točno dan po tem, ko se vozlišča senzorjev prvič aktivirajo, se bodo znova zagnale.
  • Pri napajanju teh poceni DHT11 modulov od 3,3 V so vrednosti vlage precej nižje, kot bi morale biti. To sem rešil s preprosto množenjem in umerjen s komercialnim senzorjem. Svetujem vam, da potrdite tudi svoj znani vir, preden se zanašate na odčitke. Lahko pa jih napajate s 5 V - vendar med podatkovnim zatičem in ESP8266 morate namestiti 5V-3.3V logični odmik nivoja, ali ga boste poškodovali.

Če bi šlo vse v redu, boste zdaj prejemali odčitke senzorjev v svojem posredniku MQTT in lahko nadaljevali s povezovanjem le-teh v OpenHAB, kot je podrobno opisano v 2. del priročnika za začetnike OpenHAB Vodnik za začetnike 2. del: ZWave, MQTT, Pravila in grafikoniOpenHAB, odprtokodna programska oprema za domačo avtomatizacijo, daleč presega zmogljivosti drugih sistemov za domačo avtomatizacijo na trgu - vendar jih ni enostavno postaviti. V resnici je lahko naravnost frustrirajoče. Preberi več , kjer sem vam tudi pokazal, kako grafično obdelati podatke.

graf vlažnosti iz openhaba

Zbogom Arduino, tako smo te imeli radi. Šalim se: povsod v moji hiši ne morem dobiti niti Wi-Fija, zato bom za ta mesta še vedno potreboval mrežno mrežo z Arduino in RF sprejemniki.

Za zabaven projekt si oglejte kako narediti gumb Wi-Fi z ESP8266 Kako narediti lastno tipko za povezavo Wi-Fi z ESP8266V tej vadnici boste izvedeli, kako ustvariti gumb, ki podpira Wi-Fi, s pomočjo NodeMCU in IFTTT. Preberi več .

Kaj boste naredili z ESP8266? Kakšne projekte, ki uporabljajo ESP8266, bi radi videli, da so napisani v MakeUseOf? Sporočite nam v komentarjih!

James ima doktorat iz področja umetne inteligence in ima certifikat CompTIA A + in Network +. Je vodilni razvijalec MakeUseOf in svoj prosti čas preživlja z igranjem VR paintball in družabnih iger. Z računalniki gradi že od malih nog.