**NodeMCU** on avatud lähtekoodiga Lua-põhine püsivara Espressifi ESP8266 WiFi SOCi-le ning kasutab moodulil põhinevat flash-põhist SPIFFS-failisüsteemi. NodeMCU rakendatakse C-programmeerimiskeelt ja on kihiline Espressif NON-OS SDK-s.

Algul arendati püsivara nii, et see oli kaasprojekt populaarsetele ESP8266-põhistele NodeMCU arendusmoodulitele, kuid projekt on nüüd toetatud kogukonna toetuseks ning nüüd saab püsivara käivitada mis tahes ESP moodulil.

Ajalugu
-------

NodeMCU loodi varsti pärast ESP8266 avalikustamist. 30. detsembril 2013 alustas Espressif Systems ESP8266 tootmist. ESP8266 on Wi-Fi SoC, mis on integreeritud Tensilica Xtensa LX106 südamikuga, laialdaselt kasutusel IoT rakendustes. NodeMCU projekt algas 13. oktoobril 2014, kui Hong laadis üles esimese NodeMCU püsivara faili GitHubile. Kaks kuud hiljem projekti laiendati avatud riistvara platvormiga, kui arendaja Huang R. laadis üles ESP8266 plaadi gerber-faili nimega devkit v0.9. Samal kuul kandis Tuan PM Contiki MQTT teeki ESP8266 SoC platvormile ja laadis üle NodeMCU projektile, seejärel suutis NodeMCU toetada MQTT IoT protokolli, kasutades Lua MQTT broker serverit juurde pääsemiseks. Teine oluline uuendus tehti 30. jaanuaril 2015, kui Devsaurus kandis u8glib projekti NodeMCU projektile, võimaldades NodeMCU-l kasutada LCD, OLED ja isegi VGA ekraanid.

2015. aasta suvel loobusid loojad NodeMCU püsivara projektist ja sõltumatute arendajate grupp võttis üle. 2016. aasta suveks oli NodeMCU-s rohkem kui 40 erinevat moodulit. Ressursikoormuste tõttu peavad kasutajad valima oma projekti jaoks olulised moodulid ja looma nende vajadustele kohandatud püsivara.

Programmeerimise mudel
----------------------

NodeMCU programmeerimise mudel on sarnane Node.js-i mudeliga, ainult kasutab Lua skripti keelt. See on asünkroonne ja sündmuskohane. Paljudel funktsioonidel on seega tagasihelistamise funktsioonide parameetrid.

Lua Flash Store (LFS)
---------------------

2018. aasta septembris võeti kasutusele Lua Flash Store'i (LFS). LFS võimaldab Lua koodi ja sellega seotud konstantseid andmeid teostada otse välkmälust; just nagu püsivaru ise. See võimaldab nüüd NodeMCU arendajatel luua Lua rakendusi kuni 256 kB Lua koodiga ja kirjutuskaitstud konstante täidetakse otse välkmälust. Kõik RAM on saadaval lugemiseks ja kirjutamiseks!

Seotud projektid
----------------

### ESP8266 Arduino Core

Kuna Arduino.cc hakkas välja töötama uusi MCU plaate, mis põhinevad mitte-AVR-protsessoritel nagu ARM / SAM MCU ja mis kasutati Arduino Due, nad pidid Arduino IDE-d muutma, et IDE-d oleks suhteliselt lihtne muuta alternatiivsete tööriistade toetamiseks, võimaldada kompileerida Arduino C / C ++ nende uute protsessorite jaoks. Nad tegid seda Board Manager ja SAM Core sisseviimisega. "Core" on tarkvarakomponentide kogum, mida juhatus ja Arduino IDE vajavad Arduino C / C + + allikafaili koostamiseks MCU masina keele sihtkeele jaoks. Mõned ESP8266 entusiastid töötasid välja Arduino Core ESP8266 WiFi SoC jaoks, mida sageli nimetatakse ka ESP8266 Core for Arduino IDE-ks. Sellest on saanud juhtiv tarkvaraarenduse platvorm erinevatele ESP8266-põhistele moodulitele ja arendusplaadile, sealhulgas NodeMCU-dele.

