Introduzione al Raspberry Pi

Pagina creata da Diego Cappelli
 
CONTINUA A LEGGERE
Introduzione al Raspberry Pi
Introduzione al Raspberry Pi
Il Raspberry Pi è un piccolo computer, implementato su una singola scheda elettronica, delle
dimensioni di una carta di credito, a costi ridotti, concepito per stimolare l'insegnamento di base
dell'informatica e della programmazione nelle scuole.

                                             Storia
L'idea nasce nel 2006 da un gruppo di colleghi dell'Università di Cambridge, preoccupati dal
sempre più frequente calo di competenze informatiche dei bambini e dei giovani studenti, legato
agli alti costi attuali dei personal computer e alla semplicità d'uso dei sistemi operativi, che non
stimolano gli studenti ad approfondire gli ambienti di programmazione che stanno dietro le
interfacce multimediali dei moderni computer.
L'idea si concretizzò nel febbraio 2012 quando il Raspberry Pi uscì nelle sue due versioni, al prezzo
iniziale di soli 25 e 35 dollari, rispettivamente per la versione 256 e quella a 512 Mb di RAM.
Lo scopo del progetto è essenzialmente educativo e per sostenerlo i loro inventori hanno creato la
Raspberry Pi Foundation che è a tutti gli effetti un ente di beneficienza. Il desiderio è quello di
diffondere in tutto il mondo un computer a basso costo e semplice da programmare, specialmente
per i bambini, ed esortano altre compagnie ad emulare o clonare il loro progetto, per far sì che
     • si possa navigare internet senza dover spendere troppi soldi
     • si possa usare un pc anche nei paesi in via di sviluppo che non possono permettersi la
         potenza e l'hardware dei pc tradizionali
     • si possano adottare sistemi di visualizzazione nei musei e negli ospedali
     • bambini disabili possano essere agevolati nell'utilizzo del pc, grazie a applicazioni di
       monitoraggio e di accessibilità

L'origine del nome sembra abbastanza particolare (raspberry in inglese singifica lampone) ma in
realtà riprende una lunga tradizione britannica di utilizzo di nomi di frutta negli ambienti
informatici*, a partire dalla ghianda dell'azienda Acorn Computer, che promosse progetti che
portarono allo sviluppo dei computer basati su processori RISC e poi ARM, alle aziende di
computer Apricot (albicocca) e Tangerine (mandarino).
La sigla "Pi" fa riferimento al linguaggio di programmazione Python, adottato come primo
linguaggio da utilizzare su questo computer.

* "for The name ‘Raspberry Pi’: we wanted a fruit name for nostalgic reasons; In the early days of
Home Micros, there were a number of “Fruit” named computers. Apart from Apple, Apricot and
Tangerine spring to mind; and the Pi is from “Python interpreter” that is adopted as the ‘official’
language for the Raspberry Pi. "[A Feast of Raspberry Pi - BY MARTIN L, ON 6TH JULY 2012 -
http://nlug.ml1.co.uk/2012/07/a-feast-of-raspberry-pi/3428]
Introduzione al Raspberry Pi
Componenti Hardware
Esistono due modelli, A e B, del Raspberry, con in realtà poche differenze.
     Circuito System-on-chip: Broadcom BCM2835 (CPU + GPU + DSP + SDRAM)
           CPU: 700 MHz ARM1176JZF-S core (famiglia ARM11)
           GPU: Broadcom VideoCore IV,[37] OpenGL ES 2.0, 1080p30 H.264 high-profile
              decode
           Memoria SDRAM: 256 o 512 Megabytes (condivisa con la GPU)
     Porte USB: 1 nel modello A, 2 (attraverso un hub USB integrato) nel modello B
     Output video: Connettore RCA per il video composito, HDMI (DSI - CSI)
     Output audio: 3,5 mm jack, HDMI
     Memoria:SD/MMC/SDIO card slot
     Collegamenti di rete: Ethernet 10/100 (RJ-45), solo nel modello B
     Periferiche di basso livello: 2x13 header pins for GPIO, SPI, I²C, UART, +3,3 Volt, +5 Volt
     Real-time clock: No clock or battery
     Corrente (potenza) assorbita: 300 mA, (1,5 W)         700 mA, (3,5 W)
     Alimentazione: 5 V via MicroUSB o GPIO header
     Dimensioni: 85,60 mm × 53,98 mm

Il processore
Le potenzialità del Raspberry stanno nell'utilizzo di un processore con architettura ARM, utilizzata
principalmente nei dispositivi mobili: la sigla ARM sta per Advanced RISC Machine e, a sua volta, la
sigla RISC sta per Reduced instruction Set Computer, ovvero insieme di istruzioni ridotte per
computer. La semplicità della progettazione dei microprocessori RISC permette di eseguire le
istruzioni in tempi minori rispetto all'architettura CISC (Complex Instruction Set Computer)
utilizzate nella maggior parte dei personal computer, che si basano sull'architettura x86 di Intel o
AMD.

La memoria
La memoria totale disponibile è di 256 Mb Ram (512 nel Modello B), che se paragonati ai recenti
computer possono sembrare molto pochi, ma anche con questa poca memoria la scheda è in
grado di fornire ottime prestazioni. Il tutto è stato progettato in modo che il sistema operativo
ottimizza, sprecando la minor quantità di risorse, sia il processore che la memoria.
I sistemi operativi GNU/Linux in combinazione con i processori ARM sono in grado di ottimizzare al
meglio l’uso delle risorse di sistema.

