Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
project:nodemcu [2016/10/29 22:50] licho [Skriptovací prostředí] |
project:nodemcu [2018/05/27 08:40] cyberian |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |**Project owner:**| [[user:lichnak|lichnak]], [[user:peterbay,|PeterBay]] | | ||
+ | |**Interested:** | | | ||
+ | |**Related:**| | | ||
+ | |**Reference:**| https://Espressif.com | | ||
+ | | **License:** | [[https://creativecommons.org/licenses/by-sa/3.0/|Uveďte původ-Zachovejte licenci; CC BY-SA]] | | ||
====== NodeMCU ====== | ====== NodeMCU ====== | ||
{{nodemcu-style5-150px.png_150x150.png}} | {{nodemcu-style5-150px.png_150x150.png}} | ||
Line 12: | Line 17: | ||
===== Hardware ===== | ===== Hardware ===== | ||
- | NodeMCU hardware je vybaven převodníkem [[https://labka.cz/wiki/doku.php?id=project:esp8266|ESP8266]] se zabudovaným WiFi vysílačem, dále čipem pro komunikaci přes seriový port 'USB to URT' [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/CP2102-9.pdf|CP2102-9]], lineárním DC stabilizátorem [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/SPX3819M5-L-3-3.pdf|SPX3819]], A/D převodníkem [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/ss14.pdf|SS12]] a dvěmi tlačítky pro RST a FLASH [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/PTS820_4mar13-248116.pdf|PTS820]] | + | NodeMCU hardware je vybaven převodníkem [[https://labka.cz/wiki/doku.php?id=project:esp8266|ESP8266]] se zabudovaným WiFi vysílačem, dále čipem pro komunikaci přes seriový port 'USB to UART' [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/CP2102-9.pdf|CP2102-9]], lineárním DC stabilizátorem [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/SPX3819M5-L-3-3.pdf|SPX3819]], A/D převodníkem [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/ss14.pdf|SS12]] a dvěmi tlačítky pro RST a FLASH [[https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/PTS820_4mar13-248116.pdf|PTS820]] |
- | Technické parametry: | + | === Technické parametry === |
* CPU: 80/160 MHz Tensilica Xtensa LX106 | * CPU: 80/160 MHz Tensilica Xtensa LX106 | ||
Line 37: | Line 42: | ||
* 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''. | * 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''. | ||
- | ===== Software ===== | + | ===== Firmware ===== |
- | 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. | + | Programování NodeMCU vyžaduje programovací model velice podobny [[|Node.js]] a namísto JavaScript používáte LUA. Programovací model je asynchroní a event-driven model, který se vyplatí používat. |
- | ==== Firmware ==== | ||
Dokumentace k NodeMCU firmware a modulům je dostupná na adrese [[https://github.com/nodemcu/nodemcu-firmware|NodeMCU Documentation]]. | Dokumentace k NodeMCU firmware a modulům je dostupná na adrese [[https://github.com/nodemcu/nodemcu-firmware|NodeMCU Documentation]]. | ||
Line 52: | Line 56: | ||
- stažením již existujícího firmwaru s vybranými moduly od třetích stran | - stažením již existujícího firmwaru s vybranými moduly od třetích stran | ||
- | ==== Kompilace firmware ==== | + | |
+ | ===== IoT Infrastruktura ===== | ||
- | 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''. | + | Prvně uveďme předběžnou predstavu o zpracování dat ze senzorů a ovládání vzdálených zařízení. Hlavní komunikační a ovládací komponenty jsou postavené na technlogiích MQTT a REST API. |
- | Originální návod je dostupný na [[http://www.esp8266.com/wiki/doku.php?id=toolchain#how_to_setup_a_vm_to_host_your_toolchain|ESP8266 Wiki]] | + | {{wiki_nodemcu_mqtt_infra.png?750}} |
- | + | ||
- | Prostředí pro kompilaci firmware pro NodeMCU je postaveno na serveru Ubuntu. | + | |
- | + | ||
- | Pro instalaci nám stačí mini verze. | + | |
- | [[http://archive.ubuntu.com/ubuntu/dists/precise-updates/main/installer-amd64/current/images/netboot/mini.iso|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 | + | |
- | <code> | + | |
- | $ 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 | + | |
- | </code> | + | |
- | + | ||
- | Stáhnout z githubu **ESP Open SDK** a spustit **make** | + | |
- | <code> | + | |
- | $ git clone --recursive https://github.com/pfalcon/esp-open-sdk | + | |
- | + | ||
- | $ cd esp-open-sdk | + | |
- | + | ||
- | $ make STANDALONE=y |& tee make0.log | + | |
- | </code> | + | |
- | + | ||
- | 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 | + | |
- | <code> | + | |
- | export PATH="$HOME/esp-open-sdk/xtensa-lx106-elf/bin/:$PATH" | + | |
- | alias xgcc="xtensa-lx106-elf-gcc" | + | |
- | </code> | + | |
- | + | ||
- | Na stránce s [[https://github.com/nodemcu/nodemcu-firmware/releases|firmware]] zjistit odkaz na poslední verzi | + | |
- | + | ||
- | Stáhnout zdrojové soubory a rozbalit je | + | |
- | <code> | + | |
- | $ 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 | + | |
- | </code> | + | |
- | + | ||
- | Otevřít adresář | + | |
- | <code> | + | |
- | $ cd ~/nodemcu-firmware/nodemcu-firmware-1.5.4.1-master_20161001 | + | |
- | </code> | + | |
- | + | ||
- | V souboru ''user_modules.h'' je možné zapínat a vypínat moduly, které budou zahrnuty do firmware | + | |
- | <code> | + | |
- | $ mcedit app/include/user_modules.h | + | |
- | </code> | + | |
- | + | ||
- | Spuštění kompilace firmware se provede příkazem | + | |
- | <code> | + | |
- | $ make | + | |
- | </code> | + | |
- | + | ||
- | Výsledný firmware je uložen ve složce bin, např. | + | |
- | <code> | + | |
- | -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 | + | |
- | </code> | + | |
- | + | ||
- | ==== Nahrání firmware ==== | + | |
- | + | ||
- | 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 [[https://github.com/themadinventor/esptool|Esptool.py]] a druhý pro Windows napsaný v Delphi [[https://github.com/nodemcu/nodemcu-flasher|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''. [[nodemcu#Důležité upozornění|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. | + | |
- | + | ||
- | <code> | + | |
- | -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 | + | |
- | </code> | + | |
- | + | ||
- | === 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: | + | |
- | <code> | + | |
- | $ python get-pip.py | + | |
- | </code> | + | |
- | Instalace esptool pomocí pip: | + | |
- | <code> | + | |
- | $ sudo pip install –upgrade esptool | + | |
- | </code> | + | |
- | + | ||
- | Pokud máte výchozí verzi Python 3, pak příkaz bude následující: | + | |
- | <code> | + | |
- | $ sudo pip2 install esptool | + | |
- | </code> | + | |
- | + | ||
- | Zkombinování bin souborů do monolitní binárky: | + | |
- | <code> | + | |
- | $ esptool.py make_image -f bin/0x00000.bin -a 0x00000 -f bin/0x10000.bin -a 0x10000 bin/flash.bin | + | |
- | </code> | + | |
- | + | ||
- | 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: | + | |
- | <code> | + | |
- | $ sudo adduser $USER dialout | + | |
- | </code> | + | |
- | + | ||
- | Nahrání výsledných binárek po kompilaci: | + | |
- | <code> | + | |
- | $ esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 bin/0x00000.bin 0x10000 bin/0x10000.bin | + | |
- | </code> | + | |
- | + | ||
- | Nahrání monolitické binárky: | + | |
- | <code> | + | |
- | $ esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 bin/flash.bin | + | |
- | </code> | + | |
- | + | ||
- | === Nástoj ESP8266 Flasher === | + | |
- | + | ||
- | Stránka projektu na GitHubu: [[https://github.com/nodemcu/nodemcu-flasher|NodeMCU Flasher]] | + | |
- | + | ||
- | Stáhněte z GitHubu [[https://github.com/nodemcu/nodemcu-flasher|NodeMCU Flasher]]. | + | |
- | + | ||
- | Osobně používám pro práci s GIT prostředím na Windows 10 [[https://github.com/git/git-scm.com|GIT scm]]. | + | |
- | + | ||
- | ESP8266Flasher najdete ve ložce kam jste si stáhli soubory z GitHubu. | + | |
- | <code> | + | |
- | %PATHNODEMCUFLASHER%\Win64\Release\ESP8266Flasher.exe | + | |
- | </code> | + | |
- | + | ||
- | Ověřit ve Správci zařízení seriový port pro kominikaci s NodeMCU. | + | |
- | <code> | + | |
- | %SYSTEMROOT%\System32\devmgmt.msc | + | |
- | </code> | + | |
- | + | ||
- | {{wiki_nodemcu_comport_win.png}} | + | |
- | + | ||
- | ^ Postup pro FLASH firmwaru | | + | |
- | | 1. Připojit se na správný seriový port: {{ wiki_nodemcu_esp8266flasher_com.png?300}} | | + | |
- | | 2. Změnit nastavení komunikace pro ESP8266Flasher: {{ wiki_nodemcu_esp8266flasher_config.png?300}}| | + | |
- | | 3. Pomocí ESP8266Flasher.exe jsem nahrál vzniklý monolitický //flash.bin// do adresy //0x00000//: {{ wiki_nodemcu_esp8266flasher_mono.png?300}}| | + | |
- | | 3. Nebo pomocí ESP8266Flasher.exe jsem nahrál vzniklý bootloader //bin/0x00000.bin// do adresy //0x00000// a firmware //bin/0x10000.bin// na adresu //0x10000//: {{ wiki_nodemcu_esp8266flasher_dual.png?300}}| | + | |
- | | 4. Předchozí kroky potvrdíme náhráním firmware na NodeMCU: {{ wiki_nodemcu_esp8266flasher_flashing.png?300}}| | + | |
- | | 5. Nakonec se dočkáme uspěchu: {{ wiki_nodemcu_esp8266flasher_success.png?300}}| | + | |
- | + | ||
- | ==== Nahrání LUA skriptů na ESP8266 ==== | + | |
- | Nástrojů pro nahravání existuje víc než dost a jsou zdokumentovány [[https://nodemcu.readthedocs.io/en/master/en/upload/|zde]]. | + | |
- | + | ||
- | === Nástroj Luatool === | + | |
- | + | ||
- | Stránka projektu na GitHubu: [[https://github.com/4refr0nt/luatool|LUA Tool]] | + | |
- | + | ||
- | Stáhněte si ''luatool'': | + | |
- | <code> | + | |
- | $ mkdir -p ~/.opt && cd ~/.opt | + | |
- | $ git clone https://github.com/4refr0nt/luatool.git | + | |
- | </code> | + | |
- | + | ||
- | Nahrání //init.lua// soboru: | + | |
- | <code> | + | |
- | $ cd ~/.opt/luatool/luatool | + | |
- | $ python luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --verbose | + | |
- | </code> | + | |
- | + | ||
- | === Nástroj ESPlorer === | + | |
- | + | ||
- | Stránka projektu na GitHubu: [[https://github.com/4refr0nt/ESPlorer|ESPlorer]] | + | |
- | + | ||
- | ESPlorer můžete stáhnout [[http://esp8266.ru/esplorer/#download|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) | + | |
| | ||
- | {{ wiki_nodemcu_esplorer.png }} | + | ===== Vývojářské nástroje a systémy ===== |
- | + | ||
- | Výstup ze konzole ESPloreru | + | |
- | <code> | + | |
- | > =node.heap() | + | |
- | 45264 | + | |
- | > | + | |
- | </code> | + | |
- | + | ||
- | ==== Skriptovací prostředí ==== | + | |
- | + | ||
- | Dokumentace k NodeMCU firmware skriptovacího prostředí na adrese [[https://nodemcu.readthedocs.io/en/master/|NodeMCU LUA Scripting Documentation]]. | + | |
- | + | ||
- | === Souborová struktura === | + | |
- | + | ||
- | Po rebootu NodeMCU spustí inicializační soubor //init.lua//. Nelze vytvářet složky. | + | |
- | + | ||
- | __Příklad použití //init.lua// a //wifi.lua//:__ | + | |
- | Soubor //init.lua// | + | Následující návody kopírují požadavky IoT Infrastruktury pro instalaci vývojového a testovacího prostředí a zároveň přinášejí komfort do vývoje. |
- | <code> | + | |
- | -- init.lua -- | + | |
- | -- Global Variables (most of the time keep it empty) | + | * [[:project:nodemcu_lbe|NodeMCU Linux Firmware Build Environment]] |
+ | * [[:project:nodemcu_ubudev|NodeMCU Vývojářské prostředí pro Ubuntu]] | ||
+ | * [[:project:nodemcu_windev|NodeMCU Vývojářské prostředí pro Windows]] | ||
+ | * [[:project:nodemcu_le|NodeMCU LUA Skriptovací prostředí]] | ||
- | -- Run the wifi file | ||
- | dofile("wifi.lua") | ||
- | </code> | ||
- | Soubor //wifi.lua// | + | ===== Prototypy ===== |
- | <code> | + | |
- | -- Fill up correct setup | + | |
- | local ssid = "WiFiNET" | + | |
- | local pass = "bubabbaba" | + | |
- | -- Configure Wireless Internet | + | Prototypizované sestavy zařízení a technologií pro následné začlenění do IoT Infrastruktury |
- | print('\nProcesing wifi.lua\n') | + | |
- | wifi.setmode(wifi.STATION) | + | |
- | print('set mode=STATION (mode='..wifi.getmode()..')\n') | + | |
- | print('MAC Address: ',wifi.sta.getmac()) | + | |
- | print('Chip ID: ',node.chipid()) | + | |
- | print('Heap Size: ',node.heap(),'\n') | + | |
- | -- Wifi Config Start | + | |
- | wifi.sta.config(ssid,pass) | + | |
- | -- Wifi Config End | + | |
- | -- WiFi Connection Verification | + | * [[:project:nodemcu_httpd|NodeMCU HTTP Server]] |
- | tmr.alarm(0, 1000, 1, function() | + | * [[:project:nodemcu_mqtt|NodeMCU MQTT Klient]] |
- | if wifi.sta.getip() == nil then | + | * [[:project:nodemcu_ps|Perimetr Server]] |
- | print("Connecting to AP...\n") | + | * [[:project:nodemcu_ccs|Central Control Server]] |
- | else | + | * [[:project:nodemcu_lsa|Labka Smart API]] |
- | ip, nm, gw=wifi.sta.getip() | + | * [[:project:nodemcu_sd|Smart Dashboard]] |
- | print("IP Info: \nIP Address: ",ip) | + | * [[:project:nodemcu_ma|Mobile Applications]] |
- | print("Netmask: ",nm) | + | |
- | print("Gateway Addr: ",gw,'\n') | + | |
- | tmr.stop(0) | + | |
- | end | + | |
- | end) | + | |
- | </code> | + | |