Hlavní navigace

NodeMCU a jeho verzie: doska s Wi-Fi čipom ESP8266

Martin Chlebovec

Vývojová doska NodeMCU je zaujímavou platformou – integruje Wi-Fi čip ESP8266, ktorý sa stará o výpočtovú i wifi časť zariadenia. Doska si počas vývoja prešla až troma hardvérovými verziami s dvoma verziami čipu ESP8266.

Prvá doska NodeMCU vznikla krátko po predstavení čipu ESP8266 firmy Espressif Systems 30. decembra 2013. Do povedomia Európy sa čip dostal až v auguste 2014 či už ako samostatný kus alebo integrovaný v NodeMCU. NodeMCU je open-source platforma, ktorá umožňuje vytvárať interaktívne projekty najmä automatizácie či iné projekty zamerané na prepojenie s internetom/inými zariadeniami.

ESP8266 je možné nazvať aj System on a Chip (Soc). Ponúka všetko, čo bežný vývojár potrebuje od širokých možností programovania cez hardvérové vybavenie po možnosti pretaktovania procesora.

Hardvérová špecifikácia

ESP8266 – srdce NodeMCU obsahuje jednojadrový 32bitový procesor Xtensa LX 106 s inštrukčnou sadou RISC a taktom 80 MHz, pričom je ho možné pretaktovať až na 160 MHz.

Doska sa stala veľmi populárnou kvôli obrovskej pamäti na program. Do dosky je možné nahrať až 1 MB skompilovaného kódu, pre porovnanie Arduino Uno iba 32 kB, NodeMCU je vybavené 4MB flash pamäťou.

NodeMCU ponúka až 11 GPIO pinov, pričom všetky okrem okrem GPIO16 je možné PWM modulovať. Výstupný prúd GPIO pinov je 12 mA pri 3,3 V. Piny nie sú 5 V tolerantné, i keď niektoré zdroje uvádzajú, že sú. Pri dlhodobom zaťažení na 5V dôjde k prehriatiu čipu ESP8266 a jeho následnej poruche, resp. zničeniu. Na doske sa nachádza iba jeden analógový pin. Štandardne ESP8266 vie pin využívať v rozmedzí 0–1 V, avšak vďaka NodeMCU súčiastkam pracuje v rozmedzí 0–3,3 V. ESP8266 v sebe združuje aj implementáciu wifi štandardu 802.11 na 2,4 GHz v pásmach b/g/n, pričom v pásme b má garantovaný najlepší zisk 25 dB.

Softvérová špecifikácia a možnosti programovania

NodeMCU podporuje štandardné rozhrania ako OneWire, I2C, SPI, UART, ADC… Prvotná verzia NodeMCU dosiek mala nový firmware a spôsob programovania. Prvé dosky mali NON-OS SDK pre ESP8266, čo umožňovalo interpretovať jazyk Lua, v ktorom boli tieto čipy programované. Syntax jazyka Lua je veľmi podobná Wiringu.

Blink v jazyku Lua:

-- Blink using timer alarm --
timerId = 0
dly = 1000
-- use D4
ledPin = 4
-- set mode to output
gpio.mode(ledPin,gpio.OUTPUT)
ledState = 0
-- timer loop
tmr.alarm( timerId, dly, 1, function()
  ledState = 1 - ledState;
  -- write state to D4
  gpio.write(ledPin, ledState)
end)

O niekoľko týždňov po vydaní však uzrel svetlo sveta projekt Arduino core vo verzii 0.0.1. Začala sa etapa dostupnosti programovania dosiek cez ArduinoIDE klasickými Arduino príkazmi tak, ako sme boli naučení.

Čipy ESP8266 boli veľmi populárne u Arduinistov najmä pre konektivitu do internetu a hlavne kvôli cene a ľahkej implementácii do projektu. Toto Arduino core riešenie, ktoré sa postupne vyvíjalo, posunulo popularitu dosiek NodeMCU ešte viac do popredia.

Blink v jazyku Wiring (Arduino) pre NodeMCU:

int led=2;
void setup() {
 // inicializácia pinu 2 ako výstupu, realny pin D4 - pozri pinout
  pinMode(led, OUTPUT);
}

// nekonečná slučka
void loop() {
  digitalWrite(led, LOW);   // dioda teraz svieti. Integrovana dioda na NodeMCU je active LOW!
  delay(1000);                       // pockat sekundu
  digitalWrite(led, HIGH);    // dioda teraz nesvieti. Integrovana dioda na NodeMCU je active LOW!
  delay(1000);                       // pockat sekundu
}

Verzia Arduino Core je už dnes vo verzii 2.4.0. Projekt umožňuje plnohodnotne dosku programovať ako klasické Arduino vrátane web časti.

Doska dokáže vytvárať HTTP, HTTPS request POST i GET metódou a má plne integrovaný MQTT protokol, čo umožňuje využiť dosku aj na Smart Home riešenia, pričom podporuje aj WEP, WPA/WPA2 PSK šifrovanie.

Arduino Core nie je jediný projekt konverzie dosky na iný jazyk. Dnes je možné dosku programovať aj v Micropython, Javascripte, Lispe a iných. NodeMCU je možné programovať aj cez OTA (On the air) teda bezdrôtovo bez nutnosti pripájať zariadenie k počítaču, v ktorom sa nachádza kód. Toto je jedna z najväčších predností, prečo si dosku NodeMCU zvoliť.

