lunedì 12 gennaio 2015

Vi presento Arietta G25

La scoperta di schede a microcontrollore di piccole dimensioni, con Linux embedded, è stata uno dei principali starters per me per affrontare con decisione un'avventura nell'Internet delle cose.
Tra queste, la prima che mi ha davvero impressionato ha un bel nome accattivante, che riporta alla musica all'arte e alla poesia e, in generale alla leggerezza... Il suo nome è Arietta G25
Val la pena conoscerla meglio.





Arietta G25 è una control board basata su un microcontrollore a 400MHz Atmel con architettura ARM, nello specifico l'AT91SAM9G25, e prodotta da una startup italiana (sì, italiana!), ACME Systems, che produce diverse altre schede interessanti e che merita quindi più di una visita, http://www.acmesystems.it/.

Ricordo brevemente che un microcontrollore è qualcosa di più di una CPU perché include, in un solo chip, la RAM e alcune funzionalità di comunicazione che nell'architettura dei PC è realizzata con componenti integrati esterni alla CPU.
Ricordo anche che l'ARM, è una architettura di CPU di tipo RISC caratterizzata da un'alta efficienza energetica e che quindi ne ha favorito la diffusione in vastissima scala su dispositivi portatili e di piccole dimensioni (come tablet e smartphones), dove l'utilizzo della batteria e la mancanza di un sistema di raffreddamento sono fattori critici.

Non starò certo a descrivere nel dettaglio ogni singola funzionalità di Arietta: per questo le pagine del sito dell'ACME Systems sono sicuramente più appropriate.
In questo post darò solo una panoramica generale e spiegherò i motivi per cui mi sono appassionato subito di questo piccolo fenomeno.

Esistono due versioni di Arietta G25: quella a 128 MB e quella a 256 MB di RAM.
La RAM è su di un chip esterno ed è di fatto un'estensione di quella interna, che altrimenti sarebbe limitata ai soli 32K del controllore. Questa circostanza avvicinano la scheda ad essere quasi un piccolo PC...
Personalmente ho lavorato solo con quella a 128KB. In condizioni di funzione minimale (cioè solo i servizi essenziali di Linux), solo una trentina di KB sono occupati, lasciando 100KB ad eventuali altre applicazioni. Per l'esecuzione di task di controllo HW e comunicazioni 100KB sono sufficienti. Non lo sono più se si intende utilizzare software complessi o gestire grandi strutture di dati.


Arietta espone ben 35 linee di comunicazione sul connettore da 40 pin sul lato lungo della scheda (2 linee di 20 pin distanziati dei soliti 100 mils). Su queste linee si possono avere
  • linee I/O digitale (GPIO)
  • fino a 3 porte USB 2.0
  • Fino a 3 porte seriali standard
  • 1 linea SPI
  • 4 linee di conversione A/D o D/A (PWM)
  • 2 bus I2C
  • 1 linea 1-wire
  • 1 interfaccia I2S per stream audio

Tutte queste funzioni non sono disponibili contemporaneamente: l'utilizzatore deve decidere la configurazione di periferiche che più conviene e definirla staticamente in fase di avvio del sistema operativo. Per far ciò è necessario installare un file binario (il “.dts file”) nella directory /boot di Linux, ottenuto attraverso una pagina dinamica di configurazione sul sito della ACME Systems.
Sinceramente non mi è chiaro perché la compilazione del dts possa essere fatta solo sul loro sito, se non altro perché la cosa dà l'impressione di non avere il controllo totale sul processo di configurazione.

La ACME Systems fornisce come componente opzionale un modulino WiFi (meno di 10 EURO) che può essere montato con un apposito connettore da saldare sulle piazzole opportunamente riservate al modulo.
Per il montaggio, è necessario avere una certa padronanza di saldature ed utilizzare un saldatorino a punta finissima, di quelli da 30W massimo, aiutandosi con una lente di ingrandimento (anche se questo potrebbe essere necessario solo a coloro che, come me, hanno una vista, diciamo così, non al 100%).
Personalmente suggerisco caldamente di utilizzare il modulo WiFi se si pensa di utilizzare Arietta per applicazioni distribuite per l'Internet delle Cose
Questo perché Arietta non ha un connettore di rete Ethernet e perciò, come vedremo più avanti, la presenza di un PC sarebbe necessaria per permettere l'accesso remoto alla scheda, cosa non proponibile se davvero si pensa di collegare molti oggetti alla rete.

La memoria di massa è realizzata com una scheda microSD, soluzione comune ad altre schede dalle dimensioni ridotte, tipo Raspberry Pi. La microSD ospita il sistema operativo Linux e tutti i files dell'utente, esattamente come accade su di un PC. A tal riguardo, consiglio di utilizzare microSD di qualità con fattore di velocità 10 (è indicato all'interno di una “C”, sulla parte frontale della schedina) per ottenere il massimo delle prestazioni in termini di avvio del controllore ed accesso ai files.

