LAKI PINGVINI<>
052017<><>

Arduino: Wi-Fi modul

Galaksija ESP8266

Čip ESP8266EX je zanimljiv i donekle tajanstven proizvod ne baš poznate kineske kompanije Espressif Systems. Izrađuje se na osnovu tehnologije američke firme Tensillica, koja je pre nekoliko godina postala deo kompanije Cadence Design Systems. Reč je o čipu baziranom na 32-bitnoj RISC arhitekturi pod nazivom Xtensa LX106 Diamond i radi na (za mikrokontrolere) vrlo pristojnih 80 megaherca. Može da se overklokuje do 160 megaherca, ali se stabilnost ne garantuje. Ima 96 kilobajta radne memorije i 64 kilobajta memorije za instrukcije. Šta je sada ovo?! Korišćena arhitektura mikrokontrolera je zanimljiva po tome što proizvođačima opreme dozvoljava kreiranje sopstvenih instrukcija u okviru mikrokoda. Uz mikrokontroler ide eksterni čip fleš memorije kapaciteta od 512 kilobajta (retko se sreće), preko danas standardnog jednog megabajta, pa sve do četiri megabajta (teoretski maksimum 16 megabajta).

Prvi modeli pojavili su se na tržištu 2014. godine uz reklamu da se radi o zaokruženom rešenju za Wi-Fi komunikaciju. To znači da moduli mogu da se koriste samostalno, ali i kao sredstvo za povezivanje mikrokontrolera bežičnom Wi-Fi vezom. S obzirom da je cena ovih čipova u odnosu na ostale „Wi-Fi capable” konkurente od samog početka bila veoma niska, ne čudi činjenica da su vrlo toplo prihvaćeni od strane mejkera. Osim što je dobro rasprostranjen i popularan, ESP8266 je učinio mnogo za celokupno IoT tržište primoravajući ostale proizvođače da znatno snize cene.

Vrste modula

Ono što zbunjuje početnike u radu sa ovom platformom jeste činjenica da postoji ceo niz različitih modula zasnovanih na istom čipu. AI-Thinker je jedan od proizvođača koji su među prvima počeli sa kreiranjem modula na bazi čipa ESP8266, pa su sticajem okolnosti postali omiljeni kod hobista. Pa da pogledamo nekoliko njih koji bi nam potencijalno mogli biti zanimljivi.

ESP-01

 
Prvi AI-Thinker modul sa čipom ESP8266 koji se pojavio na tržištu, istovremeno je najpopularniji i najčešće korišćen, zahvaljujući ceni koja je niža od svih predstavnika u toj kategoriji. Omogućuje pristup do dva GPIO porta, što znači da može da se koristi za prikupljanje senzorskih podataka nezavisno od drugog mikrokontrolera. Dva reda sa po četiri pina nisu podesni za priključivanje na prototipsku pločicu, ali postoje jeftini dodatni moduli koji to omogućavaju. Dobar su izbor zbog toga što se često koriste u primerima koji se mogu naći na internetu, pa nije teško doći do gotovih rešenja. Međutim, nisu bez nedostataka. Pojedini izvodi glavnog čipa, zbog loših inženjerskih rešenja, nisu nigde priključeni, pa se nalaze u takozvanom „plutajućem” stanju, koje može prouzrokovati razne nepravilnosti u radu.

Osim toga, ovi moduli nemaju mogućnost dovođenja elektronike u stanje takozvanog „dubokog sna”, koje je vrlo važno za ekonomiju električne energije. Najčešća veličina fleš memorije za module crne boje iznosi jedan megabajt.

ESP-05

 
U pitanju je mali, pojednostavljeni modul koji ima svega pet nožica za povezivanje, kao i konektor po IPX standardu za priključivanje spoljašnje antene. Njegov najveći plus predstavlja mogućnost jednostavnog korišćenja na prototipskoj pločici, dok mu se kao minus računa to što ne obezbeđuje nikakav pristup ka GPIO portovima mikrokontrolera. Sa Arduinom se povezuje putem UART interfejsa i služi za prenos podataka putem Wi-Fi mreže.

ESP-12E (NodeMCU 1.0)