Porte Usb
L'ultimo modello del Raspberry (B) ha due porte Usb (Universal Serial
Bus), che potrebbero essere utilizzate per collegarvi tastiera e mouse. Se
si vogliono collegare altri dispositivi usb, come una chiavetta wifi o un
hard disk esterno, è consigliabile utilizzare un Hub Usb alimentato
separatamente, per evitare che troppi dispositivi esterni assorbano
corrente dal Raspberry, sovraccaricando troppo i circuiti di alimentazione.
Introduzione al Raspberry Pi
Collegamento video (e audio)
Le performance grafiche della scheda sono interessanti: ottima qualità video, capacità di
riprodurre filmati blue-ray e completo supporto 2D e 3D per i giochi.
L’uscita video può essere direttamente collegata:
    • su un televisore a cristalli liquidi o un monitor con ingresso HDMI (High-
        Definition Multimedia Interface), standard commerciale
        completamente digitale ad alta velocità, che consente la trasmissione di
        segnale audio e video su un unico cavo;

   •   mediante l’uscita composita per il collegamento a televisori di
       vecchia generazione che non posseggono ingresso HDMI. Il
       connettore RCA giallo combina in modo analogico i tre segnali
       RGB (Red, Green, Blue) del segnale video, mentre i cavi bianco
       e rosso portano i due segnali audio (right/left) su un jack
       standard da 3,5 mm.
       La ragione per cui si è scelto di adottare anche una connessione video di tipo composito,
       tecnologicamente obsoleta, è dovuta al fatto che in molti parti del mondo sono ancora
       molto diffusi i vecchi TV con ingresso composito. L’intenzione della Fondazione è quella di
       offrire al maggior numero di persone, specialmente a chi non ha possibilità economica, di
       usare un computer.

   •   all'ingresso standard DVI (Digital Video Interconnect), di un monitor,
       utilizzando un cavo adattatore HDMI-DVI. Per l'audio deve essere
       utilizzato un cavo standard con spinotto mini-jack da 3,5 mm, collegato possibilmente alle
       casse multimediali di un computer, in modo che il segnale venga amplificato (utilizzando
       delle cuffie il segnale risulterebbe troppo debole).

Sulla scheda sono inoltre presenti due connettori, protetti da una striscia di nastro adesivo in
plastica trasparente:
    • connettore DSI (Serial Digital Interface): è una interfaccia video che viene utilizzata nei
        monitor a schermo piatto di tablet e smartphone.
    • connettore CSI (Camera Serial Interface): è l'interfaccia utilizzata per collegare una
        videocamera.

Il collegamento a queste interfacce avviene tramite un cavo flat.
Introduzione al Raspberry Pi
SD Card
Raspberry non ha memorie fisiche integrate, ma prevede come supporto di memorizzazione la
presenza di una scheda SD (Secure Digital) inseribile in uno slot dedicato, su cui può essere
installato il sistema operativo e possono essere salvati i dati non volatili.
Le Card SD sono memorie allo stato solido utilizzate nella maggior parte dei dispositivi audio e
video odierni.

Collegamento alla rete
I due modelli della scheda Raspberry si differenziano per la assenza/presenza della scheda
Ethernet integrata.
Il modello A ne è sprovvisto ed è quindi necessario acquistare ad adattatore Usb-Ethernet da
collegare ad una porta Usb e in questo caso, volendo utilizzare anche tastiera e mouse usb, è
necessario acquistare anche un Hub Usb.
Il modello B dispone di una uscita Ethernet Rj45 per un collegamento cablato alla rete.
Il cavo Rj45 può essere collegato
     • ad un router, e in questo caso alla scheda Ethernet viene assegnato automaticamente un
        indirizzo IP, tramite la modalità DHCP del router e configurata di default sulla scheda del
        Raspberry
     • direttamente ad un pc, inserendolo in questo caso in una rete a sé stante, grazie alla
        caratteristica auto-MDIX (Medium Dependent Interface) della scheda.
        Se un tempo era necessario un cavo incrociato (crossover) per collegare due pc in modalità
        peer-to-peer, direttamente l'uno all'altro, oggi grazie a questa caratteristica è possibile
        utilizzare un cavo ethernet rj45 qualsiasi (sempre che anche la scheda di rete dell'altro pc
        disponga di questa caratteristica).

Il collegamento alla rete può essere fatto anche tramite un adattatore wireless Usb, che deve
essere acquistato separatamente e deve avere i seguenti prerequisiti:
     • essere compatibile con il sistema operativo Linux
     • supportare lo stesso protocollo 802.11x del router wireless al quale ci si
         vuole collegare
     • supportare lo stesso tipo di crittografia utilizzata dal router . In genere la maggior parte dei
         dispositivi oggi in commercio supportano tutte le forme di crittografia più comuni (WEP
         WPA e WAP2).

Periferiche di basso livello
Il dispositivo ha 26 pin cosiddetti di GPIO (General Purpose Input/Output), presenti sul circuito
stampato (PCB), che danno la possibilità di collegare il dispositivo con circuiti elettronici esterni,
come switch e led o di far interagire il Raspberry con altri dispositivi, come l'Arduino.
I pin sono 26 piedini maschi, disposti su due file di 13, con una spaziatura standard, che permette
di collegare facilmente cavi flat dotati di connettori femmina standard.

Il Pin 1 è chiaramente identificato sulla scheda dalla dicitura P1. I successivi sono disposti in modo
tale che su una riga ci sono i numeri dispari (a fianco del P1) e sulla riga sopra ci sono i numeri pari.
Introduzione al Raspberry Pi
La funzionalità di ogni singolo pin cambia a seconda della revisione hardware del dispositivo: nel
tempo infatti sono state fatte delle revisioni hardware, con dei piccoli cambiamenti tesi ad un
miglioramento del dispositivo. Sul sito ufficiale www.raspberry.org vengono indicati i codici di
revisione in base al modello.
Il comando da utilizzare per verificare il numero di revisione hw del proprio dispositivo è
cat /proc/cpuinfo

L'alimentazione
Il vantaggio dell'utilizzo di un ridotto insieme di istruzioni del processore è il basso assorbimento di
potenza, ideale per l'implementazione su chip di piccole dimensioni per computer portatili e per i
dispositivi di telefonia mobile. Il Raspberry può quindi operare con un'alimentazione unica a 5V e
solo 1A di corrente, fornita alla scheda tramite un connettore micro usb.
Questo comporta anche una bassa produzione di calore, pertanto non è necessario un sistema di
raffreddamento sul dispositivo.
Il connettore di alimentazione sulla scheda madre è una presa micro-
usb, simile a quella dei tablet o smartphone oggi in circolazione.
Il dispositivo può quindi essere alimentato semplicemente
collegandolo con un cavo USB ad un altro pc, oppure con un
caricabatteria con uscita microusb.

