ESP8266 pro začátečníka – jak to vlastně zapojit

esphowto_webV posledních dnech jsem se několikrát setkal s problémem, že někteří čtenáři by chtěli použít samostatný modul ESP8266 (většinou ESP-12), ale netuší, jak ho zapojit, aby správně a hlavně spolehlivě pracoval. Rozhodl jsem se tedy, že napíšu článek, ve kterém se pokusím shrnout moje zkušenosti a popsat zapojení, které používám a se kterým jsem spokojený.

Nejdříve několik poučení:

  1. NIKDY nepřipojujte GPIO vývody ESP přímo na 3V3, nebo GND!!! Na některé z nich jsou při startu programu generovány signály, které můžou poškodit vnitřní tranzistory, pokud jsou zapojeny “natvrdo”.
  2. POUŽÍVEJTE KVALITNÍ NAPÁJECÍ ZDROJ – viděl jsem zoufalce, co se snažili o napájení ESP jen z 3V3 výstupu z FTDI převodníku – tohle (možná) může fungovat při nahrávání FW, ale určitě to bude zlobit při běžném běhu procesoru! Napájecí zdroje mám dimenzované na 3V3/500mA

Základní zapojení hardware vychází z doporučeného zapojení, které je vyobrazené v dokumentaci k Arduino jádru pro ESP8266

ESP_improved_stability

Postupem času jsem dospěl k mírným úpravám hodnot součástek, které popíšu dále, nejdříve ale k významu jednotlivých prvků:

Odpor R4 slouží k definování správné klidové úrovně na vstupu RESET SoC. Hodnota 10k je dostačující v laboratorních podmínkách, ale pro umístění do terénu, nebo průmyslového prostředí se mi osvědčilo snížit velikost na 4k7.

Odpor R1 slouží k definování úrovně na CHIP POWER DOWN vstupu, weak pull-up, který je integrovaný uvnitř SoC nestačí, takže je třeba připojit externí odpor 10k.

Odpory R2 a R3, společně s hodnotou na GPIO2, určují, jakým způsobem se SoC chová při zapnutí napájení. Možnosti jsou:

GPIO 0 GPIO 2 GPIO 15
UART Download Mode (Programming) 0 1 0
Flash Startup (Normal) 1 1 0
SD-Card Boot 0 0 1

Pro nás tedy připadají v úvahu UART Download Mode pro nahrávání firmware a Flash Startup pro běžný provoz. Hodnoty odporů, které se mi osvědčily jsou 4k7 jako R2 a 2k2 jako R3. Dále dávám ještě pull-up odpor 4k7 na GPIO2 – tento odpor ale není nutný, protože ESP12 zde má připojenou modrou signalizační LED, která zajistí správnou úroveň. Pokud chci ESP naprogramovat, tak to udělám tak, že GPIO0 stáhnu na GND přes odpor 120 ohmů a zapnu napájení. Počkám na probliknutí LED, GPIO0 uvolním a začnu hned nahrávat firmware.

Kondenzátor C1 slouží pro blokování napájecího napětí – multimetrem sice naměříte odběr cca 60mA, ale ve skutečnosti jsou v okamžicích vysílání proudové špičky, které sahají i přes 300mA. Proto k tomuto kondenzátoru dávám ještě paralelně kvalitní elektrolyt s kapacitou minimálně 47uF – velice hezké video s vysvětlením na toto téma je k dispozici třeba zde .

Snížená spotřeba – režim Deep Sleep

Prakticky jediná zatím prozkoumaná metoda, jak snížit odběr a tím umožnit alespoň nějaký provoz na baterie je využití DeepSleep režimu. Princip je jednoduchý – před přechodem do DeepSleep, který v podstatě celý systém zastaví, se nastaví časovač na požadovaný čas. Po jeho vypršení se na vývodu GPIO16 objeví úroveň L. Spojením GPIO16 s vývodem RESET přes odpor (bohužel hodnota odporu se občas musí laborovat – mě se zatím osvědčila hodnota 150 ohmů), docílíme restartu celého obvodu po vypršení timeoutu. Vše tedy funguje tak, že ESP je v zadaných periodách resetováno – zde musím trošku odbočit k firmware. Zjistilo se totiž, že pokud po každém startu znovu nastavujeme WiFi část pro připojení k AP, tak SDK stále přepisuje svoji vnitřní konfiguraci, která je uložená ve Flash paměti. Bohužel ale má tato paměť omezený počet přepisů, což při bateriovém napájení a častém používání Deep Sleep může vést k rychlému poškození paměti a výpadku zařízení. Obejít se to dá tak, že se zakáže SDK ukládání konfigurace do flash. Na konci článku je ke stažení nová verze knihovny WiFiConfig, která to již má takto ošetřeno (současně ošetřuje občasné poškození WiFi flash konfigurace, na které narazil pan Šimoník).

No a to je vlastně všechno… Nebo vlastně ještě ne – byl jsem jedním čtenářem, začátečníkem, požádán, abych věci ještě zjednodušoval a více vysvětloval. Víte bohužel o tomto tenhle web být neměl – nechci zde vysvětlovat základní programové konstrukce, nebo funkce všech knihoven, které jsem použil, k tomu se necítím být způsobilý – zejména pokud jsem je nenapsal já a jejich funkci znám jen ze studia jejich zdrojového kódu. Milerád vysvětlím, co bude třeba, ale rozhodně ne jako primární náplň, protože to bych nedělal nic jiného a moje projekty by stály 🙁 ledaže by pomohl někdo další…

