Scopriamo la Spresense Main Board della SONY

In questo articolo andiamo a esplorare "Spresense Main Board", una scheda di sviluppo molto compatta, basata sul microcontrollore multicore CXD5602 della Sony. La sua maggiore potenzialità è quella di permettere lo sviluppo di applicazioni IoT in maniera molto semplice e veloce, anche attraverso l'utilizzo dell'IDE di Arduino oppure di Eclipse IDE. Sulla board sono inclusi i processori della Sony CXD5247GF e CXD5602GG. In aggiunta vi è un'antenna GPS, una interfaccia per camera e l'estensione per 26 pin esterni. La Spresense è estremamente espandibile con delle aggiunte esterne che saranno disponibili anche da terze parti per il Bluetooth (BTE), il WiFi e i sensori per le immagini.

Caratteristiche tecniche

La professionalità della scheda di sviluppo Spresense si nota fin da subito aprendo la confezione. Elegante e minimale, essa contiene in un pratico package il dispositivo, opportunamente protetto e stabile, assieme a un utile "bugiardino" riportante le istruzioni principali. Le caratteristiche tecniche del dispositivo sono di tutto rispetto e si trovano riassunte nella tabella 1. Ma avremo modo di approfondirle in questo articolo e in un altro di prossima pubblicazione.

Processore ARM Cortex-M4F x 6 Cores
Frequenza massima del clock 156 Mhz
Ingressi e uscite digitali GPIO, SPI, I2C, UART, I2S
Ulteriori specifiche Connettore di espansione per ben 26 pin
SRAM 1.5 MB
Produttore Sony
Memoria Flash 8 MB
Famiglia di processore Sony
Caratteristiche GNSS: GPS, GLONASS, ingressi analogici a 2 canali, con intervallo di 0.7 V

Tabella 1: caratteristiche della Spresense

L'utilizzo di Spresense permette soluzioni IoT di alto livello. Combinando inoltre diversi moduli di comunicazione e sensori (da acquistare separatamente) è possibile creare prototipi IoT di qualunque tipologia. Poiché la scheda contiene un chipset a elevate prestazioni e a basso consumo, è possibile realizzare un sistema IoT ad alte prestazioni anche per applicazioni mobili. La figura 1 mostra la Main Board Spresense, davvero molto piccola. Essa riesce persino a stare comodamente all'interno di un pugno chiuso, essendo le sue dimensioni solo di 50mm. x 20.6mm.

Figura 1: la Spresense Main Board della SONY

Figura 1: la Spresense Main Board della SONY

Alimentazione elettrica

Per alimentare il dispositivo è sufficiente utilizzare la porta micro USB a 5 V sulla scheda principale (di tipo B), anche se le sue porte lavorano a un voltaggio molto più basso. Il collegamento alla fonte di alimentazione è testimoniato dall'accensione di un piccolo diodo Led sul circuito, di colore blu.

La Main Board

Il sistema completo di Spresense è costituito essenzialmente da due schede:

  • la Main Board, esaminata nel presente articolo;
  • la Extension Board, che sarà oggetto di un prossimo articolo.

Come detto prima, la Main Board usa un processore prodotto dalla Sony appositamente per le applicazioni IoT. I nuovi chipset montati on board sono:

  • il processore CXD5602 System on Chip (SoC) multi core;
  • il chip CXD5247.

Approfondendo le caratteristiche tecniche menzionate prima, la Main Board è caratterizzata dalle seguenti particolarità:

  • processore CXD5602 della Sony;
  • memoria flash di 8 MB;
  • connettore dedicato per camera;
  • antenna GNSS (GPS) ;
  • Pin e LED;
  • GPIO multipli (UART, SPI, I2C, I2S);
  • 2 canali ADC;
  • 4 diodi Led verdi per applicazioni generiche;
  • 1 diodo Led blu per spia di alimentazione;
  • porta seriale USB.

Attenzione: tutti i pin della Main Board Spresense operano alla tensione di 1.8V. Applicando un voltaggio maggiore si potrebbe distruggere irrimediabilmente il dispositivo.

Una dettagliata descrizione delle funzionalità dei pin è illustrata in figura 2. Essa definisce i vari pin anche in termini di nome, di compatibilità con Arduino e di relativa funzione svolta.

Figura 2: la descrizione di tutti i pin della Main Board Spresense

Figura 2: la descrizione di tutti i pin della Main Board Spresense

