WiFi modul ESP8266 -01

11.11.2015

 

Před časem se objevil na trhu velice zajímavý modul, označený ESP8266.

Prodává se několik verzí tohoto modulu. Liší se rozměry PCB, typem antény a počtem vyvedených GPIO.

Já bych se chtěl v tomto článku trochu věnovat nejjednodušší variantě, typu 01.

Tento modul se dá pořídit za 2$, což je v současné době necelých 50Kč

Parametry tohoto modulu se zabývat nebudu, toho je na internetu spousta, zaměřím se spíše na praktické použití.

Modul obsahuje procesor s 1MB FLASH paměti, a WiFi připojením. Vyvedeny jsou sériové signály Rx a Tx, a dva input/output GPIO piny, na která se dají připojovat různá čidla. Dále jsou vyvedeny signály CH_PD. Tímto pinem se povoluje/zakazuje činnost modulu. Doporučuji pin CH_PD připojit natrvalo k VCC napájecímu napětí 3.3V Stejně tak pin RST k VCC přes odpojitelnou propojku (na rozdíl od pinu CH_PD jej občas budeme potřebovat rozpojit). V případě, že necháte RST "ve vzduchu" bude docházet k tomu, že modul občas přestane vysílat, a vy nezjistíte proč :-)

Upozornění:
Modul VŽDY připojujeme k sériovému portu tak, že signál RX propojíme s TX signálem zařízení, a TX s RX (nejedná se osběrnici, kde se připojují např. SDA na SDA a SCL na SCL).


Nahrání firmware do modulu

V první řadě se musíme rozhodnout, jestli chceme používat AT příkazy, nebo mód NodeMCU

Pokud budete ESP8266 připojovat např. k Arduinu, které jej bude využívat pro WiFi komunikaci, doporučuji nahrát AT firmware. Pro použití samostatného ESP8266 musíte použít NodeMCU.

 

Použití ESP8266 a Arduina pro načítání teploty, vlhkosti a tlaku, a odesílání údajů na server ThingSpeak

Verze1:

Arduino UNO
   - LCD5110      - zobrazení hodnot
   - DHT22          - teplota a vlhkost
   - DS18B20      - venkovní teplota

   - BMP182       - tlak vzduchu

Údaje z tohoto zařízení najdete ZDE

 

Verze2:

Arduino NANO Pro
   - LCD5110      - zobrazení hodnot
   - HTU21D       - teplota a vlhkost

  

Flashování firmware:

Pro to, aby jste mohli nahrát do ESP8266 firmware potřebujete USB To RS232 převodník. Já používám převodník osazený čipem PL-2303HX. Mám vyzkoušené že bez problému funguje jak na Win XP, tak na Win7 a Linuxu.

Převodník s kabelem:
Vypínač propojuje signál GPIO0 na GND - tím se dostaneme do módu pro nahrání firmware. Při rozpojení vypínače potom převodník pracuje v normálním módu. Takže ho můžeme testovat a programovat pomocí např. BR@Y terminálu

Zapojení pro vypadá takto:

Ještě jednou:

Pro flashování použijeme jeden z těchto programů:

esp8266_flasher.exe
- jednoduchý flasher, který zvládne každý. Průběh flashování sice skončí chybovou hláškou, ale nemusíte mít strach, firmware je nahraný správné

nodemcu-flasher
- trochy složitější
, ale průběžně aktualizovaný flasher

Firmware:

ESP_8266_BIN0.92.bin
- firmware verze 0.9.2.2 Podle mě nejstabilnější verze. Bohužel u ní nejde měnit komunikační rychlost na sériovém portu. V případě připojení k Arduinu MEGA 2560 (TX1, RX1) to nevadí. U ostatních Arduin, kde je nutné připojit ESP8266 k SoftwareSerial emulovanému rozhraní by to vadit mohlo. Sice všude na internetu píšou, že softwarově emulovaný sériový port komunikuje maximální rychlostí 19 200 Bd, na mém Arduino NANO Pro běží bez problému na rychlosti 115 200 Bd.

v0.9.5.2 AT Firmware.bin
- firmware verze 0.9.5.2 Zde je mo
žné měnit rychlost příkazem AT+UART=9600,8,1,0,0 (klasika 9600,N,8,1,P)

