La nuova scheda ESPertino per l’IoT

La scheda ESPertino offre un’eccellente integrazione di microelettronica con il modulo a microcontrollore ESP32-WROOM con Wi-Fi e BLE ideale per un'ampia varietà di applicazioni IoT e non solo: dalle reti di sensori a bassa potenza, alla codifica vocale e streaming musicale. ESPertino è disponibile solo su Elettronica Open Source con numerosi articoli applicativi che saranno pubblicati nei prossimi giorni.

Introduzione

L'internet delle cose ha l’obiettivo di collegare gli oggetti ad Internet. Queste "cose" usano o coinvolgono dati che devono essere misurati come parte di un sistema embedded più grande. I sistemi embedded sono dispositivi a microcontrollore che utilizzano sensori e altri meccanismi di rilevazione per la raccolta dati. Un sistema decisionale avrà l’obiettivo di raccogliere e analizzare i dati, e compiere decisioni sul sistema in base ai risultati dell’analisi. Come per qualsiasi progetto di sistema embedded, è importante iniziare con il corretto kit di sviluppo, scelto in accordo ai requisiti del progetto IoT.  Lo sviluppatore avrebbe bisogno di creare un ambiente hardware e software, scrivere driver e codice applicativo sia per il nodo IoT che per il server cloud, quindi eseguire il debug della connettività tra entrambi i sistemi prima di creare anche l'applicazione finale. Per facilitare questo processo, gli strumenti di sviluppo forniscono un ecosistema di connettività pronto con un codice applicativo testato che può creare un prototipo funzionante in meno di un giorno. Per la maggior parte degli sviluppatori, la creazione di un sistema di rete IoT da zero richiede la conoscenza di molte diverse tecnologie, tra cui la connessione cablata e wireless, lo sviluppo di codice embedded e di driver per dispositivi. Mentre molti sviluppatori esperti possono già conoscere queste tecnologie, competenze aggiuntive come la scrittura di applicazioni per dispositivi mobile e lo sviluppo di codice cloud per esempio sono delle competenze relativamente nuove. I nuovi kit di sviluppo di Internet of Things forniscono strumenti hardware e software flessibili, al fine di ridurre il time-to-market ma anche educare lo sviluppatore sulle nuove tecnologie. In questo contesto ESPertino si mostra una scelta ideale per applicazioni che coinvolgono il settore dell’IoT con il modulo core ESP32 per la connettività wireless, e due relè per l’interfaccia verso soluzioni ad alta tensione (figura 1). Attraverso delle librerie C/C++ la scheda è programmabile con l'interfaccia IDE Arduino. ESPertino ha una doppia alimentazione, due LED sui pin IO13 e IO05 e altri relativi al TX/RX della UART.

Figura 1: La scheda ESPertino con in evidenzia i due relè (nero) e il modulo ESP32 (grigio)

L’Hardware di ESPertino

Lo schema elettrico di ESPertino è visualizzato in figura 2 dove osserviamo i seguenti principali componenti:

  • Modulo ESP-WROOM-32
  • Relè
  • CP2102 della Silicon Labs
  • LD1117S33

Figura 2: Schema elettrico della scheda ESPertino

L'alimentazione della scheda può avvenire esternamente con il connettore X1 o tramite la USB (5 V). Un pulsante di reset SW1 è presente per la programmazione del firmware attraverso librerie Arduino IDE. Sulla scheda è integrato anche un sensore di temperatura IC3 MCP9700 che converte la temperatura in una tensione analogica. Questi sensori low-cost e low-power offrono un'accuratezza di ± 2 °C e ± 4 °C da 0 °C a + 70 °C, con consumi tipici di 6 μA. L'impiego dei sensori low cost permette di evitare circuiti di condizionamento e quindi eseguire il collegamento direttamente all'ingresso di un microcontrollore.

