Ingo Electronics
  HOME

Pažintis su  Wi-Fi moduliu ESP8266

ESP8266 modulis sudarytas iš to paties pavadinimo mikrovaldiklio  ir prie jo prikabinto Spi Flash atminties mikroschemos.

Kadangi ESP8266 yra mikrovaldiklis tai į jį turi būti įrašomas tam tikras programinis kodas. Šiaip, bet kuris vartotojas galetų pats pasirašyti kodą, tuomet šį modulį galima naudoti be papildomo mikrovaldiklio, tačiau problema tame, kad šio valdiklio programavimui, yra naudojama gana sudėtinga programavimo aplinka ir kalba, kuri vadinasi egzotišku pavadinimu  Lua - http://www.lua.org/, taigi nėra nei laiko, nei noro papildomai studijuoti Lua ir ir įvairių šiam mikrovaldikliui skirtų bibliotekinių funkcijų panaudojimo.

ESP8266 modulisgaunamas su įrašytu pradiniu kodu (firmware), kurį tolimesnėje eigoje nesunkiai galima perrašyti naudojant UART sąsają.

Toliau aprašyme čia bus naudojamas  ESP8266 modulis, kuriame įrašyta programa,  reaguojanti į  UART sąsaja siunčiamas AT komandas.

Ebay šie moduliukai su ESP8266 yra gana pigūs, vos 2-3USD, tai galime matyti Ebay paieškoje įvedus: pvz. ESP8266 WIFI module. Yra keletas  ESP8266 versijų, žemiau esančiame pav. matome Esp-01, tačiau dar yra Esp-03, Esp-07, Esp-12 ir kt. Visi jie nedaug kuom skiriasi, pagrindas išlieka tas pats, skiriasi išvestų vartotojui  Input/Output skaičiumi (GPIO), antenos išpildymu (atspausta ant PCB arba įmontuota keraminė antena), kitos versijos dar turi pajungimo lizdą išorinei antenai,  ekranuoti komponentai  ir kitomis smulkmenomis.

ESP8266_modulis

Gavus ESP 8266 modulį visada norisi kuo greičiau jį išbandyti.
Paprasčiausia tai padaryti naudojant PC ir USB – UART (USART) konverterį (keitiklį). 
Ebay ar Aliexpress galima rasti įvairiausiu USB-UART modulių, su įvairiais chipais (FT232,CP2102,CH340,CH341 ir pan.), tik šiam atvejui reiktų atkreipti dėmesį, kad konverterio RX ir TX būtų  3,3V TTL, nes į ESP826 padavus  5V TTL galima sugadinti modulį.   TTL (Transistor-Transistol  Logic - nusako koks įtampos lygis laikomas loginiu vienetu
)

 Jeigu konverterio RX/TX yra 5V TTL tai modulio RX įėjimo apsaugai jungiame taip:


Aš naudojau USB – UART konverterį su CH340 chipu ir kuris papildomai turi 3,3V išėjimą maitinimo pajungimui.

Pirmą kartą pajungus USB – UART konverterį prie PC, Windows sistema pradės ieškoti tvarkyklių šiam įrenginiui. Mano atveju Windows pati susirado reikalingas tvarkykles (angl. drivers). 
Jeigu Windows neranda reikiamų tvarkyklių, jas reikia susirasti internete pagal chipo pavadinimą esančiu keitiklyje.

Pajungus USB – UART konverterį prie PC, Device Manager turime matyti kažką panašaus, kaip žemiau esančiame paveikslėlyje:

Jeigu viskas tvarkoje, prijungus  USB – UART konverterį prie USB lizdo, UART terminale atsiranda naujas virtualus COM  Portas, pvz. jeigu turėjome tik COM1, atsiranda koks nors COM7 ar COM10, priklausomai nuo to prie kurio USB lizdo prijungtas konverteris.

 Kitas svarbus momentas yra tai, kad ESP8266 moduliui reikalingas atskiras 3,3V maitinimas.
Aš bandžiau maitinimą  paduoti iš to paties USB – UART konverterio, kuriame jau buvo 3,3V maitinimo išėjimas, tačiau šiuo atveju yra labai perkraunama  keitiklio maitinimo grandinė ir modulis nustoja veikti.
Atskirą maitinimą galima pasijungti nuo kito USB lizdo, panaudojant bet kokį 3,3V linijinį įtampos reguliatorių, pvz. pasidarius paprastą žemiau parodytą schemutę:


Iš modulyje esančių 8 kontaktų mums svarbūs yra tik +3,3V,GND, TX ir RX.
CH-PD,RST,GPIO2 per daug nesiaiškindami jungiame prie +3,3V (taip kaip parodyta žemiau esančiame pav.)
GPIO0 nejungiame niekur, jis bus reikalingas vėliau.

Taigi galutinė ESP8266 pajungimo prie USB – UART keitiklio schema :
Jeigu jūsų keitiklis yra 3,3V TTL, tuomet  stabilitronas ir rezistorius  šioje schemoje nebūtinas, TX-URXD grandinę sujungiame tiesiai.

Toliau reikalinga UART sąsajos terminalo programėlė, su kuria bus siunčiamos komandos moduliui.
Aš naudoju MikroC kompiliatoriuje esantį įrankį: Usart terminal

UART terminalo programoje būtina pažymėti CR ir LF, kas reiškia komandą  „Naujos eilutės pradžia“,  t.y. po kiekvieno UART sąsaja perduodamo žodžio ar sakinio, automatiškai yra siunčiama komanda „į naujos eilutės pradžią“, tai atitinka kaip  pvz. PC rašant tekstą, nuspaustum klavišą  „Enter“. Tą patį reikia nepamiršti ir rašant programos kodą mikrovaldikliui, t.y. po kiekvienos komandos turi būti perduodama:   \r\n
Naudojant  MikroC  Usart Terminal , programoje reikia pažymėti CR+LF ir papildomai uždėti varnelę šalia „Append New  Line“