Použití jednodušího flasheru je jasné, u druhého, složitějšího stačí vybrat COM port, ke kterému je připojený převodník. V sekci Config vyhledat příslušný firmware na disku. Potom se vrátit zpátky, a kliknout na Flash. Pokud flashování neproběhne, nebo nedoběhne do konce, spustit flashování znovu.

 

Doplněno 23.3.2017

Obě předchozí verze firmware jsou již trochu zastaralé, proto jsem se rozhodl doplnit tento návod o novější verzi AT firmware, včetně nového postupu nahrání do ESP8266.

Tento fw je rozdělený na několik částí, a proto bude třeba použít nodemcu-flasher.

Firmware stáhnete zde: esp_iot_sdk_v1.5.0_15_11_27.zip

Firmware rozbalíte do adresáře, a spustíte NodeMCU Flasher
Do Flasheru načtete jednotlivé soubory, nastavíte adresy, od kterých se mají jednotlivé soubory do ESP nahrát. Nezapoměňte zaškrtnout políčka ve sloupečku vlevo. Jinak by se vám nahrál jenom první soubor :-)

Potom spustíte nahrání FW do ESP8266-01:

Pokud se flashování nechytne napoprvé, zkuste to spustit několikrát znovu. Samozřejmě musíte mít při flashování propojené GPIO0 na GND. Adresy a další věci okolo tohoto FW jsou uvedené v souboru \bin\at\readme.txt který je součástí uvedeného .zip archívu.

I v tomto fw je možné měnit rychlost příkazem AT+UART=9600,8,1,0,0 (klasika 9600,N,8,1,P)

 

Po nahrání firmware odpojíme propojku mezi GND a GPIO0. Propojku mezi CH_PD a VCC ponecháme. Jinak by nám modul nekomunikoval. Spustíme BR@Y terminál Nastavíme správný port a rychlost 115 200 Bd. Do řádku dole potom budeme psát příkazy, v okně nahoře nám bude ESP8266 odpovídat.

Zadáme

AT
modul odpoví OK
AT+RST
modul vyp
íše několik řádků
AT+GMR
modul vypíše verzi FW

Nastavíme modul módu Clienta, necháme vypsat viditelná AP v okolí, a připojíme se k našemu AP
Zadávejte postupně do příkazového řádku tyto příkazy:

AT+CWMODE=1
AT+CIPMUX=1
AT+RST
AT+CWLAP
-zde by měl vypsat viditeln
á AP v okolí
AT+CWJAP="SSID","PASSWORD"
-nyní by m
ěl být modul připojený k AP
AT+CIFSR
- vypíše adresu, kterou mu přidělil DHCP server

Tím jsme hotovi. Modul můžeme klidně vypnout, nastavení připojení k AP zůstane v paměti. Takže když připojíme modul k Arduinu a zapneme napájení, automaticky se připojí k AP.

 


Když budete chtít používat ESP8266 samostatně, bude to vypadat takto:

Do modulu musíme použít jiný firmware.

Jedná se o LUA NodeMCU firmware.

Aktuální verze NodeMCU firmware najdete ZDE Program i postup flashování je stejný, jako v předchozím případě.

Já používám následující firmware:

nodemcu_integer_0.9.6-dev_20150704.bin -firmware, který počítá jenom s celými čísly (integer)
nodemcu_float_0.9.6-dev_20150704.bin -stejná verze, ale umí i desetinná čísla (float)

Bohužel, když jsem připojil k ESP8266 čidlo DHT22 pro měření teploty a vlhkosti vzduchu, nepodařilo se mi z tohoto čidla načíst jakékoliv údaje, i když z čidla DS18B20 data načítal bez problému. Po několika hodinách marného snažení jsem se někde dočetl, že poslední verze, která umí načítat data z DHT22 je verze nodemcu_float_dev20150311.bin Je to verze float, takže počítá s desetinnými čísly.

 

Po nahrání NodeMCU firmware si můžete opět spustit BR@Y terminál, a zkusit zadat příkazy z předchozího návodu. Zjistíte, že to nějak nefunguje :-) Ano, ale je to správně. NodeMCU firmware používá jinou příkazovou sadu.

