Linux Day Torino 27-10-2012
Hardware is the
new Web
Gianfranco PONCINI
[email protected]

Lo sviluppo dell' hardware elettronico e' in
pieno fermento, tanto che qualcuno lo ha
paragonato all' esplosione di Internet quando e'
diventata raggiungibile da tutti.
Cosa lo ha reso possibile


Lo sviluppo hardware era prerogativa delle
aziende a causa dei costi delle attrezzature.
Ora sono disponibili:
−
Memorie flash non volatili
−
Programmazione sul circuito gia' montato
−
(ICSP / JTAG)
−
Bootloader cha si comandano da un PC
−
Ambienti di sviluppo gratuiti basati sul
compilatore GNU
Alcuni esempi

Arduino

Beagle & Beagle Bone

Raspberry Pi

UBW32 e altre schede basate su Pic32
.... e molte altre. Tutte queste schede
permettono all' hobbista di sviluppare
sistemi embedded con un costo accessibile
a tutti. E su tutti aleggia l' ombra di
Steve Jobs
Arduino


E' il piu' famoso di tutti. Da un micro a 8 bit
con 2k di RAM e 32k di flash si e' costruito un
caso planetario, imitato anche in America.
Una conferma del detto:
“Italians do it better”
Raspberry PI

E' nato come un PC economicissimo

Ma non e' solo questo .....
Beagle Board

Nata anch' essa come PC economicissimo
Beagle Bone

Una Beagle board ridotta all' osso (bone) da usare come
sistema embedded senza display, meno caro.
UBW32


Sostanzialmente un PIC32 con i piedini piu' grossi (e
cristallo e regolatore di tensione).
Confrontabile con i sistemi di sviluppo ufficiali.
Non supportato ufficialmente da Microchip.
Motivazioni recondite


I fenomeni di massa non accadono solo per
moda, le motivazioni ci sono anche se sovente
non le percepiamo a livello cosciente.
Qui ce ne sono molte, e vanno analizzate non
solo come fenomeno sociologico, ma anche per
i motivi tecnici
Spionaggio elettronico

Il disagio per l' uso dell' elettronica nello spionaggio
di massa spinge il desiderio di saper controllare e
bloccare questi strumenti.
Sistemi troppo blindati


I sistemi operativi
commerciali si
autoproteggono
limitando troppo le
reali possibilita' della
macchina
Per fortuna che c' e'
Linux !
Disoccupazione giovanile


Nell' attuale momento
economico qualcuno
si sta dando una
mossa.
E tanti sperano di
essere il nuovo
Steve Jobs
Il mito della rivolta delle macchine

Oggi sembra
dimenticato, ma una
volta era molto
dibattuto.
Terminator, con la
sua Skynet, e' uscito
assai prima che
Internet diventasse
nota al grande
pubblico.
Linux nei computer embedded


L' ampia Ram a basso costo ha permesso di
usare un sistema operativo in sistemi che
avevano solo un programma ad hoc
Linux lo troviamo in sistemi che i piu' non
immaginano nemmeno
Linux su varie CPU

Linux e' stato portato su varie architetture:
le piu' famose: X86 ARM MIPS
Sistemi presentati oggi

Esaminiamo ora i sistemi presentati oggi come
comunicanti fra loro, e cioe'

Arduino Raspberry Pi Pic32

In ottica:
Facilita' d' uso
Design intelligente
E soprattutto:
Consumo di corrente !
Un' applicazione specifica




Sistemi wireless collegati con radiomodem su
interfaccia seriale per controllo distribuito
Perche' queste due cose (seriale e modem) che
sembrano passate di moda ?
Non c' e' il wireless a 2.4 Ghz ?
Risposta: perche' esistono applicazioni
industriali in cui rimangono competitivi o
insostituibili, specie su piccoli sistemi, Su
Arduino ad esempio il wireless si mangia quasi
tutti i 32 k
Le frequenze radio

Le frequenze radio si dividono in tre categorie:
quelle dall' uso ormai bloccato (TV, cellulari,
aeronautica, forze armate, polizia, carabinieri)
quelle libere (Wi-Fi , ISM)
quelle disponibili pagando un opportuno canone
al ministero delle poste
Uso delle frequenze “inconsuete”