ESP-WROOM-32 è un modulo a microcontrollore con Wi-Fi e Bluetooth integrati che si rivolge ad un'ampia varietà di applicazioni. Al centro di questo modulo c'è il chip ESP32-D0WDQ6, progettato per essere scalabile e adattativo. Ci sono due core CPU che possono essere controllati individualmente o alimentati con una frequenza di clock regolabile da 80 MHz a 240 MHz. L'utente può anche disattivare la CPU e utilizzare il coprocessore a bassa potenza per monitorare costantemente le periferiche per i relativi aggiornamenti. ESP32 integra un ricco set di periferiche, come i sensori touch capacitivi, sensore di temperatura, sensori Hall, amplificatori a basso rumore (low noise amplifier LNA), e la relativa interfaccia per schede SD, bus Ethernet, SDIO / SPI, UART, I2S e I2C. L'integrazione di Bluetooth, Bluetooth LE e Wi-Fi garantisce una vasta gamma di applicazioni in ambito IoT: l'utilizzo di Wi-Fi consente una connessione diretta con internet tramite un Router, mentre l'utilizzo di Bluetooth consente all'utente di collegarsi comodamente al dispositivo mobile per trasmettere e ricevere segnali a bassa velocità di trasferimento dati. La corrente del chip in modalità sleep è inferiore a 5 μA, rendendo così il modulo adatto per applicazioni elettroniche portatili a batteria. ESP-WROOM-32 supporta velocità di trasmissione fino a 150 Mbps e potenza di uscita di 22 dBm alla PA. In quanto tale, il chip offre le specifiche leader del settore e le migliori prestazioni per l'integrazione elettronica, con un ottimo consumo energetico ed eccellente connettività. Il sistema operativo scelto per ESP32 è freeRTOS con LwIP; e TLS 1.2 come acceleratore hardware integrato. È inoltre supportato l'aggiornamento sicuro (crittografato), in modo che gli sviluppatori possano aggiornare i propri prodotti anche dopo il loro rilascio. Con la tecnologia avanzata di gestione dell'alimentazione, ESP32 può lavorare in diverse modalità, in particolare (tabella 1 e 2):

  • Modalità attiva (active mode): il chip può ricevere, trasmettere o ascoltare.
  • Modalità sleep (sleep mode): la CPU è operativa e il clock può essere configurato. Wi-Fi e Bluetooth sono disattivati.
  • Modalità light-sleep (sleep-light mode): la CPU è in pausa. RTC e il co-processore ULP sono in esecuzione. Eventuali eventi di sveglia (MAC, host, timer RTC o interrupt esterni) riattiveranno il chip.
  • Modalità deep-sleep (deep-sleep mode): solo RTC è acceso. I dati di connessione Wi-Fi e Bluetooth sono memorizzati nella memoria RTC. Il coprocessore ULP può funzionare.
  • Modalità di ibernazione (hibernation mode): l'oscillatore interno 8MHz e il coprocessore ULP sono disabilitati. La memoria di ripristino RTC è disattivata. Sono attivi solo un timer RTC sul clock lento e alcuni GPIO. Il timer RTC o i GPIO possono riattivare il chip dalla modalità di ibernazione.

 

Tabella 1: valori di consumo per alcune modalità operative

 

Tabella 2: valori di consumo per alcune modalità operative

ESP32 integra diverse fonti di clock per i core CPU, configurati per soddisfare diverse esigenze. La Figura 3 mostra la struttura del clock di sistema. Il chip ESP32 dispone di 40 pad GPIO fisici. Alcuni non possono essere utilizzati nè hanno i corrispondenti pin sul package di chip. Ogni pad può essere utilizzato come un I / O generico o essere collegato ad un segnale periferico interno. La memoria integrata è composta da quattro segmenti: ROM interna (448 KB), SRAM interna (520 KB), memoria RTC FAST (8 KB) e memoria RTC SLOW (8 KB). La ROM interna da 448 KB è suddivisa in due parti: ROM interna 0 (384 KB) e ROM interna 1 (64 KB). SRAM interna da 520 KB è suddivisa, invece, in tre parti: SRAM interna 0 (192 KB), SRAM interna 1 (128 KB) e SRAM interna 2 (200 KB). RTC FAST Memory e RTC SLOW Memory sono entrambe implementate come SRAM.

Figura 3: struttura schematica del clock di sistema dell'ESP32