Il sistema operativo consigliato dall'ACME Systems è un Linux Debian Wheezy con kernel 3.16.1. La scelta di Debian è molto appropriata per la sua grande diffusione e disponibilità di pacchetti software. Val la pena ricordare che Ubuntu è stata derivata da Debian e i due sistemi sono molto simili tra loro.
Per installare il sistema operativo si usa una procedura analoga a quanto si fa per il Raspberry Pi, ovvero si scarica sulla scheda SD un'immagine binaria preconfigurata (disponibile sul sito dell'ACME Systems)  utilizzando Win32 Disk Imager su Windows o il comando 'dd' di Linux. E' tutto spiegato sul sito. E' possibile anche installare una immagine personalizzata, ma sinceramente non ne vedo il motivo, dato che l'immagine dell'ACME Systems ha tutto quello che serve e, se qualcosa manca, si può aggiungere in seguito.

Se il sistema è installato correttamente, sarà possibile accederci immediatamente in modo TCP/IP (cioè con ssh) attraverso il connettore USB. Il sistema infatti realizza una modalità di rete Ethernet-over-USB che permette ad Arietta, ed al PC a cui è collegata, di dialogare come su di una normale connessione IP: entrambe vedranno una interfaccia di rete di nome “usb0” che a tutti gli effetti funziona come una Ethernet. Il sistema è preconfigurato in modo che l'interfaccia usb0 avrà assegnato l'indirizzo IP 192.168.10.10 e che il PC a cui essa è connessa abbia indirizzo 192.168.10.20. Questo significa che il PC utilizzato per configurare inizialmente Arietta deve avere quest'ultimo indirizzo IP assegnato ad “usb0” altrimenti ci potranno essere problemi di comunicazione. Ovviamente questi indirizzi possono essere cambiati successivamente.
Ovviamente, se si usa la schedina WiFi, di questi problemi potremo scordarci (ovviamente solo dopo la configurazione iniziale) perché l'interfaccia wifi sarà presumibilmente configurata automaticamente dal router wireless con il DHCP.

L'immagine Linux contiene al suo interno un web server Lighttpd già configurato e funzionante, per cui a fine installazione, Arietta è già pronta per il web! Non solo: l'immagine contiene anche l'estensione web Shell in a box che permette di accedere da browser ad una console shell a riga di comando come in emulazione terminale. In questo modo è possibile gestire la scheda remotamente senza alcuna necessità di presenza fisica sul posto. Questo è un'aspetto importante quando si parla di manutenibilità.

Per realizzare logiche applicative sulla scheda si possono usare tutti gli ambienti di sviluppo supportati da Debian. Ovviamente è possibile programmare in C++, ma il mio consiglio è quello di utilizzare Python. Per chi non lo conoscesse è l'occasione buona per impararlo e per capire che è una soluzione efficientissima, aperta, molto diffusa, molto potente e sicuramente molto più facile del C++. La ACME Systems rende disponibile da repository github una libreria personalizzata (ablib.py) che semplifica l'accesso alle linee di comunicazione. Anche altri ambienti scripting sono disponibili (PHP, Perl, LUA...). In teoria anche Java e supportato: tuttavia, in una situazione in cui la RAM è limitata a 128 o 256 KB, l'occupazione aggiuntiva di memoria da parte della Virtual Machine Java è un aspetto non secondario.

Ciò che colpisce di questa scheda al primo impatto sono le dimensioni, o meglio, la potenza di calcolo e la ricchezza di funzioni nelle sue dimensioni.
La scheda è tutta in un rettangolino di 53x25 millimetri, che ospita il processore, la RAM esterna, l'alloggiamento microSD e, sulla faccia inferiore, un connettore microUSB. E' presente anche un pulsantino miniaturizzato disponibile per interazioni personalizzate.

Arietta G25 è un HW open source: Sul sito dell'ACME è possibile trovare tutta la documentazione di progetto per la sua costruzione. L'essere open source è sicuramente un merito per questo gioiellino, dimostrando come il modello open source è un motore di innovazione capace di produrre oggetti di qualità indiscutibile e di abilitare una comunità mondiale di tecnici ed appassionati a realizzare soluzioni sempre più innovative con potenziali ben diversi e ben superiori rispetto ai prodotti dei big-ones della tecnologia.


Dal tono di questo post potete capire che Arietta G25 mi ha davvero conquistato. Penso che chi è appassionato di controllori e di embedded apprezzerà molto Arietta e avrà per le mani un componente che davverò mette in contatto con l'Internet delle Cose. E poi, è italiano!

2 commenti:

  1. Le schede sono da 128MB e 256MB non 128KB e 256KB ...

    RispondiElimina
    Risposte
    1. Ti ringrazio. Correggo subito l'errore.

      Elimina