Archivi tag: wifi

ESP32 – IDF Sdk con IDE Eclipse

Dopo aver configurato l’ambiente di sviluppo IDF nell’articolo precedente

ESP32 – IDF Sdk

vediamo ora come utilizzare Eclipe come IDE per lo sviluppo del codice. Le istruzioni sono disponibili al link

Configurazione Eclipse

Scaricare Eclipse per C/C++ per Linux

Download Eclipse

Scompattare il file e spostarlo su /opt/

Eseguire ecplise

Impostare il workspace per eclipse

eclipse-workspaceUna volta aperto l’IDE selezionare File–>Import–>C/C++- -> Existing Code as Makefile Project

eclipse-importPremere Next; alla schermata successiva selezionare la cartella contenente il Makefile di un progetto di esempio ne campo “Existing Code Location” e scegliere come “Toolchain for indexer settings” CrossGcc come ad esempio indicato di seguito

eclipse-import2Una volta caricato il progetto con il tasto destro sul nome del progetto si sceglie l’opzione properties

eclipse-project-propertiesSotto C/C++ Build–>Envinronment aggiungere la variabile

eclipse-batchAggiungere sempre nella medesima sezione la variabile IDF_PATH che punta all’SDK IDF scaricato

eclipse-idf-pathEditare la variabile PATH ed aggiungere il path ai bin del cross compilatore /home/sviluppo/Esp32/espressif/esp/xtensa-esp32-elf/bin

eclipse-pathAccedere sempre in “C/C++ General”–> “Preprocessor Include Paths”; scelgliere il tab Providers e cliccare su “CDT Cross GCC Built-in Compiler Settings”

eclipse-cross-cdtSostituire ${COMMAND}

eclipse-cross-cdt1con xtensa-esp32-elf-gcc

eclipse-cross-cdt2Accedere ora nei providers e scegliere “CDT GCC Build Output Parser”

eclipse-cross-cdt3ed inserire all’inizio del Compiler command pattern xtensa-esp32-elf-

eclipse-cross-cdt4Salvare le configurazioni.

Le impostazioni del progetto vanno fatte sempre da make menuconfig nella shell unix. Accedere nella shell ed impostare come GPIO del led da spegnere ed accendere il valore 2; questo perché nel nostro caso la scheda è una doit il cui design è illustrato nel presente documento

SchematicsforESP32

Accedere a Example configuration

blink-configurationed impostare il valore del gpio a 2

blink-gpioSalvare la configurazione. Riandare su Eclipse e procedere alla pulizia con

eclipse-clean-blinke successiva compilazione con Project–> Build

eclipse-build-blinkPer eseguire il flash del firmware da eclipse, selezionare il progetto e con il tasto destro scegliere Build Targets -> Create…

eclipse-create-targetInserire nel campo target il valore flash, lasciando di default tutto il resto

eclipse-create-target-flashA questo punto si procede al caricamento dell’immagine cliccando due volte sulla nuova voce flash all’interno dei target del progetto

eclipse-run-flash Le impostazioni per eseguire il flash devono essere impostate con make menuconfig, come visto nell’articolo precedente

ESP32 – Idf Sdk

 

ESP32 – IDF Sdk

In questo articolo si descrive come impostare l’ambiente di sviluppo per ESP32 della Espressif.

Dal link alle risorse per il soc

https://www.espressif.com/en/products/hardware/esp32/resources

si accede alla guida per la compilazione del firmware sulle piattaforme Windows, OSX e Linux

http://esp-idf.readthedocs.io/en/latest/get-started/index.html

Le operazioni elencate di seguito sono eseguite sempre su Linux Debian 9, configurato come già descritto in precedenza

MicroPython – Python su dispositivi embedded

Si utilizza l’IDF del github.  Su Debian 9 con l’utenza utilizzata per collegarsi sul sistema si crea sotto la Home dell’utente la cartella Esp32 ed all’interno la cartella espressif

Installare i prerequisiti

Scaricare il cross compilatore

Creare la cartella esp e dall’interno scompattare il toolchain

Aggiungere al PATH la cartella bin del cross compilatore

Aggiungere al gruppo dialout, l’utenza utilizzata per le operazioni

Clonare il repository IDF dal $HOME/Esp32/espressif

Aggiungere la variabile di ambiente IDF_PATH

Creare la cartella dei progetti sotto $HOME/Esp32/espressif e copiare un esempio dalla cartella dell’IDF

Eseguire la configurazione

Accedere a Serial flasher config–> ed impostare i parametri della connessione; nel nostro caso lasciamo il default

idf-serial_flasher

Salvare la configurazione e compilare il firmware

Per caricare il firmware sulla scheda eseguire

Per caricare solo la applicazione eseguire

mentre per compilare solo la applicazione eseguire

Per eseguire il monitor del programma eseguire

hello_world

Gli altri esempi disponibili con sdk

https://github.com/espressif/esp-idf/tree/f586f5e/examples

Al seguente link invece sono presenti i riferimenti delle API dell’IDF

http://esp-idf.readthedocs.io/en/latest/api-reference/index.html

Si può anche generare la documentazione dai sorgenti del github. Posizionarsi in ~/Esp32/espressif/esp-idf/docs/en

Installare i prerequisiti

Generare i documenti in formato html

make-htmlLa documentazione è generata in _build/html.

