This is an old revision of the document!


NodeMCU

Poslední velkou zajímavostí v oblasti levných IoT zařízení je bezdrátový mikrokontroler ESP8266 dodávaný čínským výrobcem Espressif Systems. Původní myšlenka byla vytvořit funkční UART bridge s WiFi pro mikrokontrolery. Nasledně vznikl ESP8266 mikrokontroler založený na procesoru 32-bit Tensilica Xtensa LX106 běžící na frekvenci 80 MHz s plně funkční WiFi sestavou.

NodeMCU je open-source firmware a hardwarová vývojářská sada, která urychluje vývoj prototypů IoT zařízení v několika řádcích LUA skriptovacího prostředí. NodeMCU firmware je postaven pro čip ESP8266 WiFi SOC a přináší LUA skriptovací prostředí založené na jazyku eLua. Vývojářská sada NodeMCU je založena na ESP8266 a implementuje GPIO, PWM, IIC, 1-Wirend a ADC na jedné desce.

Firmware NodeMCU Github

Developer Kit v1.0 NodeMCU DevKit 1.0 Github

Dokumentace k NodeMCU firmware a modulům je dostupná na adrese NodeMCU Documentation

Dokumentace k NodeMCU firmware skriptovacího prostředí na adrese NodeMCU LUA Scripting Documentation

NodeMCU hardware je vybaven převodníkem ESP8266 se zabudovaným WiFi vysílačem, dále čipem pro komunikaci přes seriový port 'USB to URT' CP2102-9, lineárním DC stabilizátorem SPX3819, A/D převodníkem SS12 a dvěmi tlačítky pro RST a FLASH PTS820

Technické parametry:

  • CPU: 80/160 MHz Tensilica Xtensa LX106
  • RAM: 64 KiB of instruction RAM, 96 KiB of data RAM
  • Flash: 512M - 4M, velikost zaleží na modelu ESP8266
  • WiFi zabudovaná v NodeMCU
  • 16 GPIO pinů, SPI, I2C, I2S, UART, 10-bit ADC

Diagramy

Hardwarové zapojení jednotlivých částí NodeMCU je v dokumentaci na GitHubu. Dokumentaci zapojení najdete na NODEMCU_DEVKIT

PIN Mapa

Důležité upozornění

  • Pin D0 (GPIO16) můžete použít jenom jako gpio read/write a nepodporuje interrupt/pwm/i2c/ow.
  • Při každém bootování, resetu ci probuzení pin GPIO15 MUSÍ být nastaven na LOW a pin GPIO2 MUSÍ být nastaven na HIGH. K tomu třeba dát pozor na pin GPIO0, který při nastavení na HIGH nabootuje do RUN módu a při nastavení na LOW se zapne FLASH mód.
  • Pokud chcete použít SLEEP mód, pak propojte piny GPIO16 a RST, a GPIO16 bude nastaven po každém probuzení na hodnotu LOW.

Programování NodeMCU vyžaduje programovací model velice podobny Node.js a namísto JavaScript používáte LUA. Programovací model je asynchroní a even-driven model, který se vyplatí používat.

Firmware

Firmware může obsahovat různé moduly, které jsou rozšířením funkcí pro jazyk eLua použitý v NodeMCU. Firmware je open source a je možné ho získat několika způsoby

  1. služba v cloudu, která podle zvolených komponent vytvoří požadovaný firmware NodeMCU BUILD
  2. kompilací firmwaru v předpřipraveném Docker Image
  3. vytvořením vlastního prostředí s nástroji a toolchainem pro sestavení firmware
  4. stažením již existujícího firmwaru s vybranými moduly od třetích stran

Kompilace firmware

Linux Build Environment - Návod jak postupovat při instalaci a nastavení prostředí na Ubuntu Serveru, a následné kompilace firmware pomocí nástroje make.

Originální návod je dostupný na ESP8266 Wiki

Prostředí pro kompilaci firmware pro NodeMCU je postaveno na serveru Ubuntu.

Pro instalaci nám stačí mini verze. 64-bit Ubuntu (mini.iso)

V instalátoru Ubuntu vybereme pouze “Basic Ubuntu Server” a “openSSH Server”

Po restaru je potřeba doinstalovat následující aplikace

$ sudo apt-get install build-essential zip gdb vim make unrar autoconf automake bison texinfo libtool mc gcc g++ gperf libc-dbg ncurses-dev expat lua5.1 lua5.1-doc luarocks gperf bison flex texinfo git help2man gawk python python-pip unzip screen python2.7 python-serial

$ for m in lua-bitlib luafilesystem md5 luaposix luasocket; do sudo luarocks install $m; done

$ sudo pip install mkdocs

Stáhnout z githubu ESP Open SDK a spustit make

$ git clone --recursive https://github.com/pfalcon/esp-open-sdk

$ cd esp-open-sdk

$ make STANDALONE=y |& tee make0.log

Pokud se při spuštění make STANDALONE=y |& tee make0.log vyskytne chyba (chybějící aplikace a pod.), tak je třeba ji doinstalovat a spustit make STANDALONE=y |& tee make0.log znovu

Editovat soubor ~/.bashrc a přidat na jeho konec

export PATH="$HOME/esp-open-sdk/xtensa-lx106-elf/bin/:$PATH"
alias xgcc="xtensa-lx106-elf-gcc"

Na stránce s firmware zjistit odkaz na poslední verzi

