ESP32 (38) – Factory reset

Negli ultimi due articoli di questo tutorial, vi ho mostrato come aggiornare over the air il firmware in esecuzione nel chip esp32. A volte è però necessario ritornare al firmware di fabbrica, ovvero quello memorizzato nella flash al momento della programmazione del chip. Molti dispositivi elettronici dispongono di un pulsante o pin che, se premuto per qualche secondo, effettua questo…

ESP32 (37) – OTA via https

Nel precedente articolo di questo tutorial, vi ho mostrato come sia possibile effettuare un aggiornamento Over-The-Air grazie alle funzionalità della dashboard Freshen. Oggi vi spiegherò come aggiornare il firmware in esecuzione sul chip esp32 utilizzando solo il framework esp-idf, senza la necessità di dashboard esterne. OTA API Il framework esp-idf mette a disposizione una serie di funzioni native per implementare, in un nostro programma, la capacità…

ESP32 (36) – OTA con Freshen

In uno dei primi articoli di questo tutorial, vi ho parlato del bootloader e della struttura della memoria flash. Nell’articolo scrivevo: In questo modo è possibile implementare un meccanismo di aggiornamento over-the-air (OTA): si invia la nuova versione dell’applicazione al chip esp32 mentre è in funzione; tale versione viene memorizzata in una nuova partizione Esistono diversi modi per implementare…

ESP32, PlatformIO

PlatformIO è un ecosistema opensource (come è definito nella homepage ufficiale) per lo sviluppo di progetti IoT. Il cuore della piattaforma è un componente software chiamato PlatformIO Core. Questo componente integra: [checklist] un sistema di compilazione cross-platform un gestore di librerie e di dipendenze un monitor seriale [/checklist] PlatformIO Core è sviluppato in Python ed è quindi in grado…

ESP32 (35) – BLE, scan response

Nei precedenti articoli vi ho mostrato come ricevere e inviare pacchetti di advertising secondo lo standard Bluetooth LE. Il payload (ovvero la porzione di dati “utili”) di tali pacchetti è al massimo 31 bytes. Si tratta di una quantità di dati piuttosto limitata: se ad esempio vogliamo includere il nome del nostro dispositivo, rimane poco spazio per altri dati.…

ESP32 (34) – BLE, raw advertising

Nel precedente articolo abbiamo visto come è possibile inviare pacchetti di advertising con il chip esp32. Per definire il contenuto del pacchetto, abbiamo utilizzato una struct, di tipo esp_ble_adv_data_t: La definizione di tale struct è nel file esp_gap_ble_api.h: Sebbene i campi disponibili siano molti, a volte è necessario poter definire il contenuto del pacchetto di advertising in modo arbitrario. Per…

ESP32 (33) – BLE, advertising

Nei precedenti articoli abbiamo visto come utilizzare il chip esp32 per ricevere ed interpretare i pacchetti di advertising trasmessi da periferiche Bluetooth Low Energy. Come esempio pratico, abbiamo sviluppato un programma per rilevare la presenza di un particolare iBeacon e attivare di conseguenza una uscita. Nel tutorial di oggi vedremo invece come trasmettere pacchetti di advertising. Processo di advertising Abbiamo già scoperto che il driver…

ESP32 (32) – BLE, iBeacon

Nel precedente articolo ho introdotto la tecnologia Bluetooth Low Energy e il processo di advertising. Abbiamo visto che un dispositivo BLE può sfruttare i pacchetti di advertising per inviare dati; in tal caso il dispositivo viene chiamato broadcaster, mentre i dispositivi che ricevono i dati sono chiamati observers. Il payload di un pacchetto di advertising ha la seguente struttura: ADV ADDR è l’indirizzo MAC del dispositivo (indirizzo…

ESP32 (31) – BLE, GAP

Nei precedenti tutorial avete imparato come utilizzare le funzionalità wifi del chip esp32. A partire da questo tutorial vi illustrerò invece la seconda tecnologia di comunicazione wireless che il chip supporta: il bluetooth. In particolare tratteremo lo standard Bluetooth Low Energy (BLE), chiamato anche Bluetooth 4.0 o Bluetooth Smart: Bluetooth Low Energy BLE è una tecnologia per la realizzazione di reti personali wireless (WPAN); ovvero…