Per queste frequenze mettere in piedi un
sistema tipo W-Fi ha costi impensabili.
Un radiomodem seriale e' progettabile anche da
una piccola azienda (i radioamatori lo fanno da
un sacco di tempo, e sulle loro frequenze si puo'
fare la software defined radio).
Inoltre non esiste solo l' Italia. Sudamerica e
paesi Arabi con i loro grandi spazi hanno
contesti assai differenti.
In tempi di crisi un' opportunita' da considerare.
Pro e contro : Arduino


Facilita' d' uso: lo usano anche gli artisti.
Programmazione in un linguaggio tipo C, ma molto
semplificato, soprattutto senza i files .h !

Controllo diretto dell' hardware senza virtualizzazione.

Tutto a 5 Volt. C' e' anche il 3.3 ma non danneggia.

Connettori di espansione femmina.

Disposizione dei connettori che permette di costruire
shield a ponte meccanicamente assai robusti.

No USB host

I/O analogici
Pro e contro: Raspberry Pi

Grande memoria (256/512 MB)

Grande potenza di calcolo

Ha un' uscita video per interagire con l' utente

Molti linguaggi di programmazione (quelli Linux)

A differenza dei PC alimenta le periferiche non USB

USB Host con supporto degli Hubs

Supporto del multitasking (Linux)

Supporto di un sacco di periferiche (Linux)
Pro e contro: Raspberry Pi


Funziona a 3.3 Volt ma alimenta le periferiche con 5V,
con rischio di danni (innumerevoli i warning)
Connettore di espansione maschio su due file vicine:
montaggio delle espansioni precario

No I/O analogico

Consumo di corrente elevato

L' hardware virtualizzato sotto Linux ne rende la
programmazione non per tutti.
Pro e contro: Pic32

Microchip assai amichevole con gli hobbisti: vende
direttamente via web anche pochi pezzi

Alimentazione a 3.3V con I/O tollerante a 5V

Controllo diretto dell' hardware (no host env)

Programmazione solo in C (compilatore GNU)

I/O analogico

Non supporta ancora Linux (esistono versioni ridotte,
ma sperimentali e inutili). Per la sua architettura
(MIPS) esiste un Linux vero (OpenWrt), ma che
richiede Ram a megabytes e MMU.
Pro e contro: Pic32

Hardware costruibile da un hobbista.

Supporta 1 USB, anche isocrono, ma non gli Hubs.