Ova vrsta modula, zbog rastojanja među konektorima od dva milimetra i nemogućnosti lemljenja pinova za priključivanje na prototipsku pločicu, nije naročito podesna za rad sa Arduinom. Međutim, postoje i moduli koji na sebi imaju zalemljen ESP-12 i istovremeno sadrže konektore sa iglicama razmaka 2,5 milimetara. Njihov plus u odnosu na ostale predstavljene module odnosi se na prisustvo 4096 kilobajta fleš memorije. Uz njih dolazi firmver pod nazivom NodeMCU, koji podržava skript programski jezik Lua, pa kao proizvod dobijamo funkcionalno i zaokruženo IoT razvojno okruženje. Lua je moćan i dosta jednostavan programski jezik, donekle sličan JavaScriptu, ali fleksibilniji od njega i znatno uprošćava programiranje, kako funkcija vezanih za Wi-Fi komunikaciju, tako i za rad sa priključenim senzorima. Ovi moduli obično na sebi imaju i čip CH340G koji omogućava USB<>UART povezivanje, što pojednostavljuje proces zapisivanja podataka u integrisanu fleš memoriju. Uz ESP-07, reč je verovatno o inženjerski najbolje rešenim modulima ove vrste, a sa cenom od približno 3,5 evra, predstavljaju odličan izbor.

ESP-201

 
Ovaj modul osim antene na pločici, pruža mogućnost priključenja eksterne antene. U standardnom pakovanju obično dolazi sa jednostavnom antenom koja ima IPX interfejs. Inicijalno se koristi spoljašnja antena, a u slučaju da želimo da koristimo integrisanu, potrebno je prelemiti SMD otpornik veličine 0 oma.

Modul na sebi ima 26 pinova od kojih su četiri namenjena povezivanju sa UART interfejsom. Nije baš najjasnije šta je konstruktore motivisalo da ta četiri pina okrenu prema dole i onemoguće postavljanje na prototipsku pločicu, ali je za veliki broj korisnika prva stvar koju urade njihovo odlemljivanje i postavljanje na vrh. Nazivi pinova su štampani sa donje strane pločice, ali je to od male koristi, pošto za vreme rada oni nisu vidljivi.

Modul sadrži šest GPIO portova (GPIO6-GPIO11) koje nije moguće praktično koristiti. Uz hardversku modifikaciju na čipu sa fleš memorijom moguće je osloboditi GPIO portove 9 i 10. Prilikom flešovanja pin IO15 mora biti u stanju logičke nule.

Iako ESP-201 na prvi pogled izgleda kao sjajan modul, on ima dosta slabosti konstruktorske prirode. Cena od 2,4 evra ga čini privlačnim za kupovinu, ali uprkos konektorima koji se mogu priključiti na prototipsku ploču, znatan broj konstrukcijskih grešaka uveliko smanjuje njegov potencijal.

Adafruit HUZZAH

 
U pitanju je modul renomiranog proizvođača u svetu Arduino tehnike i baziran je na modulu ESP-12. Uz nešto višu cenu (ispod 10 dolara) nudi dosta jednostavnije upravljanje Wi-Fi modulom. Od ostalih modela se razlikuje postojanjem dva mala tastera od kojih je jedan namenjen ulasku u bootloading režim, dok drugi funkcioniše kao reset taster. Korisniku je na raspolaganju devet GPIO portova (0, 2, 4, 5, 12, 13, 14, 15, 16), između ostalog, i sa funkcijama SPI i I2C interfejsa, dva UART interfejsa i jednim analognim ulazom (1,8 volti maksimalno). Na pločici se nalazi i regulator struje koji omogućuje napajanje do 500 miliampera. I ovde se koristi programski jezik Lua kao osnova za programiranje, ali je moguće koristiti i programiranje putem Arduino IDE i raznih drugih programskih jezika.

Olimex ESP8266-DEV

Zanimljivo je da se sedište kompanije Olimex nalazi u nama susednoj Bugarskoj i da već duži niz godina uspešno opstaje u teškoj tržišnoj borbi sa dalekoistočnim proizvođačima elektronike (po svedočenju vlasnika firme Cvetana Usunova, dobrim delom zahvaljujući stimulaciji iz fondova EU). Ovo je jedan od prvih Olimexovih modula koji se pojavio još 2014. godine i u međuvremenu je stekao dosta veliku popularnost.