Nella figura di cui sopra, tra gli altri, ricoprono un ruolo importante i seguenti connettori, switch e diodi Led:

  • BR (Boot recovery button): ha la funzione di riportare il dispositivo alle impostazioni di fabbrica. Non ha altre funzionalità;
  • da LED0 a LED3: si tratta di quattro diodi Led di colore verde, pilotabili da firmware. La loro funzionalità può essere molto generica ma altrettanto utile;
  • RST (Reset button): è un piccolissimo pulsante che permette il reset del dispositivo, quando premuto;
  • PWR (Power LED): è un piccolo diodo Led che emette una luce azzurra quando la scheda è alimentata;
  • CN2: è il connettore Micro USB Type-B;
  • CN4: è il connettore B-2-B a 100 pin per la connessione a schede esterne. Si trova sul lato opposto (bottom) del dispositivo;
  • CN5: è il connettore per la camera.

Il diagramma a blocchi dell'intero dispositivo è riportato in figura 3.

Figura 3: lo schema a blocchi della Main Board Spresense

Figura 3: lo schema a blocchi della Main Board Spresense

Tabella comparativa delle prestazioni

In tabella 2 è riportata una utile tabella comparativa che consente di paragonare il sistema Spresense con le piattaforme Arduino Uno e Raspberry Pi 3B. L'utente faccia riferimento a essa per raffrontare i vari tipi di sistemi.

Caratteristica Arduino Uno Spresense Raspberry Pi 3B
Processore AVR ARM M4F ARM A53
Bits 8 32 64
Numero di cores 1 6 4
Velocità di clock 16 MHz 156 MHz 1.2 GHz
Sistema operativo Nessuno Nuttx Linux
Tempo per il boot 0 <1 secondo ~20 secondi
RAM 0.002MB 1.5 MB 1000MB
FLASH 0.032MB 8 MB Nessuna
SD Card Su Shield On-Board opzionale On-Board essenziale
eMMC Nessuna Shield Nessuna
EEPROM 0.001MB Flash microSD
Alimentazione 5v o 6-20V 5V o LiPo(3.7V) 5V
Potenza media 50 mW 100mW + modalità basso consumo 2400 mW
Qualità audio Shield Alta Bassa
Microfono Shield Fino a 8 microfoni Stereo
Altoparlante Shield Stereo Stereo
GNSS Shield GPS & GLONASS Shield
Orologio Shield RTC Shield
Pin I/O 14 29 + 4 diodi LED 27
Tensione I/O 5V 5V/3.3V/1.8V 3.3V
UART 1 2 2
SPI 1 1 (3.3/5v) +1 (1.8V) 1
I2C 1 1 (3.3/5V) +1 (1.8V/camera) 2
PWM 6 4 1
Canali ADC 6 6 Nessuno
Bits ADC 10 10 Nessuno
Velocità max. ADC ~10 kHz 500 kSPS Nessuna
USB 1 dispositivo 2 dispositivi 4 host
Camera Shield 5M Pixel 8M Pixel
Video display Nessuno SPI fino a 360x240 HDMI, DSI
WiFi Shield Shield 802.11n
Bluetooth Shield Shield 4.1 Classico, Low Energy
Ethernet Shield Shield 10/100
Cellulare Shield Shield Shield

Tabella 2: confronto tra schede

Connessione al PC

Il collegamento elettrico della Main Board Spresense al PC viene effettuato attraverso un normale cavo USB/microUsb tipo B. A connessione avvenuta si dovrebbe illuminare il diodo Led blu situato sullo stesso dispositivo, vicino il connettore stesso. Per il riconoscimento di quest'ultimo da parte del sistema occorre avere installato il driver CP210x USB UART bridge, lo stesso che si è utilizzato per l'utilizzo della scheda ESPertino. Esso permette d'implementare una comunicazione seriale attraverso la connessione USB (COM). Se il cablaggio è stato effettuato correttamente e i driver sono presenti e regolarmente installati viene visualizzata la relativa porta COM nella finestra della gestione dei dispositivi, come mostrato in figura 4.

Figura 4: la Main Board è correttamente rilevata dal sistema

Figura 4: la Main Board è correttamente rilevata dal sistema

In caso contrario occorre sostituire il cavo oppure si provi a togliere e rimettere lo stesso diverse volte nella relativa presa USB.

Installazione delle librerie

