NodeMCU Lua Wifi

L’argomento NodeMCU mi ha ispirato e troverai in questo articolo: NodeMCU Lua Wifi alcuni esempi di esperimenti che ho eseguito in questi giorni.

NodeMCU Lua WiFi

Innanzitutto acquista una scheda NodeMCU ver. 1.0 se vuoi seguire i miei esperimenti, è la medesima versione che ho utilizzato io in questo articolo ed utilizzerò anche in altri articoli dedicati al NodeMCU Lua Wifi.

NodeMCU Lua Wifi

ho dato questo titolo all’articolo per chiarire i 3 argomenti di cui leggerai:

  • NodeMCU: la scheda basata su ESP8266-12 con i GPIO su piedinatura standard ( 2,54mm )
  • Lua: il linguaggio di programmazione che utilizzerò per gli esperimenti di questo articolo
  • Wifi: l’obiettivo di questo ed altri articoli, sperimentare la connessione WiFi del modulo

per rendere tutto più amichevole ho deciso di stampare con la mia Delta 3D printer un case adatto ad ospitare il modulo NodeMCU.

Il disegno del case l’ho trovato su Thingverse, gentilmente condiviso da Toniet e già delle dimensioni corrette per il modulo e versione in mio possesso:

NodeMCU case opened

dopo averlo stampato ho inserito il NodeMCU nel case e constatato che la precisione con cui è stato disegnato il modello è tale da permettere al modulo di alloggiarsi perfettamente nel case:

NodeMCU case semiopened

tutti i pin del NodeMCU ver 1.0 combaciano e così come Toniet l’ha disegnato puoi anche usare del cavo, tipo doppino telefonico, per realizzare direttamente i collegamenti dei sensori, led, ecc..

Collega il NodeMCU Lua WiFI

