Archivi tag: iot

Esempio lua per modulo nodemcu enduser_setup (parte2)

Dopo aver compilato e collegato il nodemcu ad uno switch il pin D5, come mostrato nel precedente articolo

Esempio Lua con modulo enduser_setup(parte1)

passiamo a caricare il codice che fa uso del modulo enduser_setup.

 Apriamo ESPlorer e carichiamo il seguente codice

  • webserver.lua

  • riasserawifi.lua

  • init.lua

 Nel seguente file zip sono presenti i file elencati sopra

 Codice esempio

Qui vi è la documentazione sul modulo enduser_setup

Documentazione modulo enduser_setup

 L’esempio è composto da tre  file:

  1. init.lua:  Si esegue all’avvio dell’esp8266.
  2. riazzerawifi.lua: Avvia il portale per definire il proprio Access Point.
  3. webserver.lua: Avvia il semplice webserver sul nodemcu.

Come si può notare dal codice presente in init.lua, nel caso in cui il pin D5 sia nello stato ALTO, si avvia il portale usando il modulo enduser_setup. Nel caso in cui il pin D5 è nello stato BASSO la scheda acquisisce l’IP da un Access Point definito in precedenza e si avvia il webserver di test.

Per salvare la configurazione dell’Access Point cui collegarsi posizioniamo lo switch in modo tale da avere l’ingresso HIGH sul pin D5 e riavviamo la scheda.

Da un pc possiamo osservare la presenza di un altro Access Point, definito nel file riazzerawifi.lua

composto dalla stringa Mynode+chipid del modulo

nodemcu portal wifiProvvediamo a collegarci a tale Access Point e mediante browser accediamo al portale, definito in genere all’indirizzo 192.168.4.1

Login portal wifi nodemcuSelezioniamo o immettiamo l’SSID di un Access Point con relativa password. Al termine della connessione riposizioniamo lo switch sulla posizione BASSO per il pin D5 e riavviamo il nodemcu dev kit.

Ora il sistema si collega automaticamente all’SSID definito mediante il portale ed avvia l’esempio del webserver.

Si rimanda alla documentazione Lua nodemcu per ulteriori approfondimenti e moduli utilizzabili

Documentazione LUA Nodemcu

Esempio lua per modulo nodemcu enduser_setup (parte1)

Nel precedente artciolo abbiamo mostrato un esempio di codice LUA per ESP8266 su nodemcu

Esempio codice Lua per ESP8266

Facciamo ora vedere un esempio in cui si utilizza il modulo enduser_setup.

Come prima operazione compiliamo il firmware nodemcu inserendo anche il modulo enduser_setup. Si rieseguono i passi fatti nell’articolo della compilazione

Compilare Nodemcu su linux

modificando il file app/include/user_modules.h  scommentando la direttiva

Dopo la compilazione del firmware e caricamento sul dispositivo, utilizziamo uno switch connesso al nodemcu dev kit come indicato di seguito

reset access point nodemcu

Il pin D5 può essere connesso ad un tensione bassa o alta. In base all’ingresso si modifica il comportamento del sistema.

Nota: Il Pin D5 nell’esempio specifico è stato usato in modalità di Input; nel caso si vogliano usare come Output, occorre inserire una resistenza per limitare la corrente di uscita, come specificato al link

Allocazione PIN GPIO

Nel prossimo articolo caricheremo del codice LUA di esempio e si utlizzerà il  modulo enduser_setup per gestire le connessioni wifi

  Esempio lua per modulo nodemcu enduser_setup (parte2)

Esempio Codice LUA per ESP8266

Come accennato nel precedente articolo

Caricare il firmware nodemcu con esptool

ora siamo pronti a caricare qualche esempio di codice sul sistema ESP8266.

Seguendo la documentazione Lua per Nodemcu

Documentazione LUA Nodemcu

proviamo a caricare un semplice server http sul sistema.

Apriamo ESPlorer e carichiamo il seguente codice,  esempio modificato presente sul github, inserendo i valori appropriati per i campi “SSID” e “password”.

webserver pin

Salviamo il file come ipstatico.lua. Con ESPlorer carichiamo il file sul nodemcu devkit con il pulsante “Save to ESP”.

Creare un secondo file init.lua

e salvare anche questo sul device.

Facciamo ripartire il dispositivo con il comando reset sul tool ESPlorer. Dalla barra dei comandi eseguiamo

ESPlorerche ci fornisce l’indirizzo ip acquisito dal disposito. Con il browser accediamo all’indirizzo ip ricavato sopra e troviamo una piccola interfaccia che ci permette di attivare o meno il PIN1 in uscita

webserverlua

Con tale metodo però occorre conoscere l’Access Point cui ci si deve connettere. Per superare questa limitazione si può utilizzare il modulo enduser setup

Modulo enduser_setup

Con tale modulo si avvia ESP8266 come access point con un portale su cui si possono inserire le credenziali dell’access point cui ci si deve collegare.

Nel prossimo articolo compileremo il firmware con l’aggiunta del modulo enduser_setup, non presente sulla compilazione standard, e faremo lo stesso esempio con il suo utilizzo

Esempio Lua modulo Enduser_setup

Caricare il firmware Nodemcu con esptool

Nell’articolo sulla compilazione del firmware Nodemcu

Compilazione firmware Nodemcu

avevamo creato nella cartella bin i file 0x0000.bin e 0x100000.bin e copiato i file dall’SDK Espressif blank.bin e esp_init_data_default.bin.

Dalla documentazione dello strumento esptool

esptool

il comando generico da usare è il seguente

Dal momento che siamo in presenza di una scheda con 4M di flash e con una velocità di comunicazione della USB di 9600 bps dovremo usare i seguenti parametri

  • mode=dio
  • size=32m

 Sempre dalla documentazione esptool, non avendo creato il firmware con docker, siamo in presenza dei due file, che avevamo già provveduto a combinare nel file nodemcu_float.bin.

 Nel caso della scheda a nostra disposizione è stato necessario anche usare i file

  • esp_init_data_default.bin: parametri di default del firmware.
  • blank.bin:  reset dei dati sulla scheda.

secondo la mappatura indicata al link

Guida ESP8266

Nel nostro caso gli indirizzi usati (4M di flash) sono

  • 0x3FC000 per esp_init_data_default.bin.
  • 0x3FE000 per blank.bin

Ci si posiziona in una command shell script  nella cartella nodemcu-firmware e si  impostano i path corretti

I comandi da eseguire sono quindi i seguenti, considerando /dev/ttyUSB0 la porta USB del dev kit

  • Reset della scheda

  • Caricamento del firmware

Nel prossimo articolo caricheremo del nostro codice LUA scipt sul dispositivo.

Esempio codice Lua

Compilare nodemcu su linux

Trattiamo ora i passi da seguire per creare la propria immagine Nodemcu con cross compilazione su Linux.

Partiamo sempre dalla immagine Debian descritta in articolo precedente

Ambiente Debian

 Seguendo quanto indicato al link

Cross compilazione

 come prima operazione prepariamo l’ambiente di cross compilazione.

Colleghiamoci su Debian con la nostra utenza (sviluppo nel nostro caso) e creiamo una cartella esp8266 da riga comando

 Installiamo i prerequisiti

 Procediamo a scaricare il repository esp-open-sdk

 per procedere alla sua compilazione

Al termine della compilazione abbiamo la seguente indicazione

Occorre inserire nel PATH quanto segue

Possiamo clonare a queto punto il github del firmware Nodemcu. Sempre dalla precedente finestra di riga comandi eseguire

Una volta posizionati nella cartella esp8266 eseguire

 Al termine posizionarsi in nodemcu-firmware

Prima di procedere alla creazione del nostro primo firmware apportiamo delle modifche sulla configurazione presente in app/include/user_config.h

  • Abilitiamo la direttiva per il nostro devkit 0.9 (devkit in nostro possesso)

#define DEVKIT_VERSION_0_9 1     // define this only if you use NodeMCU devkit v0.9

  • Modifichiamo la velocità di comunicazione sulla USB (velocità di comunicazione del nostro devkit)

//#define BIT_RATE_DEFAULT BIT_RATE_115200
#define BIT_RATE_DEFAULT BIT_RATE_9600

  • Modifichiamo la dimensione della flash a 4M (dimensione a nostra disposizione)

#define FLASH_4M
// #define FLASH_8M
// #define FLASH_16M
//#define FLASH_AUTOSIZE

Salviamo il file e procediamo alla creazione del firmware con il comando

Al termine sotto la cartella bin

troveremo due file: 0x00000.bin e 0x100000.bin. Creiamo un solo file nodemcu_float.bin con il comando

Aggiungiamo l’utente sviluppo al gruppo abilitato a scrivere sulla usb

Debian vede senza necessità di drivers  aggiuntivi la porta USB. In presenza di macchina virtuale abilitare la periferica.

Accedere all’sdk scaricato e compilato prima; nella cartella bin copiare i file

  • blank.bin
  • esp_init_data_default.bin

nella cartella bin dove sono stati generati i file del firmware nodemcu

binDefaultA questo punto siamo pronti a caricare il firmware sul dispositivo mediante lo strumento esptool. Nel prossimo articolo descriveremo come caricare il firmware sul dispositivo

Caricare il firmware con esptool

Caricare codice LUA su ESP8266

Dopo aver installato il firmware appropriato

Caricare il firmware

si può caricare il proprio codice LUA script sul nostro device. Per eseguire tale operazione esistono diversi strumenti

Caricare codice Lua

In questo articolo installeremo ESPlorer

ESPlorer

E’ una applocazione java e disponibile per i sistemi operativi Windows, Linux ed Osx. Come prerequisito richiede la presenza di Java SE ver. 7 o superiore.

Si scarica il tool dal link sotto elencato in una cartella

Scarica ESPlorer

e si lancia mediante il comando

o tramite script dos o unix (ESPlorer.bat o ESPlorer.sh).

A questo punto si collega il Nodemcu devkit al pc e si impostano i parametri di comunicazione e la velocità della porta COM.

Si presenta, per esempio in Windows, la seguente schermata

ESPlorer

Si può premere Open che permette l’accesso sul dispositivo.

ESPlorerConnesso

Si può a questo punto procedere alla creazione del proprio codice in LUA script e caricarlo sull’ESP8266 utilizzando; il codice si può generare integrandolo con i  vari moduli messi a disposizione dal firmware secondo la documentazione

Nodemcu API

Nel prossimo articolo descriveremo come compilare una versione del firmware personalizzata in Linux

Compilazione Nodemcu

Caricare il firmware con Nodemcu Flasher

Dopo aver esaminato nell’articolo precedente le diverse modalità di caricamento del firmware

Caricare il firmware Nodemcu

vediamo qui in dettaglio come operare su Windows.

 Partendo dal github del firmware nodemcu

Nodemcu github

si perviene alla applicazione per Windows

 Nodemcu flasher

 Si scarica la versione compatibile con il nostro sistema operativo (32 o 64 bit).

Come operazione preliminare si installano i driver, se non già presenti in windows, del chip USB-Seriale, come specificato nell’articolo precendente. Nel nostro caso avendo a disposizione un development kit Nodemcu 0.9 si installano i drivers CH340G

CH340G Drivers

 Si scarica il software Nodemcu flasher in una cartella; si collega il Nodemcu devkit al pc mediante una connessione USB-Micro USb ed il device dovrebbe essere riconosciuto dal pc nella lista delle porte COM

PortaCom

Nel nostro caso è disponibile sulla porta COM5.

I passaggi da seguire sono i seguenti:

  • Lanciamo il Nodemcu Flasher e scegliamo la porta COM5

NodemcuProg

  • In Config selezioniamo INTERNAL://NODEMCU con indirizzo 0x00000.

NodemcuProgConfig

  •  In Advanced abbiamo i seguenti parametri
    • Baudate: 9600 secondo quanto indicato sulla nostra scheda.
    • Flash size: 4MByte. Flash del nostro devkit.
    • Flash Speed: 40MHz il default.
    • SPI Mode: DIO il default per flash da 4Mb.

NodemcuProgAdvanced

  • Possiamo ora procedere al caricamento premento il tasto FLASH

NodemcuProgFlash

  • Viene mostrata la barra di scorrimento della operazione e le informazioni hardware del dispositivo che si sta caricando

NodemcuProgProgress

Al termine si può chiudere la finestra e verificare che tutto funzioni correttamente con un programma per caricare il proprio codice LUA script, che vedremo nel prossimo articolo

Caricare codice LUA

Caricare il firmware nodemcu

Nell’articolo precedente abbiamo trattato il mdoulo wifi ESP8266 integrato nella scheda di sviluppo Nodemcu

Modulo WiFi ESP8266

Qui analizziamo come caricare il firmware sulla propria scheda.

Prima operazione da eseguire è valutare il modello di scheda di sviluppo nodemcu a disposizione. Nel nostro caso eseguiremo le varie operazioni con una scheda di sviluppo Nodemcu V0.9. Il chipset usb-seriale in questo caso è il CH340G

I drivers per questo chipset possono essere scaricati direttamente dallo github di nodemcu

USB-Seriale Drivers

Per caricare il firmware si possono usare i metodi descritti nel sito di Nodemcu

Flash del Firmware

In sostanza vi sono due metodi principali

  • Flash tramite il tool windows Nodemcu Flasher

Nodemcu Flasher

  • Flash tramite una utility in Python da usare in Linux, OSX o Windows

esptool

Il tool Nodemcu flasher permette di caricare un firmware di default sulla scheda in modo abbasta intuitivo e  velocemente.

Come si evince dalla documentazione sopra allegata con il devkit non è necessario eseguire alcuna operazione sul pin GPI0 dell’ESP; le operazioni di flash ed esecuzione si avviano automaticamente.

Nel prossimo articolo caricheremo il firmware usando il Nodemcu flasher

Caricare il firmware con Nodemcu Flasher

Firmware Nodemcu

Come discusso nel precedente articolo

Modulo WiFi ESP8266

lavoreremo con il soc ESP8266 utilizzando il firmware Nodemcu

Firmware Nodemcu

Nodemcu, alla data alla revisione 1.5.4.1, è basato sulla revisione LUA 5.1.4. Utilizza come base l’SDK NONOS di Expressif

SDK NONOS Expressif

 e come filesystem utilizza spiffs

spiffs filesystem

Il firmware può essere ottenuto, come specificato al link

Compilazione firmware Nodemcu

in vari modi

  • Tramite un servizio cloud, specificando anche i moduli aggiuntivi se necessari

Compilazione firmware tramite cloud

  • Tramite un sistema Docker

Compilazione tramite Docker

  •  Tramite un cross compilazione su Linux

Descriveremo come installare il sistema di cross compilazione su Linux.

 Vi è anche la possibilità di installare un firmware di default tramite il tool Nodemcu  Flasher.

Nel prossimo articolo tratteremo come caricare il firmware

Caricare il firmware Nodemcu

Modulo Wifi ESP8266

In questo articolo descriviamo brevemente il microcontroller ESP8266 della Espressif

ESP8266

E’ uns soc a basso consumo, composto da un microcontroller RISC a 32 bit ed  integra già al suo interno un sistema wifi. Al link delle risorse di Espressif si trovano le infomazioni dettagliate sul soc

Risorse ESP8266

Le specifiche del dispotivo sono presenti nel seguente documento pdf

Specifiche ESP8266

Il chip è disponibile in vari moduli o in schede di sviluppo, che facilita notevolmente l’uso dal momento che ha già al suo interno le corrette impostazioni hardware per il caricamento del firmware e la sua esecuzione.

Su internet si trovano vari siti che descrivono diversi progetti di Home Automation o IOT utilizzanti tale soc. Un sito di riferimento è sicuramente il seguente

ESP8266 Forum

All’interno del sito si trovano i riferimenti ai metodi maggiormente utilizzati per lo sviluppo del firmware per tale soc

  • Arduino Ide

Arduino IDE

ESP8266 Arduino github

  • SDK Espressif

Forum Espressif Sdk

ESP8266 SDK

  • PlatformIO

PlatformIO

  • Nodemcu

Nodemcu nel forum esp8266.com

Nodemcu

Nodemcu github

L’ESP8266 è acquistabile sui vari siti, ad esempio ebay, sia in forma di modulo

ESP8266 su ebay

o come piattaforma di sviluppo

Piattaforma di sviluppo ESP8266

Vi sono vari moduli di AI-Thinker

AI-Thinker

che implementano ESP8266; noi useremo il devkit Nodemcu con all’interno i moduli AI-Thinker ESP-12/ESP-12E. Nei link precedenti su ebay erano presenti anche i moduli  ESP8266 ESP-01 e kit di sviluppo di altri produttori.

Sul github di Nodemcu sono presenti le schede di sviluppo che utilizzeremo in seguito. In particolare sono presenti due versioni della piattaforma

  • Piattaforma di sviluppo Nodemcu V1 (ESP-12E)

Nodemcu devkit V1.0

  • Piattaforma di sviluppo Nodemcu V0.9 (ESP-12)

Nodemcu devkit V0.9

Al seguente link vi è una descrizione dei vari moduli AI-Thinker disponibili e come ricavare le informazioni per la propria flash

Moduli ESP8266

Dal github di Nodemcu

Nodemcu Devkit

i pin del devkit 1.0 sono i seguenti

Nei prossimi articoli descriveremo il firmware Nodemcu, come compilarlo, come caricarlo sulla scheda e faremo degli esempi utilizzando il linguaggio di scripting  LUA, utilizzato in tale firmware

Lua

insieme ai moduli sofware messi a disposizione da tale firmware

Documentazione nodemcu

Nel prossimo articolo descriveremo il firmware Nodemcu

Firmware Nodemcu