CP2102 è un controller Bridge USB-to-UART altamente integrato che fornisce una soluzione semplice per aggiornare i design RS-232 al bus USB utilizzando un minimo di componenti e un ridotto spazio PCB. CP2102 include un controller USB 2.0, un ricetrasmettitore USB, un oscillatore, un EEPROM o un EPROM e un bus dati seriale asincrono (UART) con segnali di controllo, il tutto in un package QFN-28 da 5 x 5 mm. La ROM è programmata tramite USB, consentendo la fase di programmazione facilmente integrata nel processo di produzione e di collaudo del prodotto. I driver per i dispositivi virtuali (VCP) senza licenza forniti da Silicon Laboratories consentono di visualizzare un dispositivo CP2102 come porta COM nelle applicazioni PC. CP2102 integra un regolatore di tensione da 5 a 3 V che consente al circuito IC di essere configurato come un dispositivo USB alimentato da bus o dispositivo USB autoalimentato (figura 4).

Figura 4: regolatore interno al chip CP2102

LD1117 è un regolatore di tensione in grado di fornire fino a 800mA di corrente di uscita, disponibile anche in versione regolabile (Vref = 1.25V). Per quanto riguarda le versioni a tensioni fisse, sono offerti le seguenti tensioni di uscita: 2.5V, 2.85V, 3.0V 3.3V e 5.0V. Il dispositivo è fornito in package SOT-223, DPAK, SO-8 e TO-220. I package di montaggio superficiale SOT-223 e DPAK ottimizzano le caratteristiche termiche offrendo anche un deciso risparmio di spazio.

La serie di relè RSM954N impiegata sulla scheda (figura 5) è costituita da un materiale di contatto Ag/Au 0.2 μm, con un massimo carico di 3 A / 125 V AC e 3 A / 30 V DC. Questi piccoli relè rappresentano essenzialmente degli interruttori, il cui stato dipende dall'eccitazione. A riposo, il contatto mobile è connesso ad uno fisso, con l'altro disconnesso rappresentando, di fatto, un circuito aperto. In modalità di eccitazione, il contatto mobile si sposta verso l'altro contatto attivando un circuito esterno.

Figura 5: schema di collegamento dei relè

Installazione delle librerie

La libreria per la scheda ESPertino può essere scaricata dal seguente link e riportata nella sezione Download in fondo all'articolo. Prima di iniziare dovrete installare l'ultima versione di Arduino IDE e i driver del CP2102 della Silicon Labs. Successivamente, è necessario eseguire con attenzione i seguenti passi di installazione:

Mac OS/Linux:

Creare la cartella /Documenti/Arduino/hardware/espressif/ESPertino e copiare tutto il contenuto della libreria precedentemente scaricata. Successivamente, eseguire da terminale nella cartella /ESPertino/tools il seguente comando:

python get.py

In particolare, dovreste avere una nuova cartella dist e un file eseguibile denominato esptool nella cartella tools. Per gli utenti Mac, vi consiglio di leggere con attenzione la nota in fondo al paragrafo.

Windows:

Con Windows, il procedimento è esattamente uguale attraverso python con il comando precedente. In ogni caso, considerando la fattibilità dell'operazione python, la libreria presenta un file exe denominato get.exe attraverso il quale il sistema genererà i file necessari dopo averlo eseguito con i permessi da amministratore. In particolare, nella cartella tools verrà inserito un file eseguibile denominato esptool.

Arduino IDE:

Dopo aver installato correttamente la libreria, dovreste trovare sotto la categoria "Gestore Schede" la scheda ESPertino. I parametri di default relativi a Upload speed, Core debug level, Flash frequency, non dovrebbero richiedere una particolare gestione (ovviamente il valore nella voce "upload speed" dovrà coincidere con il vostro Serial.begin). Sotto la voce "Porta" ricordatevi di selezionare la Vostra COM di ESPertino installata attraverso i driver della SiliconLabs (figura 6).

Figura 6: Schermata Arduino con la scheda ESPertino. Sullo sfondo dell'IDE un esempio di codice.