Stáhnout zdrojové soubory a rozbalit je

$ cd ~
$ wget https://github.com/nodemcu/nodemcu-firmware/archive/1.5.4.1-master_20161001.zip
$ unzip 1.5.4.1-master_20161001.zip -d nodemcu-firmware

Otevřít adresář

$ cd ~/nodemcu-firmware/nodemcu-firmware-1.5.4.1-master_20161001

V souboru user_modules.h je možné zapínat a vypínat moduly, které budou zahrnuty do firmware

$ mcedit app/include/user_modules.h

Spuštění kompilace firmware se provede příkazem

$ make

Výsledný firmware je uložen ve složce bin, např.

-rw-rw-r--  1 node node  27872 Oct 26 11:21 0x00000.bin
-rw-rw-r--  1 node node 357683 Oct 26 11:21 0x10000.bin

Nahrání firmware na ESP8266

Firmware je potřeba do esp8266 nahrát. K tomuto účelu jsou na internetu dostupné programy a skripty. Předvedeme si dva nástroje jeden pro Linux napsaný v Pythonu Esptool.py a druhý pro Windows napsaný v Deplhi NodeMCU-Flasher.

Před nahráním NodeMCU firmware se ujistěte, že jej se máte zkompilovaný. Také před nahráním firmwaru je třeba na NodeMCU zapnout FLASH mód a budťo zmáčknutím tlačítka FLASH na NodeMCU nebo před rebootem nastavte na pin GPIO0 na hodnotu LOW. Viz. upozornění

Výsledný zkopilovaný bootloader a firmware je uložen ve složce ../nodemcu-firmware/bin. Bootloader nese název 0x00000.bin a firmware 0x10000.bin.

-rw-rw-r--  1 node node  27872 Oct 26 11:21 0x00000.bin
-rw-rw-r--  1 node node 357683 Oct 26 11:21 0x10000.bin

Nástoj Esptool.py

Esptool vyžaduje Python 2. K instalaci esptool použijeme správce balíčků pip.Pokud používáte verzi Pythonu 2 >=2.7.9 nebo Python 3 >=3.4 pip je již součástí vaší instalace.

Instalace pip:

$ python get-pip.py

Instalace esptool pomocí pip:

$ sudo pip install –upgrade esptool

Pokud máte výchozí verzi Python 3, pak příkaz bude následující:

$ sudo pip2 install esptool

Zkombinování bin souborů do monolitní binárky:

$ esptool.py make_image -f bin/0x00000.bin -a 0x00000 -f bin/0x10000.bin -a 0x10000 bin/flash.bin

Předtím než budeme nahrávat firmware ujistěte se, že jste členy dialout skupiny, která vám dá práva a můžete komunikovat přes sériový port např. /dev/ttyUSB0. Přidání aktuálního uživatele do dialout skupiny:

$ sudo adduser $USER dialout

Nahrání výsledných binárek po kompilaci:

$ esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 bin/0x00000.bin 0x10000 bin/0x10000.bin

Nahrání monolitické binárky:

$ esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 bin/flash.bin

Nástoj ESP8266 Flasher

Stránka projektu na GitHubu: NodeMCU Flasher

Stáhněte z GitHubu NodeMCU Flasher.

Osobně používám pro práci s GIT prostředím na Windows 10 GIT scm.

ESP8266Flasher najdete ve ložce kam jste si stáhli soubory z GitHubu.

%PATHNODEMCUFLASHER%\Win64\Release\ESP8266Flasher.exe

Ověřit ve Správci zařízení seriový port pro kominikaci s NodeMCU.

devmgmt.msc

Postup pro FLASH firmwaru
1. Připojit se na správný seriový port:
2. Změnit nastavení komunikace pro ESP8266Flasher:
3. Pomocí ESP8266Flasher.exe jsem nahrál vzniklý monolitický flash.bin do adresy 0x00000:
3. Nebo pomocí ESP8266Flasher.exe jsem nahrál vzniklý bootloader bin/0x00000.bin do adresy 0x00000 a firmware bin/0x10000.bin na adresu 0x10000:
4. Předchozí kroky potvrdíme náhráním firmware na NodeMCU:
5. Nakonec se dočkáme uspěchu:

Nahrání LUA skriptů na ESP8266

Nástrojů pro nahravání existuje víc než dost a jsou zdokumentovány zde.

Nástroj Luatool

Stránka projektu na GitHubu: LUA Tool

Stáhněte si luatool:

$ mkdir -p ~/.opt && cd ~/.opt
$ git clone https://github.com/4refr0nt/luatool.git
$ cd ~/.opt/luatool/luatool

Nahrání init.lua soboru:

$ cd ~/.opt/luatool/luatool
$ python luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --verbose

Nástroj ESPlorer

Stránka projektu na GitHubu: ESPlorer

ESPlorer můžete stáhnout zde.

ESPlorer je integrované vývojařské prosředí pro ESP8266, primarně podporující LUA pro NodeMCU, MicroPython a vybrané AT príkazy. Vyžaduje instalované JAVA prostředí Standard Edition - SE ver 7 a vyšší.

Podporované platformy:

  • Windows(x86, x86-64)
  • Linux(x86, x86-64, ARM soft & hard float)
  • Solaris(x86, x86-64)
  • Mac OS X(x86, x86-64, PPC, PPC64)

  • project/nodemcu.1477770999.txt.gz
  • Last modified: 2016/10/29 21:56
  • by licho