L'installazione delle librerie Spresense è assai semplice è può essere effettuata attraverso la Arduino IDE Board Manager oppure in maniera manuale. Di seguito è illustrata la prima procedura.

Impostazione dell'indirizzo delle librerie nell'IDE di Arduino

Il primo passo da compiere è quello d'informare l'IDE di Arduino della locazione (indirizzo) dalla quale scaricare le librerie. Per tale scopo si acceda al menù File->Impostazioni e si copi il seguente indirizzo nella casella "URL aggiuntive per il gestore Schede":

https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/generic/package_spresense_index.json

Si prema, infine, il tasto OK. La figura 5 illustra chiaramente tale operazione.

Figura 5: per l'installazione delle librerie di Spresense occorre configurare il corretto indirizzo nell'IDE di Arduino

Figura 5: per l'installazione delle librerie di Spresense occorre configurare il corretto indirizzo nell'IDE di Arduino

Ricerca delle librerie

A questo punto si acceda al menu Strumenti->Scheda->Gestore schede, sempre nell'IDE di Arduino, e si digitino le prime tre o quattro lettere di Spresense ("spre"), come mostrato in figura 6. Saranno visualizzate le relative librerie.

Figura 6: la scelta della libreria da installare per la Main Board Spresense

Figura 6: la scelta della libreria da installare per la Main Board Spresense

Si può premere, dunque, il pulsante "Installa" per iniziare la procedura d'installazione. Si ricorda, ovviamente, di avere attiva la connessione a Internet poiché tale fase implica anche il download dei pacchetti. Dopo alcuni minuti le librerie di Spresense dovrebbero essere installate e la scheda regolarmente riconosciuta dall'ambiente di sviluppo, come visibile in figura 7.

Figura 7: il dispositivo Spresense è stato riconosciuto regolarmente dall'IDE di Arduino, dopo la corretta installazione delle librerie

Figura 7: il dispositivo Spresense è stato riconosciuto regolarmente dall'IDE di Arduino, dopo la corretta installazione delle librerie

Selezionando, finalmente, la scheda Spresense dall'elenco proposto dall'IDE, essa viene scelta come dispositivo attivo. Si ricordi di selezionare anche la corretta porta seriale di comunicazione e la relativa velocità.

Aggiornamento del Bootloader

Come ultimo passo è necessario aggiornare il bootloader della scheda. Si eseguano, allo scopo, i seguenti passi:

  • menù Strumenti->Programmatore->Spresense Firmware Updater;
  • menù Strumenti->Scrivi il bootloader.

Apparirà la videata di cui in figura 8, che invita a eseguire alcune semplici azioni.

Figura 8: le istruzioni per aggiornare il bootloader

Figura 8: le istruzioni per aggiornare il bootloader

Il nostro primo sketch

Siamo, adesso, pronti a creare il nostro primo programma, anche per testare se il dispositivo funziona correttamente. Si digiti, dunque, nell'editor dell'IDE di Arduino il seguente sketch:

void setup() {
   pinMode(LED0,OUTPUT);  // Configura la porta in uscita
   pinMode(LED1,OUTPUT);
   pinMode(LED2,OUTPUT);
   pinMode(LED3,OUTPUT);  
}
void loop() {
   digitalWrite(LED0,HIGH);   // Accende il diodo Led
   digitalWrite(LED1,HIGH);
   digitalWrite(LED2,HIGH);
   digitalWrite(LED3,HIGH);   
   delay(250);  
   digitalWrite(LED0,LOW);    // Spegne il diodo Led
   digitalWrite(LED1,LOW);
   digitalWrite(LED2,LOW);
   digitalWrite(LED3,LOW);   
   delay(250);    
}

L'ambiente di lavoro è visibile in figura 9. Si seguano le frecce colorate per le parti salienti a cui prestare la massima attenzione.

Figura 9: il primo sketch prevede il lampeggio simultaneo dei quattro diodi Led onboard

Figura 9: il primo sketch prevede il lampeggio simultaneo dei quattro diodi Led onboard

Si compili e si scarichi il programma sul dispositivo, con gli appositi tasti. Dopo alcuni istanti i quattro diodi Led presenti sulla Main Board Spresense dovrebbero lampeggiare, come anche attestato dall'animazione presente in figura 10. Come si nota, le quattro porte relative ai diodi Led sono nominate, rispettivamente, LED0, LED1, LED2 e LED3.