Bene svarbiausia yra nustatyti koks yra ESP modulio UART siuntimo greitis (Baud rate), nes gali pasitaikyti įvairių versijų dirbančių skirtingais greičiais.
Pvz. pas mane buvo 9600bps.

Keičiant Baud rate pradedant nuo 115200bps siunčiama bet kokia komanda, kad ir paprasčiausia AT ir nustatome  prie kokio greičio ESP modulis mums normaliai atsako.
Siunčiant AT, turime gauti atsakymą:
AT
OK

Gali pasitaikyti, kad pasiuntus AT, gauname tik atkartojimą AT, tai gali reikšti, kad UART terminalo programoje nepažymėjome CR+LF.

Taip pat gana neblogas interfeisas yra terminalo ESPlorer - http://esp8266.ru/esplorer/#download  Tai Java programa, atidaroma su ESPlorer.bat failu.

Dešinėje pusėje yra terminalo langas, o kairėje patogumui jau suformuotos AT komandos, t.y paspaudus mygtuką, komanda iškart siunčiama į terminalą.

Siunčiame komandą AT+RST t.y.  Restart
Gauname atsakymą:

Siunčiame komandą AT+GMR t.y.  tikriname kokia ESP Programinės įrangos versija
Gauname atsakymą:

Siunčiame komandą AT+CIFSR t.y.   IP adresas (angl. Get IP Address)
Gauname atsakymą:

Na ir dar viena, bene įdomiausia testo dalis, siunčiame komandą AT+CWLAP t.y. aplink mus esančių WIFI prieigos taškai AP (angl. List Access Points).

Gali būti, kad pasiuntus šią komandą, gausime:

AT+CWLAP

ERROR

Tai reiškia, kad, ESP modulis pats yra prieigos taškas.

Tokiu atveju siunčiame komandą AT+CWMODE=3 tuo nustatydami ESP modulį dirbti abiem darbo rūšim, ir kaip AP ir kaip klientas (angl. Client).

Taigi, dar kartą siunčiame komandą AT+CWLAP

Gauname atsakymą:
(Sąraše matome visus aplink mus esančius WIFI AP, [apibudinimas, pavadinimais, signalo lygis, MAC adresas, kanalas] )

Na ir reziumuojant, jeigu kas nors neveikia arba ESP modulis neatsako, į ką reiktų atkreipti dėmesį:

1.       Modulio maitinimas

2.       Ar teisingai pasirinktas COM portas

3.       Ar teisingas UART greitis

4.       Ar pažymėti CR+LF

5.       Ar teisinga modulio darbo rūšis AT+CWMODE=3

 
Kiekvienam naujai gautam moduliui, ar po firmware perrašymo, vertėtų pasitikrinti kokia yra jo firmware versija (SDK),  ir kokios versijos yra AT komandų rinkinys.
Pagrinde, šiuo metu yra naudojamos trys SDK versijos:

SDK v0.9.5
SDK v0.9.6
SDK v1.0.0

 Ir keturios AT komandų versijos: v0.19, v0.20, v0.21, v0.22

Firmware versiją  galima sužinoti pasiuntus komandą  AT+GMR

Versiją atvaizduoja 8-10 skaičių seka, pirmi skaičiai – AT komandų rinkinio versija, sekantys – SDK versija. Pvz. 0019000902 arba pvz.  00200.9.5(b1)

 Softo perrašymas

Kadangi, kaip jau buvo rašyta, ESP8266 yra programuojamas įrenginys, jame yra įrašoma firmware kodas.
Paprastai gautus ESP8266 moduliukus reikia atnaujinti perrašant jo firmware į naujesnę versija.

Paskutinė, naujausia versija dabar yra SDK v1.0.0, aš naudoju 0.9.5 versiją.

Naujesnės programinės įrangos versijos turi daugiau AT komandų ir yra ištaisytos ankstesnėse versijose pasitaikančios klaidos.
Plačiau apie tai galima pasiskaityti čia: http://esp8266.ru/esp8266-sdk-0-9-5-v0-21/

 
1. Norint perrašyti  ESP8266 modulio firmware, reikia jį perjungti į  Flash Mode režimą.

  Tam GPIO0  laikinai prijungiame prie GND,  RST, CH_PD,GPIO2 lieka prijungtos prie +3,3V

2. Programos perrašymui naudojame programėlę -  esp8266_flasher, kataloge jau yra softo perrašymui reikalingas failas:   AI-v0.9.5.0_ AT Firmware.bin 

   Paleidus  esp8266_flasher atsidaro langas:

3. Paspaudus Bin nurodome kur yra įrašymui skirtas bin  failas

4. Įrašme tikslų COM  Porto, prie kurio yra pajungtas USB – UART konverteris numerį.

5. Spaudžiame Download, laukiame rezultato:

Leaving ...
Failed to leave Flash mode

Čia nereikia išsigasti, programa tik praneša,  kad ji pati savaime negali modulio išvest iš Flash mode, tam atjungiame GPIO0 ir paliekame ją niekur nepajungtą.

5. Perjungiame maitinimą, dabar padavus komandą  AT+RST  turėtume gauti: 

OK
F_)
Ќю ¦bЊ¦1јћҐ•NDЂМ1`_ ЊЋЁj
Vendor:www.ai-thinker.com 
SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014, 21:50:58
Ready

 

Tęsinys sekančioje temoje.