Accessori
La scheda Raspberry viene venduta "nuda", ovvero con la scheda madre e i suoi componenti a
"portata di mano".
Anche se la scheda è protetta da una vernice isolante ed è ben schermata elettricamente, è
consigliabile non toccare a mani nude i vari componenti elettronici, ma maneggiarla prendendola a
suoi lati dopo essersi scaricati da eventuali cariche elettrostatiche.
La scheda inoltre andrebbe sempre appoggiata su un materiale isolante, di plastica, legno, per
evitare che si danneggino i suoi componenti.
Per lavorare in sicurezza, si può acquistare un contenitore di plastica, studiato apposta per il
Raspberry, che permette di maneggiare in tranquillità il dispositivo.
Esistono siti dedicati agli accessori per il raspberry : il più conosciuto è
https://www.modmypi.com/shop.
Pensando ai più giovani, che dovrebbero
essere il target principale dell'utilizzo di
questo dispositivo, si trovano in rete
accessori anche con i disegni e i colori più
disparati, molto divertenti.
Introduzione al Raspberry Pi
Schema di collegamento delle periferiche
Introduzione al Raspberry Pi
Componenti Software
Come già detto, visto che l'architettura ARM non è compatibile con i tradizionali sistemi operativi
"closed source", come Microsoft Windows o Apple Mac Os, sul Raspberry Pi si è deciso di utilizzare
un sistema operativo basato su GNU/Linux, che, essendo "open source", è stato possibile
modificare per adattarlo alle caratteristiche specifiche di questo sistema.
Il sistema operativo che viene consigliato di usare è una versione di Debian ottimizzata per
l'hardware del Raspberry Pi: Raspbian (Raspberry Pi + Debian), che offre, insieme al sistema
operativo anche un insieme di 35.000 pacchetti precompilati di software da installare.
Raspian è stato creato da un insieme di sviluppatori, che è indipendente dalla Raspberry Pi
Foundation, ma ne condivide gli obiettivi e per questo si occupa di sviluppare e migliorare i
pacchetti Debian, per migliorare sempre di più le prestazioni di questo dispositivo.

Nella sezione download del sito ufficiale della Fondazione è possibile scaricare le immagini del
Raspbian ufficiale, detto Raspbian "wheezy" [il termine wheezy indica che è una versione in test],
e quelle relative ad altri sistemi operativi:
    • Soft-float Debian "wheezy": distribuzione identica alla Raspbian, che utilizza una lenta
        soft-float ABI (Application Binary Interface), destinata all'utilizzo di software come
        OracleJVM, che non supporta ancora l'hard-float ABI usato da Raspbian. In
        programmazione, il compilatore usa hard-float come unità in virgola mobile del chip,
        mentre con soft-float le unità sono emulate via software: la differenza è la velocità di
        elaborazione.
    • Arch Linux ARM: si basa su Arch Linux, una versione minimalista di Linux che non incorpora
        strumenti di configurazione, nessun desktop e nessun programma accessorio; non è quindi
        adatta ai principianti.
    • Pidora: si tratta di una distribuzion composta da pacchetti presi dal progetto Fedora ARM, a
        cui ne sono stati aggiunti altri ed è stata ottimizzata per Raspberry
    • RISC OS: RISC OS è un sistema operativo per computer progettato a Cambridge, in
        Inghilterra da Acorn. Rilasciato nel 1987, le sue origini si possono far risalire al team
        originale che ha sviluppato il microprocessore ARM. Questa versione è resa disponibile
        gratuitamente per gli utenti Raspberry Pi ed è consigliata agli sviluppatori.

In realtà sono stati creati un numero incredibile di sistemi da utilizzare sul Raspberry, costruiti ad
hoc, anche sulla base delle specifiche funzioni che si vogliono sfruttare:
    • RpyOS SE: derivata di Raspbian ridotta in formato minimale particolarmente adatta per un
        uso server, non presenta nessuna interfaccia grafica.
    • Moebius: distribuzione per Raspberry pi armhf basata su Debian, mirata ad avere un
        ingombro minimo. Le Dimensioni, la velocità e le ottimizzazioni sono i principali obiettivi
        per questa distro.
    • Bodhi Linux: distribuzione basata su Ubuntu per il desktop con il window manager
        Enlightenment elegante e leggero. Il progetto, che integra e pre-configura la più recente
        build di Enlightenment direttamente dal repository di sviluppo del progetto, offre
        modularità, alto livello di personalizzazione, e la scelta dei temi. Le uniche applicazioni
        preinstallate sono Midori, lxterminal, EFM, Leafpad e Synaptic - ma più software è
        disponibile tramite Application Center, uno strumento di installazione di software web-
        based.
    • HI PI: distribuzione basata su debian squeeze presenta alcuni tool di hacking.
    • Gentoo linux: particolarmente veloce e personalizzabile, è adatta per gli utenti più esperti
Introduzione al Raspberry Pi
che vogliono un sistema operativo totalmente personalizzato.
   •   Pibanglinux: distribuzione basata su Raspbian, la differenza principale tra le due è
       nell'interfaccia grafica. Pibanglinux infatti usa la legerissima Openbox Window Manager
   •   Plan 9: occupa una nicchia interessante nel mondo dei sistemi operativi open source. Si
       tratta di un discendente a tutti gli effetti di Unix
   •   GamePi Os: sistema operativo basato su Raspbian, con già preinstallati numerosi emulatori
       pronti per giocare.
   •   Occidentalis (Adafruit Raspberry Pi Educational Linux): distribuzione Adafruit che include
       strumenti e driver utili per l'insegnamento dell'elettronica in relazione ai prodotti Adafruit.
   •   QtonPi: nato esclusivamente per combinare il framework Qt5 e il Raspberry Pi, per gli
       sviluppatori di app su piattaforma specifica Qt5.

