Close

Arduino UNO WiFi vs. NodeMCU

Arduino UNO WiFi a NodeMCU

V tomto artiklu budeme mezi sebou porovnávat impresivní novinku Arduino Uno WiFi a levnou vývojářskou desku pro ESP8266 v. E12 nesoucí název NodeMCU.

Nejprve započneme článek fyzickým porovnáním. Na Arduino Uno WiFi znatelně vidíme mikrokontrolér ATmega328P v pouzdře DIP28, který je shora obklopen ESP8266 a jejími podpůrnými pasivními a aktivními prvky včetně všestranného spojovacího můstku SC16IS750. Další zvláštní odlišností, kterou Uno WiFi nabízí, je spínaný zdroj, který se efektivně postará o hladkých 5V z napájecího barelového konektoru a zaručí vyšší proudáž bez jakéhokoliv nadbytečného zahřívání.

Na druhé straně nám leží levné, jednoduché, avšak schopné NodeMCU. Lze jej dostat ve dvou variantách, a to buď s komunikačním můstkem UART na USB CH340 nebo s CP2102. Oba čipy plní naprosto identickou funkci, ačkoliv vzhledově mně osobně přijde sympatičtější verze s CP2102. Rozměr NodeMCU je výhodný pro nepájivá pole a minimalistický počet elektronických součástek láká uživatele s bateriovými aplikacemi, jelikož obsahuje pouze ESP modul samotný a dál jen 3,3V regulátor a již zmiňovaný můstek pro UART komunikaci přes USB.

Nyní se vrhneme do porovnání softwarového zpracování. Do této chvíle naši bojovníci remizovali, ale v této části Uno WiFi zaboduje. Jeho softwarové zpracování je totiž nepochybně lépe provedeno, zejména web panel a možnost programování Arduino přes OTA (Over The Air). Jinak oba vývojové kity se programují naprosto stejně, co se týče použití funkcí v kódu, tak jsou syntaxe téměř shodné. Asi jediný benefit NodeMCU je, že to všechno úhledně frčí na jednom čipu a že lze v reálném čase okamžitě reagovat I/O piny na WiFi.

V poslední části se podíváme na takové to klasické porovnání technických specifikací.

Kategorie Arduino Uno WiFi NodeMCU
I/O piny 13 11
analog piny 6 1
PWM piny 6 10
rychlost hodin 16MHz 80MHz
Operační Napětí I/O 5V 3,3V (5V tolerantní)
paměť flash 32kB (-0,5kB bootloader) 4096kB
operační paměť 8kB 96kB
proud na I/O pin 40mA 12mA

Tabulka nám jasně ukazuje, že zde do jisté míry zde vítězí NodeMCU. Rychlost hodin dobře svědčí, že má rychlejší hardware, až na pár nedostatků, jako je například pomalý Analog/Digitál převodník. NodeMCU nabízí na skoro všech I/O pinech pulzní šířkovou modulaci, kdežto Uno WiFi zase více I/O pinů s dodatkem analogových pinů, kterými si můžete počet I/O pinů zvýšit na celkový počet 19.

Čili abychom tento artikl shrnuli, obě desky mají své výhody i nevýhody, záleží na vaší aplikaci či účelu, ke kterému budete desku používat. Závěr tedy zní víceméně kompromisně. Pro začátečníky je samozřejmě vhodné Arduino Uno WiFi, protože jednoduše vylepšuje již velice známé prostředí populárního Arduino Una o WiFi modul. Když se to ale vezme z té stránky pro pokročilé, je vhodné si koupit NodeMCU, jelikož tato deska vám v podstatě dává přístup ke všem pinům, které moduly s čipsetem ESP8266 nabízí. Arduino Uno WiFi také docela zakrývá výkon čipu ESP8266, jelikož v programování se vám moc přístupu do ESP8266 nenaskýtá, a právě proto je NodeMCU vhodné pro pokročilé uživatele, protože vám to dává možnost řídit přesně co se má v ESP modulu stát.

Arduino UNO a Arduino UNO WiFi

Arduino UNO a Arduino UNO WiFi

Over The Air – technologie, díky které lze data přenášet bezdrátově “po vzduchu”. V tomto případě využito pro bezdrátové programování Arduina (konkrétně ATmega328P). Ukázka zde.

