Introduzione Alla Raspberry Pi PDF
Introduzione Alla Raspberry Pi PDF
Il materiale dell'evento SBC Raspberry Pi & BeagleBone Black del 20 luglio 2013 sono disponibili su
https://drive.google.com/folderview?id=0Bz2gtYAx46W-MXFSY2lvbmI2WDg&usp=sharing Contiene alcuni aggiornamenti della presente. Levento su
Google+
https://plus.google.com/u/0/events/cnch83bolqai9oiipfrndmp2ul8
Introduzione alla
Raspberry Pi
7 luglio 2012, Pozzuolo del Friuli (UD)
e via Google+
---
hacklabudine.it
Massimiliano iv3unm
HackLabUdine.it
Si ringrazia il gruppo
FESN e il Comune di Pozzuolo del Friuli
per la disponibilit della sala in cui si tiene
questo incontro
HackLabUdine.it
Cos' la Raspberry Pi
Storia di come nata
il lancio sul mercato
hardware della raspi
Di
foto raspi con altre board
mappa nel mondo della Raspberry Pi
cosa si puo fare con la Raspberry Pi
con cosa si sviluppa con la Raspberry Pi
Comparazione Raspberry Pi e Arduino
parliamo
Raspberry Pi e le altre
iniziare con la Raspberry Pi
Raspberry Pi links
Raspberry Pi, OS, il boot..
Raspberry Pi firmware
oggi
Raspberry Pi e Python
PIP
Raspberry Pi e Django Framework WEB
Raspberry Pi + Elettronica
...
Raspberry Pi + GPIO
esempi in Python
esempi da riga di comando
Raspberry Pi + Arduino
HackLabUdine.it
Cos' la Raspberry Pi
La Raspberry PI (raspi o RPi) un piccolo computer in una
scheda dalle dimensioni di una carta di credito (85,60mm x
53,98mm).
Dispone gi del hardware necessario per funzionare compreso
la parte ethernet e come in un PC aggiungete alcune periferiche
come tastiera, mouse USB e un monitor con ingresso HDMI.
HackLabUdine.it
Cos' la Raspberry Pi
alcune foto
HackLabUdine.it
Storia di come nata
Nel 2006 Eben Upton con i suoi colleghi della University of
Computer Laboratory di Cambridge ebbero l'idea di avere un
piccolissimo ed economico computer che potessero usare i
bambini per entrare nel mondo dell'informatica
Osservando gli studenti avevano notato non erano come
quelli degli anni 90 dove si applicavano di pi nella
programmazione.
Questo era dovuto in parte anche al fatto che la strada aperta
dalle varie console come Amiga, ZX Spectrum e Commodore
64 dove chi li possedeva aveva passione nell'informatica e
nell'elettronica, li aveva portato nella strada
dell'informatica/elettronica. I PC avevano in parte modificato
questo approccio. Lo stesso insegnamento era cambiano nel
limitarsi a non spiegare il computer ma i vari pacchetti
software come office.
fonte http://www.raspberrypi.org/about
HackLabUdine.it
il lancio sul mercato
Ore 6.00z (UTC) del 29 febbraio 2012 stato il lancio
ufficiale della Raspberry Pi
HackLabUdine.it
il lancio sul mercato
Avevano programmate di produrre 10.000 schede,
andate esaurite.
HackLabUdine.it
Hardware della Raspi
Questo progetto opensource nel hardware e nel
software. Trovate lo schema comprese molte altre
informazioni su Embedded Linux Wiki http://elinux.
org/R-Pi_Hub
fonte http://elinux.org/Rpi_Hardware
HackLabUdine.it
Hardware della Raspi
Ci sono due modelli di Raspberry Pi ma in commerciosi trova solo
la versione B.
5 LED di stato]:
D5(verde) - OK - accesso alla SD Card R/W (via
GPIO16)
D6(rosso) - PWR - 3.3V Power
D7(verde) - FDX - Full Duplex (LAN) (modelo B)
D8(verde) - LNK - Link/Activity (LAN) (modelo B)
D9(giallo) - 10M - 10/100Mbit (LAN) (modelo B)
fonte http://elinux.org/Rpi_Hardware
HackLabUdine.it
Hardware della Raspi
Altra vista dello slot della scheda di
memoria Secure Digital (SD) che si trova
sotto la scheda
fonte http://elinux.org/Rpi_Hardware
HackLabUdine.it
Hardware della Raspi
fonte http://elinux.org/Rpi_Hardware
HackLabUdine.it
Hardware della Raspi
esempio di un modulo camera collegato alla raspi sul connettore DSI
fonte http://www.raspberrypi.org/archives/1254
HackLabUdine.it
Hardware della Raspi
P1 connettore a 26 pin su due linee (13x2) 2.54mm
di tipo IDC (sono come quelli dei HDD IDE e dei lettori
per floppy disk solo che qua sono a 26 pin) e troviamo:
vedere
http://elinux.org/Rpi_Low-level_peripherals
http://elinux.org/Rpi_Hardware
HackLabUdine.it
Hardware della Raspi
Sono presenti alcuni punti di test (TP)
Per provare la tensione di alimentazione si
posizionano i puntali del tester su TP1 (+) e TP2 (-).
La tensione deve essere compresa tra 4,75V e 5,25V.
Se non tra i parametri indicati, pu causare del danni
hardware se troppo elevata e/o dei problemi di stabilit
se troppo bassa.
P2: 8-pin per GPU JTAG
P3: 7-pin per LAN9512 JTAG
http://elinux.org/R-Pi_Troubleshooting
HackLabUdine.it
Foto Raspi con altre board
Alcune foto della raspi
con altre board e non:
1. PentiumII +
RPi
2. Arduino + RPi
3. RPi+
Arduino+
MSP430
LaunchPad+
BeagleBoard
(vB)
4. RPi +
Freescale
Kinetis
TWR+53N512
MCU
HackLabUdine.it
Mappa della Raspberry Pi
Su http://rastrack.ryanteck.org.uk/ trovate una mappa dove si pu registrare la tua RPi e la tua citt
HackLabUdine.it
Cosa si puo fare con la Raspberry Pi
Come detto Raspberry Pi un computer ARM a 700Mhz con una GPU 3D e alcune GPIO.
Tenendo conto del hardware a tua disposizione, si puoi usare
media center (distribuzioni RaspBCM e OpenELEC)
piccolo server
per insegnare l'informatica (per cui stata ideata)
usando le GPIO per piccole automazioni o in abbinamento ad Arduino e altre boards aumentando
le potenzialit in questo campo
ricorda che ci gir Linux Debian, Fedora, QtonPi, Arch.
sono distribuzioni in sviluppo per realizzare un media center.
Usciranno altre su Linux ed anche con ChromeOS
ricorda che comunque un 700MHz anche se con una GPU 3D.
La maggior parte si trova una raspi tra le mani sta giocando in vari modi e ogni giorni ci sono idee che
vanno avanti. Basta seguire il sito ufficiale ,il forum o twitter e Google+ per le novit di chi vuole renderle
pubbliche
HackLabUdine.it
Con cosa sviluppo sulla Raspberry Pi?
Con quello che sviluppi normalmente sotto Linux.
Python
C/C++
Rugby
PHP
Perl
Java
....
QtonPi un distribuzione di sviluppo con le libreria QT ottimizzata per
questa scheda.http://qt-project.org/wiki/Qt-RaspberryPi
WiringPi un progetto per portare Wiring, che il linguaggio usato per
Arduino, sulla RPi usando le GPIO. Il linguaggio famigliare da chi ha
esperienza con Arduino https://projects.drogon.net/raspberry-
pi/wiringpi/
HackLabUdine.it
Raspberry Pi e Arduino
Spesso sento confusione nel mettere la
Raspberry Pi e Arduino sullo stesso piano, come
se una sostituisce l'altra.
HackLabUdine.it
Raspberry Pi e Arduino
comparazione
Flash Memory 32 KB (ATmega328) of which 0.5 Dispone di slot SD per il sistema operativo,
KB used by bootloader programmi e dati
HackLabUdine.it
Raspberry Pi e Arduino
comparazione
PWM 6 1
DAC NO NO
HackLabUdine.it
Raspberry Pi e Arduino
comparazione
REAL TIME NO. possibile usare un chip NO. possibile usare un chip RTC come
CLOCK (RTC) RTC. come DS1338C/DS3234 DS1338C/DS3234 (entrambi I2C)
(entrambi I2C) Se raspi collegata in Internet possibile usare
un server NTP
VIDEO OUT NO. Ci sono delle shiled che HDMI, Video Composite RCA
permetto di avere un OUT
composita o VGA
HackLabUdine.it
Raspberry Pi e Arduino
comparazione
INPUT VOLTAGE da 7v a 14V. Regolatore integrato 5V via Micro USB oppure sul connettore
a 5V e 3V3 GPIO
5V via USB; 7.12V jack e VIN pin
of the board.
OPERATING 5V 5V / 3V3
VOLTAGE
HackLabUdine.it
Raspberry Pi e Arduino
comparazione
Dalle tabelle avrai notato che ci sono parecchie cose diverse, ma alcuni comune, quindi quali scegliere.
In parecchie cose Arduino ideale grazie alla sua flessibilit, permette una prototipizzazione usando le
varie boards Arduino e nello stesso tempo possibile usare solo ATMega328 con il bootload e realizzare il
restante circuito in base alle nostre necessita senza usare una board Arduino. Dispone di parecchie schede
opzionali con relative librerie. Non richiede un sistema operativo. Fa bene per quello che stato
programmato. Si sviluppa tramite il suo IDE in Wiring (sintassi simile al C) e/o tramite i vari tools per AVR.
anche ideale nella didattica per l'insegnamento della programmazione delle MCU
La Raspi pu essere usata come piccolo computer per fare diverse cose anche contemporaneamente.
Dispone di un sistema operativo Linux con i relativi tools e programmi. Si sviluppa in vari linguaggi (Python,
C/C++;...).
Dispone di alcune GPIO per fruttarle in determinate occasioni. Non nata per la prototipizzazione ma per
insegnare l'informatica dando un computer a basso costo. Lo stesso ideatore dice che la raspi ha solo il
10% delle funzioni di Arduino.
Entrambe possono lavorare in simbiosi, quando serve la flessibilit di Arduino a basso livello e la maggior
potenza di calcolo e di sistema operativo della Raspberry. Un esempio potrebbe esse il caso in cui uno o pi
Arduino si occupano della raccolta dei dati dai sensori e li inviano alla Raspi per l'archiviazione, gestione e
visualizzazione sul web.
Invece la board BeagleBone nata con lo scopo di dare un sistema operativo alla flessibilit di Arduino
HackLabUdine.it
Raspberry Pi e Arduino
Arduino pu essere
usata per gestire la
parte a basso livello
come sensori, I/O
(estendendo GPIO),
fornire un ADC in
modo semplice ed
economico.
HackLabUdine.it
Raspberry + boards
Per espandere le funzionalit della Raspberry verso la protopitizzazione e/o verso un discorso pi di
elettronica, oltre ad Arduino, stanno nascendo schede specifiche come:
Raspberry Pi Bridge
Questo progetto attualmente in sviluppo mira a creare una scheda ponte tra Arduino e la
Raspberry Pi. una shield per Arduino che mette in collegamento la Rasp
Praticamente permette di collegare le alcune GPIO della Raspberry Pi ad alcuni I/O di
Arduino per farli comunicare tra loro.
ma dovrebbe essere possibile usare anche le shield nate per Arduino sulla raspi.
Info su http://omer.me/2012/05/introducing-ponte/
Progetti HW SW dei schede relay che vanno bene sia per Arduino che per raspi.
http://www.progetti-hw-sw.it/raspberry.htm
HackLabUdine.it
Raspberry Pi e ...
HackLabUdine.it
Raspberry Pi e MSP430
MSP430 LaunchPad una scheda prodotta dalla Texas
Instruments e si basa sui suoi microcontrolli della famiglia
MSP430 a 16 bit.
La scheda pu ospitare diversi tipi di micro MSP430 con
funzioni diverse e dimensioni in formato DIP
Disponibile ad un prezzo che parte da circa 4,60 iva
compresa
Si sviluppa in C++ . TI fornisce Code Composer Studio
basato su Eclipse e quindi multipiattafoma. progetto
commerciale anche se c' una buona comunit che ci gira
intorno .
una piattaforma interessante da usare anche per
estendere le funzionalita della Raspi a basso livello.
Tenete presente che la lauchpad pu montare diverse
MCU MSP430 che sono disponibili con diverse
caratteristiche
Come per Arduino, anche questa possiamo usarla per
espandere le funzionalit della Raspi
HackLabUdine.it
Raspberry Pi e KL25Z
Freescale Kinetis KL25Z Freedom Board
HackLabUdine.it
Raspberry Pi e STM32F0
Scheda di valutazione della ST Microelettronics
Discovery kit for STM32 F0 series - with
STM32F051 MCU
http://www.st.com/internet/evalboard/product/252419.jsp
il costo di circa 20,00 ivati
HackLabUdine.it
Raspberry Pi e GertBoard
GertBoard una scheda di espansione delle GPIO per la raspi. Non ancora disponibile. Per dettagli
seguire la discussione sul forum e
http://www.raspberrypi.org/archives/411
http://elinux.org/RPi_Gertboard
www.raspberrypi.org/forum/educational-applications/gertboard
HackLabUdine.it
Raspberry Pi e MCP23017
Un modo economico (sui 2/3 euro) per espandere le I/O usare un Microchip MCP23017 a 16bit. Usa un
bus I2C per dialogare con la MCU e in questo caso con la RPi usando le GPIO0 e GPIO1. In ogni caso va
scritto il software che gestire questo chip.
MCP23017 viene usando anche in Arduino, il quale dispone di una liberia per gestirlo, per aumentare le
I/O.
HackLabUdine.it
Raspberry Pi e Kit Velleman
Nel catalogo della Velleman trovate alcuno kit generici ma
che possono essere usati con la Raspi.
Uno di questi K8055 versione in kit o VM110 versione
assemblata. Questa scheda dispone:
5 ingressi digitali
2 ingressi analogici con possibilit dei applificatore e
attenuatore
8 uscita digitale open collector output (max.
50V/100mA)
0 to 5V, output resistance 1K5
PWM 0 to 100% open collector outputs max
100mA / 40V
La scheda dispone di porta USB. In rete trovate alcuni sviluppatori che hanno realizzato le libreria per
gestire questa scheda sotto Linux.
Nel catalogo trovate altre schede cda poter usare.
info http://www.velleman.eu/products/view/?country=fr&lang=en&id=351346
HackLabUdine.it
Raspberry Pi e...
in rete trovate varie soluzioni che a volte con un po di creativit si possono collegare con la raspi:
Olimex produce diverse schede con diversi MCU e/o CPU. Sia sistemi basati su MCU che sistemi
embedded a costi non elevati. Tenete presente per una eventuale fonte i cui trovare alcune
soluzioni.
https://www.olimex.com/
visto che su Arduino troviamo diverse shileds, possibile adattarle per farle funzionare con l raspi.
HackLabUdine.it
Raspberry Pi espansioni
HackLabUdine.it
Raspberry Pi e le altre
Le schede viste precedentemente, compreso Arduino ma anche la futura Arduino DUE, non vanno in
competizione con la Raspberry Pi.
Si pensato che la raspi fosse un "concorrente" di Arduino ma invece le due sono complementari, e con
una minima funzionalita in comune della raspi
Se avete voglia di cercare dei concorrenti, io direi che sicuramente tra le concorrenti in senso buono
queste ottime boards con costi un po pi alti. Queste si basano su CPU della Texas Instruments
HackLabUdine.it
Raspberry Pi e le altre
Freescale i.MX53QSB http://www.freescale.com/webapp/sps/site/prod_summary.jsp?
code=IMX53QSB
basata su ARM Cortex A8 i.MX53a 1 GHz della Freescale
no GPIO
sopporta Linux, Android e Windows Embedded Compact 7
ViaTech di recente ha presentato Android System PC (APC). Come intuite ci gir Android nella
verisione 2.3, una una CPU VIa da 800MHz, dispone di HDMI, 512MB di Ram, SD, Ethernet. NON
dispone di GPIO.
http://apc.io/
HackLabUdine.it
Iniziare con la Raspberry Pi
Cosa serve per iniziare:
la scheda Raspberry Pi. La disponibilit attuale scarsa. Va prenotata tramite un pre-ordine da uno
dei due distributori europei:
Premier Farnell/Element14 http://it.farnell.com/raspberry-pi?ref=lookahead
per il momento da Farnell non possibile fare il pre-ordine. Sembra che voglio eliminare
il pre-ordine per un ordine immediato.
RS components http://it.rs-online.com/web/generalDisplay.html?id=raspberrypi
Dopo aver compilato il modulo, dovete aspettare diverse settimane. Quando arriva il vostro turno vi
mandano un email contenente un codice per la conferma del ordine ed il pagamento. Confermato
questo ora non vi resta che aspettare.
Nel mio caso ho ordinato nelle prime ore del 29 febbraio 2012 sia ad RS che da Farnell (ordine
vero e proprio). Ricevute:
Farnell il 25 maggio 2012
RS ricevuta email con codice per la conferma e pagamento il 18 maggio. Ricevuta il 13
giugno.
HackLabUdine.it
Iniziare con la Raspberry Pi
Cosa serve per iniziare:
dopo che avete ordinata e/o ricevuta la Raspberry Pi dovete pensare alle periferiche. Alcune
possono essere ordinate assieme alla Raspberry Pi.
Se volete andare sul sicuro, date un occhiata qui per la compatibilit.
HackLabUdine.it
Iniziare con la Raspberry Pi
Cosa serve per iniziare:
una scheda di memoria Secure Digital (SD) per il sistema operativo, programmi e dati.
Dalla velocit della SD dipende molto dalla velocit generale della raspi soprattutto se
deve fare diversi accessi alla SD. La velocit viene espressa con un numero e sono
classificate cosi (da http://it.wikipedia.org/wiki/Secure_Digital ):
Classe 4 velocit in scrittura minima 4 MB/s
Classe 6 velocit in scrittura minima 6 MB/s
Classe 10 velocit in scrittura minima 10 MB/s
Come dimensione il minimo sono 2GB. Per esempio l'immagine della Debian occupa
circa 1,5GB
Le prestazioni sono indicative e variano da produttore a produttore e tra modello e
modello dello stesso produttore.
SD pu essere un fattore critico. Se ci sono delle incompatibilita tra Raspi e SD o
Linux e SD, la Raspi non lavora, per esempio bloccandosi durante il boot o dare
altri problemi. Potrebbe essere necessario aggiornare/compilare il kernel
su http://elinux.org/RPi_VerifiedPeripherals#SD_cards (stesso link della pagina
precedente) trovate la compatibilit
su http://elinux.org/RPi_Performance#SD_card le prestazioni di alcune SD
HackLabUdine.it
Iniziare con la Raspberry Pi
Cosa serve per iniziare:
Periferiche USB
Al di la di come userete la Raspberry Pi potete avere bisogno delle periferiche USB.
Tenete presente che la corrente massima sulla porta USB limitata nella Raspberry Pi a 140mA per porta.
Ogni porta protetta da un fusibile tipo polyfuses da 140mA, pertanto il consumo della periferica non devo
superare tale limite. Lo standard USB prevede massimo 500mA e si trova di solito dei PC.
Alcuni consigli
verificate la corrente delle periferiche USB prima di collegarla alla porta USB della raspi.
nel caso usate un HUB USB provvisto di alimentatore. Consigliato anche se la periferica consuma sotto i
140mA ma vicina.
Periferiche
tastiera e mouse USB non dovrebbero avere problemi se rimanere nei consumi indicati.
tastiera e mouse wireless compatibili con Linux.
tutte le altre periferiche USB (bluetooh, wifi, webcam usb ecc) compatibilit con linux
Monitor
L'uscita video una HDMI pertanto dovete usare un monitor con tale ingresso oppure con dei convertitori
(HDMI>DVI)
Usando la Raspeberry come server con accesso da remoto, le periferiche di cui sopra vi servono solo al primo
boot, poi potete configurare per esempio sshd per l'accesso remoto.
HackLabUdine.it
Raspberry Pi links
Link utili
Sito ufficiale http://www.raspberrypi.org/
Fonti d'aiuto:
Documentazione, schema e quant'altro http://elinux.org/R-Pi_Hub (alcuni documenti sono in
italiano)
Verifica delle perififeriche http://elinux.org/RPi_VerifiedPeripherals
Troubleshooting (problemi noti) http://elinux.org/R-Pi_Troubleshooting
Forum ufficiale: http://www.raspberrypi.org/phpBB3/index.php
Altre fonti:
Communit RaspberryPi su Element14 http://www.element14.com/community/groups/raspberry-pi?
ICID=hp_raspberry
Communit RaspberryPi su DesignSpark http://www.designspark.com/theme/raspberrypi
Gruppo Raspberry Italia su Google Groups https://groups.google.com/forum/?hl=it&fromgroups#!
forum/raspberrypi-italia
la prima rivista sulla raspi TheMagPi http://www.themagpi.com/
noi http://www.hacklabudine.it
HackLabUdine.it
Raspi, OS, boot...
Prepariamo SD 1/3
Tenete presente che:
gli esempi che user si basano su Debian
ovviamente l'immagine per la raspberry Debian
Download
scaricate la versione la versione Debian Wheezy Pubblic Beta da http://www.raspberrypi.
org/archives/1435
In alternativa da http://www.raspberrypi.org/downloads si pu scaricare la versione di Debian 6
(immagine del 19/04/2012) per Raspi oppure sono disponibili altre distribuzioni.
Preparare SD
Su http://elinux.org/RPi_Easy_SD_Card_Setup trovate le indicazioni su come preparare SD usando come
computer con Linux o Win o Mac. Nel nostro caso usciamo Linux dalla console
per sicurezza verifica l'integrit del file 2012-06-18-wheezy-beta.zip scaricato prima con
sha1sum
confronta il valore in HEX con quello del sito precedente. I due valori devono essere
uguali.
HackLabUdine.it
Raspi, OS, boot...
Prepariamo SD 2/3
decomprimiamo il file ZIP
massimiliano@panda:/tmp/raspi$ unzip 2012-06-18-wheezy-beta.zip
Archive: 2012-06-18-wheezy-beta.zip
inflating: 2012-06-18-wheezy-beta.img
massimiliano@panda:/tmp/raspi$
Inserite un lettore per la SD/MMC con la card inserita. Aspettate alcuni secondi e vediamo a quale
device corrisponde SD usando df -h
massimiliano@panda:/tmp/raspi$ df -h
File system Dimens. Usati Disp. Uso% Montato su
.....
/dev/sdc1 3,8G 3,7G 49M 99% /media/C450-53C6
massimiliano@panda:/tmp/raspi$
Nel mio caso a /dev/sdc. Il valore 1 indica la partizione 1 sulla SD /dev/sdc. Nel vostro caso
potrebbe essere qualche altra cosa. Se non riuscite ad individuala togliete SD e date df -h inserite
SD e di nuovo df -h Controllate le differenze.
smontate la partizione con umount
massimiliano@panda:/tmp/raspi$ umount /media/C450-53C6
HackLabUdine.it
Raspi, OS, boot...
Prepariamo SD 3/3
ora copiamo l'immagine scaricata. Tutto il contenuto della SD viene cancellato!
sudo dd bs=1M if=2012-06-18-wheezy-beta.img of=/dev/sdc
[sudo] password for :
1850+0 record dentro
1850+0 record fuori
1939865600 byte (1,9 GB) copiati, 370,174 s, 5,2 MB/s
massimiliano@panda:/tmp/raspi$
dura alcuni minuti
In alternativa potete seguire le indicazioni per preparare la SD in modo grafico usando ImageWrite
da http://elinux.org/RPi_Easy_SD_Card_Setup
HackLabUdine.it
Raspi, OS, boot...
Il primo boot
HackLabUdine.it
Raspi, OS, boot...
Il primo boot
Con questa versione della Debian al primo boot viene eseguita in automatico l'utility di configurazione
rasp-config. Come vedete dallo screenshot qui sotto prevede alcune opzioni
HackLabUdine.it
Raspi, OS, boot...
L'utility di configurazione raspi-config presenta un bug sulla configurazione della tastiera
da me usata. Per il resto delle opzioni come resize della partizione, impostazioni della nazione,
abilitare ssh e time zone nessun problema.
L'immagine del sistema operativo Debian per la Raspberry Pi configurato con tutte le
impostazioni per l'inglese.
possiamo in ogni caso usare i comandi per questo scopo della Debian.
Di default il abbiamo
nome utente: pi
password: raspberry
HackLabUdine.it
Raspi, OS, boot...
Vediamo come configurare manualmente le vari opzioni
HackLabUdine.it
Raspi, OS e il boot...
ora dalla console fate un primo aggiornamento della Debian. Il firmware della raspi viene distribuito
anche tramite gli aggiornamenti
Dopo il reboot ci si presenta il login, entriamo come fatto precedentemente e vediamo se l'ambiente grafico
LXDE funziona
pi@raspberrypi ~ $ startx
Di default la Raspberry Pi parte in modo console. possibile fare di entrare subito in modo grafico al boot.
pi@raspberry:~$ sudo nano /etc/inittab
cercate la riga id:2:initdefault e modifica in id:5:initdefault
HackLabUdine.it
Raspberry Pi - Firmware
In caso di problemi, per sviluppo o anche per curisit pu essere necessario aggiornare il kernel e/o il
firmware della GPU senza aspettagli gli aggiornamenti rilasciati tramite i pacchetti
uname -a
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.1.9+ #149 PREEMPT Thu Jul 5 01:33:01 BST 2012 armv6l
GNU/Linux
pi@raspberrypi ~ $
HackLabUdine.it
Raspberry Pi - Firmware
Per rendere veloce e semplice la cosa stata rilasciata l'utility rpi-udate (sviluppata da Hexxeh)
scaricabile da https://github.com/Hexxeh/rpi-update/
dove trovi anche come installarla che un operazione semplice che prevede questi semplici passi
HackLabUdine.it
Raspberry Pi - Firmware
nei messaggi precedenti era presenta anche
Questo indicata come sono divisi i 256MB della RAM. In questo caso di default abbiamo :
Ma potremmo avere:
224M ARM, 32M GPU split : Maximum ARM memory. Good for ARM desktop use. No accelerated
video or 3D possible.
192M ARM, 64M GPU split : Reasonable ARM memory. Simple video (omxplayer) or 3D (quake) is
possible. This is the default.
128M ARM, 128M GPU split : Use this for heavy 3D work, or 3D plus video. Needed for XBMC.
HackLabUdine.it
Raspberry Pi e Python
Di default (come in tutte le distribuzioni Linux) troviamo gi installato Python nella versione 2.7
pi@raspberrypi ~ $ 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.
>>>
Tra i pacchetti disponibili nella Debian che stiamo usando c' Python 3.2 il quale non installato di
default, cosi come neanche PIP per l'installazione dei pacchetti Python ospitati suo sito http://pypi.
python.org/pypi . PIP (Python Packet Index) ideale per l'installazione veloce e aggiornata dei vari
pacchetti Python presenti nel repository ufficiale. Visto che ci servir vediamo di installarlo sulla raspi.
HackLabUdine.it
Raspberry Pi e Python-PIP
Dalla console della raspy:
pi@raspberrypi:~$ sudo apt-get install python-pip
pi@raspberrypi ~ $ 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 pip
>>> dir(pip)
['FrozenRequirement', 'InstallationError', '__builtins__', '__doc__',
'__file__', '__name__', '__package__', '__path__', 'autocomplete',
'backwardcompat', 'basecommand', 'baseparser', 'bootstrap',
'call_subprocess', 'command_dict', 'command_names', 'commands',
'console_to_str', 'difflib', 'download', 'exceptions',
'get_installed_distributions', 'load_all_commands', 'load_command',
'locations', 'log', 'logger', 'main', 'optparse', 'os', 'parser',
're', 'status_codes', 'subprocess', 'sys', 'util', 'vcs',
'version_control', 'walk_packages']
>>>
HackLabUdine.it
Raspberry Pi e Python-PIP
Django
il modulo RPi.GPIO
HackLabUdine.it
Raspberry Pi e Django
Installare il WEB Framework Django
Django uno strumento per sviluppare in ambiente WEB sia per sviluppare
siti che per applicazioni web. scritto in Python
opensource.
Se non lo conosci e vuoi approndire parti da https://www.djangoproject.com/
HackLabUdine.it
Raspberry Pi e Django
Procediamo con l'installazione di Django
pi@raspberrypi ~ $ python
>>> import django
>>> print django.get_version()
1.4
>>>
HackLabUdine.it
Raspberry Pi e Django
Facciamo un piccolo esempio
Creiamo una sottodirectory demo per mettere gli esempi che faremo e una ulteriore sottodirectory
django e posizioniamoci all'interno
HackLabUdine.it
Raspberry Pi e Django
vediamo cosa stato fatto da django-admin.py :
pi@raspberrypi ~/demo/django $ ls -R
.:
raspberrypi
./raspberrypi:
manage.py raspberrypi
./raspberrypi/raspberrypi:
__init__.py settings.py urls.py wsgi.py
pi@raspberrypi ~/demo/django $
stata creata una sottocartella con il nome del progetto che contiene il file manager.py e un'ulteriore
sottocartella raspberrypi con dei file.
Questa la struttura base di un progetto Django. Questi file contengono le configurazioni iniziali. In base
alle necessita saranno modificati e creati atri file di configurazione, db ecc.
HackLabUdine.it
Raspberry Pi e Django
Con quanto fatto da django-admin.py possiamo gi vedere se funziona via WEB.
0 errors found
Django version 1.4, using settings 'raspberrypi.settings' Inserisci IP della tua
Development server is running at http://192.168.0.205:8080/ raspi. 8080 la porta
Quit the server with CONTROL-C. usata
Notate che abbiamo dato un numero IP che quella della raspi. In questo modo possiamo accedervi al server
Django via web da un altro terminale. 8080 la porta usata. Se non si specificato IP:PORT il server rimane in
ascolto su localhost:8080
HackLabUdine.it
Raspberry Pi e Django
Ora da un browser andiamo su IP_raspberry:8080 (in questo caso 192.168.0.205:8080)
HackLabUdine.it
Raspberry Pi e Django
Chi conosce Django avr notato che l'esempio fatto il primo tutorial della
documentazione Django reperibile da https://docs.djangoproject.com/en/1.
4/intro/tutorial01/
Infatti come avresti fatto in un computer tradizionale anche qui lo fai nello stesso
modo.
Niente di diverso.
possibile usare Django per fare dei progetti WEB sulla Raspberry Pi. Anche se
Django potente e flessibile, va tenuto contro delle caratteristiche hardware della
RPi.
HackLabUdine.it
Raspberry Pi + Elettronica
le GPIO
da Python
da riga di comando
Arduino e Python
HackLabUdine.it
Raspberry Pi + GPIO
Useremo il modulo RPi.GPIO per Python per gestire le GPIO della Raspberry Pi.
Questo modulo ancora in sviluppo e mancano alcune parti, ma possibile
usarlo con le limitazioni del caso e/o per iniziare a giocarci..
Nelle prove che ho fatto non ho trovato particolari gravi bug.
HackLabUdine.it
Raspberry Pi + GPIO
installiamo il modulo RPi.GPIO
si usa GPIO.setmode() per indicare il modo da usare. Se non specificato viene inteso che si sta
usando il modo BOARD
HackLabUdine.it
Raspberry Pi + GPIO
Ora realizziamo lo schema qui sotto per un helloworld nel modo delle MCU
HackLabUdine.it
Raspberry Pi + GPIO
Proviamo a fare lampeggiare ogni secondo un LED da Python in modo interattivo
HackLabUdine.it
Raspberry Pi + GPIO
Oltre a Python + RPi.GPIO possiamo manipolare le GPIO in altri linguaggi.
HackLabUdine.it
Raspberry Pi + GPIO
da console
cd /tmp
wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xfz wiringPi.tgz
cd wiringPi/wiringPi
make
sudo make install
cd ../gpio
make
sudo make install
cd ../examples
make
HackLabUdine.it
Raspberry Pi + GPIO
da console
Nel file decompresso troviamo una directory contenete degli esempi per la consultazione. Visto che in
/tmp che viene ripulita al prossimo boot vi conviene salvarla se volete consultarla le prossime volte.
NAME
gpio - Command-line access to Raspberry Pi GPIO
SYNOPSIS
gpio [-g] <read/write/pwm/mode...>
DESCRIPTION
GPIO is a command line tool to allow the user easy access
to the GPIO pins on the Raspberry Pi.
HackLabUdine.it
Raspberry Pi + GPIO
da console
per indicare il modo in cui intendiamo usare il pin se come IN OUT PWM si usa
HackLabUdine.it
Raspberry Pi + GPIO
Non pensate che la Raspberry Pi sia un sistema finito, trovate tutto pronto.
per smanettoni soprattutto per lo usa al di fuori di un computer
HackLabUdine.it
Raspberry Pi
+
Arduino
HackLabUdine.it
Raspberry Pi + Arduino
Ora il turno di Arduino. Prima di tutto stabiliamo come devono collegarli tra loro.
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
0 RX TX 8 (GPIO14)
1 TX RX 10 (GPIO15)
ATTENZIONE
va usando un circuito come convertitore di livello di
tensione. Per esempio un SN74LS244 o CD4050
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
datasheet http://octopart.com/partsearch#search/requestData&q=cd4050
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.
CD4050 CD4049
non usare
HackLabUdine.it
Raspberry Pi + Arduino
HackLabUdine.it
Raspberry Pi + Arduino
Tabella dei collegamenti Raspi > CD4050 > Arduino e descrizione
5V POWER
P1-2 5V 5V 5V POWER IN VIN
OUT Alimenta Arduino a
5V
P1-6 GND GND 8 GND 8 GND GND
3V3 POWER Alimenta il CD4050
P1-1 3V3 1 1
OUT a 3V3
HackLabUdine.it
Raspberry Pi + Arduino
Scriviamo questo piccolo codice per Arduino tramite il suo IDE
HackLabUdine.it
Raspberry Pi + Arduino
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.
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:
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
HackLabUdine.it
Raspberry Pi + Arduino
dalla un terminale della raspi....
con arduino.write() inviamo il a Arduino il valore sia seriale, che se a o A il LED si accende
mentre con gli altri carattere si spegne.
HackLabUdine.it
Raspberry Pi + Arduino
Ora un altro piccolo esempio usando ADC di Arduino. Un potenziomentro ci permetter di variare la
tensione in ingresso del pin A0 del ADC di Arduino. La lettura sar inviata alla raspi via seriale
5V potenz. GND
pin A0 Arduino
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)
HackLabUdine.it
Raspberry Pi + Arduino
Scriviamo questo piccolo codice per Arduino tramite il suo IDE
1. void loop() {
2.
3. ValPot = analogRead(PinPot); //leggiamo A0
4. // Ora inviamo la tensione letta al Raspi,
5. Serial.print("Tensione: ");
6. // prima convertiamo il valore digitale per il valore intensione del Byte
7. // e lo inviamo alla seriale
8. Serial.print(ValPot*VByte);
9. Serial.println("Volt");
10. delay(100);
11.
12. }
HackLabUdine.it
Raspberry Pi + Arduino
Ora il codice in Python sulla raspi scrivendolo in un file.
Dalla console della raspi
import serial
arduino=serial.Serial('/dev/ttyAMA0') # se via USB ttyACM0 per Arduino
UNO
while 1:
print arduino.readline()
Vediamo scorrere il valore della tensione letto da Arduino e variando il potenziometro vediamo le
variazioni a video
HackLabUdine.it
Raspberry Pi + Arduino
Un 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
Raspberry Pi...
Questa panoramica sulla Raspberry Pi terminata.
HackLabUdine.it
http://creativecommons.org/licenses/by-sa/3.0/
HackLabUdine.it