Sistemi specifici per utilizzare Raspberry Pi come Mediacenter:
    • OpenELEC (Open Embedded Linux Entertainment Center): sistema operativo integrato
       costruito intorno XBMC. OpenELEC è stato progettato per essere il più leggero possibile, in
       termini di dimensioni e di complessità.
    • Raspbmc: distribuzione minimale di Linux basata su Debian che porta XBMC su Raspberry
       Pi.
    • Xbian: distribuzione minimale di Linux basata su Debian che porta XBMC su Raspberry Pi.
    • The Raspyfi Project: progetto che mira a rendere il Raspberry Pi una fonte audio a basso
       costo e di alta qualità.

Le distribuzioni sono fornite come un unico file immagine, che viene compresso per velocizzare il
download. Una volta scaricato il file compresso, lo si decomprime in una cartella e si ottiene un file
con estensione .img.
Questo file immagine deve essere masterizzato nella memoria flash della scheda SD.

La comodità di caricare il sistema operativo da una scheda SD permette di provare diversi sistemi
operativi utilizzando diverse schede SD e caricandole a seconda dell'utilizzo che si vuole fare del
Raspberry Pi.

                 Che cosa si può fare con un Raspberry
Fra gli scopi della fondazione Raspberry Pi c'è l'impegno di promuovere principalmente
l'apprendimento del linguaggio di programmazione Phyton, da cui la sigla Pi nel nome.
Oltre a questo, vengono supportati anche altri linguaggi di programmazione in ambiente Linux e
compatibili con l'architettura ARM.
Il fatto che il sistema operativo sia in ambiente Linux porta il grande vantaggio di poter sfruttare
gratuitamente l'infinito parco di programmi e applicazioni disponibili su internet in modalità open
source.
Altra caratteristica importante è la presenza di una serie di porte input/output per la connettività
hardware con l'esterno, che permette di realizzare progetti personalizzati di robotica o
automazione con schede hardware di terze parti, ad un costo molto limitato.
Infine, il Raspberry ha potenti funzioni multimediali e capacità grafiche 3D, per cui può esssere
utilizzato anche come piattaforma di gioco.
Introduzione al Raspberry Pi
Installazione e configurazione iniziale
L'installazione del sistema operativo Raspian è stata fatta da un pc con Windows 8 su una SDHC
Card Sandisk da 4 Gb, presa in prestito dalla macchina fotografica digitale.

   •   Dal sito ufficiale del Raspberry Pi, http://www.raspberrypi.org/downloads scarico l'ultima
       versione di Raspbian "wheezy". Il file archivio zip contiene un unico file immagine.
   •   Inserisco la scheda SD nel lettore del portatile e la riformatto in FAT32.
   •   Lancio il programma gratuito Win32DiskImager con i diritti di amministratore:
       ◦ scelgo il file 2013-02-09-wheezy-raspbian.img
       ◦ come device, scelgo la lettera dell'unità che corrisponde alla scheda SD
       ◦ clicco su Write: il sistema operativo Raspbian viene installato sulla scheda.

Collego tutte le periferiche al Raspberry Pi:
     • non avendo un monitor HDMI, utilizzo un cavo RCA collegato al televisore
     • tastiera USB
     • mouse USB
     • cavo di rete ethernet collegato al router di casa
     • per avere l'alimentazione utilizzo una uscita Usb del mio portatile
Inserisco la scheda SD e collego il cavo usb al portaile.
Visto che non esiste un pulsante di accensione, non appena il cavo usb viene collegato al portatile
il Rapsberry si accende e viene visualizzata la schermata di configurazione Raspi_config:

   •   info contiene le informazioni sul tool di configurazione
   •   expand_rootfs permette di estendere l'immagine del sistema operativo su tutta la
       dimensione della scheda SD, perché durante la preparazione, il file immagine va ad
       occupare solamente lo spazio dell'immagine di origine che e` all'incirca 2GB. L'estensione
       viene effettuata al successivo riavvio del dispositivo. E' consigliabile eseguire questa
       operazione.
   •   overscan permette di modificare i valori per adattare l'immagine allo schermo
Introduzione al Raspberry Pi
•   configure_keyboard permette di impostare il layout della tastiera USB collegata
   •   change_pass permette di cambiare la password dell'utente pi
   •   change_locale imposta il linguaggio locale usato nel set di caratteri
   •   change_timezone imposta l'ora in base al fuso orario: se ci si connette ad internet l'orario
       viene aggiornato automaticamente; comunque si può impostare il fuso orario su Roma.
   •   memory_split cambia l'assegnazione della memoria dedicata al VideoCore e al processore.
       E' consigliabile non cambiare l'impostazione di default, che assegna 64 Mb al VideoCore e
       192 Mb al processore ARM.
   •   overclock permette di configurare l'overclock della CPU (conviene lasciare le impostazioni
       di default)
   •   ssh permette di abilitare/disabilitare il protocollo di rete ssh (secure shell) del server, che
       permette di accedere al Raspberry Pi dalla rete. Consigliato attivarlo.
   •   boot_behaviour imposta l'avvio automatico del desktop al boot, ovvero di lanciare in
       automatico la modalità grafica all'avvio del dispositivo. Se non è impostato, la modalità
       grafica deve essere lanciata manualmente tramite il comando startx.
   •   update aggiorna il sistema operativo all'ultima versione

Già dal primo avvio vengono installati di default i driver essenziali per le periferiche usb di tastiera
e mouse: questo permette di modificare le impostazioni del raspi-config, utilizzando i tasti freccia e
Invio.
Premendo il tasto Esc si esce dalla finestra corrente e si ritorna alla precedente.
Selezionando Finish, il viene chiesto di riavviare il sistema.

Dopo il riavvio del Rapsberry, non avendo attivato la modalità grafica, compare la schermata di
login: accedo utilizzando l'utente di default pi con password raspberry , e mi ritrovo in un prompt
stile Unix: pi@raspberry.
Rientro nell'ambiente di configurazione, attivo la funzionalità boot_behaviour e riavvio.

