Introduzione al Raspberry Pi
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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]
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.
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.
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.
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.
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
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.
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
• 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