WiFiConfig
WiFiConfig
WiFiConfig_4.3.zip
Version: 4.3
11.3 KiB
2125 Downloads
Detaily

91 komentářů u „ESP8266 pro začátečníka – jak to vlastně zapojit“

  1. Super článek. Na mnoha webech jsem se dočetl právě o použití přímo napájecího napětí na pinech Gpio0 i CH_pd na E-12e označeného jako EN. Gpio15 pak mají přímo na zem. S takto bez odporů připojenými piny se celý modul začne dost hřát ale pokud to nemáte zapnuté dlouho přežije. Dokonce se mi podařilo zapojit omylem na pár vteřin na napájení 5V a modul to přežil a funguje – rozhodně to ale nedoporučuji nikomu zkoušet 🙂 .

  2. Ještě dodatek, já využívám jako zdroj pulsní měnič step Down odtud
    http://www.aliexpress.com/item/15924-Free-shipping-DC-DC-Step-Down-Converter-Module-LM2596-DC-4-0-40-to-1/32354635261.html?spm=2114.10010108.1000014.1.iDvQhg&scm=1007.13338.35813.0&pvid=ebdefc85-008a-413f-92e3-fae309bb566d&tpp=0

    Ale pozor tento měnič je výborný při připojení na vyšší stabilní napětí pokud ho připojíte třeba na solar a napětí bude stoupat pomalu může měnič nejprve začít kmitat na nižší frekvenci a než najede na správnou dojde k překmitum napětí oproti nastavenému až o 0,7V. Potom je vhodné použít spíše toto

    http://www.aliexpress.com/item/DC-DC-Step-Down-Power-Supply-Buck-Module-For-Arduino-4-5V-7V-to-3-3V/32593069829.html?spm=2114.30010308.3.36.QXaAvg&ws_ab_test=searchweb201556_0,searchweb201602_3_10037_10017_405_404_407_10033_406_10032_10040,searchweb201603_4&btsid=9ae1318a-62b8-4542-b4b0-499975edfdd9

  3. Je pravda, že ty největší pitomosti se webem šíří nejrychleji. Někdo namaluje GPIO zapojený přímo na Vcc nebo GND a všichni ve snaze ušetřit jeden rezistor to kopírují.
    Já bych hodnoty rezistorů viděl méně kriticky než ty, držím se spíš těch 10K. Pro wakeup jsem zkoušel rezistory cca 330R až 3K3 a vždy to spolehlivě fungovalo. Ale fajn, že šíříš osvětu, jak neustále s překvapením zjišťuji, je to velmi třeba.

  4. Jaké všechny piny je možné na esp12e použít bez omezení?
    Zkouším tlačítko na pin 16 a nějak se mi nedaří, ani základní funkce digital read. Že fungují dle očekávání piny GPIO 4,5,12,13,14 mám ověřeno, ale je třeba nějak možno využít i GPIO2,15, a zatím jsem netestoval ADC, to bude v IDE jako A0 ? A nebo jej lze použít jako další digitální pin?

  5. Ještě k tě pinům dle netu jsou D0,1,2,3,4,5,12,13,14,15,16 jen jako digitální I/O piny. TO by znamenalo že analogově lze použít ten ADC a to je vše? Nelze ty digitální piny překonfigurovat na DAC či ADC převodníky?

  6. mám vyzkoušeno analog write na 12,13,14,15
    na 4,5 I2C a dál už není skoro kam něco připojit
    pokud potřebuješ více analog vstupů stačí vybrat nějakej 3.3V I2C převodník.
    PWM na esp má možnost nastavit kmitočet a rozsah příkazy: analogWriteFreq(500);
    analogWriteRange(255); – tohle je jako klasické arduino – ale je tam trochu ošizené řešení s mízkými střídami – impils se přestane zkracovat, ale začnou být impulzy vynechávány, takže se snižuje pwm kmitočet. Testoval jsem to s 1000Hz a 1000 rozsahem pro led stmívač, a pobliknutí bylo patrné jenom když mělo ESP moc práce s webem. Gpio 16 mi nefunguje jako vstup, ale to jsem jaksi vytušil z dokumentace výše, že mě to nemá překvapovat. Tak mám vstup na gpio 2 a při stisku tlačítka se rozsvítí led na esp jako bonus…

  7. Dobrý den
    Tím analogovým výstupem na 12,13,14 a 15 myslíte to že mají DAC převodníky? V manuálu jsem to nějak nenašel. Pokud ano chodí do 3V? Díky za odpověď.

  8. Zdravím.
    Jsem bastlíř amatér a momentálně si hraji s dvěma Wemos D1 mini + DHT11 a Relay. Snažím si vyrobit “bezdrátový” termostat k plynovému kotli. Původní mi na jaře odešel 😉
    Chtěl bych se zeptat zda problém s přepisem flash při DeepSleep a konfiguraci WiFi se týká i v případě, že používám standardní knihovny? Děkuji za odpověď.

    1. Dobrý den,
      problém s přepisem se týká i vestavěného WiFi objektu, pokud používáte po každém probuzení nové nastavení konfigurace. Pracuji na řešení, ale nevím, kdy bude hotové.

      1. Díky za odpověď.
        Pokusil jsem se udělat proměnnou, která když bude na startu rovna 0, tak se provede nastavení WiFi a doufal jsem, že před uspáním tuto proměnnou změním na 1, tak aby se po probuzení již nevolala procedura pro nastavení WiFi. Doufal jsem, že tím zabezpečím, že WiFi nastavení se nastaví jednou “navždy”. Po spuštění se mi ovšem zdá, že po probuzení je proměnná vždy rovna 0 a tak i přes můj pokus dochází k novému nastavení WiFi.

        1. To se nedivte. Probuzení z deep sleep je de facto normalni reset, který nuluje ram. Zkuste využít paměť, která je v RTC oblasti… ta není po resetu modifikovaná.

          1. Tak nakonec jsem to vyřešil (opětovná konfigurace Wifi při probuzení po DeepSleep) tak, že na začátku v setup() zjišťuji informaci o typu provedeného resetu (rst_info* resetInfo = system_get_rst_info();) a v případě, že se jedná o probuzení z DeepSleep (REASON_DEEP_SLEEP_AWAKE = 5) tak se neprovádí konfigurace Wifi (standardně pomocí IF).

          2. Hele to je super nápad. Já to sice v poslední verzi WiFiConfig taky nějak (částečně) vyřešil (viz. poslední článek o šabloně), ale spokojený vůbec nejsem. Tohle je fakt dobrá vychytávka – nevěděl jsem, že mezi důvody resetu je vzbuzení z deep sleep. Díky.

        2. Mohly bych se zeptat jak presne vypadá kod pro to aby nebolo třebapři probuzeni konfigurovat wifi, neco sem vymyslel, ale nejsem si jist jestli je to spravně

          1. V setup():
            ————–
            rst_info* rinfo = ESP.getResetInfoPtr();
            reset_Info = rinfo->reason;

            if(reset_Info != 5) {
            spln(“Start…”);

            sp(F(“ResetInfo.reason = “));
            sp(reset_Info);
            sp(F(” …. “));
            sp(interval/1000);
            spln(F(” seconds waiting.”));
            delay(interval);

            spf( “Connection to %s “, ssid );
            WiFi.mode(WIFI_STA);
            WiFi.begin(ssid, password);
            while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            sp(“.”);
            countConnect += 1;
            if(countConnect == 120) ESP.restart(); //Restart ESP po 60sec nepripojeni k WiFi
            }
            } else {
            spln(“Wake up from DeepSleep…”);

            sp(F(“ResetInfo.reason = “));
            sp(reset_Info);
            sp(F(” .”));

            spf( “Restoration of connection to %s “, ssid );
            }
            ————-
            Doufám, že to pomůže. I když trochu pozdě 😉

  9. REASON_DEFAULT_RST = 0
    REASON_WDT_RST = 1
    REASON_EXCEPTION_RST = 2
    REASON_SOFT_WDT_RST = 3
    REASON_SOFT_RESTART = 4
    REASON_DEEP_SLEEP_AWAKE = 5
    REASON_EXT_SYS_RST = 6

    1. jj, už jsem to taky našel – já používal prakticky jen textové vyjádření ESP.getResetReason() pro ladící účely… Díky.

  10. Rád bych se zde zeptal na jednu věc, snad to napíšu dobře.
    Hraju si s ESP, ale rád bych přešel na praktické použití. A narazil jsem na problém s napájením. Ať už se jedná o spínání relé, nebo měření teploty, na určeném místě obvykle není 3.3V.
    Nejednoduší by bylo napájet to přímo z 230V -> 3.3V. Našel jsem zdroj/konvertor na ebay. Teoreticky by měl fungovat.
    Nicméně se chci zeptat jestli neexistuje nějaká jiné cesta. Někde jsem viděl zdroj 230v->5v ->3.3V. Ale nebylo tam vidět co používají.
    Snad jsem to napsal k pochopení a za případné chyby v termínech se omlouvám.

    1. Dobrý den,
      hodně záleží na tom, na co si troufáte a jaké máte zkušenosti s napájením z 230V. Pokud jste schopný bastlíř můžete použít napájecí zdroje jako je např. tento https://www.aliexpress.com/item/HLK-PM03-AC-DC-220V-to-3-3V-Step-Down-Buck-Power-Supply-Module-Intelligent-Household/32598030662.html?spm=2114.01010208.3.50.sD9bTw&ws_ab_test=searchweb0_0,searchweb201602_3_10056_10065_10055_10068_10054_10069_10059_10073_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_7&btsid=d94c9be8-7708-4338-8036-cf76627dbcb9 (obecně zdroje z Hi-Linku nemají špatné reference – hezká konstrukce je např. zde http://hristoborisov.com/index.php/projects/switcher-a-wifi-open-source-power-switch/ ), pokud však nemáte zkušenosti, doporučuji použít vnější zdroj, třeba 12, nebo 5V a k ESP8266 doplnit malý stabilizátor na 3.3V.

      1. Rozumím, zase tolik zkušeností s 230V nemám.
        Na ty HiLinky jsem koukal a libí se mi, pokud by zapojení bylo jen takovéhle co jsem našel http://www.fery-borec.cz/wp-content/uploads/zapojení.jpg pak by to nebylo těžké. Jestli by to takhle dostačovalo. Což nedovedu posoudit.
        Našel jsem i tyhle moduly http://www.ebay.com/itm/1PCS-AC-DC-Power-Supply-Buck-Converter-Step-Down-Module-Chip-3-5W-700mA-5V-/181946900693?hash=item2a5ce160d5 jen nevím jak jsou na tom kvalitně.

        1. No přiznám se, že v tom zapojení se moc nevyznám – nejsou popsány vývody. O tom modulu, co jste poslal odkaz nevím vůbec nic – můj názor je, že ušetříte necelý dolar za cenu velkého rizika…

          1. Díky, za odpovědi. Snad vše dopadne dobře 🙂 Šetřit se nevyplatí na tohle místě.

  11. Měl bych začátečnický dotaz, protože přecházím z AVR.
    U tohoto modulu nemusí být pro nahrání programu pomocí seriové linky žádný “bootloader”? Při správném zapojení prostě jenom přepínáním GPIO 0 určuji, zda se programuje prázdný čip, nebo používá dříve nahraný program?

    1. Bootloader je obsažený v interní ROM SoC a obsahuje sériový zavaděč, SDIO klienta a SPI flash zavaděč, jeho funkce je ovládána GPIO0, GPIO2 a GPIO15 při startu systému.

      1. Děkuji za odpověď a mám další začátečnický dotaz.

        Při programování v Arduino IDE musím u “Generic ESP8266 module” zadat také nějaké další parametry jako např. flash mode, flash freqvency, CPU frequency a flash size. Jak je mohu zjistit? Přiznám se, že u všech si nejsem jistý co přesně znamenají.

        V mém případě mám “bílé čínské” moduly označované jako ESP-201. Procesor ESP8266EX, flash paměť 25Q41BT + krystal 26MHz.
        A co znamená u flash paměti v datasheetu označení velikosti číslo v závorce 4Mb(512KB)?

        1. Na většinu těchto dotazů se dá najít odpověď na internetu – zkuste příště prosím nejdřív hledat odpovědi s pomocí google. Takže k dotazům:
          U Generic ESP8266 je většina implicitního nastavení správná, mění se pouze velikost dostupné Flash paměti dle Vašeho modulu společně s rozdělením této paměti (velikost SPIFFS) dle potřeby aplikace. Kmitočet hodin ESP nechávám na 80MHz, pouze pro časově náročné aplikace (přehrávání MP3) zvedám kmitočet na 160MHz. Reset metodu dávám na nodeMCU, ale to opět záleží na desce, kterou máte připojenou. Upload Speed dávám na 256000 (Windows) 230400(Linux) … to jsem zde ale tuším už někomu psal (nebo to bylo mailem?…. – uff, těch dotazů je už fakt hodně).
          Co se týče velikosti Flash paměti, tak ke studiu třeba zde https://www.oempcworld.com/support/mb_vs_mbits.html

  12. A jó, já jsem si nevšiml, že velikost paměti je v Mega bitech a nikoliv Mega Bajtech 🙂
    Tak to je jasná věc a moje chyba.

    Nicméně opravdu jsem dost Googloval, než jsem se osmělil zde zeptat 🙁

  13. Zdravím,
    jedná se mi o Wemos D1 mini. Když to napájím přes USB konektor /jak z PC tak z adaptéru), tak připojené relé funguje (napětí na 5V pinu je 4,48V). Když to napájím přímo do pinu 5V (naměřemo ale 5.3V) z adaptéru pro nějaký telefon, tak relé nereaguje na stav ovládacího pinu.
    Co by tam mohlo být za zádrhel? Je to tím vyšším napětím?
    Děkuji.

    1. Dobrý den,
      tady těžko radit – myslím, že pomůže jen měření. Zkuste osciloskopem měřit napětí na modulu s relé, jestli se nezhoupne. Zkuste připojit blokovací kondenzátory (spíš elektrolyty, aby byla pokrytá impulzní spotřeba při přitažení relé)… Vyšší napětí by vadit nemělo, ale bohužel v tom nevidím logiku, protože jediný rozdíl mezi napájením z USB a z +5V pinu je dioda, osazená na Wemos D1 mini (aspoň dle schématu).

  14. Díky. Nemám osciloskop, a tak jsem zkusil přepájet jiný zdroj. Začalo to fungovat, ale stále trochu podivně. Mám to na pinu D4 a stav je tedy indikován modrou led. Když dám pin do nuly, tak se ledka rozsvítí a ihned reaguje rele. Když nastavím do 1, tak ledka zhasne a rele zareaguje až po 5s. Je to podobné relé, jako je http://www.ebay.com/itm/5V-12V-24V-30A-1-Channel-Relay-Module-Optocoupler-H-L-Level-Triger-for-Arduino-/131585071322?var=&hash=item0

    Takové podivné to stále je.

    1. Hmm, tohle vypadá, jak kdyby byl přetížený výstup ESP (vstup pro ovládání relé bral příliš velký proud a chvíli trvá, než se nabije nějaká vnitřní kapacita). Nemáte náhodou odkaz na tu destičku s relé? … ještě moment – Vy to máte připojené na GPIO2? Pokud ano, zkuste použít jiný výstup (nejlépe nějaký, který nemá ani pull-up, ani pull-down). Předpokládám, že výstup (pinMode) jste neopomenul nastavit do režimu OUTPUT.

  15. Přepájel jsem to na volný D0, ale je to ještě horší. Teď neodpadne vůbec.
    Ale divné je, že když jsem ten zdroj použil přes usb (než jsem ho rozkuchal), tak to chodí jak má. Mezi tím USB konektorem a pinem 5V něco asi musí být.

    1. No podle schematu Wemos je tam jen ta dioda. Meril jste multimetrem aspon staticke hodnoty napeti na vyvodu toho D1 pri nastaveni na H a pak takz na L?

  16. Tak jsem to proměřil. Při H bylo na D0 3.344V a při L pak 112,2mV.
    Potom jsem přehodil propojku způsobu ovládání relé a ejhle, už to funguje (na tom původním pinu D4 to ale nemělo vliv).
    Teď je při H těch 3.34V ale při L pak 0 a dokonce to problikává do mínusu. Už jsem měl připravenou schottkyho diodu, že ji tam ze zoufalství dám.
    Už to funguje i když mi to chování není jasné. To relé je dobré, že dokáže spínat 30A.
    Už jsem se sice ptal, ale nevím, zda jsme se pochopili. Program jde nahrát přes OTA, ale když pak zvolím Seriál monitor, tak to chce Zadejte heslo ke konzoli vývojové desky, ale i po zadání hesla se to objeví znova. Asi to takto jednoduše nejde?
    To asi nemá stejné možnosti jak port Com, aby to
    Díky

    1. Sériový monitor nejde při použití OTA použít přímo. Musíte buď vybrat zpět sériový port, nebo použijte makro TRACE a webovou stránku /trace pro výpis – sám to tak používám.

  17. zdravim, mam dotaz na ESP8266 v provedeni s vystupem na ext.antenu, pouzil jsem vzorove zapojen pro vyzkouseni funkce, vse se zobrazilo tak jak ma,nazev WiFi ale nelze se k ni pripojit pres Operu a pro zadani adresy bz se mel obevit v prohlizeci text testu, ten tam neni, asi delam nekde chybu ale nevim kde…..

    1. Dobrý den,
      asi někde chybu děláte, ale z napsaného nedokážu určit kde. V kontaktech je na mě mail – zkuste mi napsat víc informací a můžu se na to podívat…

  18. dobry den,
    prosim o radu. Mam propojene arduino s ESP8266, ktery ovladam pres AT prikazy. Modul esp8266 nastavim do deep sleep modu ( s parametrem 0 ms) a potrebuji ho probudit vzdy nejakou externi udalosti. U mne pri zaznamenanim pohybu na detektoru pohybu (pripojenem k arduinu). Nicmene jsem nepochopil jak to zapojit. V dokumentaci jsem nasel informaci: “In Deep-sleep mode, the chip can be woken up and initialized by a low-level pulse generated on the EXT_RSTB pin via an external IO.” Kdyz jsem googlil, tak jsem nasel par tipu, ale nebyl jsem z nich moc moudry, jak to cele zprovoznit.
    Kdyz propojim nejaky digitalni vystup na arduinu s RST pinem na ESP modulu (za predpokladu ze nemam propojen RST s GPIO16) a nastavim ho na HIGH a pak na LOW, tak to vypada, ze nejaky reset probehne jenze nejde se pripojit na wifi. Jinak zapojeni ESP-12 mam stejne jako doporucujete v tomto clanku.
    Dekuji.

  19. dobry den, dik za stranku, škoda ze neni po anglicky, davam odkaz stranky na instructables.

    1. Díky. Chtěl jsem ale, aby aspoň něco bylo i pro České (a Slovenské) bastlíře v co nejsrozumitelnější formě…

  20. ja som pouzil esp8266 12 jako logger. Strasne mi to blbe, nekdy skolabuje a piše v serial monitoru take blbé riadky furt. Moze byt problém v breadboarde (nepájive pole) a v kontaktoch medzi kablom a plieškom na breadboarde?

    1. Problém v tom být může, ale nejdříve se zeptám jinak – máte použitý nějaký vývojový kit, nebo jen surový modul?

  21. Dobrý den
    uměl by jste vytvořit příklad pro
    začátečníka – marně zkouším jak pomocí wifi blikat led ?
    na nodemcu esp 12e na D0
    z php skriptu který ukládá změny do file localhost/wifiled/ledblik.json.

    Php skript běží na PC a server je na 127.0.0.1

    wificlient mě částečně funguje z DHCP na 192.168.4.1

    1. Dobrý den,
      nechápu několik věcí – adresa serveru 127.0.0.1 je localhost a to je špatně – tam se ESP nedovolá. V tom JSONu je co přesně a kdo to tam ukládá (nějaký jiný běžící PHP skript)? To ESP se má periodicky dotazovat serveru jen na ten JSON, nebo na nějaký PHP skript?

      1. Děkuji za rychlou odpověď.
        cíl byl použít z pc další, php,databázové, grafické…. možnosti
        a ovládat z neveřejného PC bezdrátově zařízení

        Ano do ledblik.json to ukládá php skript

        takže volat pokud nejde z localhost(127.0.01)
        volat z ESP z fille:\\\c:něco\ledblik.json…….
        ???
        nebo jak ???

        1. Volat přes ip adresu toho PC, kde běží server (otevřít firewall pro webový server!). Pokud je v tom JSON obsažený stav LED (což jsem se zatím nedozvěděl), tak z ESP periodicky pomocí http klienta stahovat ten json, rozparsovat a udělat co je třeba.

  22. >>Volat přes ip adresu toho PC, kde běží server
    adresa pc je tedy jaká když je to server (localhost == tedy adresa 127.0.0.1)

    adresu nodemcu mám nastavenou někde pravděpodobně ve firmware a DHCP PC mě ji načte vždy na 192.168.4.1

    >>v tom JSON obsažený stav LED
    Ano v json je stav led měněný po stisku tlačítka pomocí skript.php

    periodické stahování ze souboru ledblik.json pomocí http klienta nefunguje
    //zkoušeno při použití httpclient z arduino examples teď z hlavy nevím jaký jsem použil skeč příklad.

    1. To přece víte jen Vy, jakou adresu má Vaše PC (nebo ji můžete zjistit), že to je server nemá na nic vliv. Adresa 192.168.4.1 je základní adresa ESP, takže z toho nic nepoznám – větě “PC mě ji načte” nerozumím vůbec. Pokud něco nevíte z hlavy, tak se laskavě namáhejte to zjistit – chcete vyřešit Váš problém a já nehodlám věnovat čas tomu, abych z Vás páčil informace, bez kterých se prostě pokračovat nedá. Takže pro začátek třeba:
      1. máte připojené ESP do WiFi sítě na které je i PC? (adresy obou zařízení?)
      2. funguje ping z PC na adresu ESP?
      3. jakou chybu to hlásilo když nefungoval http klient?

  23. while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(“.”);
    }

    serial z arduino IDE hlásí samé tečky přitom je ESP připojeno

  24. dresa 192.168.4.1 je základní adresa ESP, takže z toho nic nepoznám – větě “PC mě ji načte” nerozumím vůbec
    ///== pc mám na DHCP

    #include

    void setup()
    {
    Serial.begin(115200);
    Serial.println();

    WiFi.begin(“network-name”, “pass-to-network”);

    Serial.print(“Connecting”);
    while (WiFi.status() != WL_CONNECTED)
    {
    delay(500);
    Serial.print(“.”);
    /// WiFi.status()) říká 1 : WL_NO_SSID_AVAILin case configured SSID cannot be reached
    }
    Serial.println();

    Serial.print(“Connected, IP address: “);
    Serial.println(WiFi.localIP());
    }

    void loop() {}

    1. WL_NO_SSID_AVAIL znamená, že SSID, které je zadané jako parametr WiFi.begin() v okolí rádio ESP nevidí. Je třeba ověřit, zda jsou správně zadané parametry ve WiFi.begin, dále se může stát (i když v posledních verzích SDK jsem se s tím setkal už jen v mizivém procentu případů), že je problém v kompatibilitě s AP – co máte za AP, na jakém kanálu vysílá SSID, jak máte nastavenou šířku kanálu (20/40MHz), je SSID skryté?

  25. Zdravím,
    mám doptaz. Někdy mi ESP zatuhne,asi v SoftwareSerial. WebServer běží. Jde nějek udělat watchdog, který by ESP resetoval, když po nějaké době nevykoná poslední příkaz v LOOP? Zatím marně hledám na netu. Asi bude potřeba externí watdog? Našel jsem STWD100.
    Děkuji.

    1. Dobrý den,
      SoftwareSerial skutečně má problém, ale ten se mi projevuje v řádech jednotek až desítek hodin intentívního používání a rozhodně vyvolá restart. ESP obsahuje dva watchdogy – SW a HW, na které se celkem dá spolehnout. Píšete, že webserver běží – pokud používáte asynchronní, tak bude diagnostika horší, ale pokud používáte ten, co je součástí Core, tak se loop určitě vykonává (je nutné obsluhovat .handleClient()), jinak by to nejspíš spadlo na problém s RAM. Zkuste doplnit manipulaci s nějakým volným GPIO do různých částí kódu a ve chvíli, kdy dojde k výpadku zkuste osciloskopem zjistit, co se asi stalo.

      1. Díky za odpověď. To mi teda nedošlo, že se LOOP vlastně musí provádět, aby server fungoval. Mám tam připojeny LCD displej přes I2C a bral jsem jako samozřejmé, že ESP je seklé, když se neaktualizovaly údaje.
        Chyba nebude ani ve vaší knihovně interval, protože ostatní instance fungují. Takže problém bude v komunikace ESP a LCD po I2C.

        1. V Interval by chyba mohla být, ale ta by se projevila cca po 49 dnech trvalého provozu (jako teď řeší v ESPEasy), ale já mám doma jeden EasyTherm běžící trvale kvůli testům stability a ten má uptime 169 dní, přičemž intervaly používá intenzívně. Taky ale hodně používá I2C, které přepíná mezi dvěma konektory, takže asi bez podrobnější zanlosti Vašeho kódu dál moc neporadím…

  26. Dobry den,omlouvam se asi za hloupy dotaz. Na ESP8266-07 mam nahrane EspEasy (120), pripojen jeden LCD přes I2C zobrazuje zatím jen pozdrav. Vse bezi do restartu. Pak je mrtvo. K WiFi se nepripoji, LCD zhasnute. Když se pokusim nahrat EspEasy znovu, nedojde ke klasickému startu, jako při prvním nahrani (není ciste). Nemusim totiž nic delat, pripojovat WiFi, zadavat hodnoty pro LCD… vse si zmetek pamatuje a normalne funguje, zase jen do restartu. Pro kontrolu jsem nahral example s blikanim modre LED, chova se stejne. Nahraji, blika, vypnu/zapnu, neblika. Zapojeni jsem zkusil z těchto stranek s 10K odpory a pak jej predelal na ty modifikovane hodnoty. Je to stále stejne. Nenapada nekoho něco? Bonusova otázka: da se ESP “smaznout” do továrního nastaveni? Na netu jsou rady jak, ale všechny pocitaji s funkcnim modulem. Ocekaval bych moznost “HW” resetu (něco s necim spojit a nastartovat). ESP-01 s EspEasy mi beha uplne v poho, jen ma malo pinu. Diky fest!

    1. Dobrý den,
      to, co popisujete je typické chování ESP ve chvíli, kdy máte GPIO0 připojené na GND/0/L – logika je v tom, že při startu kontroluje vnitřní bootloader v ESP piny aby určil, jak bude zavádět program. Podle všeho si myslí, že běží v serial bootloader režimu, takže Vás nechá firmware nahrát, pak ho spustí a FW běží až do dalšího vypnutí/zapnutí. Zkontrolujte stav GPIO0 a dejte pozor, co k němu máte připojené…

  27. Jen R2 4K7 na 3,3V. Ale mam to na univerzalu, doma proverim, není-li tam nekde nejaky vodivy nepořádek. Pro nahravani mam propojku. Bez ni nenahrava, tak si myslim, ze to tim nebude, ale proverim. Jinak psali jsme si o ESP-01 a jeho obcasnem smaznuti. Mel jste pravdu, bylo za tim napajeni. Jedna baterie mela kontakt “jen tak tak” a občas zakmitala. Ted je vse OK
    Diky

    1. Na tuhle situaci mám takový malý trik – pokud při zapnutí napájení mrkne modrá LED na modulu aspoň 2x, tak se spouští aplikace z Flash. Pokud mrkne jen jednou, tak běží bootloader. Zkuste, uvidíte a dejte vědět…

  28. Mrka jen jednou 🙂 ale mam to doma, vse proverim, třeba jsem se dopustil (doufam) nejake hrubky. Kazdopadne dam vedet, muze se to hodit i nekomu dalsimu.

  29. Nedalo mi to, zajel jsem domu kouknout na tistak 😀 , no… Na velkem univerzalu jsem si nakreslil rozmery budouci desky, naletoval a nechodilo, viz víš. Problém byl v tom, ze cesty pro napajeni jsou podel celého tistaku a ja mel mimo vyznaceny prostor pro tento projekt, propoj. Po odstraneni, sice modra LED nadále při startu blikne vždy jen jednou, ale zbytek se chova normalne. Ještě jednou dekuji za navedeni. Sam bych se o tech 8cm vedle asi nikdy nepodival.

    1. Tak hlavně, že to funguje… Schválně jsem hledal, kde jsem přišel na ty dvě bliknutí a už vím, jak to vzniklo. ESP s AT firmwarem skutečně při zapnutí napájení bliknou 2x, ale po přehrání už bliknou jen 1x, takže ten můj trik funguje jen pro AT firmware 🙁 , takže na něj NESPOLÉHAT!!!

      1. Mám připojenu LED na GPIO13 proti zemi. Pokud aktivuji bootloader, tak se naprosto spolehlivě tahle LED trošičku rozsvítí. Používám to jako spolehlivý indikátor. Možná se aktivuje pullup, nevím, dalo by se to zjistit, ale tak důležité to zas není.

        1. No myslím, že jsem někde zahlédl informaci, že na jeden GPIO je během práce bootloaderu puštěný nějaký hodinový kmitočet, ale nevzpomínám si přesně na který pin a co to bylo za hodiny…

  30. To neni moc navod po zacatecnika.
    Jsem totalni noob, mam Wemos D1 mini a jsem schopen rozblikat diodu, programovat umim. Ted bych ten cip chtel propojit treba s LED paskem. A jak to vlastne zapojit? Tenhle clanek mi vubec neporadi. Jak a kam to zapojit do nepajiveho pole? Jaky zdorj a kam pouzit? Muzu to napajet pres USB do toho ESP8266 cipu, nebo musim elektrinu zapojit do nepajiveho pole? Pokud do pole, tak kam? A kam zapojit cip? Dekuju za odpovedi, jsem mirne zoufaly, a zaroven dost nastvany z takovychto clanku, ktere tvrdi, ze jsou pro zacatecnika, ale zakladni principy naprosto opomijeji

    1. Dobrý den,
      doporučuji se nejdříve pořádně nadechnout a zamyslet, než začnete ze svých neúspěchů, nebo neznalostí obviňovat okolí. Myslím, že je dostatečně jasně uvedené, že článek popisuje zapojení samostatného modulu ESP-12, nikoliv kompletního kitu, kterým je deska Wemos D1. Pokud skutečně stojíte o odpovědi, doporučuji přeformulovat dotazy a doplnit podrobnosti, jako je například typ toho pásku, jeho délka (počet diod) a podobně. Taky je dobré si uvědomit, že tohle není ani web, ani článek o základech elektrotechniky. Vždycky mě přivádí do úžasu jedinci, kteří mají pocit, že správně napsaný článek se pozná podle toho, že řeší jejich specifický problém…

  31. Dobrý den, prosím Vás o radu. Odladil jsem jednoduchý přenos dat na thingspeak v kombinaci NANO+ESP8266-01. Doma v bytě vysílá bez problémů celý den, ale když přenesu aplikaci na místo použití z nějakého důvodu vysílá někdy 30min, někdy je 5 min. a potom přestane. Pomůže jen vyp/zap. Síla signálu wifi v tom místě je dotačující. Můžete mě prosím nasměřovat kde hledat chybu? díky moc Josef

    1. Dobrý večer,
      prověřte, že máte aktivované automatické znovupřipojení v případě rozpadu spojení. Jde o funkci WiFi.setAutoReconnect(true); – pro zjištění stavu použijte WiFi.getAutoReconnect();

      1. Lze nějak prověřit jen za pomocí AT příkazu? V kódu nepoužívám žádnou knihovnu pro ESP8266 jen posloupnost AT+RST, CWMODE, CWJAP, CIPSEND atd. Nejsem programátor, použil sem kód někde z netu pro jeho jednoduchost a hlavně nenáročnost na paměť arduina. V jiné aplikaci už mi funguje víc než rok bez problémů, ale asi tam není problém s výpadky wifi. Nechci tady zdržovat se začátečnickými otázkami, tak zkusím sesmolit kód s použitím knihovny a tím co radíte v předchozím. díky

  32. Dobrý den, používám Nodemcu pro ovládání 4 relé a mám následující problém. Po výpadku napájení a znovu obnovení se Nodemcu znovu nepřipojí pokud je napájeno přes PIN. Pokud je ovšem napájení přes USB výpadek napájení nevadí a Nodemcu se po obnovení napájení samo znovu připojí. Kde může být zakopaný 🐕 ?

    1. Dobrý den,
      bez schématu jen hrubé rady – zkuste odpojit relé, jestli se start opraví. Pokud ano, tak je zkuste postupně připojovat, ať poznáte, které relé způsobuje problém a napište…

        1. Takže pokud zařízení napájíte přes J13, tak nenastartuje, ale pokud celé zařízení napájíte přes micro-USB konektor na NodeMCU tak ano? Napájecí zdroj je v obou případech stejný?

          1. Je to jak píšete, přes USB to napájím nabíječkou na mobil (jakoukoliv a funguje), přej J13 tak nenastartuje, zkoušel jsem 2 zdroje. Po resetu tlačítkem na desce nastartuje a funguje do výpadku proudu, pak je nutné opět restart na desce.

          2. V tom případě zkuste následující:
            1. vytáhněte NodeMCU a zkuste napájet jen ten modul přes +5V špičku jestli se závada projeví
            2. pokud se neprojeví, tak zkuste použít jiné NodeMCU, jestli bude chování stejné
            Testujte vždy jen jeden komponent systému (například nikdy ne současně vyměnit napájecí zdroj a také NodeMCU). Je potřeba pomocí vhodných kombinací zjistit, zda je na vině NodeMCU, deska s relé, nebo napájecí zdroj.

    1. Takže chyba je v Nodemcu, dvě nefungují (byť jsou od jednoho výrobce), třetí bez problémů po výpadku proudu naskočí samo.

      1. Ok, ale pokud máte chuť, tak ještě zkuste pokusy i s jiným zdrojem. Sice NodeMCU moduly v zařízeních nepoužívám, ale aby byly vadné dva ze tří se mi moc nezdá…

        1. No tak vyzkoušel jsem i jiné zdroje a výsledek je takový, že pokud stihne probliknout dioda na ESP modulu, tak se Nodemcu posléze připojí (na chvíli sepne relé na pinu 16), pokud však nestihne dioda probliknout dříve než se rozsvítí dioda indikující napájení na desce, tak zůstane viset. Většinou se poprvé podruhé sekne a pak už se připojí. Tak to je mi záhada …

          1. 😀 takže bych to viděl na problém filtrace napájení. Zkuste ke svorkám J13 připojit elektrolyt tak 470uF/16V s paralelně připojeným 100nF. Mezi námi na té desce zrovna nějaká filtrace a ochrany úplně chybí…

  33. Ok, vyzkouším. Připojil jsem to ještě ke zdroji který se dá regulovat a pokud je napětí 4,6V (to jsem naměřil i na napájení přes USB) tak se připojí pokaždé bez problémů.

Komentáře nejsou povoleny.