NodeMCU GPIO
------------

NodeMCU arenduskomplekt varustab juurdepääsu ESP8266 GPIO-dele. Ainus asi, mida tuleb hoolitseda, on see, et NodeMCU Dev Kiti viigid on nummerdatud erinevalt ESP8266 sisemistest GPIO, nagu on näidatud allpool tabelis. Näiteks NodeMCU viik D0 on seotud 16 ESP8266 viigiga.

NodeMCU GPIO| NodeMCU viigi indeks | ESP8266 viik |
| --- | --- |
| D0 | GPIO16 |
| D1 | GPIO5 |
| D2 | GPIO4 |
| D3 | GPIO0 |
| D4 | GPIO2 |
| D5 | GPIO14 |
| D6 | GPIO12 |
| D7 | GPIO13 |
| D8 | GPIO15 |
| D9/RX | GPIO3 |
| D10/TX | GPIO1 |
| D11/SD2 | GPIO9 |
| D12/SD3 | GPIO10 |

Arendusplaatide versioonid
--------------------------

Esimese ja teise põlvkonna arendusplaate on lihtne eristada, kuna nende suurus on üsna erinev. Mõlemad põlvkonnad kasutavad ESP-12 kiipe 4 MB püsimäluga, kuid teine põlvkond kasutab uuemat ja täiustatud ESP-12E.

### NodeMCU v0.9 (aegunud)

Esimene, kuid nüüd vananenud arendusplaati müüakse tavaliselt kollase värvi plaadiga. Kaasas ESP-12 moodul ja 4 MB välkmälu. Plaat on üsna lai (47 mm x 31 mm) ja katab kõik 10 viiku maketeerimislaual, mis muudab selle kasutamise väga ebamugavaks. Selle versiooni tootja on peamiselt Amica.

### NodeMCU v1.0 V2

Teine versioon parandab esialgse plaadi puudused. 
Uus versioon sisaldab uut ESP-12E moodulit, millel on 4 MB välkmälu ja lisati paar väljaviike.
Võrreldes V0.9 variandiga on V1.0 kitsam ja jätab ühe rida tappe mõlemal küljel tavalisel maketeerimislaual, mis sobib ideaalselt prototüüpimiseks. Veel üks tähtis uuendus on see, et nüüd ei pea kasutaja vajutama Reset/Flash-nuppu iga kord, kui soovib koodi uuesti.

Viited
------

1. ↑  "Lua based interactive firmware for ESP8266, ESP8285 and ESP32". *github.com/* (inglise). 29.04.2019.
2. ↑  "Hong esimene commit". *github.com/* (inglise). 29.04.2019.
3. ↑  "Huang R. Algne NodeMCU disain". *github.com/* (inglise). 29.04.2019.
4. ↑  "MQTT teegi portimine". *github.com/* (inglise). 29.04.2019.
5. ↑  "Arduino Monochrom Graphics Library for LCDs and OLEDs". *github.com/* (inglise). 29.04.2019.
6. ↑  "U8glib for esp8266". *github.com/* (inglise). 29.04.2019.
7. ↑  "Lua Flash Store (LFS) - NodeMCU Dokumentatsioon". *nodemcu.readthedocs.io* (inglise). 29.04.2019.
8. ↑  "ESP8266 core for Arduino". *github.com/* (inglise). 29.04.2019.
9. ↑  "NodeMCU GPIO with Arduino IDE". *www.electronicwings.com* (inglise). 29.04.2019.
10. ↑  Marcel Stör (01.05.2019). "Comparison of ESP8266 NodeMCU development boards". *frightanic.com/* (inglise).
11. ↑  squix78 (01.05.2019). "ESP8266 module comparison". *blog.squix.org/* (inglise).