Memoria media (piu' di Arduino, ma sempre kB)

Rimasto indietro come immagine rispetto ad Arduino

Signore assoluto del consumo di corrente
Il radiomodem utilizzato



E' l' Aurel Rtx-Mid, disponibile sia a 3.3 che a 5 Volt
Frequenza fissa 433.92 Mhz, massimo baudrate 9600,
potenza in uscita 10 mW, basato su chip MAXIM.
Piccolissimo e a basso costo (circa 15 euro)
Il radiomodem utilizzato


Piedinatura assai semplice, passo standard 0.1 pollici,
interfaccia bene con i microcontrollori.
Consumo di corrente basso, con power down.
Il radiomodem utilizzato


La commutazione da ricezione a trasmissione e' diretta
Quella inversa passa dal reset. Questo crea qualche
problema con l' hardware virtuale di Raspberry Pi.
Lo shield Arduino

Strutturato a ponte, meccanicamente robusto

Il radiomodem a 5 V e' alimentato direttamente
Lo shield Arduino

Usa la seriale hardware, cosi' puo' ricevere in modalita'
interrupt, Occorre pero' smontare lo shield durante la
riprogrammazione, per non interferire.
Lo shield Arduino

Usa due linee analogiche per leggere due termistori e
una linea digitale per pilotare un LED.
Lo shield Raspberry Pi

Struttura a 1/2 ponte, da una parte appoggia (meno
robusta)
Lo shield Raspberry Pi

Il radiomodem deve essere a 3.3 Volt, ma i piedini a
3.3 erogano solo pochi milliampere. Bisogna attaccarsi
al 5 V e mettere un regolatore di tensione
Lo shield Raspberry Pi

La CPU funziona a 700 Mhz, piu' della portante del
radiomodem. Il rumore elettrico generato e' assai forte,
considerata la sensibilita' del ricevitore. Occorre
schermare la CPU, visto che l' antenna deve comunque
restare fuori
La gestione hardware Raspberry Pi



A partire dal concetto UNIX (everything is a file), i
piedini di I/O vengono gestiti da pseudofiles.
La seriale e' una vera e propria periferica
(/dev/ttyAMA0) e come tale viene gestita.
I pins di controllo digitale del radiomodem (per questo
shield 23 e 24) da linea di comando si gestiscono cosi'
echo “23” > /sys/class/gpio/export
'apre' il pin 23
echo ”out” > /sys/class/gpio/gpio23/direction
lo mette in modalita' output (“in” per input)
La gestione hardware Raspberry Pi
echo ”1” > /sys/class/gpio/gpio23/value
lo mette a 3.3 V (“0” per 0 V)
−
Con 24 al posto di 23 si gestisce il pin 24
−
Per rilasciare il pin
echo “23” > /sys/class/gpio/unexport

Ovviamente essendo dei files si possono gestire da
programma, ad esempio scritto in C
La gestione hardware Raspberry Pi

Per la comunicazione funziona questo programma:
http://www.comptechdoc.org/os/linux/programming/c/com.c
ovviamente modificato per le nuove periferiche e con l' aggiunta
di parti per gestire Arduino e PIC32 via radio.


Tutta la parte di gestione hardware e segnali funziona
immutata
La gestione dei segnali del radiomodem viene mostrata nella
slide seguente, per il caso specifico gia' citato della
commutazione da riceziona a trasmissione
Per Arduino e' piu' semplice
// NON COMMUTARE IN
RICEZIONE PRIMA CHE
// ABBIA FINITO DI
TRASMETTERE !
// enable radiomodem as receiver
// prima abbassa il T/R
digitalWrite(7,LOW) ;
delay(10) ;
// poi abbassa l' enable
digitalWrite(4,LOW) ;
delay(10) ;
// poi rialza l' enable
digitalWrite(4,HIGH) ;
delay(20) ;
// here wait for commands from
raspberry pi
La gestione hardware Raspberry Pi



Raspberry Pi puo' gestire webcam USB. Puo' essere
usato per videosorveglianza, ma ha come hard disk
una scheda SD, su cui non si puo' scrivere tutti i
momenti. Meglio limitarsi a immagini fisse.
E' stato ricompilato uvccapture, che acquisisce
immagini fisse dalle webcam a specifiche UVC (non
tutte ! Fate delle prove prima di comprarne una !)
Uvccapture ha i vantaggi della multiprogrammazione:
dopo aver acquisito un' immagine puo' lanciare un
altro programma per un altro compito collegato
La scheda Pic32

Progettata in casa per essere costruita in casa,
Un altro passo avanti sulla via dell' hardware per tutti!

Il Pic32 e' nel package SOIC28 con passo piedini 1.27

Nessun componente SMD piu' piccolo dello 0805
La scheda Pic32

Se autocostruito si mette solo quello che
effettivamente serve (USB Host, USB device,
regolatore a 5 V per USB, quarzo a 32 Khz, LED
alimentazione, connettori maschio o femmina ….)
La scheda Pic32

Tre connettori di espansione con funzionalita'
riprogrammabile, di cui due a ponte tipo Arduino e
uno con pinout predisposto per inserire direttamente il
radiomodem
La scheda Pic32


USB host anche isocrono fino a 12 Mbit/secondo
Acquisizione di immagini a bassa risoluzione da
webcam USB a specifiche UVC
La scheda Pic32

Alimentabile in maniera device da USB

Alimentabile in maniera host da Vcc non regolata

Commutabile spostando un ponticello

Consumo di corrente che puo' scendere a microampere

Possibilita' di spegnere l' USB tramite il regolatore a
5 V con output enable
La scheda Pic32

Possibilita' di regolare dinamicamente il clock (e
conseguentemente il consumo di corrente) secondo le
necessita' scendendo fino a 32 Khz

Wake up on receive da linea seriale in modalita' sleep

E finalmente:
MPLAB anche su Linux !
Conclusioni

Nessun sistema e' perfetto, ognuno ha i suoi vantaggi e
svantaggi, c' e' posto per tutti.

Per gli “smanettoni” c' e' ampia scelta

Le difficolta' sono un' opportunita'

Il mondo sta aspettando il nuovo Steve Jobs


Il mondo del software open source, nato con Linux,
ha gia' prolificato generando l' hardware open source
Quale sara' la prossima nascita ?
“Non sapevano che era
impossibile farlo,
quindi lo fecero”
Bertrand Russell
Scarica

Raspberry PI - Linux Day Torino