Na pločici se nalaze tzv. UEXT (Universal EXTension) konektori za priključivanje na UART interfejs. Poseduje dva megabajta fleš memorije, što omogućava upotrebu u kompleksnijim projektima. Cena uređaja je oko pet evra, što se može smatrati vrlo prihvatljivim. Isti proizvođač po ceni od devet evra nudi razvojnu pločicu ESP8266-EVB koja već sadrži ESP8266-DEV modul i umnogome pojednostavljuje komunikaciju s njim.

Tu je i cela linija drugih modula (ESP-02, ESP-03, ESP-04, ESP-06, ESP-08, ESP-09, ESP-10...) koji su namenjeni ugrađivanju na druge uređaje i nisu pogodni za direktni rad sa Arduinom, pa im zbog toga nećemo posvetiti više prostora. Naravno, i oni se, slično modulu ESP-12E, mogu zalemiti na dodatnu pločicu, ali to je već van opsega našeg teksta. Zbog ograničenosti prostora mesto u opisu nisu našli ni neki drugi moduli, uključujući jedan od najboljih (ali i nekoliko puta skuplji) Sparkfun Thing, koji ima konektor za eksternu Li-Po bateriju, koja mu uz ispravan dizajn projekta omogućava višegodišnje autonomno funkcionisanje.

Povezivanje

Iako se na internetu može videti velika količina materijala vezanog za rad sa platformom ESP8266, početnicima je prilično teško da pronađu pravu informaciju koja bi ih uputila u pravom smeru. Upravo zato ćemo se truditi da bolje objasnimo neke elementarne stvari bez kojih je dalji rad dosta komplikovan.

Da bi modul ESP-01 pro funkcionisao, potrebno je da na odgovarajuće nožice dovedemo napon od 3,3 volta i uzemljenje, nakon čega se aktivira crvena LED lampica. Odmah napominjemo da su ovi moduli projektovani za napon od 3,3 volta i da bi dovođenje napona od 5 volti bilo destruktivno. Za aktiviranje Wi-Fi režima rada, potrebno je da na nožicu CH_PD dovedemo napon od 3,3 volta, čime je postavljamo u stanje logičke jedinice. To će na modulu nakratko aktivirati plavu LED lampicu, a mi ćemo posle toga na svom računaru u spisku Wi-Fi predajnika videti novu stavku. Možemo se odmah priključiti na bežičnu mrežu, ali od toga neće biti neke preterane koristi, jer još nemamo vezu sa svojim Wi-Fi modulom.

U prethodnim nastavcima smo pominjali AT komande koje su najpoznatije po tome što su služile za podešavanje starih dobrih telefonskih modema. Najveći broj predstavljenih modula dolazi sa takozvanim AT firmverom, a u pojedinim situacijama dolazi i bez bilo kakvog firmvera. Inače, AT komande se koriste za ostvarenje veze između mikrokontrolera i ESP modula putem serijskog interfejsa (ESP moduli se još nazivaju Serial to Wi-Fi uređajima). Na taj način je moguće slati podatke i primati ih od drugih uređaja.

Da bismo mogli da dostavimo AT komande sa računara do samog modula, potrebno je da koristimo neki USB<>Serial adapter. U jednom od narednih brojeva ćemo se pozabaviti razlikama između pojedinih modela, a za sada samo da navedemo da su najčešće varijante bazirane na čipovima FT232RL, CH340G i CP2102. Za komunikaciju sa Wi-Fi modulima je obavezno da adapteri podržavaju rad sa naponom od 3,3 volta. Mi smo, čisto zbog toga što je najviše „breadboard friendly”, koristili modul CP2102, čiji se drajver može preuzeti sa lokacije goo.gl/Ons89Q.

 
Da bi posao učinili jednostavnijim, ESP-01 smo utakli u podnožje koje omogućuje upotrebu prototipske pločice (cena oko jedan evro), i džamper žicama spojili njegov RXD port sa TXO portom CP2102 (plava boja), a TXD sa RXI (žuta). Levi taster spaja uzemljenje sa pinom RST i služi za restart modula, dok desni taster spaja uzemljenje sa pinom GP0 i ima važnu funkciju prilikom flešovanja uređaja.

