Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
project:nodemcu [2016/10/31 07:07]
licho [Hardware]
project:nodemcu [2017/03/12 14:48]
licho
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 14: Line 19:
 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]] 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 even-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 ​i instalaci ​nastavení prostředí na Ubuntu Serveru, ​následné kompilace firmware pomocí nástroje ''​make''​.+Prvně uveďme ​edběžnou predstavu o zpracování dat ze senzorů ​ovládání vzdálených zařízení. Hlavní komunikační a ovládací komponenty jsou postavené ​na technlogiích MQTT 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>​+
  
  • project/nodemcu.txt
  • Last modified: 2018/05/27 08:40
  • by cyberian