Nel prossimo articolo imposteremo come IDE per la compilazione dei programmi Eclipe

ESP32 – IDF SDK con IDE Eclipse

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

ESP32 – Compilazione MicroPython per ESP32

Iniziamo una serie di articoli che trattano la scheda Espressif ESP32

Modulo WiFi-Bluetooth ESP32

Dopo aver analizzato negli articoli precedenti MicroPython per ESP8266, in questo incominciamo a trattare MicroPython su ESP32.

Di seguito viene mostrato come generare l’immagine MicroPython partendo dal codice sorgente per la scheda ESP32.

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 Micropython e successivamente la cartella esp32

 Il github di MicroPython è presente al link

Github Micropython

Le istruzioni per l’ ESP32 sono presenti al link

MicroPython esp32

Clonare il repository

Accedere in micropython/ports/esp32

Eseguire

Il comando rilascia l’hash del github dell’ espidf supportato.

Al momento della nostra compilazione il risultato è il seguente

Ritornare nella cartella /home/sviluppo/Micropython/esp32 e clonare ESPIDF

Eseguire il checkout con l’hash ricavato sopra

Eseguire

Installare il cross compilatore come indicato al link

Cross compilatore

Seguendo le indicazioni del link sopra riportato, si procede quindi ad installare i prerequisiti

Scaricare il cross compilatore

Creare la cartella esp sotto /home/sviluppo/Micropython/esp32

Scompattare il cross compilatore in esp

Esportare nel PATH la cartella dei binari del cross compilatore

Accedere in

Creare il file makefile con all’interno

Accedere alla cartella micropython presente in /home/sviluppo/Micropython/esp32

Eseguire

per aggiungere le dipendenze esterne.

Si compila il cross compilatore MicroPython

Si compila infine l’immagine per l’esp32 con il comando

Il firmware è generato nella cartella ports/esp32/build con il nome firmware.bin.

Procedere al caricamento del firmware con i comandi

Nel nostro caso il deploy ha avuto esito positivo con il comando

E’ possible caricare l’immagine firmware.bin con i  comandi

dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP32.

Nel prossimo articolo compileremo il firmware nodemcu per ESP32

ESP32 – Compilazione firmware nodemcu

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

Dopo aver visto nel precedente articolo la compilazione del firmware MicroPython per ESP8266

MicroPython – Compilazione MicroPython per ESP8266

mostriamo ora come compilare un modulo all’interno del firmware; tale modalità ottimizza l’esecuzione del modulo e minimizza la dimensione dello stesso sul dispositivo: il modulo è congelato nel firmware.

Con il firmware compilato in modalità standard si hanno a disposizione i seguenti moduli, elencati nella consolle REPL con il comando

standardmodulesProviamo ora a compilare il firmware con i moduli mqtt già all’interno. Per tal obiettivo si copiano i sorgenti dei moduli nella cartella umqtt sotto modules

umqttfolderSi provvede a ricompilare il firmware, come visto nell’articolo pubblicato sull’argomento. Da micropython/ports/esp8266 si eseguono i comandi

Come si può notare dal log di compilazione anche questi sorgenti vengono posti nello stato frozen

frozenmodulesSi carica di nuovo il firmware. In questo caso nella lista dei moduli presenti nel firmware otteniamo

firmwarewithmodulesE’ possbile anche creare il firmware con i moduli non compilati ed ottimizzati copiando i sorgenti nella cartella scripts sotto esp8266; nel caso specifico i sorgenti vanno posti sotto la cartella scripts

I moduli sono sempre visibili nel firmware, ma non ottimizzati, per cui se serve qualche modulo lo si copia sul dispositivo durante la lavorazione e nell’ultima fase del progetto si compila il firmware con i moduli congelati.

 

 

 

 

 

 

MicroPython – Compilazione MicroPython per ESP8266

Dopo aver utilizzato in alcuni esempi il firmware MicroPython sulla scheda ESP8266

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

in questo articolo viene mostrato come generare il firmware MicroPython per la scheda ESP8266.

Il sistema operativo è Debian 9 già incontrato in precedenza per le utility esptool

MicroPython – Python su dispositivi embedded

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

 Il codice sorgente di MicroPython è presente al link

Github Micropython

Le istruzioni per compilare il firmware per l’ESP8266 sono presenti al link

MicroPython ESP8266

Clonare il repository

Scaricare il cross compilatore, come indicato qui

Cross compilatore

Come indicato al link sopra, scarichiamo i sorgenti del cross compilatore  sempre dalla cartella esp8266

Installare i prerequisiti per la compilazione

Procedere alla compilazione del cross compilatore

Dopo la compilazione esportare nel PATH la cartella dei binari del cross compilatore

Accedere alla cartella micropython presente in ~/Micropython/esp8266

Eseguire

per aggiungere le dipendenze esterne.

Si compila il cross compilatore MicroPython

Si compila infine l’immagine per l’ESP8266 con il comando

Il firmware è generato nella cartella ports/esp8266/build con il nome firmware_combined.bin.

Procedere al caricamento del firmware sulla scheda con il comando

dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP8266.

Nel nostro caso il deploy ha avuto esito positivo con il comando

E’ possible caricare l’immagine firmware_combined.bin con il comando

Nel prossimo articolo si analizza come compilare all’interno del firmware dei moduli aggiuntivi MicroPython

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

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.

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