Display cinesi ST7735 e Arduino

Alla ricerca di un display TFT per un mio progetto con Arduino, ho trovato in vendita su diversi siti cinesi dei display basati sul chip ST7735 di Sitronix (datasheet). Il chip ST7735 offre una interfaccia SPI (Serial Peripheral Interface) ma la piedinatura dei display che ho ricevuto “sembra” riportare i classici PIN del bus I2C (SDA, SCL…): Si…

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…

DCC, configurazione decoder con CV

Nel precedente tutorial abbiamo visto come realizzare un decoder accessori DCC con Arduino. Per semplificare lo sketch, tutti i parametri di configurazione del decoder (in particolare il suo indirizzo) sono stati definiti come costanti: Spesso è però utile poter cambiare la configurazione del decoder senza riprogrammare il suo firmware (= lo sketch in esecuzione nel microcontrollore ATMega). Le specifiche DCC comprendono proprio un…

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 (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…

Arduino bootloader e ISP

Dopo lo sviluppo di uno sketch con l’IDE di Arduino, possiamo compilarlo e caricarlo sulla scheda Arduino collegata al nostro PC con un click sul pulsante upload: Il programma viene memorizzato nella memoria flash del microcontrollore (per una scheda Arduino Uno questo è l’ATmega328p). E’ possibile caricare il nostro programma sul microcontrollore senza necessità di un programmatore esterno grazie alla esecuzione, sul microcontrollore stesso,…