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í: |
|
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 Údaje z tohoto zařízení najdete ZDE
|
Verze2: Arduino NANO Pro |
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: Zapojení pro vypadá takto: Ještě jednou: |
Pro flashování použijeme jeden z těchto programů: esp8266_flasher.exe nodemcu-flasher Firmware:
ESP_8266_BIN0.92.bin v0.9.5.2
AT
Firmware.bin 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) Doplněno 5.10.2017 Nová verze firmware: ESP8266_NONOS_SDK-2.1.0.zip Firmware rozbalíte
do adresáře, a spustíte NodeMCU Flasher 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 Nastavíme modul módu Clienta, necháme vypsat viditelná
AP v
okolí, a připojíme se k našemu AP AT+CWMODE=1 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.
|
|
Nakupujete moduly pro Arduino na eBay, nebo Aliexpress? Existuje zde portál, který vám za tyto nákupy vrátí až 5% zpět přes tzv. CashBack Jak to funguje: hlavně VÁS to nic nestojí. Stačí se zaregistrovat na tipli.cz Když potom chcete něco nakoupit na eBay, Aliexpress atd, tak se přihlásíte na Tipli.cz, a odtud teprve přejdete na obchod, ve kterém chcete nakupovat. Tam nakoupíte za NORMÁLNÍ cenu. Server Tipli.cz tanto nákup zaregistruje, a na váš účet vám pošle provizi až 10% z částky, za kterou jste nakoupil. To je vše. Zkusil jsem to, protože jsem si říkal, že nemám co ztratit, a ono to opravdu funguje :-) Nakupovat přes Tipli.cz můžete jak v zahraničních, tak v našich obchodech (MALL, Kasa, Baťa, atd.) Dříve jsem používal portál Plnápeněženka.cz. Sice jsem od nich dostal zpět skoro 3000 Kč, ale v poslední době jsem začal zjišťovat, že některé částky, hlavně ty vyšší se mi na Plnoupeněženku nezaregistrovaly. Nechci je obviňovat, že to dělají schválně, ale vypadá to tak. Navíc server Tipli.cz vrací vyšší částky z nákupu.
|
|
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) 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. 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$.
|
Jak dlouhý kabel mohu použít pro připojení čidla DS18B20 k procesoru při použití phantomového napájení (2 vodiče)? Toto je dost častý dotaz, se kterým se setkávám. Běžně je možné DS18B20 připojit na několik metrů. Na obyčejném síťovém UTP kabelu bude čidlo bez problému odesílat data na cca 5-10m. Pro větší vzdálenost, cca 15m jsem použil stíněný audiokabel. Stínění jsem připojil na GND, a střední vodič na DATA. Pokud ale chcete použít ještě delší kabel, je to možné, ale je třeba dodržet jedinou podmínku: na čidlo se nesmí dostat záporné napětí. Sice neodejde, ale nekomunikuje. Takže k čidlu je vhodné dát paralelně Shottky diodu v obráceném směru a do série s výstupem do procesoru dát rezistor okolo 50 ohmů, aby pulzy neměly tak strmé hrany (s kapacitou kabelu tvoří RC člen) a nevznikaly takové odrazy na kabelu. Zkoušel jsem takto připojit DS18B20 na konec smotaného UTP kabelu o délce cca 200m, a i na tuto vzdálenost komunikoval celkem bez problému. Zde je schéma pomocného obvodu:
|
|
Proč mi nejsem
schopen naprogramovat ESP8266-01 převodníkem, který jsem
koupil na
eBay, a který je určený přímo pro tuto desku? Opět jeden z dotazů, který mi často chodí. Tazatel koupil tento převodník, a není schopen s ním naprogramovat ESP8266-01 Tento převodník je sice určený pro ESP8266-01, ale pouze pro KOMUNIKACI. Je na něm propojený pouze signál CH_PD na VCC. Aby bylo možné pomocí tohoto převodníku ESP i naprogramovat (buď nahrát firmware, nebo jej programovat v Arduino IDE), je nutné na něj doplnit propojku mezi GPIO0 a GND (viz schéma nahoře). Já jsem použil malý vypínač, ale je možné použít 2 piny a propojku ze staré základní desky. Propojkou si potom nastavujete, jestli chcete s ESP komunikovat pomocí terminálu (např. AT přikazy), nebo jej PROGRAMOVAT. Před programováním vždy vytáhnete převodník z USB počítače, propojíte propojku, a vrátíte ho zpět do USB. Spustíte nahrání programu např. v Arduino IDE. Potom převodník opět vytáhnete z USB, zrušíte propojení vrátíte ho zpět, a potom s ním můžete komunikovat.
|
|
|
|
|
|
Pokud budete chtít
s něčím poradit, napište mi na email dole. |
|
|
|
Na hlavní stránku |