Ovu priliku koristimo da predstavimo veoma praktični modul za napajanje, prilagođen radu sa prototipskim pločicama, a koji smo koristili u okviru sheme povezivanja. Pošto Arduino poseduje ograničene kapacitete po pitanju struje (u konkretnom slučaju je potrebno 300 miliampera, a Arduino preko svog 3V3 pina isporučuje samo 50 miliampera), ponekad je potrebno koristiti dodatne izvore napajanja. Modul pod nazivom MB102 je sjajan izbor kada su nam potrebni naponi 3,3 volta, pet volti ili oba istovremeno.

 
Sa donje strane se nalaze iglice preko kojih se modul fiksira za prototipsku ploču i to u područja predviđena za napon i uzemljenje. Pošto prototipske ploče imaju po dve strujne šine, ovaj uređaj je u stanju da na obe isporuči napon od nula, 3,3 ili pet volti, po želji. Veličina napona se određuje džamperima koji se nalaze na obe strane modula.

Uređaj se napaja ulaznim naponom u rasponu od 6,5-12 volti, dok je napajanje preko USB porta standardnih pet volti, ali isto tako, sa USB porta možemo da odvodimo napon od pet volti. Tu su i dva bloka od po četiri iglice preko kojih možemo preuzeti napon od 3,3 i pet volti.

Za regulaciju napona koriste se integralna kola AMS1117 (jedno za napon od 3,3 volta, a drugo za pet volti). Ova kola nude solidan stepen zaštite od kratkih spojeva. Maksimalna jačina izlazne struje je 700 miliampera, ali je pametnije ako se ograničimo do nekih 500 miliampera.

Putem postojećeg prekidača možemo uključivati i isključivati uređaj bez potrebe da mu isključujemo dovod struje. Zelena LED lampica prikazuje da li je modul uključen. S obzirom na to da se mogu naručiti već po ceni od nekih 70 centi, moduli MB102 su jednostavno must have u radu sa prototipskim pločama.

AT komande

Za pristupanje modulu putem AT parametara iz Arduino IDE, potrebno je da dodamo podršku za ESP8266 platformu. U opciji menija Menu/Preferences, u okvir polja Additional Boards Manager URLs: upisujemo sledeću adresu:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

 
Nakon toga prelazimo u meni Tools/Board/Boards Manager, i u polje za pretraživanje kucamo slova „ESP”, nakon čega dobijamo filtrirane stavke koje imaju vezu sa ovom vrstom modula. Odabiramo stavku sa oznakom ESP8266 by ESP8266 Community i kliknemo na Install. Posle preuzimanja potrebnih fajlova sa interneta, potrebno je ponovo da odemo u meni Tools i tamo u podopcijama Board: izaberemo uređaj pod nazivom Generic ESP8266 module. Primetićete da se u okviru menija pojavljuje veliki broj opcija vezanih za ESP platformu.

Nas, za početak, zanima Serial Monitor, kako bismo ostvarili komunikaciju sa modulom. Za to je potrebno poznavati broj COM porta, kao i brzinu konekcije. Najčešće vrednosti brzine su 115.200 i 9.600 bauda, ali znaju da budu i drugačije. U našem konkretnom slučaju, brzina je iznosila 74.880 bauda, što smo saznali tek nakon više pokušaja unosa teksta u terminal, menjajući brzine prenosa. Ukoliko su unesena podešavanja odgovarajuća, tekst će biti ispisan ispravno, a u suprotnom ćemo videti „hijeroglife”. Ukoliko nemamo nikakve informacije na ekranu, potrebno je da nožicu RST nakratko postavimo u stanje logičke nule putem našeg tastera ili jednostavno spajanjem tog pina sa linijom GND uz pomoć džamper žice.

Verziju trenutno postavljenog firmera saznajemo kucajući AT komandu GMR:

AT+GMR

Spisak svih dostupnih AP dobijamo pomoću komande:

AT+CWLAP

Na željeni AP se priključujemo sa komandom:

AT+CWJAP="SSID_predajnika”, „šifra”

Konekciju TCP tipa započinjemo na sledeći način:

AT+CIPSTART="TCP”,"192.168.1.77”,"123”

To jeste, uspostavljamo komunikaciju sa uređajem na ukazanoj IP adresi i preko ukazanog TCP porta.

Režim funkcionisanja modula saznajemo komandom:

AT+CWMODE?

