I. Intro
ESP8266 - kinų firmos Espressif Systems suprojektuota mikroschema skirta palengvinti komunikaciją bevieliu WiFi ryšiu. Tai IEEE 802.11 b/g/n standartą palaikantis įrenginukas realizuojantis pilną TCP/UDP IP steką (specifikacija). Viskas labai mažame 32-pin QFN įpakavime, kuris žinoma nėra ypač draugiškas DIY gerbėjams, tačaiu patogus, o su šia mikroschema pagamintų moduliukų galima rasti apsčiai. Pagrindiniai privalumai - mažas, greitas, pigus ir eikvoja mažai energijos - visa tai sutelpa į ESP8266. Veikia tik su 3.3V įtampa, tad galbūt tai privalumas, o gal minusas, nes 5V netoleruoja. Su mikroschema galime prisijungti prie namų WiFi AP (stotelės) arba lengvai sukurti patiems Soft AP skirtą iki 5 vartotojų vienu metu. Palaikomas WEP, TKIP bei AES šifravimas. Taip pat reikia pastebėti, kad taktinis darbinis dažnis (26-52 MHz) gerokai lenkia įprastų mikrovaldiklių charakteristikas. Priedo pakete gauname tokias sąsajas - UART (RX/TX), SPI bei iš viso nuo 5 iki 22 (priklausomai nuo modelio) išvadų. Šis modulis toks populiarus, kad jau perkopė >14 dizaino versijų-iteracijų.
Labiausiai naudojami ESP-01 (pirmiausiai išplitę), ESP-07 (AI-Thinker) ir ESP-12 modeliai (labiausiai ištobulinti), pastarasis netgi turi FCC sertifikatą. Negana to, mikroschemą galima programuoti, kaip bet kokį kitą mikrovaldiklį - tad panaudojimo atvejų kiekis neapsakomas. Taigi, dabar prijungti bet kokį jutiklį prie tinklo tapo vienos mikroschemos reikalas. Galbūt netgi visas valdymo kodas gali būti realizuojamas vien tik ESP flash atmintyje išvengiant kitų bereikalingų mikrovaldiklių. Kaip ten bebūtų, šios mikroschemos pripažinimas ir bumas didžiulis - sukurtos net atskiros bendruomenės jos populiarinimui: http://www.esp8266.com, o informacijos pakankamai ir kitur: https://nurdspace.nl/ESP8266
II. Prijungimas
Informacijos, kaip pajungti modulį, internete apstu. Taip pat ir nemažai klaidingos informacijos, tad verta sutikrinti keletą šaltinių prieš naudojant. Reikia atkreipti dėmesį, kad ESP dirba su 3.3V įtampa, tad jau 5V yra mirtinas kiekis. Tokiu atveju 5V konvertavimui į 3.3V galime naudoti rezistorinį daliklį (angl. resistor-voltage-divider) ar kokį 3V3 Zenerio diodą. Kovertavimas į kitą pusę kiek keblesnis - reikia tranzistorių. Yra ir paprastesnė įšeitis - naudoti konvertavimo moduliuką, kuriam paduodame 5V ir tiek. Tokiu ir pasinaudojau - paprasta, greita ir patogu. Prototipams ir greitam testavimui kaip tik. Prijungus modulį iškart atsiranda Soft AP stotelė, prie kurios galima prisijungti su kitu WiFi suprantančiu įrenginiu - siūlau pabandyti kompiuteriu ar telefonu. Jeigu stotelė matyti, vadinasi modulis tikrai veikia.
Pats bandymams turiu ESP-01 ir ESP-07 moduliukus, kuriuos ir pajungiau testavimui. Pajungimo schemos pateikiamos žemiau. Tam, kad ESP-01 modulis veiktų būtina prie 3.3V prijungti ir CH_PD (t.y. chip enable) išvadą. Na ir žinoma, TX ir RX turi būti sujungti kryžmiškai.
Pats bandymams turiu ESP-01 ir ESP-07 moduliukus, kuriuos ir pajungiau testavimui. Pajungimo schemos pateikiamos žemiau. Tam, kad ESP-01 modulis veiktų būtina prie 3.3V prijungti ir CH_PD (t.y. chip enable) išvadą. Na ir žinoma, TX ir RX turi būti sujungti kryžmiškai.
Su daugiau išvadų turinčiu ESP-07 ar ESP-12E reikia padirbėti daugiau. Prie 3.3V prijungiame EN išvadą (analogija su CH_PD) bei GPIO2, o GPIO15 turi būti prijungtas prie GND.
PASTABA: taip pat reikia paminėti, jog startuodamas modulis naudoja nemažai srovės, tad turi būti prijungtas pakankamos (bent 500mA) srovės 3.3V šaltinis, kitu atveju modulio paleisti nepavyks. Pagal kitą šaltinį, maksimali/pikinė srovė siekia ~320mA @ 3.3V, o veikimo metu ~35-80mA @ 3.3V, tad geriau apsidrausti iš anksto.
III. Komunikacija
ESP palaiko paprastas tekstines AT komandas perduodamas per UART, kaip koks įprastas GPS modulis. Žinoma, bendravimo protokolas kiek paprastesnis. Sėkmingai paleidus moduliuką ir prijungus Serial konsolę, kad ir per USB-2-TTL konverterį galime siųsti komandas. Pirmąkart atliekant bandymus labai patogu naudoti RealTerm ar kokį kitą terminalo emuliatorių. Jungiamės prie COM porto (8 bits, no parity, 9600 baud) režimu. Jeigu nepavyksta, verta pabandyti kitus greičio režimus - 115200, 57600 ir pan. Na ir imamės komandų, kurias reiktų išbandyti - pirmiausia nuo paprastesnių iki sudėtingesnių. Dėmesio - reikia atkreipti dėmesį, kad kiekvieno komandos sakinio pabaigoje turi būti CR, LF simboliai (t.y. carriage return - 0x0D ir line feed - 0x0A), kitaip ESP neatsakys į užklausas! Toliau pateikiu darbo su moduliu komandas ir pavyzdinius atsakymus. Daugiau komandų ir visus jų parametrų aprašymus galima pasitikrinti oficialiame Wiki arba čia.
- Modulio perkrovimas (reset)
Komanda:
AT+RST
Atsakymas:AT+RST
OK
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x40100000, len 24444, room 16
tail 12
chksum 0xe0
ho 0 tail 12 room 4
load 0x3ffe8000, len 3168, room 12
tail 4
chksum 0x93
load 0x3ffe8c60, len 4956, room 4
tail 8
chksum 0xbd
csum 0xbd
ready
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x40100000, len 24444, room 16
tail 12
chksum 0xe0
ho 0 tail 12 room 4
load 0x3ffe8000, len 3168, room 12
tail 4
chksum 0x93
load 0x3ffe8c60, len 4956, room 4
tail 8
chksum 0xbd
csum 0xbd
ready
- ESP versijos nuskaitymas
Komanda:
AT+GMR
AT+GMR
Atsakymas:
00160901
OK
- WiFi režimo nustatymas (1=Station, 2=AP, 3=abu)
Komanda:
AT+CWMODE=1
AT+CWMODE=1
Atsakymas:
OK
- WiFi režimo užklausimas
Komanda:
AT+CWMODE?
AT+CWMODE?
Atsakymas:
+CWMODE:1
- Aplinkinių WiFi stotelių sąrašo gavimas (su ryšio stiprumu dB)
Komanda:
AT+CWLAP
Atsakymas:
+CWLAP:(0,"",0)
+CWLAP:(4,"TestAP",-45)
+CWLAP:(4,"kaunas",-69)
+CWLAP:(4,"BANANA",-60)
+CWLAP:(4,"522priv",-88)
+CWLAP:(3,"Barselona",-86)
+CWLAP:(4,"FUMSA",-83)
+CWLAP:(3,"masina",-55)
+CWLAP:(3,"Boat",-88)
+CWLAP:(3,"DLAN",-94)
+CWLAP:(0,"linksys",-91)
OK
- Prisijungimas prie konkrečios WiFi stotelės su slaptažodžiu
Komanda:
AT+CWJAP="TestAP","slaptazodis"
Atsakymas:
OK
- Patikrinimas prie kokios stotelės prisijungta
Komanda:
AT+CWJAP?
Atsakymas:
+CWJAP:"TestAP"
OK
- Gauto IP adreso parodymas
Komanda:
AT+CIFSR
Atsakymas:
192.168.0.102
- Maksimalaus komunikavimo režimo įjungimas (max 5 klientai)
Komanda:
AT+CIPMUX=1
Atsakymas:
OK
- TCP ryšio užmezgimas/sukūrimas (formatas: klientoId,TCP/UDP,adresas,portas)
Komanda:
AT+CIPSTART=0,"TCP","www.google.lt",80
Atsakymas:
OK
Linked
- HTTP užklausos siuntimas į serverį (formatas: klientoId,baituSkaicius)
(reikalingi CR ir LF baitai užklausoje pavaizduoti kaip \r ir \n)
Komanda:
AT+CIPSEND=0,41
> GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n
Atsakymas:
Atsakymas:
busy
SEND OK
+IPD,0,510:HTTP/1.1 302 Found
Location: http://www.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Sat, 18 Jul 2015 23:52:06 GMT
Server: sffe
Content-Length: 219
X-XSS-Protection: 1; mode=block
Alternate-Protocol: 80:quic,p=0
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.</BODY></HTML>
OK
SEND OK
+IPD,0,510:HTTP/1.1 302 Found
Location: http://www.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Sat, 18 Jul 2015 23:52:06 GMT
Server: sffe
Content-Length: 219
X-XSS-Protection: 1; mode=block
Alternate-Protocol: 80:quic,p=0
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.</BODY></HTML>
OK
- Ryšio statuso tikrinimas (2=gotIP, 3=connected, 4=disconnected)
Komanda:
AT+CIPSTATUS
Atsakymas:
STATUS:2
+CIPSTATUS:0,"TCP","173.194.113.50",80,0
OK
- Ryšio užbaigimas
Komanda:
AT+CIPCLOSE=0
AT+CIPCLOSE=0
Atsakymas:
OK
Unlink
- Ryšio statuso patikrinimas užbaigus
Komanda:
AT+CIPSTATUS
AT+CIPSTATUS
Atsakymas:
STATUS:4
OK
Komentarų nėra:
Rašyti komentarą