inizia collegando il tuo modulo NodeMCU Lua WiFi al computer mediante un cavo USB ed apri un terminale di comunicazione seriale ( su suggerimento di Alberto, vedi articolo precedente; ho usato ZTerm per Mac.

All’avvio del modulo ti compare la seguente schermata:

NodeMCU Lua Wifi zterm start

in cui puoi trovare alcune delle informazioni che riguardano il firmware ed i moduli caricati, il mio modulo è già stato modificato caricandoci un firmware custom e con i moduli:

modules: node,file,gpio,wifi,net,tmr,uart,ws2812

subito prima del prompt nota il testo:

lua: cannot open init.lua

tratterò in un futuro articolo il suo significato e che possibilità ti offre.

Al prompt “>” puoi iniziare a scrivere direttamente comandi LUA che il NodeMCU Lua WiFi eseguirà a runtime.

I comandi supportati NodeMCU

la prima domanda che mi sono posto arrivato a questo punto è stata: “che comandi posso eseguire ?” ho quindi provveduto a cercare sui siti ufficiali quali comandi fossero supportati trovando questo link: NodeMCU Doc in cui sono indicati i comandi Lua supportati e presenti anche alcuni esempi.

NodeMCU Lua WiFi

Per connettiti al tuo WiFi casalingo con il NodeMCU Lua WiFi puoi utilizzare la sequenza di comandi seguenti:

wifi.setmode(wifi.STATION)
function listap(t)
   for k,v in pairs(t) do
      print(k.." : "..v)
   end
end
wifi.sta.getap(listap)

in cui linea 1: imposti la modalità in cui deve funzionare il modulo ESP8266, in questo esperimento come STATION ossia in grado di collegarsi ad una rete WiFi esistente;

linee 2-6: definisci una funzione denominata “listap” che scriverà a video l’elenco dei SSID intercettati dallo scan WiFi;

linea 7: usi il comando wifi.sta.getap(listap) per richiamare la funzione listap passandole come argomento il risultato dello scan wifi eseguito dal modulo.

Il risultato a video dell’interrogazione dovrebbe essere simile alla seguente:

Almanet 2.4G : 3,-80,--:--:--:--:--:--,4
Almanet : 3,-50,--:--:--:--:--:--,1
ALEMMA : 4,-93,--:--:--:--:--:--,1

in cui il primo campo è l’SSID e gli alti campi individuano caratteristiche di ricezione del segnale, Mac ecc..

Per connetterti ad una delle reti elencate puoi usare le seguenti linee:

> wifi.sta.config("Almanet","****************************")
> print( wifi.sta.getip())
192.168.1.9     255.255.255.0   192.168.1.1

in cui la linea 1: è la linea in cui esegui la connessione all’SSID scelto ( la password della mia rete WiFi l’ho sostituita con *** ma nel tuo caso dovrai metterci la password corretta );

linea 2: chiedi a NodeMCU Lua WiFi di scriverti a video l’IP,Mac Address e Gateway

linea 3: è il risultato del comando eseguito alla linea 3.

La schermata in cui esegui tutto questo dovrebbe essere simile alla seguente:

NodeMCU Lua Wifi connection

 

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/nodemcu-lua-wifi.html

45 comments

1 ping

Skip to comment form

  1. Salve!
    Mi puo’ far sapere se la scheda nodmcu lua puo’ pilotare da sola con alimentazione separata 4/8 rele’
    Grazie in anticipo

    1. Ciao Salvatore,
      mi sono posto la medesima domanda questa mattina perché sto realizzando un giochino per mio figlio con questa scheda.
      Non ho ancora indagato, di certo l’alimentazione dovrà essere separata.
      Se trovo qualcosa di utile scrivo un articolo in merito, consulta il blog nei prossimi mesi.

      • Piero on 7 Ago 2017 at 00:14
      • Reply

      Alimentazione separata perchè, io mi sono fatto un progetto di IoT che comanda 8 relè e usa o un alimentatore 5v 2A o un caricatore usb semore 5v 2A per alimentare sia la scheda NodeMCU sia i relè.
      Usa Mqtt.

      1. Grazie Piero

  2. Ciao Mauro,
    ti chiedo se il modulo NodeMCU Lua ha possibilità di collegarsi in modalità M2M Go oppure se può lavorare anche come Bluetooth.
    La mia necessità è di trasmettere dati numerici di un sensore 9DOF almeno a 100 campioni al secondo per l’analisi del movimento in real time, senza pause come ho sperimentato con altro WiFi (Fishino) in modalità STATION.

    Grazie, saluti.

    1. Ciao Riccardo,
      il modulo mostrato NodeMCU che ho testato io non ha connessioni Bluetooth, solo WiFi

    • Luca Sfragara on 4 Dic 2016 at 13:02
    • Reply

    Ciao Mauro,

    Posso programmare questa board da IDE di Arduino?

    Grazie Saluti

    1. Ciao Luca,
      Si, ho letto dei tutorial sul web in cui spiegano come installando delle estensioni sull’IDE per gestire questa scheda.
      In generale io preferisco usare LUA che è integrato nativamente nel firmware della scheda.

    • Pierluigi on 16 Gen 2017 at 15:38
    • Reply

    Ciao Mauro,
    questa nodeMCU wifi non è altro che un ESP8266 con “un po’ di robetta in piu'”, giusto? 🙂
    Mi par di capire che, ricevendo l’alimentazione da una microUSB abbia già uno stepper 5v->3v3 quindi posso alimentarla direttamente con i 5v, corretto?
    Ultima domanda, i pin (da impostare su HIGH o LOW) escono anche a 5v oppure solo a 3v3? Te lo chiedo perchè mia intenzione era di comandare un relay 5v (e 3v3 non basterebbero).

    Grazie mille e complimenti!

    1. Ciao Pierluigi,
      premesso la non condivisione del tuo gergo “robetta” sia una definizione riduttiva e inappropriata.
      Anche la sola definizione di ESP8266 è troppo generica per darti risposta, esistono diversi modelli, come puoi leggere nel blog, e questa è un modello specifico.
      Lo stepper è tutt’altra cosa, in questo caso parliamo di shift level da 5v a 3,3v per i livelli di segnale e di step-down per l’alimentazione.
      La ESP8266 funziona a 3,3v tuttavia, come saprai, un relay opportunamente optoisolato, può funzionare a 3,3v se la resistenza dell’optoisolatore lo consente.
      Mi preoccuperei di più della corrente di output.
      Sul sito del produttore NodeMCU trovi tutti i dettagli.

        • Pierluigi on 16 Gen 2017 at 17:25
        • Reply

        Ciao e grazie per la risposta così rapida.
        Premetto che voleva essere solo una battuta il termine “robetta”, non volevo certo indignare nessuno! 🙂

        Il modello cui facevo riferimento era, naturalmente, quello dell’articolo in questione. Non sono stato preciso, come giustamente hai evidenziato, sull’uso. Il relay, in realta’, deve solo ponticellare due pin di un termostato (ciò permette di forzare la modalità manuale) e l’esp in oggetto ha la funzione di accettare comandi da un’app android per farlo da remoto. Quindi non ho problemi di corrente di output.
        Mi chiedevo, quindi, se, avendo gia’ un regolatore di tensione interno, i pin fossero 3v3 o 5. Mi par di capire la prima ipotesi.
        Grazie mille per il suggerimento di un optoisolatore, non ci avevo pensato e vado subito a documentarmi.
        E non te la prendere per le battute, dai 🙂

        1. Ciao Pierluigi, non avevo compreso la battuta.
          L’optoisolatore ti evita di avere problemi anche in caso di correnti spurie da parte dei relay e ti permette di ovviare ai problemi di tensione e corrente che un relay richiede per funzionare.

            • Pierluigi on 17 Gen 2017 at 15:55

            Grazie mille per questo suggerimento. Credo proprio che opterò per l’optoisolatore.

    • cal0ger0 on 21 Gen 2017 at 00:18
    • Reply

    Salve,

    vorrei acquistare una scheda NodeMcu è programmarla con Arduino Ide.
    Sono un pò cofuso su quale versione sia meglio acquistare

    – V2 o V3? (ho letto di diverse persone che hanno avuto problemi con la connessione USB al PC sulla V3)
    – Ho trovato diversi produttori di NodeMcu: [[ pubblicità rimossa ]]. Quale secondo voi è quella che funzione senza troppi problemi?
    – Quale sito è più affidabile fra [[ link rimosso ]] ?

    1. Ciao Calogero,
      controlla la differenza tra la V2 e la V3 sul sito ufficiale NodeMCU e verifica quale chip Usb utilizza l’una e l’altra per comprendere quale sia quello più adatto al tuo progetto ed alla connessione con il tuo Pc.
      Attenzione al rispetto delle regole .. i link sono vietati.

    • Alessio on 26 Gen 2017 at 12:04
    • Reply

    Buongiorno
    sto svilluppando su ESP12E con NodeMCU. Ho la necessità di attivare una connessione WiFi Direct ma, nonostante sembri essere supportata, non trovo nessun riferimento.
    Qualche suggerimento?
    grazie

    1. Ciao Alessio,
      perdona la risposta con una domanda, stai usando:
      – un ESP12E su cui hai caricato un firmware NodeMCU
      – un NodeMCU
      – un ESP12E senza firmware

      Te lo chiedo perché è differente l’uso con il fw nodeMCU e senza.

    • Alessio on 27 Gen 2017 at 00:24
    • Reply

    Ciao Mauro, perdona la poca chiarezza…cercherò di rimediare.
    sto sviluppando delle funzionalità di logging e gateway I2C utilizzando un
    – ESP12E.
    le nuove funzionalità (parte in C e parte in LUA) sono integrate nell’ambiente
    – NodeMCU Firmware v. 0.95.
    la programmazione con
    – MCU FIRMWARE PROGRAMMER
    ed il caricamento dei file LUA (nonché debug utilizzandolo come terminal seriale) con
    – ESPlorer V0.2.0.
    Un requisito è che la connettività sia contemporanea in ST MODE e in WiFi Direct (per compatibilità con APP Android già esistente).
    Stupidamente mi sono “fidato” del datasheet del componente che riporta la fully compliance con WiFi Direct senza verificare (e qui ammetto l’ignoranza) la presenza dello stack nel codice sorgente.

    spero di essermi spiegato meglio e spero vivamente in una tua “illuminazione”.

    grazie

    Alessio

    1. Ciao Alessio,
      spero di aver compreso.
      Non comprendo perché Android ti chieda la contemporaneità tra ST MODE ( leggo client WiFi ) e WiFi Direct ( leggo server WiFi ) il chip può fare entrambe ma non in contemporanea, come ho scritto in questo articolo.. potresti continuamente eseguire uno switch da una all’altra modalità ma mi sembra complessa come implementazione sw.

    • Claudio Pighin on 7 Mar 2017 at 15:55
    • Reply

    Ciao,

    grazie della bella guida in ITALIANO!

    Uso ubuntu e vorrei seguire le istruzioni del paragrafo “Collega il NodeMCU Lua WiFI” ma non mi è chiaro quale terminale di comunicazione seriale utilizzare
    Ho provato con miniterm.py (mini-terminale inserito nel pacchetto Python-serial) ma scrive caratteri incomprensibili …
    Puoi aiutarmi?

    Claudio 🙂

    1. Ciao Claudio,
      devi impostare i baudrate di miniterm identica a quella che io imposto nel paragrafo “Collega il NodeMCU Lua WiFI” ossia 9600 altrimenti avrai l’effetto che descrivi.

    • Fabrizio on 17 Mar 2017 at 18:48
    • Reply

    Ciao, avrei bisogno di inviare a un server web i dati inviati al NodeMCU da Arduino attraverso la connessione seriale, ma ho trovato solo guide per inviare i valori letti dai GPIO , che comandi in LUA debbo usare per inviare i dati man mano che arrivano attraverso RX ? Non sono esperto di programmazione, con Arduino me la cavo ma questo per me è un nuovo mondo.
    Grazie e complimenti per il tuo blog che seguo molto spesso!

    1. Ciao Fabrizio,
      non sono eppure io un esperto Lua, tuttavia proverei a trattare i dati in RX come dato a se stante indipendentemente che provenga da GPIO o da Rx ed usare lo stesso metodo che hai visto negli esempi di cui scrivi per trasferirli al server web.

    • Massimo on 12 Apr 2017 at 09:07
    • Reply

    Ciao Mauro! Grazie per la tua guida! Ho una domanda per te:
    Ho sempre lavorato con il NodeMCU collegato alla rete domestica, con ssid e pass noti. Vorrei ora collegare il nodeMCU alla rete universitaria in cui la ssid e la pass sono note ma é necessario loggarsi ad una pagina web NOTA (con indirizzo noto) compilando i die campi nome utente e password dell’università. Dopo di che sono connesso. É possibile in qualche modo accedere dal nodeMCU alla pagina web di accesso e fornire da questo i dati nei punti precisi della pagina web? (come ho detto la pagina web di login é nota).

    Ti ringrazio infinitamente!

    Ciao!

    1. Ciao Massimo,
      quella che desideri è l’autenticazione con user e password ad un server radius,ldap o simili che io sappia non è supportata dal firmware anche se ti consiglio di verificare se sul sito ufficiale abbiano rilasciato qualche aggiornamento in merito.

    • Diego on 18 Apr 2017 at 14:58
    • Reply

    Ciao Mauro
    prima di tutto complimenti per i tuoi articoli su tale componente.
    Alcune info, se è possibile:
    Vorrei comandare da un raspberry l’esp collegato al wifi, e collegato fisicamente ad una scheda relè.
    Poichè tutte le logiche di controllo sullo stato dei GPIO sono implementate con script python sul rasp (al quale attualmente è collegata la scheda relè), volevo trovare una soluzione per fare richieste secche all’ESP sullo stato dei suoi GPIO, senza però effettuare richieste http, che inevitabilmente mi comporterebbe scrivere response sull’esp.
    Pensavo appunto a comandi AT da lanciare da remoto verso l’esp, ed avere le informazioni sui GPIO, e settarli a LOW o HIGH.

    Spero di avere spiegato al meglio la mia problematica, e ricevere un tuo consiglio.

    Grazie in anticipo

    1. Ciao Diego,
      per evitare troppe complicazioni, a meno che non ti piacciano, io userei direttamente una Raspberry Pi con connessione WiFi, ad esempio la RPi 3.
      Se vuoi usare la 1 o la 2 perchè già in tuo possesso puoi acquistare un dongle usb da pochi euro.

    • Andrea on 21 Mag 2017 at 18:46
    • Reply

    Ciao Mauro,
    ho da poco comprato il modo tinxi nodeMCU che monta un ESP 12. Ho notato che il modulo ESP è piuttosto caldo ma non presenta anomalie. E’ normale?
    Grazie in anticipo!

    1. Ciao Andrea,
      non conosco questo modulo specifico il mio è un NodeMCU v.1.0 acquistato a suo tempo dal produttore ufficiale e non mi sono mai accorto di temperature elevate sul modulo.
      Chiedi al produttore se quello che rilevi è corretto e a cosa sia dovuto.

  3. Ciao Mauro,
    ho acquistato il modulo ESP8266 NodeMCU DevKit (il formato è identico a quello delle tue foto, quindi spero anche le porte) e vorrei usarlo per collegare una scheda Arduino Mega ad internet, per effettuare chiamate (in GET o POST) ad un server web.
    Malgrado Google sia pieno di risultati, non sono riuscito a districarmi, la maggior parte dei tutorial spiega come usare l’ESP8266 indipendentemente (e gli sketch caricati direttamente nella scheda ESP8266 girano senza problemi).

    Quando provo a comandarla da Arduino non risponde, se provo a collegare via USB la scheda ESP8266, dal monitor seriale vedo che sta ancora girando l’ultimo sketch caricato, quindi immagino di non aver impostato correttamente i pin, è corretto?
    Come dovrei collegare Arduino Mega alla scheda ‘ESP8266 per poterla comandare? (collegarsi con ssid e pwd al wifi, chiamare periodicamente un URL passando dei dati e riportare ad Arduino la risposta (in JSON?))
    Grazie mille

    1. Ciao Daniele,
      mi sembra che tu ti stia complicando parecchio la vita.
      A cosa serve avere una NodeMCU connessa ad un arduino Mega ? Perché non utilizzi direttamente i sui pin?
      In merito ad essere uguale o meno, il consiglio migliore è leggere il datasheet del produttore.

  4. voglio utilizzare Arduino Mega perché prevedo di collegare diversi sensori e motori e ho fatto i conti dei pin disponibili.
    L’idea è quella di usare Arduino come centrale di tutti i segnali, collegata ad un RTS e ad un modulo wi-fi per la comunicazione col server.

    Quando ho cercato un modulo wi-fi da collegare ad Arduino non so perché ma ho trovato il nodemcu come perfetto compagno. A questo punto devo capire come fare oppure comprare un altro modulo (wi-fi shield?)

    1. Ciao Daniele,
      penso che la sua wifi shiled originale sia la soluzione migliore in quanto trovi già tutte le librerie scritte per questa scheda.
      Se vuoi utilizzare la NodeMCU, perché già l’hai acquistata, ti consiglio di scrivere due firmware uno sulla NodeMCU e l’altro su Arduino e di farli comunicare via seriale o IIC.
      Trovi molti miei tutorial sulla comunicazione IIC o I2C che possono esserti di aiuto.

    • Paolo on 17 Ago 2017 at 19:32
    • Reply

    Ciao,
    ho acquistato una Az-Delivery NodeMCU V2 Amica su amazon.
    Appena presa l’ho collegata con l’USB al pc e usato TeraTerm per il terminale seriale.
    Non c’è stato verso, qualunque boud rate utilizzassi sulla console si leggevano sempre caratteri strani. Tranne con 74480 con cui vedevo qualcosa contenete stringhe tipo
    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    ma non riuscivo a scrivere null’altro…
    Utilizzando l’IDE di arduino e utilizzando gli esempi della ESP8266 ho finalmente visto la scheda funzionare.
    Per intenderci gl iesempi che hanno in testa:
    #ifdef ESP8266
    extern “C” {
    #include “user_interface.h”
    }
    #endif
    e utilizzano funzioni tipo wifi_station_get_hostname, wifi_softap_set_config, wifi_set_event_handler_cb…ecc.

    Ma non riesco proprio a utilizzare LUA come scrivi tu in questi articoli. Cosa mi manca?
    Grazie

    1. Ciao Paolo,
      per il supporto LUA deve essere presente sulla NodeMCU il firmware adatto con il supporto delle librerie WiFi.
      Quando utilizzi l’IDE arduino per trasferire uno sketch esegui l’upload sia del firmware sia dello sketch ma non supporta LUA

    • mimmo on 1 Set 2017 at 19:16
    • Reply

    vorrei comprare una scheda gia’ programmata ( wifi jammer esp8266, dopo tanti tentativi mi sono arreso, non sono tanto pratico, avevo comprato una tinxi nodemcu lua wifi, dopo tanti giorni e tentativi, sempre errori. chi puo’ aiutarmi a comprarla gia’ programmata ? grazie

    1. Ciao Mimmo,
      lascio il tuo commento on-line così che altri appassionati possano aiutarti

    • roberto on 5 Set 2017 at 20:28
    • Reply

    Nodemcu può aiutarmi a crackare la mia password wifi ?

    1. Ciao Roberto, dubito, io non l’ho mai usata in questo modo.

    • Alessandro on 3 Dic 2017 at 19:13
    • Reply

    Ciao Roberto mi é appena stata consegnata la NodeMCU devkit board V2
    Desideravo riprodurre il case, non ho una stp 3d ma conosco un negozio per fare la stampa.
    Dal link non capisco se posso fare la stampa e quale file devo portare.
    Grazie
    Alessandro

    1. Ciao Alessandro,
      non so se ti riferissi a me, Mauro, o a qualche utente nei commenti.
      Lascio il tuo commento on-line perché Roberto ti possa rispondere.

    • Gian luca on 14 Mag 2018 at 17:21
    • Reply

    Ciao Mauro, con il node Mcu è possibile rilevare la temperatura di casa e l’umidità ed inviarla via Wi-Fi ad una pagina web ? Tu per caso hai già realizzato una cosa del genere ? Potresti spiegarmi nel caso tu l’avessi già fatto come posso procedere ? Grazie mille

    1. Ciao Luca,
      si è possibile con dei sensori esterni.
      Puoi trovare nel blog molti articoli dedicati all’ESP8266 che è il core del nodeMCU da usare come esempio per il tuo progetto.

    • Giovanni on 8 Giu 2018 at 22:55
    • Reply

    Ciao Mauro, ho installato NodeMCU su pc Windows ma non riesco a fare altrettanto su Mac High Sierra pur avendo scaricato e installato la patch CH34 non ottengo una porta seriale utile al collegamento.
    Grazie

    1. Ciao Giovanni,
      non ho provato con High Sierra, verifica che il driver per CH340 sia adatto a questo sistema operativo e consulta nei log del Mac cosa accade quando colleghi il NodeMCU

  1. […] l’articolo in cui hai imparato a connettere il node mcu al wifi con lua è il momento di iniziare a sfruttare […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.