Budete muset stáhnout a nainstalovat LuaLoader z TÉTO adresy

Pomocí tohoto programu potom nahráváte do modulu ESP8266 programy podobně jako do Arduina. Programy pro načítání hodnot z čidel DS18B20 a DHT22 si můžete stáhnout zde. Jsou to vyzkoušené (mírně upravené) funkční příklady.

esp8266_ds18b20
esp8266_dth22

Jediné, co musíte udělat je zaregistrovat se na ThingSpeak Potom v souborech doplnit SSID a PASSWORD vašeho AP, a APIKEY, který najdete v nastavení ThingSpeaku. Čidla jsou připojena na GPIO2 (PIN = 4). Soubor init.lua doporučuji nahrávat jako poslední :-)


Ještě pár slov k hardware.

Modul je napájen napětím 3.3V. Všude je uvedeno, že 5V nevydrží. Ale vydrží, a bez problému. Když jsem jej připojil k Arduino UNO, tak jsem ho omylem připojil na 5V. Všiml jsem si toho až po měsíci, když jsem chtěl přidat na desku další čidlo. Fungovalo to naprosto bez problému, ani ten čip nijak extra nehřál.

Větší problém je odběr samotného modulu. V klidu odebírá ze zdroje 20 - 40mA, ale jakmile začne vysílat, stoupne spotřeba na cca 170 - 220mA v závislosti na vzdálenosti od AP. A to už je trochu problém. Pokud bude modul připojený k Arduinům UNO nebo MEGA 2560 a podobným, tak to ještě stabilizátor osazený na těchto Arduinech vydrží. Ale stejně bych doporučoval připojit k napájecím pinům (+3.3V a GND) ESP8266 modulu elektrolytický kondenzátor minimálně 470µF/6.3V

V případě, že budete modul připojovat k Arduinu NANO Pro, tak si budete muset vyrobit vlastních 3.3V. Z NANO je sice vyvedených 3.3V, ale je to vyvedeno přímo z CH341 čipu. A tento výstup je dimenzovaný maximálně na 40mA, a to bych si už spíš z toho tahat nedovolil. Takže vám nezbyde nic jiného, než za 5V stabilizátor, který je na NANO osazená připojit ještě toto:

Jedná se o 3.3V lineární stabilizátor AMS1117-3.3 který bude z 5V vyrábět 3.3V pro napájení ESP8266. Kondenzátor 470µF/6.3V je v tomto případě samozřejmostí. Zkoušel jsem použít také lineární stabilizátor LM78L33 v pouzdře TO92, ale ten je dimenzovaný pouze do 100mA. Chvíli to vydržel, ale po čase se ohřál na takovou teplotu, že začala vypínat jeho tepelná ochrana. AMS1117 je dimenzovaný až do 1A (samozřejmě s příslušným chlazením).

 

Při použití samostatného ESP8266 je problém s napájením ještě daleko větší. V případě, že použijeme pro napájení 5V, tak bude pravděpodobně opět stačit AMS1117-3.3 a kondenzátor. Pokud ale budete chtít napájet modul vyšším napětím, případně ze dvou 18650 Li-Ion článků, tak nám už lineární stabilizátor stačit nebude. V případě použití 2 článků by byl na stabilizátoru úbytek 8.2-3.3=4.9V * 0.2A = 0.98W  - To je 1W ztrátového výkonu, takže stabilizátor by jednak hodně topil, a to tak, že by to nevydržel, a za druhé by z baterie odebral a propálil víc energie, než samotný ESP8266 modul.

Takže bude nutné použít spínaný stabilizátor:

Spínaný stabilizátor má tu výhodu, že do něj můžete pustit až 17V, a vždy z něho poleze nastavených 3.3V a bez obav, že bude topit. Ztráty na tomto stabilizátoru budou minimální. Kondenzátor v tomto případě nebude potřeba, protože zdroj je dostatečně tvrdý. Jeho cena je necelý 1$.

 

 


Pokud budete chtít s něčím poradit, napište mi na email dole.





Na hlavní stránku