Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Arduino & raspberry pi - Un connubio stimolante
1. Archive All • Download Newest
Arduino&Raspberry pi – Un connubio perfetto
Collegare Raspberry e Arduino via seriale - Community HackLab Udine
hacklabudine.it
Arduino (hardware) - Wikipedia
it.wikipedia.org
Raspberry Pi - Wikipedia
it.wikipedia.org
2. Collegare Raspberry e Arduino via seriale - Community HackLab Udine
hacklabudine.it
Nota Tratto dalla all'incontro Introduzione alla Raspberry Pi Le slides è consultabile e scaricabile da
qui (sono in Google Docs)Prima di tutto stabiliamo come devono collegarli tra loro le due schede
semplicemente usando il cavo USB da collegare alla Raspi e Arduino come se quest'ultimo
fosse collegato ad un PC. In questo caso perdiamo una porta USB della Raspyberry Pi.
usare le UART
via Wireless (ZigBee, WIFI Bluetooth)
ethernet
I2C/SPI
Come procediamo
usciamo la porta UART della raspi per collegarci con Arduino lasciando libero un connettore
USB.
questo comporta che dobbiamo inserire un circuito per mantenere compatibile le due tensioni di
lavoro in modo da non danneggiare la raspi.
Per questo scopo usciamo un economico CD4050B
Arduino tramite il suo pin VIN viene alimentato a 5V direttamente dalla raspi.
Scriveremo un piccolo programma per Arduino e uno in Python che gira sulla raspi.
Il CD4050 è un integrato che fa da buffer/converter senza invertire il valore logico in ingresso.
Lo alimentiamo a 3,3V in modo che la tensione massima di uscita è 3,3V con un valore logico 1
ed ovviamente 0V quando 0. State attenti a non usare il CD4049 che invece fa da inverter,
invertento il valore in ingresso sul uscita.Schema per collegare Arduino e la Raspberry
Pi.Questo schema usa la seriale presente sul connettore P1 delle GPIO della raspi per
collegarla a Arduino. Viene usato un economico CD4050 per convertire le tensioni delle i/O.
Arduino lavora a 5V mentre la raspi a 3.3V. Cosi si evita di usare una porta USB sulla
raspi.Arduino è alimentato a 5V direttamente dalla Raspi. Raspberry Pi Arduino via UART
Raspberry Pi Raspberry PiRaspberry
Pi CD4050 CD4050 Arduino Arduino Arduino PIN TYPETENSIONE
PIN DIREZIONE/NOTEPINTENSIONE TYPE PIN P1-8
(GPIO14) TX 3V33 >>> 2 3V3 RX0 P1-10 (GPIO15) RX 3V34 <<< 5 5V TX1 P1-25V POWER
OUT 5V 5V 5V POWER IN VIN P1-6
GND GND 8 GND 8 GND GND P1-13V3 POWER OUT 3V3 1 Alimenta il CD4050
a 3V3 1 Accendere e spegnere un LED su Arduino inviando un comando dalla RaspiScriviamo
questo piccolo codice per Arduino tramite il suo IDE
int led = 13;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
3. if (Serial.available() > 0) {
char comando = toLowerCase(Serial.read());
// usciamo i caratteri a A ricevuti via seriale per accendere il led
if (comando == 'a') {
digitalWrite(13, HIGH);
}
// gli altri caratteri lo spengono
else {
digitalWrite(13, LOW);
}
}
}
Il codice è banale e niente di particolare. Accende il LED se riceve un carattere a o A tramite la seriale
e lo spegne per ogni altro carattere ricevuto.
Scritto il codice trasferiamo al nostro Arduino.
Nota che puoi installare IDE Arduino sulla RPi, scrivere il codice e trasferirlo a Arduino via USB.
Passiamo al semplice codice scritto in Python sulla Raspberry Pi. Useremo direttamente la shell
interattiva di Python. Se non presente va installato il pacchetto python-serial che è il modulo per gestire
la seriale da questo linguaggio. Per installarlo:
sudo apt-get -u install python-serial
La porta seriale 0 sulla RPi si trova su /dev/ttyAMA0. La stessa è occupata da getty che permette di
accedere alla raspi via seriale. Se volete disattivare definitivamente commentate la riga /etc/inittab
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Ora alla un terminale della raspi eseguiamo Python in modalità interattiva
pi@raspberrypi ~/demo $ python
Python 2.7.3rc2 (default, Apr 23 2012, 04:52:06)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> arduino=serial.Serial('/dev/ttyAMA0')
>>> print arduino
Serial<id=0x687290, open=True>(port='/dev/ttyAMA0', baudrate=9600, bytesize=8, parity='N',
stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
>>> arduino.write('a')
1
>>> arduino.write('s')
1
>>>
con arduino.write() inviamo a Arduino il valore sia seriale, che se a o A il LED si accende mentre con
gli altri carattere si spegne.Ora un altro piccolo esempio usando ADC di Arduino. Un potenziomentro
4. ci permetterà di variare la tensione in ingresso del pin A0 del ADC di Arduino. La lettura sarà inviata
alla raspi via serialeCollegate il potenziometro come qui sopra alla scheda ArduinoOra vediamo di
scrivere il codice per:
Arduino
il quale legge il valore di A0
lo converte già in valore di tensione
lo invia via seriale
sulla raspi scriviamo un programmino in Python per la lettura (basterebbe un semplice
terminale seriale)
const int PinPot = A0; // il potenziometro è collegato alla ingresso analogico A0
/*
definiamo la variabile di conversione della valore_ADC - tensione
- 1024 sono le combinazioni della risoluzione del ADC a 10bit e va da 0 a 1023. Per
determinare quando corrisponde un byte si usa Vref / 1024 dove Vref è la tensione di riferimento.
- 5.0 è la tensione di riferimento che è quella di Vcc.
- 5.0 / 1024 = corrispondenza in tensione del singolo byte di conversione. Equivale a circa
0,0049V x byte. Esempio se ADC legge 512 significa che abbiamo in ingresso analogico ci sono circa
2,5V (512*0,0049) */
float VByte = 5.0/1024; // Otteniamo a che tensione corrisponde un Byte
int ValPot = 0; // variabile del valore del potenziometro letto ADC
void setup() {
Serial.begin(9600);
}
void loop() {
ValPot = analogRead(PinPot); //leggiamo A0
// Ora inviamo la tensione letta alla Raspi.
Serial.print("Tensione: ");
// prima convertiamo il valore digitale per il valore intensione del Byte
// e lo inviamo alla seriale
Serial.print(ValPot*VByte);
Serial.println("Volt");
delay(100);
}
Ora il codice in Python sulla raspi scrivendolo in un file.
Dalla console della raspi
pi@raspberrypi ~/demo/python $ nano arduino_adc.py
import serial
arduino=serial.Serial('/dev/ttyAMA0') # se via USB ttyACM0 per Arduino UNO
while 1:
print arduino.readline()
5. salviamo e diamo il comando
pi@raspberrypi ~/demo/python $ python arduino_adc.py
Vediamo scorrere il valore della tensione letto da Arduino e variando il potenziometro vediamo le
variazioni a videoUn alternativa è usare il protocollo firmata. Questo è un protocollo di comunicazione
tra HOST e MCU come nel nostro caso Arduino. Esistono sia le librerie per Arduino (IDE contiene
degli esempi) che per Python e C/C++
Nel piccolo e semplice esempio precedente era per farvi vedere come far comunicare la raspi e arduino
tramite seriale e come costruisci un semplice circuito di conversione delle tensioni.
Il codice funziona anche usando la porta USB.
Avete visto come fare un piccolo ed economico convertitore dei livello delle tensioni per le GPIO.
hacklabudine.it
6. Arduino (hardware) - Wikipedia
it.wikipedia.org
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/3/38/Arduino_Leonardo.jpg/25
0px-Arduino_Leonardo.jpg-REPLACE_ME
Arduino è una scheda elettronica di piccole
dimensioni con un microcontrollore e circuiteria di contorno, utile per creare rapidamente prototipi e
per scopi hobbistici e didattici. Con Arduino si possono realizzare in maniera relativamente rapida e
semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, temperatura
e umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi.
Arduino è fornito con un semplice ambiente di sviluppo integrato per la programmazione. Tutto il
software a corredo di Arduino è libero, e gli schemi circuitali sono distribuiti come hardware libero.
Dopo la sua nomina a CEO di Intel Brian Krzanich decide che la società produrrà schede
Arduino dotate di processore Intel. Per la prima volta un colosso americano decide di avvicinarsi al
mondo dell'open hardware.
Arduino comprende una piattaforma hardware per il physical computing sviluppata presso
l'Interaction Design Institute, un istituto di formazione post-dottorale con sede a Ivrea, fondato da
Olivetti e Telecom Italia[1]. Il nome della scheda deriva da quello di un bar di Ivrea (che richiama a sua
volta il nome di Arduino d'Ivrea, Re d'Italia nel 1002) frequentato da alcuni dei fondatori del
progetto[2].
Questa si basa su un circuito stampato che integra un microcontrollore con pin connessi alle
porte I/O, un regolatore di tensione e quando necessario un'interfaccia USB che permette la
comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato
(IDE) multipiattaforma (per Linux, Apple Macintosh e Windows). Questo software permette anche ai
novizi di scrivere programmi con un linguaggio semplice e intuitivo derivato da C e C++ chiamato
Wiring, liberamente scaricabile e modificabile.
Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone e può anche
interagire, tramite collegamento, con software residenti su computer, come Adobe Flash, Processing,
Max/MSP, Pure Data, SuperCollider, Vvvv.
La piattaforma hardware Arduino è spesso distribuita agli hobbisti in versione pre-assemblata,
acquistabile in internet o in negozi specializzati. La particolarità del progetto è che le informazioni
sull'hardware e soprattutto i progetti sono disponibili per chiunque: si tratta quindi di un hardware open
source, distribuito nei termini della licenza Creative Commons Attribution-ShareAlike 2.5[3]. In questo
modo, chi lo desidera può legalmente auto-costruirsi un clone di Arduino o derivarne una versione
modificata, scaricando gratuitamente lo schema elettrico e l'elenco dei componenti elettronici
necessari[3]. Questa possibilità ha consentito lo sviluppo di prodotti Arduino compatibili da parte di
piccole e medie aziende in tutto il mondo, quindi oggi è possibile scegliere tra un'enorme quantità di
schede Arduino compatibili. Ciò che accomuna questi prodotti inerenti elettronica sperimentale e
sviluppo è il codice sorgente per l'ambiente di sviluppo integrato e la libreria residente che sono resi
disponibili, e concessi in uso, secondo i termini legali di una licenza libera, GPLv2.
Grazie alla base software comune ideata dai creatori del progetto, per la comunità Arduino è
stato possibile sviluppare programmi per connettere a questo hardware più o meno qualsiasi oggetto
elettronico, computer, sensori, display o attuatori. Dopo anni di sperimentazione è oggi possibile fruire
di un database di informazioni vastissimo.
Il team di Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca
Martino, e David Mellis. Il progetto prese avvio in Italia a Ivrea nel 2005, con lo scopo di rendere
disponibile, a progetti di Interaction design realizzati da studenti, un dispositivo per il controllo che
fosse più economico rispetto ai sistemi di prototipazione allora disponibili. I progettisti riuscirono a
7. creare una piattaforma di semplice utilizzo ma che, al tempo stesso, permetteva una significativa
riduzione dei costi rispetto ad altri prodotti disponibili sul mercato. A ottobre 2008 in tutto il mondo
erano già stati venduti più di 50.000 esemplari di Arduino.
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/4/4e/ArduinoBreadboard.jpeg/
220px-ArduinoBreadboard.jpeg-REPLACE_ME
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/it/thumb/1/15/Arduino_uno.jpg/220pxArduino_uno.jpg-REPLACE_ME
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/1/17/Arduino_Diecimila.jpg/2
20px-Arduino_Diecimila.jpg-REPLACE_ME
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Arduino_Duemilanove_re
tro.JPG/220px-Arduino_Duemilanove_retro.JPG-REPLACE_ME
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flexible_Lilypad_Arduin
o.jpg/220px-Flexible_Lilypad_Arduino.jpg-REPLACE_ME
L'hardware originale Arduino è
interamente realizzato in Italia dalla Smart Projects, mentre i cloni della scheda possono essere
realizzati da chiunque in qualsiasi parte del mondo.
Una scheda Arduino tipica consiste in un microcontrollore a 8-bit AVR prodotto dalla Atmel,
con l'aggiunta di componenti complementari per facilitarne l'incorporazione in altri circuiti. In queste
schede sono usati chip della serie megaAVR - nello specifico i modelli ATmega8, ATmega168,
ATmega328, ATmega1280 e ATmega2560.
Molte schede includono un regolatore lineare di tensione a 5 volt e un oscillatore a cristallo a
16 MHz, sebbene alcune implementazioni, come ad esempio la piccola LilyPad[4], abbiano un clock di
8 MHz e facciano a meno dello stabilizzatore di tensione.
Fino a oggi sono state commercializzate 14 versioni dell'hardware Arduino.[3]
Serial Arduino, programmata con una porta seriale DB9. Fa uso del microcontroller ATmega8
Arduino Extreme, con interfaccia di programmazione USB, facente uso del chip ATmega8
Arduino Mini, una versione in miniatura facente uso di un ATmega168 a montaggio
superficiale
Arduino Nano, una versione ancora più piccola della Mini, utilizzante lo stesso controller
ATmega168 SMD e alimentata tramite USB
LilyPad Arduino, un progetto minimalista (scheda circolare dal diametro di 50mm, per circa
8mm di spessore), per applicazione su indumenti, con lo stesso ATmega168 in versione SMD[4]
Arduino NG, con un'interfaccia USB per programmare e usare un ATmega8
Arduino NG plus, con interfaccia di programmazione USB, con un ATmega168
Arduino BT, con interfaccia di programmazione Bluetooth e con un ATmega168
Arduino Diecimila, con interfaccia di programmazione USB e con un ATmega168 in un
package DIL28
Arduino Duemilanove, facente uso del chip Atmega168 (o Atmega328 nelle versioni più
recenti) e alimentata in corrente continua tramite USB, con commutazione automatica tra le sorgenti di
alimentazione
Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria
addizionale.
Arduino Uno, evoluzione della Duemilanove con un differente chip, programmabile e più
economico, dedicato alla conversione USB-seriale.
Arduino Mega2560, che fa uso di un ATmega2560 ed è un'evoluzione dell'Arduino Mega.
Arduino Due, che fa uso di un Atmel SAM3X8E ARM Cortex-M3 CPU.
In alcuni casi il microcontroller della scheda è pre-programmato con un bootloader che
semplifica il caricamento dei programmi sulla memoria flash incorporata nel chip.
8. A livello concettuale, tutte le schede sono programmate attraverso una porta seriale RS-232, ma
il modo in cui questa funzionalità è implementata nell'hardware varia da versione a versione. Le schede
seriali Arduino contengono un semplice circuito inverter che permette la conversione tra il livello della
RS-232 e il livello dei segnali TTL.
Le versioni attuali di Arduino sono gestite via USB: la versione Uno utilizza un
microcontrollore Atmega8U2 programmato come convertitore USB-seriale mentre le precedenti
versioni Diecimila e Duemilanove usavano chip adattatori USB-seriale, come gli FT232 di FTDI.
Alcune varianti, come la Arduino Mini e la versione non ufficiale Boarduino, usano una scheda o un
cavo adattatore USB-seriale staccabile.
Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di input/output
(I/O), grazie alle quali essa riceve i segnali raccolti da sensori esterni. Il comportamento della scheda è
gestito dal microcontroller in base ai valori provenienti dai sensori e alle decisioni determinate dal
particolare programma in esecuzione in quel momento sulla scheda. L'interazione con l'esterno avviene
attraverso attuatori pilotati dal programma attraverso i canali di output in dotazione.
A tale scopo, Arduino è dotata di molti dei connettori di input/output per microcontroller in uso
su altri circuiti. Tutti i pin di I/O sono collocati sulla parte superiore della scheda mediante connettori
femmina da 0,1". Inoltre sono disponibili commercialmente molte schede applicative plug-in, note
come "shields".
Le schede Barebones e Boarduino, due cloni compatibili con la Arduino, sono dotate di
connettori maschio sul lato inferiore del circuito in modo da poter essere connesse a una breadboard
senza necessità di effettuare saldature.
I/O digitale La Arduino Uno, ad esempio, che ha soppiantato la Duemilanove, offre 14 connettori
per l'I/O digitale (numerati da 0 a 13). La direzione di funzionamento, input o output, è decisa dallo
sketch programmato sull'IDE.
Sei dei canali I/O possono produrre segnali Pulse-width modulation (PWM). Attraverso i
segnali PWM è possibile, ad esempio, regolare l'intensità di luminosità di un LED o la velocità di
rotazione di un motorino elettrico[5]. L'hardware di tre dei pin di I/O (9, 10 e 11) implementa la
possibilità di gestirli direttamente attraverso la funzione analogWrite(), che permette di controllare la
PWM del segnale in uscita in maniera efficiente, senza dover eseguire linee di codice appositamente
predisposte[6]. La funzione accetta due parametri, il primo dei quali è il pin pilotato mentre il secondo
rappresenta l'intensità della modulazione (espressa su una scala da 0 a 255): così, ad esempio,
analogWrite(9, 128) attiverà un led collegato al pin 9 al 50% della sua luminosità[7].
I/O analogico Sempre sulla Uno, sono presenti altri 6 connettori specificamente dedicati a ingressi di
segnali analogici (collegati quindi ad una ADC), cioè valori di tensione letti da sensori esterni i cui
valori, fino a un massimo di 5 Volt, sono convertiti in 1024 livelli discreti (da 0 a 1023). Questi 6
connettori possono essere riprogrammati (sempre dal codice dello sketch sull'IDE) per funzionare come
normali entrate/uscite digitali.
Nella seguente tabella sono riepilogate le dotazioni dell'hardware dei vari modelli:
L'alimentazione della scheda può avvenire attraverso la porta USB del computer, o attraverso la
maggior parte degli alimentatori USB, oppure attraverso un adattatore in corrente continua a 9 volt, con
connettore cilindrico (diametro 2,1 mm e positivo centrale). In quest'ultimo caso, la scheda commuta
automaticamente sull'alimentazione esterna quando il connettore dell'alimentatore esterno è inserito,
mentre commuta autonomamente sull'alimentazione USB in caso di disconnessione del connettore. La
Arduino-NG e la Arduino Diecimila, versioni meno recenti, necessitano di essere commutate a mano,
azionando uno switch ubicato tra la porta USB e l'ingresso dell'alimentazione esterna.
L'enorme quantità e l'estrema variabilità d'uso e di componenti rendono difficile definire
univocamente una scheda Arduino compatibile. Solitamente, contiene un microcontroller a 8 16 o 32
bit AVR, PIC o ARM, con clock variabile tra gli 1 e 96 MHz. Molte schede incorporano componenti
9. aggiuntivi pensati per i più svariati utilizzi.
La programmazione può avvenire tramite il protocollo ISP e un'altra scheda Arduino utilizzata
come programmatore, tramite la usb (in alcuni casi il microcontrollore contiene usb hardware) oppure
grazie a un programmatore esterno dedicato.
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Arduino_IDE__v0011_Alpha.png/250px-Arduino_IDE_-_v0011_Alpha.png-REPLACE_ME L'ambiente di
sviluppo integrato (IDE) di Arduino è un'applicazione multipiattaforma scritta in Java, ed è derivata
dall'IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È concepita
per iniziare alla programmazione artisti e altri neofiti, che siano a digiuno di pratica nello sviluppo di
software. Per permettere la stesura del codice sorgente, l'IDE include un editore di testo dotato inoltre
di alcune particolarità, come il syntax highlighting, il controllo delle parentesi, e l'indentazione
automatica. L'editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola
passata e con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi
dalla riga di comando.
Benché gli schemi hardware e il sorgente software siano resi disponibili con licenze copyleft, il
nome Arduino e il logo sono marchi registrati e possono essere usati solo dietro permesso. Il
documento che esprime la politica d'uso del nome "Arduino" mette l'accento su come il progetto sia
aperto a incorporare lavori altrui nel prodotto ufficiale.[9]
Quale conseguenza di queste convenzioni sulla protezione del nome, un gruppo di utilizzatori
ha effettuato un "fork" (nel senso esteso del termine) dell'Arduino Diecimila, distribuendo una scheda
equivalente chiamata "Freeduino"; il nome volutamente non è registrato ed è quindi liberamente
utilizzabile.
Banzi, Massimo (marzo 2009). Getting Started with Arduino. Make Books (prima edizione): pp.
128 (in inglese).
Sciamanna, Lucio (2010). [www.sanditlibri.it Arduino il microprocessore per tutti]. Sandit: pp.
140 (in italiano). ISBN 978-88-95990-71-2
Schmidt, Maik (2011). Il manuale di Arduino. Apogeo: pp. 242 (in italiano). ISBN 978-88-5033044-7
Margolis, Michael (2011). Arduino progetti e soluzioni. Tecniche Nuove: pp. 625 (in italiano).
ISBN 978-88-481-2539-0
Majocchi, Simone (giugno 2012). Arduino UNO Programmazione avanzata e Librerie di
sistema. Vispa Edizioni: pp. 224 (in italiano). ISBN 978-88-907430-2-3
Commons contiene immagini o altri file su Arduino
it.wikipedia.org
10. Raspberry Pi - Wikipedia
it.wikipedia.org
Raspberry Pi
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Raspberry_Pi_Beta_Boar
d.jpg/350px-Raspberry_Pi_Beta_Board.jpg-REPLACE_ME
Versione beta della scheda, con in vista i connettori GPIO in alto a sinistra Classe di computer singleboard Paese d'origine Regno Unito Produttore Raspberry Pi Foundation Presentazione 2011 Inizio
commercializzazione Inizio 2012[1] Prezzo di lancio 25 e 35 USD
(GBP ~£16 e ~£22) CPU ARM1176JZF-S 700 MHz[2] Frequenza 700 MHz (overclock fino a 1
Ghz) FPU 68882 MMU non presente RAM di serie 256 MB o 512 MB Tastiera incorporata no
Display incorporato no Scheda video Broadcom VideoCore IV[2] Comunicazione Ethernet 10/100
(solo Modello B) Unita ottica no Disco rigido no Porte 1 USB (2 sul Modello B); 1 Ethernet (Modello
B) SO di serie Linux (Debian GNU/Linux, Fedora e Arch Linux),[3] Sito Web raspberrypi.org Il
Raspberry Pi è un single-board computer (un calcolatore implementato su una sola scheda elettronica)
sviluppato nel Regno Unito dalla Raspberry Pi Foundation. Il suo lancio al pubblico è avvenuto alla
fine del mese di febbraio 2012[1]. Attualmente, viene venduto in due versioni, al prezzo di 25 e 35
dollari statunitensi.
L'idea di base è la realizzazione di un dispositivo economico, concepito per stimolare
l'insegnamento di base dell'informatica e della programmazione nelle scuole[1][4][5][6][7].
Il progetto ruota attorno a un System-on-a-chip (SoC) Broadcom BCM2835[2], che incorpora
un processore ARM1176JZF-S a 700 MHz, una GPU VideoCore IV, e 256 o 512 Megabyte di
memoria. Il progetto non prevede né hard disk né una unità a stato solido, affidandosi invece a una
scheda SD per il boot e per la memoria non volatile[8].
La scheda è stata progettata per ospitare sistemi operativi basati su un kernel Linux o RISC
OS[3][9].
Lo sviluppo del dispositivo è portato avanti dalla Raspberry Pi Foundation, organizzazione di
beneficenza registrata presso la Charity Commission for England and Wales[10]. Il suo scopo è
"promuovere lo studio dell'informatica e di argomenti correlati, soprattutto a livello scolastico, e di
riportare uno spirito di divertimento nell'apprendimento del computer"[11] La fondazione Raspberry Pi
promuoverà principalmente l'apprendimento nel linguaggio di programmazione Python[12][13], ma
sosterrà anche l'uso del BBC BASIC[14], del C[12] e del Perl[12]. Saranno disponibili molti altri
linguaggi[13] supportati da Linux e ARM.
Le prime concezioni del Raspberry Pi, nel 2006, si basavano sul microcontrollore Atmel
ATmega644. Gli schemi e il layout del circuito stampato di questo prototipo sono disponibili per il
download libero e per l'autocostruzione[15] L'amministratore Eben Upton mise insieme un gruppo di
insegnanti, accademici e appassionati di computer, per concepire un oggetto capace di incoraggiare i
bambini, fornendo loro know-how e ispirazione[16].
La Raspberry Pi Foundation fu fondata nel maggio 2009, a Caldecote, villaggio del South
Cambridgeshire, nel Regno Unito, con lo statuto giuridico di organizzazione caritatevole registrata,
regolata dalla Charity Commission for England and Wales[10].
La prima versione del prototipo basata su ARM era montata su una scheda grande grosso modo
come una chiave USB[17], con una porta USB su un lato e una porta HDMI sull'altro[17].
Nel mese di agosto 2011 furono realizzate cinquanta versioni alpha della scheda. Queste schede
erano funzionalmente identiche al progettato modello B[18]. Versioni di prova della scheda
mostravano l'ambiente desktop LXDE su Debian, Quake 3 a 1080p,[19] e video Full HD H.264 su
HDMI.[20]
Nel mese di ottobre 2011 vi è stata la scelta del logo all'interno di un numero di proposte dei
11. membri della comunità: dopo aver stilato una rosa contenente sei proposte, la scelta finale ha richiesto
vari giorni. Il disegno scelto si basava su una buckyball[21]. Nel corso dello stesso mese si stava
lavorando a una versione di sviluppo di RISC OS[22], oggetto di una dimostrazione pubblica[9][23].
Nel mese di dicembre 2011 sono state assemblate e testate un centinaio di versioni beta del
modello B Beta[24]. Il layout della componentistica usato nella versione beta è lo stesso di quella
destinata alla produzione, salvo un errore di sbrogliatura nel progetto del circuito stampato scoperto e
risolto prima di avviare la produzione[25]. Le schede Beta ebbero una dimostrazione pubblica con
avvio da Linux: in quell'occasione veniva proposta la riproduzione di un trailer a 1080p e l'esecuzione
di una demo del benchmark OpenGL ES Samurai, prodotto dalla finlandese Rightware (ex
Futuremark)[17].
Le prime 10 schede furono messe all'asta su eBay nelle prime settimane del 2012[26][27]. Una
è stata comprata da un anonimo e donata al museo inglese The Centre for Computing History, ubicato
nel Suffolk[28]. Le dieci schede (il cui prezzo di vendita totale ammontava a £220) hanno raccolto
complessivamente più di £16.000[29], con l'aggiudicazione dell'ultimo esemplare messo all'asta,
etichettato con numero di serie #01, con una quotazione di £3.500.[30]
Il primo lotto di 10.000 schede è stato prodotto a Taiwan[31] e in Cina[31][32], anziché nel
Regno Unito. Questo è dovuto agli effetti delle politiche dei dazi, dal momento che i diritti doganali
sono dovuti sui singoli componenti ma non sui prodotti finiti, rendendo poco conveniente
l'importazione dei componenti dall'Oriente per il successivo assemblaggio in Occidente. I fabbricanti
cinesi avevano inoltre stimato in 4 settimane i tempi di attesa per l'esecuzione dell'ordine, in confronto
alle 12 settimane richieste nel Regno Unito. I risparmi ottenuti dalla delocalizzazione possono essere
reinvestiti nelle attività di ricerca e sviluppo della fondazione[32].
La vendita del modello B del Rasperberry Pi è partita ufficialmente mercoledì 29 febbraio 2012
alle ore 06:00 GMT: la fondazione non ha condotto una vendita in proprio, ma si è appoggiata a due
grandi distributori specializzati nel campo elettronico, Farnell e RS Components, anche perché in grado
di garantire una distribuzione mondiale più capillare, grazie alle ramificazioni e alle filiali in vari paesi
del globo.
A settembre 2012 è stata annunciata una revisione del PCB. Novità principali della scheda sono
la capacità di ricevere l'alimentazione tramite un Hub USB alimentato e la disponibilità del debug via
JTAG; come novità minori si ha la correzione di un difetto di collegamento tramite HDMI (lasciando il
Raspberry Pi non alimentato su una catena HDMI, potevano insorgere problemi nell'utilizzo delle
funzionalità Consumer Electronics Control per gli altri dispositivi), il circuito di reset è stato rinnovato,
è stato aggiunto un connettore di espansione addizionale, aggiunti i fori di montaggio e apportate
correzioni alla serigrafia. Sono inoltre presenti cambiamenti ai GPIO e ai canali I2C[33] Si noti che la
dicitura "Raspberry 2.0" comparsa in alcuni siti è concettualmente sbagliata: le modifiche apportate
comportano unicamente la correzione di alcuni dettagli progettuali, nulla che giustifichi l'incremento
nel numero di versione da 1.0 a 2.0, come riportato anche nel sito del produttore. La scheda ha
semplicemente subito una revisione al circuito che sistema problemi minori, come riportato anche sul
sito del produttore:[34] infatti, è il circuito stampato che è alla seconda versione, non la scheda nel suo
complesso che mantiene gli stessi identici componenti.
SPECIAL_IMAGE-//upload.wikimedia.org/wikipedia/commons/thumb/0/09/Raspberry_Pi_board.jpg/
350px-Raspberry_Pi_board.jpg-REPLACE_ME
La fondazione distribuisce due modelli, entrambi
dotati di 256 megabyte di RAM: il Model A costa 25 USD, ha una singola porta USB ed è privo di
controller Ethernet. Il Model B è equipaggiato con due porte USB ed un controller Ethernet 10/100[35]
e costa 35 Dollari. A partire del 15 ottobre 2012 il Model B monta 512 Megabyte di RAM[36]
Sebbene il Modello A non abbia una porta Ethernet RJ45, può comunque accedere a una rete
attraverso la porta USB, facendo uso di adattatori Ethernet o Wi-Fi con alimentazione autonoma. In
12. maniera analoga ai moderni computer, Raspberry Pi è compatibile con tastiere e mouse generici
collegabili tramite porta USB[8].
Raspberry Pi usa il sistema operativo Linux. È previsto in futuro che Raspberry sia distribuito in
bundle con Debian GNU/Linux, Iceweasel, Calligra Suite e Python[1].
Raspberry PI non è fornito di un real-time clock[1], così un sistema operativo deve usare un
network time server, o chiedere l'ora all'utente al bootstrap per avere accesso a data e ora per la marca
temporale. Tuttavia è facile aggiungere un real time clock (come il DS1307) con batteria tampone,
attraverso l'interfaccia I²C.
Model A e Model B sono entrambi riferimenti culturali[42] ai computer britannici BBC Micro,
modelli originali sviluppati dalla Acorn Computers, alla quale si deve anche l'originario sviluppo dei
processori ARM (l'architettura del Raspberry Pi) e del sistema operativo RISC OS, che sarà in grado di
girare su tali piattaforme hardware[9].
Il 19 febbraio 2012, la Raspberry Pi Foundation ha messo a disposizione per il download un
proof of concept di immagine che può essere caricata su SD Card per produrre un sistema operativo
preliminare. L'immagine si basa su Debian 6.0 (Squeeze), con un ambiente desktop LXDE e un
browser Midori, più vari strumenti di programmazione. L'immagine può anche girare sull'emulatore
QEMU, permettendo di emulare Raspberry Pi su varie altre piattaforme[43]. La Fondazione ha
realizzato una release ottimizzata di Fedora, raccomandandola come sistema operativo[44]. È
disponibile anche una versione di Arch Linux[45]
Esistono distribuzioni per l'utilizzo del Raspberry Pi come Media Center basate su XBMC:
OpenELEC, XBian e RaspBMC.
Il software di monitoraggio di rete Overlook Fing è stato portato su piattaforma Raspberry
Pi[46] rendendo possibile installare sentinelle di monitoraggio a basso costo in reti remote.
Il software open source Aseba per la programmazione semplice ed efficiente di robot è
disponibile su Raspberry PI. Utilizzando il Raspberry PI in unione con Aseba e il robot Thymio II è
possibile creare a costi veramente contenuti un vero e proprio laboratorio didattico di Robotica. Il robot
Thymio II è stato sviluppato nell'ambito del programma NCCR Robotics dalla collaborazione tra
l'Ecole Polytechnique Fédérale de Lausanne (EPFL) e l'Ecole Cantonale d'Art de Lausanne (écal).
Mojang e 4J Studios stanno sviluppando una versione di Minecraft per questa piattaforma.
Dato che il progetto ha come obiettivo la riduzione dei costi, la decodifica in hardware di alcuni
formati multimediali non è supportata perché richiedono una specifica licenza.
Il dispositivo può riprodurre in hardware formati liberi, quali H.264, mentre per riprodurre i
formati MPEG-2 e VC-1 è possibile acquistare la relativa licenza abilitando l'hardware alla decodifica.
[47][48]
Nel Regno Unito, a gennaio 2012, sono giunte manifestazioni di interesse da parte di scuole, sia
del settore statale sia di quello privato, con un netto sbilanciamento su quest'ultimo settore, dal quale
sono pervenute richieste cinque volte superiori. Si spera che le aziende sponsorizzino l'acquisto presso
le scuole più svantaggiate[16].
(EN) Raspberry Pi Foundation, sito ufficiale della fondazione
(EN) Informazioni tecniche su Raspberry Pi, da eLinux.org
(EN) Broadcom BCM2835 Embedded Multimedia Applications Processor, broadcom.com
(EN) Boradcom - BCM2835 ARM Peripherals (abbreviated datasheet)
(EN) SMSC LAN9512 USB 2.0 Hub and 10/100 Ethernet Controller, smsc.com
(EN) Article and Video, Article, da BBC.co.uk
(EN) Psst, kid... Wanna learn how to hack? The £25 computer to teach youngsters real
computing skills, The Register
(EN) Raspberry Pi Interview With Eben Upton, da Robots.net
(EN) Blog about Raspberry Pi and ARM based Linux devices
13. (EN) Raspberry Pi gpio pinout, da Panu.it
Rpy-Italia, portale italiano sul Raspberry PI
it.wikipedia.org
♦
Archive All • Download Newest