Postoje tri režima funkcionisanja ESP8266. Prvi je režim klijenta, kada modul priključujemo na neku postojeću mrežu. Drugi modus se odnosi na kreiranje nove mreže gde modul obavlja funkciju tačke pristupa (AP). Treći modus je najfleksibilniji i predstavlja kombinaciju prethodna dva režima.

Prostor ne dozvoljava da se više posvetimo komunikaciji putem AT komandi, ali je princip isti onome što smo demonstrirali kada smo opisivali komunikaciju Bluetooth modulom. Celokupan spisak AT instrukcija za ESP-xx module se može pronaći na adresi goo.gl/ymOEba.

Nešto kao flash

 
U radu sa ESP-xx modulima, često je potrebno menjati sadržaj fleš memorije. Ukoliko napišemo neki program i prepišemo ga na fleš memoriju, za vraćanje na standardni AT firmver potrebno je da ponovo flešujemo inicijalni sadržaj. Ranije je taj postupak bio vrlo jednostavan, ali su se tokom vremena pojavile nove verzije programa za flešovanje koje izdaje Espressif i koje su prilično komplikovane za upotrebu. U trenutku pisanja, najnovija verzija nosi oznaku 3.4.4 i može da se koristi za flešovanje modula baziranih na čipovima 8266, 8285 i ESP 32.

Verzije firmvera koji podržava rad sa AT komandama treba tražiti u fajlovima koji započinju tekstom „ESP8266_NONOS_SDK”, što znači da se radi o firmveru bez podrške operativnog sistema. Za razliku od njih, postoje verzije koje podržavaju minijaturni operativni sistem pod nazivom FreeRTOS, ali o tome neki drugi put.

Prvo što treba da uradimo je da saznamo osnovne podatke o našem modulu. To se obavlja tako što pokrenemo ESP Flash Download Tool bez ikakvih dodatnih parametara (osim, naravno, naziva COM porta i brzine komunikacije). Nakon toga u prozoru Detected Info dobijamo informacije o veličini fleš memorije i frekvenciji kristala, koje ćemo posle upisati u odgovarajuća polja programa.

Unutar fajla na lokaciji /bin/at_sdio/README.md nalazi se spisak memorijskih lokacija na koje je potrebno postaviti određene fajlove kako bi proces flešovanja bio pravilno odrađen. Različite veličine čipa sa fleš memorijom zahtevaju različite parametre. U našem konkretnom primeru modula ESP-01 polja popunjavamo na sledeći način:

Kao poslednji korak, selektujemo ček boks kontrole ispred svakog od izabranih fajlova i, ako posle toga sva polja budu obojena u zeleno, znači da smo posao obavili kako treba i da možemo preći na proces zapisivanja fleš memorije. Pre nego što kliknemo na ekranski taster sa natpisom Start, potrebno je da prevedemo modul u režim zapisivanja. Za to je potrebno da pin GPIO0 dovedemo u stanje logičke nule i, dok se nalazi u tom stanju, istu stvar nakratko uradimo sa pinom RST. Na pratećoj fotografiji vidi se da je to urađeno uz pomoć malih tastera, dok je istu stvar moguće postići dovođenjem uzemljenja putem džamper žica, što je suštinski jednostavnije i praktičnije rešenje. Postoji i mogućnost da se flešovanje obavi putem AT komandi direktno preko oblaka, ali se na internetu može pročitati da je takav pristup često problematičan.

Na raspolaganju nam je veći broj programskih jezika preko kojih je moguće upravljati ESP modulima. Osim već pominjanog NodeMCU, tu su još Espruino i Smart.js koji omogućavaju programiranje putem jezika JavaScript, MicroPython je varijanta Python programskog jezika, dok ESP8266 BASIC i ZBasic jasno asociraju na svoj programski jezik. Za sada je najvažnije da se savladaju osnovni principi rada sa ovom vrstom modula, a kako korisnik bude napredovao, prelazak na druge programske jezike mu neće predstavljati veći problem. ESP moduli su vrlo zanimljiv instrument velikog potencijala koji jednostavno mora pronaći mesto u kolekciji svakog ozbiljnijeg mejkera.

Igor S. RUŽIĆ

 
Ubuntu 17.04 Zesty Zapus
Eltechs Exagear Desktop 2.0
Parole Media Player 0.9.1
Orange Pi PC 2
Arduino: Wi-Fi modul
Šta mislite o ovom tekstu?
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2015. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 2.54
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera