Archivi tag: lua

ESP32 – Compilazione firmware nodemcu

Dopo aver visto nell’articolo precedente la compilazione del firmware MicroPython per ESP32

ESP32 – Compilazione MicroPython per ESP32

In questo articolo viene mostrato come generare l’immagine Nodemcu  per la scheda ESP32.

Il firmware non è ancora completo come quello esistente per ESP8266.

Le istruzioni sono reperibili sul github al link

https://github.com/nodemcu/nodemcu-firmware/tree/dev-esp32

La documentazione sulla compilazione sono elencate al link

https://nodemcu.readthedocs.io/en/dev-esp32/en/build/

Il sistema operativo è Debian 9 già incontrato in precedenza per le utility esptool ed Adafruit-ampy

MicroPython – Python su dispositivi embedded

 Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Esp32  e successivamente la cartella nodemcu

Clonare il repository

Per aggiornare il repository già clonato seguire quanto descritto al link sulla compilazione

Accedere alla cartella nodemcu-firmware-esp32 ed eseguire la configurazione

nodemcu-settingsAbilitare il bluetooth e dei moduli accedendo in

Component config–>Bluetooth ed abilitarlo

nodemcu-bluetoothComponent config–>Nodemcu modules ed abiltare i moduli che potrebbero servire

nodemcu-modulesNella configurazione per il flash  lasciamo i valori di default per la nostra scheda esp32,  Serial flasher config->

nodemcu-flashSalvare la configurazione ed uscire. Per compilare l’immagine eseguire

Alla fine della compilazione viene mostrato il comando da eseguire per flashare il dispositivo; la stessa operazione viene facilitata eseguendo semplicemente

 Per informazioni sulle partizioni delle varie versioni di ESP32 fare riferimento alla documentazione

http://api-guides/partition-tables.html

Nel prossimo articolo si mostra come compilare una applicazione utilizzando sdk di Espressif

ESP32 – IDF Sdk

Modulo WiFi-Bluetooth ESP32

In questo articolo descriviamo brevemente il microcontroller ESP32 della Espressif

ESP32

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

Risorse ESP32

Le specifiche del dispotivo sono presenti nel seguente documento pdf

Specifiche ESP32

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

esp32

All’interno del sito si trovano i riferimenti ai metodi/piattaforme  maggiormente utilizzati per lo sviluppo su tale soc, tra i quali si segnalano

  • Arduino Ide

ESP32 Arduino

  • ESP-IDF

ESP32 IDF

  • Micropython

MicroPython

  • PlatformIO

PlatformIO

  • Firmware Lua

LuaNode

Lua-RTOS-ESP32

Nodemcu Development

L’ESP32 è acquistabile sui vari siti, ad esempio ebay, sia in forma di modulo o piattaforma di sviluppo

ESP32 su ebay

Esistono  moduli del soc esp32 di diversi fornitori

Espressif esp-wroom-32

AI-Thinker esp32s

Al link

http://esp32.net/

sono elencate le diverse configurazioni hardware disponibili. Tra i kit di sviluppo segnaliamo

AI-Thinker NodeMCU-32S

DoIT ESP32 Dev Kit

Esitono dei kit di sviluppo basati su esp32 che integrano anche un modulo wireless LORA

Lora

al proprio interno.

Si segnalano ad esempio

Heltec Wifi LoRa 32

TTGO LoRa32

Nei prossimi articoli descriveremo come compilare ed usare vari firmware su schede di sviluppo con soc esp32.

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

Dopo aver esaminato la connessione con il sensore di temperatura ed umidità

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

in questo articolo si imposta l’esp8266 per gestire un relé. Di seguito i collegamenti utilizzati

nodemcu relay

Anche in questo esempio metteremo il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del init.lua e del file relay.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • relay.lua

Il file relay.lua gestisce il relay, la sottoscrizione sul broker mqtt con invio dello stato con il topic monitor. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/relay1/status : viene inviato lo stato del relé all’avvio ed in risposta dei comandi nel topic /home/relay1/command.
  • /home/relay1/monitor: periodicamente viene inviato lo stato del relé.
  • /home/relay1/command: Da altri client è possibile inviare dei comandi all’esp8266.
    • Restart: riavvia l’esp.
    • Sleep n: Tempo di sleep di n secondi.
    • ON: Accende il relay.
    • OFF: Spegne il relay.
    • Status: Richiede lo stato del relé (Acceso o Spento).

Vi sono varie funzioni di servizio che gesticono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo tratteremo la configurazione del webserver sul Beaglebone e la configurazione del websocket per Mosquitto sempre sul Beaglebone

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt Websocket

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

Dopo aver caricato il firmware sul dispositivo esp8266

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

si passa a collegare tale modulo con un sensore di temperatura ed umidità DHT11. Di seguito i collegamenti utilizzati

Nodemcu DHT11

Nell’esempio che faremo si considererà l’opzione di mettere il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del file init.lua e del file tempumid.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • tempumid.lua

Il file temumid.lua gestisce la misura della temperatura ed umidità, la sottoscrizione sul broker mqtt con invio dei dati rilevati. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/room1/temperature: vengono inviati i dati della temperatura rilevata.
  • /home/room1/humidity: vengono inviati i dati della umidità rilevata.
  • /home/room1/status : viene inviato lo stato del sensore all’avvio ed in risposta dei comandi nel topic /home/room1/command.
  • /home/room1/monitor: periodicamente viene inviato lo stato del sensore.
  • /home/room1/command: Da altri client è possibile inviare dei comandi al sensore.
    • Restart: riavvia il sensore.
    • Sleep n: Tempo di sleep di n secondi.

Vi sono varie funzioni di servizio che gestiscono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo imposteremo l’esp con il relé

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

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