Verzie ESP8266

Vyrobené treťou stranou AI-Thinker, čo umožnilo implementáciu do mnohých iných systémov (nie)len NodeMCU.

Čip ESP8266 sa stal aj wifi modulom pre wifi shield pre Arduino. Cenovo dostupný shield so spoľahlivým modulom sa stal razom najpredávanejším shieldom pre Arduino.

Popularite pridal aj fakt, že ESP8266 zvláda aj HTTPS pripojenia, teda šifrovanie. Najpoužívanejší Ethernet shield pre Arduino W5100 šifrovanie nepodporuje.

S rozmachom Let's Encrypt certifikátov prešlo mnoho webov na HTTPS bezplatne, čo neumožnilo ďalej využívať Ethernet shield Wiznet W5100 ale otvorilo cestu ESP-čku.

Verzie NodeMCU

V1 (0.9) - špecifický hranatý tvar - prevodník CH340 - čip ESP8266-12

V1 (0.9) – špecifický hranatý tvar – prevodník CH340 – čip ESP8266–12

V2 (1.0) - oblý tvar hrán - prevodník CP2102/CH340 - čip ESP8266-12E

V2 (1.0) – oblý tvar hrán – prevodník CP2102/CH340 – čip ESP8266–12E

V3 (1.0) – Lolin – oblý tvar hrán – prevodník CH340 – čip ESP8266–12E

Pinout NodeMCU dosiek

V1 - Prvotný projekt o vydanie NodeMCU dosky, veľmi dobré ohlasy, vďaka prevodníku CH340 nebol problém s inštaláciou ovládača pre klientský počítač.

V1 – Prvotný projekt o vydanie NodeMCU dosky, veľmi dobré ohlasy, vďaka prevodníku CH340 nebol problém s inštaláciou ovládača pre klientský počítač.

V2 - Druhá verzia priniesla viacero GPIO pinov oproti predchádzajúcej verzii a získala nový čip ESP8266-12E. Kvôli problémom s ovládačmi pre prevodník CP2102 sa táto verzia nestala príliš populárnou.

V2 – Druhá verzia priniesla viacero GPIO pinov oproti predchádzajúcej verzii a získala nový čip ESP8266–12E. Kvôli problémom s ovládačmi pre prevodník CP2102 sa táto verzia nestala príliš populárnou.

V3 Lolin - Hlavným prínosom bola možnosť využiť 5V výstup z dosky pre napájanie externých prístrojov, vďaka prevodníku CH340 sa opäť stala obľúbenou vďaka prevodníku.

V3 Lolin – Hlavným prínosom bola možnosť využiť 5V výstup z dosky pre napájanie externých prístrojov, vďaka prevodníku CH340 sa opäť stala obľúbenou vďaka prevodníku.

Shieldy a dosky k NodeMCU

V2 - L293D motor shield

V2 – L293D motor shield

V3 - Base kit - rozšírujúca doska pre piny NodeMCU, pričom sú GPIO piny rozšírené o 3 a ľavá strana NodeMCU o 1 pin + Výstupné piny GND, 5V. Base kit má integrovaný regulátor, vďaka čomu je možné NodeMCU napájať až na 24 voltov.

V3 – Base kit – rozšírujúca doska pre piny NodeMCU, pričom sú GPIO piny rozšírené o 3 a ľavá strana NodeMCU o 1 pin + Výstupné piny GND, 5V. Base kit má integrovaný regulátor, vďaka čomu je možné NodeMCU napájať až na 24 voltov.

Rozdiel medzi V2 a V3

Nakoľko je možné zakúpiť dosku V2 aj s prevodníkom CH340 je možné si ho zmýliť s V3 Lolin. V3 je väčšia ako V2 a má na sebe viditeľný nápis Lolin. V2 má na spodnej strane obrovský nápis Amica.

Dosiek V2 s prevodníkom CH340 je veľmi málo, čiže na ňu štandardne ani nenarazíte, najčastejšie vývojári siahnu po V3 Lolin spoločne s Base kitom pre Lolin pre možnosť montáže do krabičky. Pre NodeMCU v3 hraje aj možnosť využívať 5V výstup z USB napájania. Tento pin je pod napätím iba pri napájaní z USB, ak sa napája cez adaptér prostredníctvom Base kitu, pin je bez napätia a tým pádom nie je možné využiť napájanie pre 5V moduly pripojené k doske.

Dobre vedieť

Dosky NodeMCU a ESP8266 čipy mávajú obecne spotrebu v klude < 10 µA, pri vykonávaní cyklického programu s výpočtovou náročnosťou okolo 60–80 mA.

Problémom sú ale nárazové špičky, kedy spotreba vyskočí pri odosielaní dát a pripájaní na wifi sieť aj cez 230 mA.

V prípade použitia samostatného čipu ESP8266 je nutné využiť kondenzátor. V opačnom prípade sa bude čip neustále reštartovať.

Druhým najčastejším problémom je využitie procesora po dlhú dobu. Nakoľko sa procesorový čas delí medzi výpočtovú a wifi časť, je nutné, aby wifi časť nezamrzla.

V prípade, že ostane bez procesora po určitú dobu, čip sa sám reštartuje. Tento čas je v pár ms. V prípade jednoduchšieho projektu na tento problém takmer nenarazíte.

Odkazy na zaujímavé NodeMCU projekty

Našli jste v článku chybu?