Tento článek napsal můj dobrý kamarád Angelo Pescarini. Angelo je elektro specialista našeho týmu. Analogová elektrotechnika není pro něho problém a jelikož sám tyto vody moc neznám, jsem rád, že mám někoho takového u sebe.

Angelův instagram https://www.instagram.com/eepblog/

Matěj Suchánek

17 Comments on “Arduino UNO WiFi vs. NodeMCU

Pavel
5.8.2016 at 14:30

Ahoj, asi mam blbý dotaz ale budu vděčen za radu. Jde nějak jednoduše měřit na nodemcu napájecí napětí ? Chtěl bych to hodit na 4 tužkové baterie a 5V vstup ( http://screencast.com/t/j9Lisck6l ) a chtěl bych si udělat levný wifi teploměr na tužkové baterie s tím, že by mi s teplotou posílal na tmep.cz i stav baterie.

Diky za pomoc.

Matěj Suchánek
14.8.2016 at 23:06

Zdravím! Omlouvám se za pozdní reakci, ale máme prázdniny, tak prázdninuji 😀 Pokud tě správně chápu, tak chceš na vin pin NodeMCU dát 6V z těch baterek, mám pravdu? Tudíž ti vestavěný regulátor srazí napětí na 3V3 a tobě by mělo tedy stačit jen na ADC pin NodeMCU připojit výstup z jednoduchého Napěťového rozdělovače od těch baterek (Vin) (protože ADC NodeMCU pracuje v rozmezích 0-1V, takže tím rozdělovačem musíš z 0-6V udělat třeba 0-0,8V) A mělo by to fungovat „bez problémů“. Ale otázka jestli se ti to vyplatí, protože budeš mít docela ztráty.

Pavel
17.8.2016 at 7:53

Jasně budu mít ztráty na tom děliči napětí. Asi by to šlo přes nějaký spínač, který by to aktivoval jenom na krátkou chvíli, změřil a zase odpojil. Dik pomoc.

Pavel
15.8.2016 at 20:04

ESP8266 má jeden převodník A/D. Ten můžeš použít k měření jakéhokoliv externího napětí do 1V, nebo interního napájecího napětí 3V3. V tom interním módu pochopitelně žádný dělič nepotřebuješ.

Pavel
17.8.2016 at 7:51

„nebo interního napájecího napětí 3V3“ – Tohle moc nechápu. připojit děličem 3V3, nebo nodemcu jde napájet 3.3V ? Diky

Pavel
2.8.2016 at 17:23

Doplním… ESP8266 není 5V tolerantní. Že to někdy i přežije, neznamená odolnost vůči přepětí na vstupech. Napájení i vstupy je radno připojovat pouze na 3V3.
Paměti RAM nemá 20KB, ale 96KB.
>>minimalistický počet elektronických součástek láká uživatele s bateriovými aplikacemi<>Uno WiFi zaboduje. Jeho softwarové zpracování je totiž nepochybně lépe provedeno, zejména web panel a možnost programování Arduino přes OTA (Over The Air).<<
Podpora OTA je v čipu esp8266 zabudována také, je-li tato funkčnost také v ESP8266-ARDUINO nevím, ale myslím že ano.
V současné době je v ESP8266 velmi slušně implementována Lua, Arduino, Erduino, BASIC.

Angelo Pescarini
5.8.2016 at 10:28

ESP8266 je 5V tolerantní, ikdyž ne přímo. Všechny I/O piny mají přepěťovou protekci, která se aktivuje při převýšení 5,8V. A to bude možná ten důvod, proč každému, kdo NodeMCU používá s 5V periferiemi, tak mu pořád funguje.
Co se týče RAM, ano, tam jsem chybu udělal. Napravím hned jak-li to bude možné.
Děkuji za upozornění.

Angelo Pescarini
5.8.2016 at 10:38

Ještě jsem si všiml chybičky, omlouvám se. V tabulce je napsané napájecí napětí, to mělo být I/O napětí.

Pavel
14.8.2016 at 19:58

Prakticky všechny IO mají integrovány na I/O pinech ochrané diody stejně jako ESP8266.. Když se držím údajů výrobce, tak u ESP8266 žádná 5V tolerance neexistuje. A web je plnej nářku experimentátorů, kteří se diví, proč jen jim ten čip topí a nefunguje.
1. chyba – nevhodný zdroj
2. chyba – neošetřené vstupy
3. chyba – cpu tam ze všech stran 5V, přestože výrobce deklaruje maximální napájecí napětí 3V6 a od toho se pochopitelně odvíjí i maximální povolené vstupní napětí.

Matěj Suchánek
5.8.2016 at 11:13

Někde píšou, že je, někde, že ne.. Osobně jsem to ještě netestoval, protože sám jsem ohledně tohoto skeptický. Můj názor na toto je takový, že pro dlouhodobé využití v projektech bych určitě volil 3V3. Ale pokud nebude možnost, tak je asi možné v rámci možností vyjít i s 5V. Ale nevím, tohle není můj šálek kávy.
S tou RAMkou máte pravdu, opravím to. Těch ~20kB paměti RAM je podle všeho co vidím na netu přisuzovaných desce NodeMCU v kombinaci s již předinstalovaným interprektem LUA a jedná se o použitelnou paměť pro program. Je to i na wiki https://en.wikipedia.org/wiki/NodeMCU. Osobně programuji moje ESP/NodeMCU přes Arduino IDE, kde se kód neinterprektuje a dá se tedy využít větší část RAMky. Arduino IDE mi píše, že maximum pro mé NodeMCU 1.0 je „81 920 bytů“, ano „bytů“ 😀 Tak nevím, co si pod tím představit, ale jestli mají namysli bajtů, tak to dělá 80kB použitelné RAM 🙂 OTA pro ESP8266 je možná, ale občas crashne tak, že se musí program znovu nahrát přes kabel. Video popisující OTA u ESP8266: https://www.youtube.com/watch?v=GoQXOLB50HA. O ESP8266-Arduino OTA jsem pouze slyšel, že něco je, ale taky nevím. A nezapomínejte také na microPython, na který se v budoucnu chci určitě podívat 🙂 Díky za info!

Matěj Suchánek
5.8.2016 at 11:16

A můžu se ještě zeptat, co je to Erduino?

Pavel
9.8.2016 at 14:35

Erduino je nesmysl, který jsem napsal. Měl jsem na mysli espruino založené na javascriptu.

Matěj Suchánek
14.8.2016 at 23:07
Honza
29.7.2016 at 10:56

Dovolil bych si vyjádřit nesouhlas s tímto výrokem… “ Uno WiFi zaboduje. Jeho softwarové zpracování je totiž nepochybně lépe provedeno..“
NodeMCU má primárně instalován firmware s interpreterem LUA a k tomu pak existují různé Sw nástroje které nahrazují vychvalovaný WEB panel u Arduina Wifi. Sám LUA taky nepoužívám a tak nebudu podrobněj hodnotit – jen mě zaujalo že tam je funkce pro uvedení modulu do režimu deep sleep (což pro bateriové aplikace může být velice zajímavé) a použitelný file system (hlavně díky mnohonásobně větší velikosti flash paměti).

Pro ty co neumí či jsou jen líní programovat a chtějí NodeMCU použít pro zapojení čidel do domácí automatizace tak doporučuji firmware ESP Easy http://www.esp8266.nu/ – tam se vše nastavuje jen přes webové rozhraní a čidel to umí poměrně dost (i nějaké akční členy)

No a co je pro začínajícího uživatele nejdůležitější – za cenu jednoho Arduino UNO Wifi nakoupí několik NodeMCU a může testovat bez obav 🙂

Angelo Pescarini
5.8.2016 at 9:54

Je možné, že lua + ty sw nástroje se dokážou vyrovnat Arduino web panelu, ale ačkoliv je lua už předinstalovaná, tak ten druhý konec se musí na internetu najít a zprovoznit, kdežto u Arduino už je to všechno v podstatě plug’n’play.

Dále že pro začínajícího uživatele je nejdůležitější cena, to je docela sporné. Hodně uživatelů taky může vzhlížet na jednoduchost a cena navíc jim nevadí. Za další to taky může být čistá preference. Někdo prostě preferuje Arduino Uno WiFi, někdo NodeMCU, a některým je to třeba úplně jedno. Nicméně přiznávám, že odborník přes NodeMCU taky úplně nejsem, ale podle moheho názoru má prostě Arduino ten Web panel jednodušší.

posjirka
27.7.2016 at 20:41

jen pro doplnění … u ESP8266 je trochu zrádné, že analogový vstup má max. napětí 1V !!!
Takže je nutné zamezit propojení AI s napájecím napětím ….

Matěj Suchánek
31.7.2016 at 22:00

Napsat komentář