Figura 10: con il precedente sketch i quattro diodi Led onboard lampeggiano

Figura 10: con il precedente sketch i quattro diodi Led onboard lampeggiano

E' possibile aumentare, fino al massimo (ossia fino a 1.152.000 baud), la velocità di comunicazione tra il PC e la Main Board, semplicemente selezionandola tramite il menù Strumenti->Upload Speed. Questo permette di caricare il programma sul chip in modo molto più rapido.

Proviamo le porte di I/O esterne

Lo scopo dell'articolo è quello di far conoscere, a grandi linee, le potenzialità della Main Board Spresense. Sarà poi il lettore ad approfondire le sue conoscenze e il livello di sperimentazione, secondo le proprie esigenze. Il prossimo esempio dà l'occasione di collegare un diodo Led a una porta di uscita del dispositivo, in modo da ottenere il classico lampeggio. Si realizzi, allo scopo,  il cablaggio di cui alla figura 11.

Figura 11: il cablaggio della Main Board Spresense con un diodo Led esterno

Figura 11: il cablaggio della Main Board Spresense con un diodo Led esterno

Ricordiamo che il voltaggio di uscita delle porte digitali è pari a 1.8V, pertanto tale tensione è appena sufficiente a polarizzare direttamente il diodo Led. Non sarebbe nemmeno necessaria la resistenza di limitazione ma è stata inserita nello schema per evitare qualsiasi tipo di rischio. A ogni modo, con tale configurazione, il semiconduttore luminoso si accende al minimo delle sue possibilità. Occorrerebbe utilizzare un transistor collegato a una fonte di alimentazione più robusta. Tali livelli digitali sono, pertanto, sufficienti a fornire dei segnali logici di comando e non di attuazione vera e propria.

Si digiti, adesso, il seguente sketch all'interno dell'editor dell'IDE di Arduino.

void setup() {
   pinMode(21,OUTPUT);   // Porta in uscita
}
void loop() {
   digitalWrite(21,HIGH);   // Porta a livello logico alto
   delay(250);  
   digitalWrite(21,LOW);   // Porta a livello logico basso
   delay(250);    
}

Compilando e caricando il firmware sul dispositivo si riscontrerà il debole lampeggio del diodo Led al ritmo di due volte al secondo, in ottemperanza alle specifiche dettate dal firmware. La porta 21 è designata a operare quale pin di controllo e la sua numerazione segue, in questo caso, quella standard di Arduino.

Un semplice sistema DAC

E' molto semplice realizzare un DAC. L'esempio che segue utilizza sempre la porta 21 per implementare un sistema di conversione da digitale ad analogico. Il seguente sketch genera una tensione continua che cresce gradualmente con una percentuale di duty cycle compresa tra lo 0% e il 100%.

void setup() {
}
void loop() {
   for(int i=0;i<=250;i+=10) {
      analogWrite(21, i);
      delay(250);
   }
}

La variazione del segnale in uscita avviene quattro volte al secondo e la relativa tensione crescente può essere letta dalla porta 21 tramite un normale tester, posizionato a 2VDC fondo scala, come visibile anche in figura 12. L'intero ciclo si ripete all'infinito.

Figura 12: la realizzazione di un semplice DAC e l'andamento crescente della tensione in uscita

Figura 12: la realizzazione di un semplice DAC e l'andamento crescente della tensione in uscita

>>>Leggi anche: Realizziamo applicazioni IoT con il Raspberry Pi 3: il sistema ordina l’acqua

Conclusioni

Con la Main Board Spresense si può realizzare, praticamente, qualunque tipologia di applicazione. Con l'utilizzo delle shield aggiuntive, assieme alla sua board di espansione, le relative capacità si moltiplicano ulteriormente. Si tratta, sicuramente, di un dispositivo che lo sviluppatore dovrebbe provare almeno una volta per la realizzazione dei propri progetti IoT. La Main Board Spresense non è solo ciò che abbiamo visto nell'articolo. Con i suoi protocolli di comunicazione (SPI, I2C, UART, I2S) è possibile collegarla a tantissimi altri dispositivi. Con essa è possibile, anche, realizzare sistemi di acquisizione ADC, prototipi audio per la registrazione e la riproduzione di musica ad alto livello, schede per l'acquisizione e il processo video e molte altre cose.

 

Scrivi un commento

EOS-Academy
Abbonati ora!