Ambiente grafico LXDE
LXDE (Lightweight X11 Desktop Environment) è un ambiente grafico libero per il sistema operativo
GNU/Linux creato con l'obiettivo di essere estremamente leggero.
Sicuramente per chi non è
pratico dell'ambiente Linux,
questo ambiente grafico facilita
l'approccio iniziale con il
Raspberry.
Avendo impostato il boot
automatico dell'ambiente nella
configurazione iniziale, quando
accendo il Raspberry Pi parte
l'ambiente grafico e vengono
visualizzati sul desktop una serie
di programmi:

Midori è un browser web
ottimizzato per richiedere poche
risorse alla CPU; non funziona
con tutto, ad esempio i filmati
che usano Flash Player non si possono vedere.
Dal menu dei programmi sono disponibili altri due browser:
    • Netsurfer è più evoluto e più veloce di Midori, ma non è compatibile con i fogli di stile
       CSS3.
    • Dillo è un browser minimale open source ancora in fase di sviluppo

Scratch è un ambiente di sviluppo grafico creato per insegnare ai bambini la programmazione,
attraverso l'utilizzo di blocchi, ognuno dei quali esegue un'operazione specifica.

LXTerminal è un programma che richiama la riga di comando.

OCR Resources è un link al sito ufficiale della struttura didattica OCR (Oxford, Cambridge and RSA
Examinations), in cui sono presenti esami e qualifiche per insegnanti, scuole, collegi e allievi.

Wifi Config è un collegamento alla pagina di configurazione della rete Wifi.

Debian Reference è una guida di riferimento offline della distribuzione Linux Debian.

Pi Store è un link diretto al sito Pi Store, dove si possono effettuare acquisti e download di giochi e
applicazioni, previa registrazione gratuita al sito.

IDLE e IDLE3 sono le due versioni del linguaggio di programmazione Phyton installate sul Raspbian.

Python Games è una raccolta di giochi realizzati in Pygame.

Avendo collegato il Raspberry Pi al televisore, modifico le impostazioni grafiche per un migliore
visualizzazione, editando il file config.txt che si trova nella SD Card:
    • apro LXTerminal e scrivo il comando sudo leafpad /boot/config.txt: si apre il file di
        configurazione
    • per cambiare la risoluzione del display, tolgo il commento alle seguenti righe e imposto i
        valori:
        ◦ overscan_left=20
        ◦ overscan_right=20
        ◦ overscan_top=20
        ◦ overscan_bottom=20
    • Salvo il file e riavvio il dispositivo
Amministrare il sistema
I sistemi operativi Linux utilizzano il termine superuser per indicare il nome dell'amministratore di
sistema, che di defaul è root.
Per passare al livello di supeuser si utilizza il comando su, che richiede di inserire la password di
root: se però non si ha una buona conoscenza dell'ambiente Linux utilizzare l'utente root può
diventare pericoloso, quindi conviene rimanere al livello dell'utente pi, utilizzando il comando sudo
(super user do) ogni volta che si vuole agire da superuser, come quando si vuole installare
programmi o aggiornare la configurazione del sistema.
Ad esempio, per richiamare la schermata di configurazione si digita il comando sudo raspi-config.

Oltre agli utenti di default root e pi, ho creato anche un nuovo utente elena, digitando il seguente
comando: sudo useradd -m -G adm, dialout,cdrom,audio,plugdev,users,lpadmin elena
per assegnare una password, uso il comando: sudo passwd elena.

Per spegnere il Rapsberry Pi si usa il comando sudo shutdown -h now (or sudo halt), dove:
    • -h sta per halt
    • now significa subito. Si piò eventualmente aggiungere un numero che corrisponde ai minuti
       di attesa prima che il comando venga eseguito.

Per riavviare si usa sudo shutdown -r now, oppure sudo reboot.

Per editare un file di configurazione e cambiare delle impostazioni di sistema si possono utilizzare
diversi programmi, tra cui il comando nano dal prompt dei comandi o l'editor grafico Leafpad.

Per verificare la quantità di memoria utilizzata e quella disponibile, si usa il comando free.

Per verificare la quantità di spazio disco utilizzata e quella disponibile, si usa il comando df /.

Per verificare la temperatura del sistema si usa il comando /opt/vc/bin/vcgencmd
measure_temp:

Per verificare l'indirizzo IP assegnato alla scheda di rete si possono utilizzare diversi comandi, tra
cui:
     • hostname -I
     • ifconfig, che contiene anche i dettagli sulla scheda di rete e lo scambio dei pacchetti
•   ifconfig -a | grep eth mostra i dettagli di tutte le schede ethernet installate ed il relativo
       Mac-Address:

                                                                                                   •
   •   sudo ifup eth0 abilita manualmente la scheda di rete eth0
   •   sudo ifdown eth0 disabilita manualmente la scheda di rete eth0

Aggiornamenti
Il sistema Advanced Packaging Tools, abbreviato apt è un sistema in grado di scaricare pacchetti
contemporaneamente da diversi sorgenti collegate fra loro in un sistema avanzato molto efficiente.
In pratica, basta che siano collegate le risorse online (via fto o http) con la scheda SD per gestire i
file dai repository e aggiornare il sistema operativo o installare programmi.
Il comando apt gestisce il file /etc/apt/sources.list, che contiene la lista delle sorgenti (i percorsi
dei repository) da cui attingere i pacchetti.
Quando l'installazione di un pacchetto non va a buon fine, è consigliabile aggiornare questa lista
attraverso il comando sudo apt-get update, che permette al sistema APT di riconoscere e
modifiche apportate alla sources.list e aggiornare il sistema.

L'installazione di un pacchetto si effettua con il comando sudo apt-get install seguito dal nome del
pacchetto specifico. Per disinstallarlo, il comando è sudo apt-get remove nome_pacchetto.

Per aggiornare tutti i pacchetti installati nel sistema si usa il comando sudo apt-get upgrade.

Gli sviluppatori dell'applicazione APT hanno anche inserito un divertente easter egg, che mostra
una mucca stilizzata con caratteri ASCII, semplicemente digitando il comando apt-get moo:

       N.B. Un easter egg, letteralmente "uovo di pasqua", è una piccola applicazione inserita dal
       programmatore dentro un programma ufficiale, con uno scopo esclusivamente giocoso e divertente.