Come semplice test, possiamo eseguire il codice riportato di seguito che consiste nel far lampeggiare il led LD5 posto sulla scheda e collegato all'ingresso IO13 del modulo ESP32.

void setup() { 
 //Initialize serial and wait for port to open: 
 pinMode(13, OUTPUT);

Serial.begin(115200); 
 Serial.println("Hello ESP32 World!"); 
  
} 
void loop() { 

 digitalWrite(13, HIGH); 

 //Serial.println("Hello ESP32 World!"); 

 delay(2000);

 digitalWrite(13, LOW);

 delay(500);

} 

Dopo aver compilato e inviato il codice al microcontrollore del modulo ESP32, e se tutte le operazioni sono andate a buon fine, Arduino risponderà con un messaggio conclusivo del seguente tipo:

Leaving...
Hard resetting...

Successivamente, per alcuni sistemi operativi, sarà sufficiente premere il pulsante SW1 (pulsante di reset) per eseguire l'applicazione caricata.

Nota:

Se in seguito ad una nuova riprogrammazione con l'IDE Arduino dello stesso codice leggermente modificato, oppure in fase di una nuova compilazione, vengono riscontrati problemi con il seguente messaggio nel terminale:

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

Occorrerà eseguire dei step in più relativamente all'installazione delle librerie per tutti i sistemi operativi. Vi accorgerete, inoltre, che per ovviare a questo problema sarà sufficiente staccare e ricollegare il cavo USB. In ogni caso, per evitare questa spiacevole situazione, sarà necessario eseguire correttamente, indipendentemente dal sistema operativo, i seguenti passi di installazione relativamente ai file exe/exec di esptool.py:

Eseguire nella cartella tools il seguente comando #1:

pyinstaller --onefile esptool.py

Nella cartella dist verrà memorizzato il file exec denominato esptool da sostituire con l'altro presente nella cartella tools. Qualora il sistema non supportasse il comando pyinstaller, questo può essere installato attraverso il seguente comando #2:

pip install pyinstaller

Per semplicità, nella sezione download abbiamo inserito la possibilità di scaricare i due file esptool già compilati, e quindi eseguibili, sia per il Mac-Os/Unix (testato con la versione 10.11.2), sia per Windows (testato con la versione Win10).

Questa procedura è fortemente consigliata per gli utenti Mac-Os, per gli utenti Windows, invece, bisognerà prima fare dei test (vedi codice Arduino sopra) in seguito all'installazione delle sole librerie, solo successivamente considerare quest'ultimo caso riportato nella "nota".

Conclusioni

La scheda ESPertino dimostra essere una interessante piattaforma per lo sviluppo di applicazioni generali IoT, forte anche del suo modulo core ESP32 che ingloba Wi-Fi e Bluetooth, oltre ad interessanti periferiche integrate perfettamente nel chip. Prossimamente vedremo su Elettronica Open Source una serie di progetti e una interessante promozione con la possibilità di poter acquistare la scheda. All'interno della libreria troverete anche esempi per poter gestire una rete Wi-Fi e le varie porte GPIO. A tal proposito, vi consiglio di dare anche uno sguardo al data sheet del modulo ESP32 dove troverete tutte le denominazioni dei pin e i loro impieghi.

Download

 

14 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 22 maggio 2017
  2. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 23 maggio 2017
    • dino salustri 28 giugno 2017
      • Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 28 giugno 2017
        • dino salustri 29 giugno 2017
  3. Davide Di Gesualdo Davide Di Gesualdo 25 maggio 2017
  4. brug71 30 maggio 2017
    • Emanuele Bonanni Emanuele Bonanni 30 maggio 2017
      • rodolfok rodolfok 6 giugno 2017
        • Emanuele Bonanni Emanuele Bonanni 6 giugno 2017
  5. Adriano Gandolfo 17 giugno 2017
    • dino salustri 29 giugno 2017
      • Giovanni Di Maria Giovanni Di Maria 29 giugno 2017

Scrivi un commento

ESPertino è la nuova scheda per IoT compatibile ARDUINO.
Scopri come averla GRATIS!