Aggiornamento del kernel e del firmware
Innanzitutto installo Git ( sistema software di controllo di versione distribuito) tramite il comando
apt-get install git-core.
Lancio il comando sudo apt-get update && sudo apt-get dist-upgrade per scaricare i percorsi agli
ultimi aggiornamenti, divento amministratore root con il comando sudo -s e lancio il comando
wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && chmod +x /usr/bin/rpi-update per
scaricare il programma di update e renderlo eseguibile:

Lancio il comando rpi-update per aggiornare il firmware e il kernel.

Per verificare la versione presente sulla scheda SD, si digita il comando uname -a
Per conoscere la versione firmware della GPU , si digita /opt/vc/bin/vcgencmd version

prima dell'aggiornamento:

dopo l'aggiornamento:
Collegamento alla rete
Con cavo ethernet in DHCP
La scheda di rete del Raspberry è inizialmente impostata in DHCP (Dynamic Host Configuration
Protocol) e visto che sono diversi gli ambienti di rete in cui voglio utilizzare il mio Raspberry, ho
deciso di lasciare la configurazione della rete in modalità dinamica, permettendo al server DHCP
della rete in questione di assegnare un indirizzo IP al dispositivo.
Per recuperare ogni volta l'indirizzo IP che è stato assegnato al Raspberry, dal mio portatile posso
usare diversi metodi:
    • quando sono a casa, posso accedere all'interfaccia grafica del mio router e verificare nella
        tabella DHCP l'ip assegnato:

   •   in altre reti, dove non ho il controllo del router, posso usare il protocollo ARP (Address
       Resolution Protocol), scrivendo dal prompt di dos il comando arp -a, che elenca la tabella
       delle associazioni Indirizzo Ip e Mac Address dei dispositivi presenti nella rete. In questo
       caso trovo l'indirizzo Ip perchè conosco a priori il Mac Address della scheda di rete del
       Raspberry (in genere tutti i Raspberry hanno un Mac che inizia con b8).

   •   in alternativa al comando ARP (che può essere a volte lento nell'aggiornare le sue tabelle)
       posso utilizzare il programma gratuito per Windows NMAP, che esegue una scansione della
       rete per verificare le macchine attive. Nell'esempio sottostante, visto che avevo collegato il
       Raspberry sullo stesso switch in cui era collegato il mio portatile, è stato sufficiente eseguire
       una scansione della sottorete /24, in cui ero sicura fossero presenti entrambe le macchine:
Configurazione IP fisso
Se si vuole impostare un IP fisso, le operazioni di configurazione devono essere fatte manualmente
nella cartella di configurazione della rete, editando il file interfaces con il comando sudo nano
/etc/network/interfaces.
Modificare il file di configurazione, inserendo i dati della rete, ad esempio:
       auto eth0
       iface eth0 net static
       address 192.168.1.115
       netmask 255.255.255.0
       gateway 192.168.1.1
dove eth0 corrisponde alla scheda di rete collegata al cavo ethernet.

Collegamento diretto fra portatile e Raspberry senza una infrastruttura di rete
E' possibile utilizzare un collegamento diretto fra il Raspberry Pi e il proprio computer, utilizzando
un cavo di rete ethernet e un range di indirizzi IP dedicati a questa particolare situazione, quando
non è presente una infrastruttura di rete, con un router che possa assegnare indirizzi IP ai
dispositivi.
Infatti, fra gli indirizzi IP che lo IANA (Internet Assigned Numbers Authority) definisce come "Uso
Speciale", ci sono gli indirizzi IP ad "Uso Privato", che tutti conoscono perché vengono utilizzati per
configurare gli apparati delle reti locali:
              10.0.0.0 - 10.255.255.255
              172.16.0.0 - 172.31.255.255
              192.168.0.0 – 192.168.255.255
Ci sono però anche degli indirizzi di "Autoconfigurazione", che hanno il range di indirizzi
169.254.0.0 – 169.254.255.255 e vengono utilizzati dai dispositivi di rete quando non hanno la
possibilità di ricevere un indirizzo IP automatico all'interno di una rete locale, come nel caso di un
collegamento diretto fra due pc.
Nel RFC (Request for Comment) 5735 viene così specificato:
              169.254.0.0/16 - This is the "link local" block. As described in [RFC3927],
              it is allocated for communication between hosts on a single link. Hosts
              obtain these addresses by auto-configuration, such as when a DHCP
              server cannot be found.
Il servizio che assegna automaticamente alla scheda di rete un indirizzo IP di questo range, in caso
di failure del servizio DHCP, si chiama APIPA (Automatic Private IP Addressing).
In pratica, assegno due indirizzi IP fissi di questo range al portatile e al Raspberry Pi.
Sul mio portatile:
     • nella finestra Connessioni di rete, faccio click destro sulla scheda Ethernet e scelgo
         Proprietà;
     • seleziono Protocollo Internet versione 4 (TCP/IPv4) e clicco su Proprietà:
     • assegno un Ip fisso:
Inserisco la SD card del Raspberry sul lettore del mio portatile: nella directory principale della
partizione visibile, fra i vari file presenti prendo in considerazione il file cmdline.txt.
Al contenuto presente in questo file:
       dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
       console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
aggiungo in fondo una nuova variabile: ip=169.254.0.2
Inserisco la scheda SD card nel Raspberry, collego i due dispositivi con un cavo ethernet diretto e
accendo il Raspberry.

Dal portatile pingo l'indirizzo 169.254.0.2 e il risultato è positivo. A questo punto posso collegarmi
al Raspberry tramite una sessione SSH con Putty.

Se sul Raspberry si vuole utilizzare un indirizzo IP diverso da quello preimpostato sul file
cmdline.txt, lo posso cambiare manualmente tramite il comando
sudo ifconfig etho -pointopoint 169.254.0.10
All'invio del comando compare un Warning che dice che la scheda è già in modalità pointopoint,
poi il collegamento remoto via Putty cade e deve essere rieffettuato.

Funzione Wake on lan non possibile
Il produttore della scheda di rete installata sul Raspberry dichiara che il chipset della scheda
supporta la funzione WOL (Wake-on-Lan), ma il chip della scheda Ethernet sul Raspberry Pi è
collegato via USB e quindi non supporta questa funzione.
Quando il Raspberry viene spento con uno shutdown, la CPU si ferma e la GPU va in low power
mode; la GPU non supporta WOL, quindi anche se la scheda di rete supporta la funzione, in questo
momento il Raspberry non può essere acceso tramite questa caratteristica.

Sul sito ufficiale, nella pagina delle FAQ (Frequented Asked Questions) viene scritto:
Is power over Ethernet (PoE) possible?
Not in the base device, but it’s been a very commonly requested feature, so we’re examining
options for later releases.
Collegamento remoto
Via SSH
Per accedere al Raspberry è necessario dotarsi di dispositivi I/O (input/output) esterni, come una
tastiera e un mouse usb e un monitor dotato di collegamento HDMI o RCA.
Una comoda alternativa è di utilizzare un collegamento remoto, tramite la rete ethernet.
Io ho adottato il più semplice e il più diffuso, che è un collegamento SSH (Secure Shell) con il
programma Putty: si tratta di una interfaccia a riga di comando simile al Telnet, ma che utilizza un
protocollo di comunicazione sicuro, tramite la creazione di un tunnel criptato.
Per la connessione è sufficiente conoscere l'indirizzo IP del Raspberry e le credenziali dell'utente
che si vuole utilizzare (uso l'utente di default pi).
La funzionalità ssh dovrebbe essere già abilitata di default nell'installazione iniziale: per verificarne
l'attivazione bisogna andare nella configurazione iniziale (sudo raspi-config), nella sezione ssh.

Via VNC
La connessione SSH è una interfaccia a riga di comando, quindi non si può visualizzare la pate
grafica del sistema operativo. Si può allora usare VNC (Virtual Network Connection), che è software
di connessione remota, che permette di accedere al Raspberry, anche nel suo ambiente grafico, da
un altro pc. Sul Raspberry viene installata la parte Server, mentre su l'altro pc è sufficiente un
Viewer che permette di ricevere l'immagine dello schermo e inviare input da tastiera/mouse:
     Sul raspberry installo il programma Tightvncserver : sudo apt-get install tightvncserver
     Sul portatile Windows installo il software gratuito TightVNC
     Sul Raspberry, lancio il programma tightvncserver (viene richiesto di inserire una password
        lunga 8 caratteri che sarà utilizzata per accedere da remoto al desktop grafico del
        raspberry; viene poi indicato che il numero del monitor associato è l'1)

    Sul portatile, lancio il programma TightVnc Viewer, dove inserisco l'indirizzo IP del
     Raspberry seguito da :1 per indicare il monitor; inserisco anche la password di accesso e
     visualizzo così sul mio portatile la schermata grafica del Raspberry:
E' possibile automatizzare l'avvio del server vnc all'accensione del raspberry.
Dopo aver provato diversi sistemi che non hanno funzionato, forse per le mie conoscenze limitate
dell'ambiente linux, ho trovato una soluzione molto semplice e funzionante:
    • tramite putty mi sono collegata con l'utente pi
    • nella cartella home dell'utente pi, che è la cartella di default quando si fa login, ho scritto il
        comando cd .config per entrare nella cartella di configurazione
    • dentro questa cartella ho creato la cartella autostart col comando mkdir autostart
    • dentro questa cartella ho creato un file di configurazione, con il comando nano
        tightvnc.desktop, in cui ho inserito le seguenti righe:
               [Desktop Entry]
               Type=Application
               Name=TightVNC
               Exec=vncserver :1
               StartupNotify=false
Dopo aver riavviato il Raspberry, dal mio portatile ho lanciato direttamente il programma VNC
client.

Webmin
Webmin è una utility ad interfaccia grafica utilizzata per amministrare i sistemi Unix in modo
semplice soprattutto per chi non è un esperto dei sistemi Unix, come me.

Per risolvere problemi di user permission, lancio il comando sudo groupadd -f -g33 www-data

Installo LAMP:
    • sudo apt-get update
    • sudo apt-get install apache2 php5 libapache2-mod-php5
    • sudo apt-get install mysql-server mysql-client php5-mysql
    • sudo apt-get install phpmyadmin
    • sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-
        pty-perl apt-show-versions python

Installazione Webmin
E' necessario prima creare una cartella Webmin su cui scaricare il programma:
    • mkdir webmin
    • cd webmin
    • wget http://prdownloads.sourceforge.net/webadmin/webmin-1.580.tar.gz
    • gunzip webmin-1.580.tar.gz
    • tar xf webmin-1.580.tar
    • cd webmin-1.580
    • sudo ./setup.sh /usr/local/webmin

Durante la configurazione mi viene chiesto di specificare alcuni parametri: ho lasciato i parametri
di default, ho lasciato l'utente admin per l'accesso, ho scelto di utilizzare SSL e di far partire il
servizio al boot del dispositivo.
Completata l'installazione e la configurazione, apro il browser e scrivo:
http://192.168.192.125:10000 (l'indirizzo IP assegnato oggi al Raspberry Pi). Inserisco le credenziali
e riesco ad accedere alla schermata:
Condivisione di file e cartelle
Le operazioni di condivisione all'interno di una rete Windows funzionano attraverso un protocollo
di alto livello, che permette di visualizzare sulla rete locale alcune entità locali, come file e cartelle.
Il nome di questo protocollo è SMB (Short Message Block), che in ambiente Linux è stato
implementato nel pacchetto Samba.
Grazie a questa implementazione è possibile condividere file e cartelle fra Raspberry, che si basa su
piattaforma Linux, e i pc con sistema operativo Windows.
I passi da seguire sono i seguenti:
     • installare Samba su Raspberry tramite il comando:
         sudo apt-get install samba samba-common-bin
     • fare una copia di sicurezza del file di configurazione smb.conf originale:
         sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_bak
    •   editare il file di configurazione per le modifiche: sudo nano /etc/samba/smb.conf
Le configurazioni da inserire sono di due tipi, a seconda che si voglia condividere una cartella con o
senza protezione.
Per semplicità, decido di utilizzare l'utente standard pi.

Inserisco quindi nel file di configurazione i seguenti parametri:
[global]
       workgroup = WORKGROUP (è il gruppo di lavoro impostato su tutti i miei pc)
       netbios name= RASPBERRY_PI (è il nome del Raspberry come compare nelle Risorse di
                                         rete)
       server string = Raspberry (è il commento associato al nome del dispositivo in rete)
       security = user

[Public]
       comment= public (è il commento associato al nome della cartella condivisa)
       browseable= yes (permette di sfogliare la cartella)
       path = /home/shares/public (è il percorso della cartella condivisa)
       public = yes
       guest ok = yes (rende il disco del raspberry accessibile a tutti)
       writable = yes (indica che il contenuto della cartella condivisa può essere sovrascritto)

[comune]
      comment= cartella comune
      browseable= yes (permette di sfogliare la cartella)
      path = /home/comune
      public = yes
      writable = yes

    •   dopo aver salvato e chiuso il file, è consigliabile lanciare il comando testparm per verificare
        che la sintassi del contenuto scritto sia corretta.
•   riavviare il servizio samba tramite il comando: sudo /etc/init.d/samba restart

Vengono stoppati e fatti ripartire i due demoni che compongono Samba:
   •   nmbd, che si occupa delle operazioni di risoluzione dei nomi sulla rete
   •   smbd, che gestisce le connessioni e le operazioni di condivisione.
Per default il servizio Samba non viene avviato all'avvio del dispositivo. Visto che ho lasciato i
permessi di scrittura a tutti senza password, preferisco attivare il servizio solo quando ne ho
bisogno e poi stopparlo quando non servono più le condivisioni.
I comandi che utilizzo per avviare e stoppare il servizio sono i seguenti:
sudo /etc/init.d/samba start
sudo /etc/init.d/samba stop

Visto che voglio utilizzare una cartella comune, la creo con il comando sudo mkdir /home/comune
e la rendo accessibile a tutti con il comando sudo chmod 777 /home comune.

Dal portatile sfoglio la rete
seleziono RaspBerry Pi
e accedo alla cartella comune, dove creo la cartella elena

che ritrovo anche sul raspberry:
Installazione di programmi aggiuntivi
Installazione del programma Gnash, plugin per filmati flash (da utilizzare con Midori):
    • sudo apt-get install gnash
    • sudo apt-get install browser-plugin-gnash

Installazione del browser Chromium: sudo apt-get install chromium-browser

Installazione del programma Webiopi
Webiopi è un framework open-source utilizzato per controllare la componente GPIO del Raspberry
Pi.
Prerequisiti per l'installazione sono i due pacchetti:
    • GCC (GNU Compiler Collection): un insieme di compilatori creato per l'ambiente
       GNU/Linux, che ottimizza i tempi di compilazione e di utilizzo della memoria. Per installarlo
       si lancia il comando apt-get install gcc-4.7
    • Python: è già installato. Nel caso manchi, si utilizza il comando apt-get install python3.2.

Installazione di webiopi:
    • wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
    • tar xvzf WebIOPi-0.6.0.tar.gz
    • cd WebIOPi-0.6.0
    • sudo ./setup.sh
Completata l'installazione, si può verificare la configurazione nella cartella /etc/webiopi che
contiene i due file config e passwd. In particolare nel file config si possono vedere i parametri, tra
cui anche la porta HTTP, che di default è la 8000.
Le credenziali di default per l'accesso sono webiopi con password raspberry.

Per avviare il programma si scrive il comando sudo /etc/init.d/webiopi start
e poi si apre dal browser una pagina http sull'indirizzo IP del raspberry sulla porta 8000:

Il programma ha diversi link.
Cliccando sul primo link, GPIO Header viene visualizzato lo scheda dei PIN configurati in
entrata/uscita.
Cliccando sul numero del Pin si cambia lo stato da acceso a spento o viceversa.
Cliccando invece sul quadrato grigio "IN" si cambia la modalità di connessione del pin da IN ad OUT
e viceversa.
Riferimenti bibliografici e web
Libri:
     Raspberry Pi. Guida al computer più compatto del mondo di Pier Calderan - Apogeo 2013
     Alla Scoperta del Raspberry PI di Giacomo Bellazzi - in pdf, scaricabile gratuitamente dal
       sito dell'autore: http://www.ismanettone.it/alla-scoperta-di-raspberry-pi/
     The Raspberry Pi Education Manual sviluppato dalla Fondazione - in pdf, scaricabile
       gratuitamente dal sito http://store.raspberrypi.com/projects/casmanual (indirizzato
       principalmente ai bambini)
     Raspberry-Pi-For-Dummies - di McManus - Cook

Siti in inglese:
      http://www.raspberrypi.org/ - sito ufficiale della Fondazione
      http://raspberryjam.org.uk/ - community inglese
      http://rastrack.co.uk/ - sito dove aggiungere il proprio RPI sulla mappa del mondo
      http://www.adafruit.com/ - sito con guide e tutorial su progetti hardware
         (http://learn.adafruit.com/category/raspberry-pi )
      https://www.modmypi.com/ - magazine on line e shop di accessori dedicati
      http://www.themagpi.com/ - magazine mensile on line e scaricabile
      http://elinux.org/RPi_Hub - pagina sul Raspberry della community Linux

Siti in italiano:

     http://raspibo.v2.cs.unibo.it/wiki/index.php/Pagina_principale – pagina di un gruppo di
      appassionati di Bologna
     http://rpy-italia.org/forum/ - sito fondato da due ragazzi italiani, con relativa pagina sui
      principali social network: Facebook, Twitter e Google+.
     http://www.maffucci.it/area-studenti/raspberry-pi/ - sito amatoriale con guide e
      suggerimenti
Puoi anche leggere