Iniziare con il Raspberry Pi (parte 1)

Raspberry-Pi-logo

Introduzione

Ho sempre voluto poter comandare le mie apparecchiature elettroniche e multimediali con un sistema semplice e flessibile, che potesse essere facilmente installabile e configurabile. Dopo aver lavorato tanto con i PIC e aver provato Arduino, ho trovato la soluzione definitiva: il L’ultimo modello di Raspberry Pi attualmente in commercio è il Raspberry Pi 3. Ciò che lo accomuna agli altri due è la poca spesa e la possibilità di configurarlo a piacimento, ma è ciò che lo distingue ad affascinare: il Raspberry Pi è un vero e proprio computer, che supporta un vero sistema operativo, con tutte le caratteristiche per rendere estremamente semplice e divertente lavorare con progetti di elettronica complessi. La vera forza di questa schedina è che possiamo interfacciare facilmente l’elettronica con applicazioni di alto livello, come può essere un web server, ad esempio con un sito web con cui programmiamo l’irrigazione del giardino o gestiamo l’accensione delle luci di casa o leggiamo il carico dell’impianto elettrico. E poi controllare le nostre mail e accendere un LED quando ce n’è una non letta (questo esempio lo vediamo in fondo all’articolo!), o scrivere su display LCD le previsioni del tempo e perchè no, accendere lo stereo e mettere su una playlist di canzoni quando entriamo in casa… Le possibilità sono pressochè infinite!

Obiettivo dell’articolo

In questo articolo seguiremo passo-passo la procedura per installare e configurare correttamente il Raspberry Pi e impareremo a scrivere alcuni semplici programmi per controllare un circuito con LED e pulsante. Non è richiesta alcuna conoscenza particolare di Linux, python o di elettronica, ma da oggi (settembre 2013) a quando metterete le mani sul vosto primo Raspi possono essere cambiate tante cose, quindi questa guida è solo a scopo introduttivo ed è necessario informarsi sulle nuove feautures aggiunte nel corso del tempo per poter sfruttare al massimo il Raspberry Pi (e semplificarne l’uso). È fondamentale la conoscenza dell’inglese tecnico: tutti i documenti/datasheet/guide/FAQ più aggiornati che si trovano in rete sono raramente tradotti in italiano. Per tutte le domande su programmazione e uso del terminale di Linux, Google è il vostro miglior alleato. Su internet si trovano molti forum e chat da cui potete attingere o chiedere informazioni. Il miglior punto di partenza per tutto è comunque il sito ufficiale del Raspberry Pi, che trovate all’indirizzo: http://www.raspberrypi.org/

Il Raspberry Pi

Il Raspberry Pi – Raspi per gli amici – è un piccolo computer, ha proprio tutto quello che potremmo volere: un processore ARM da 700MHz, RAM, USB, Ethernet, ma soprattutto sulla scheda elettronica è saldato un pettine collegato direttamente al processore, che ci permette di avere degli ingressi/uscite digitali (configurabili a piacere) controllabili direttamente da sistema operativo. Esistono due versioni del Raspi, il modello A e il B. La differenza sta tutta nell’hardware, il modello B rispetto al suo fratellino ha in più il connettore Ethernet, due prese USB anzichè una e la memoria RAM più capiente (512MB contro i 256 del modello A). Ovviamente anche il prezzo è diverso: ad oggi il modello B può essere acquistato per 37€, mentre il modello A costa solo 28€. Il modello A è più leggero ed è quindi ottimo per le applicazioni embedded (dedicate) dove il peso è un problema e dove le caratteristiche in più del modello B risultano superflue. D’altro canto, il modello B è decisamente più versatile, può essere collegato alla rete informatica e può gestire più applicazioni e processi del modello A.

Aggiornamento 2017: L’ultimo modello di Raspberry Pi attualmente in commercio è il Raspberry Pi 3, con il nuovo alimentatore da 5V 2,5A.

Raspberry Pi 3 Model B  
Alimentatore Caricabatterie 5V 3A per Raspberry Pi 3

Comunque è disponibile anche due serie di kit ufficiali che comprendono già la scheda con tutti gli accessori necessari.

Raspberry Pi 3 Official Desktop Starter Kit
  Raspberry Pi 3 Official Starter Kit

Hardware

Ma quindi con questi 37€ cosa mi porto a casa? Una bella schedina, tutto sommato.

raspberry_pi
Fig.1: …ero convinto di aver chiesto una pizza.

Le dimensioni sono quelle di una carta di credito (8.6cm x 5.4cm x 1.7cm), con a bordo:

  • Processore Broadcom BCM2835 full HD[+]
  • CPU ARM da 700MHz (overcloackabile fino a 800MHz)
  • 512MB di SDRAM
  • Porta Ethernet 10/100 (RJ45)
  • Due connettori USB 2.0
  • Uscita video HDMI e composita
  • Uscita audio jack 3.5mm e HDMI
  • Slot per scheda SD
raspberry_pi_scheme
Fig.2: Come sarebbe RS non consegna pizze a domicilio?

L’alimentazione va fornita tramite MicroUSB con un alimentatore adatto. Il modello B richiede da specifiche 5 V di tensione e almeno 700 mA di corrente[+]. In realtà, per quello che andremo a fare a breve, il carica batterie del cellulare è più che sufficiente, ma ricordate che se avete intenzione di “spremere” il Raspberry Pi con progetti più esosi di risorse (come può essere il mediacenter XBMC, o RaspBMC nella versione compilata apposta per il Pi) vi servirà un alimentatore più potente. Se non volete correre rischi, al momento dell’acquisto vi propineranno tutta una lista di “cose di cui il tuo RaspberryPi ha assolutamente bisogno”, tra le varie scatoline di plastica e schede SD troverete anche un alimentatore adatto. Per verificare che non ci siano problemi di alimentazione, e che quindi il vostro alimentatore non si “sieda” ed eroghi 5V costanti, sul Raspberry Pi sono presenti due piazzole appositamente pensate per inserire i puntali del multimetro e verificare l’alimentazione in ingresso. Sulla scheda hanno il nome TP1 per il positivo e TP2 per il negativo[+].

GPIO

Ovvero quella trentina di piazzole che ci interessano davvero. I General Purpose Input/Output pin (chiamati più semplicemente GPIO) sono quei contatti del BCM2835 che possiamo programmare come più ci piace. Possono essere ingressi o uscite, possono essere configurati per dialogare con altri apparecchi con protocolli come UARTI2CSPI eccetera, o possono essere configurati come uscite PWM. Nel Raspberry Pi, questi pin sono collegati al pettine più grosso presente sulla scheda, il pettine P1.

Pinout_P1_raspberry
Fig.3: Pinout del pettine P1 – elinux.org

AVVERTENZE:

  • Il microprocessore è DIRETTAMENTE COLLEGATO al pettine e non ci sono protezioni di nessun tipo tra i due
  • Ogni singolo pin può assorbire o fornire fino a 16 mA di corrente[+]
  • La corrente massima fornibile dai pin 3,3 V è di 50 mA complessivamente[+] (3 mA per ogni GPIO)
  • MAI collegare un cavo con una tensione superiore ai 3,3 V ad un pin GPIO: il BCM non è costruito per lavorare con tensioni più grandi e rischiate di danneggiare irreparabilmente il vostro Raspi
  • Ricontrollate sempre il vostro circuito prima di dare tensione
  • Calcolate sempre le correnti in gioco e non superate le soglie indicate o brucerete irrimediabilmente il processore o il regolatore di tensione.

Altri contatti

Tra le altre cose che possono tornare utili sulla scheda del Raspi:

  • Jumper P6: composto da due piazzole, una per il segnale di reset e l’altra per lo 0V. Ponticellando questi due contatti si riavvia il processore del Raspi. Da fabbrica il jumper non è saldato.
  • Connettore P5: utile se si vuole aggiungere una seconda linea I2C o una linea di handshake per l’UART. Anche questo connettore non è saldato.

Altri connettori che possono tornare utili per progetti più complessi sono S2, usato come DSI (Display Serial Interface)[+]per collegare alcuni schermi LCD o OLED compatibili per applicazioni embedded[+], e il connettore S5 che fornisce un attacco MIPI/CIS[+] per videocamere compatibili[+]. Per l’elenco completo dell’hardware del Raspberry Pi e tutte le sue specifiche, fate riferimento a questi link:

Sotto la lente

Vediamo ora velocemente alcune caratteristiche elettroniche della scheda. ALIMENTAZIONE

raspberry_pi_alimentazione
Fig.4: Stadio di alimentazione, davvero niente di eccezionale

La prima cosa che si nota di questo angolo di scheda è che lo stadio di alimentazione 3,3V è banalmente composto da qualche condensatore e un regolatore lineare[+]. Molti elettronici modellisti si sono lamentati di questa soluzione, principalmente perchè i regolatori lineari sono meno efficienti dei regolatori switching e le batterie ne risentono. Ovviamente la ragione per cui è stato adottato il regolatore lineare è il costo inferiore. Per questo motivo su internet si trovano diverse guide fai-da-te per utilizzare un regolatore switching al posto di quello originale[+]. Sulla scheda sono poi presenti altri due regolatori, RG1 e RG3, che forniscono rispettivamente 1,8V e 2,5V. PROCESSORE

raspberry_pi_processor
Fig.5: H9TKNNN4GDMP?

Queste due righe sono solo per ricordare che il processore è montato sotto al componente di cui si legge la sigla. Molte volte si sente di qualcuno che chiede come mai non c’è il marchio Broadcom e la sigla BCM2835 stampati. La risposta è semplicemente che per risparmiare spazio il chip di SDRAM è montato direttamente sopra al microprocessore e che quindi la sigla che si legge non è altro che il modello di memoria installato. LAN E USB

raspberry_pi_processor2
Fig.6: Questo pezzo sembra importante.

L’altro integrato presente sulla scheda è un LAN9512 di SMSC. Siccome il BCM2835 non gestisce nativamente la connessione Ethernet[+], l’integrato si occupa di passare i dati da Ethernet al bus USB del microprocessore. In questo modo il LAN9512 viene riconosciuto dal sistema operativo come un adattatore Ethernet e come HUB USB, infatti è anche collegato alle due porte USB presenti sulla scheda.

raspberry_upstream
Fig.7: “Upstream USB PHY” è dove il BUS USB del BCM2835 è collegato.

Il BCM2835 ha un solo bus USB e dunque il LAN9512 è il principale collo di bottiglia nella gestione del flusso dati del nostro Raspi. DALL’ALTRA PARTE Girando la scheda del Raspi, le uniche cose interessanti che si possono trovare, tra resistenze e condensatori, sono i due oscillatori al quarzo X1 (25MHz) e X2 (19,2MHz), che si occupano rispettivamente del clock del LAN9512 e del BCM2835[+]. DATASHEET E SCHEMI Fortunatamente i ragazzi della Raspberry Pi Foundation hanno deciso di creare un sistema open-source che quindi ci permette di avere accesso a tutta la documentazione di cui potremmo aver bisogno:

Software

Il Raspberry Pi è diventato in breve tempo molto popolare tra gli hobbisti di informatica ed elettronica, sia per il prezzo contenuto sia per la sua grande versatilità, tant’è vero che dopo l’annuncio dell’inizio produzione per averne uno ci si doveva mettere in lista d’attesa e si aspettava anche sei mesi prima di poter metterci le mani sopra. Il processore ARM supporta molti sistemi operativi (la maggior parte basati su Linux) e questo permette ad ognuno di lavorare nel suo ambiente preferito. No, Windows non è compatibile con gli ARM e anche se lo fosse, davvero lo usereste su una cosa così? Immaginate quante schermate blu… sarebbe sempre piantato. E no, nemmeno OSX ha intenzione di girare su ARM! Dopo che i primi Raspi vennero consegnati in giro per il mondo, molti sviluppatori fecero a gara per ricompilare i kernel delle distribuzioni Linux più famose appositamente per l’hardware di questa scheda e infatti oggi abbiamo una notevole quantità di sistemi operativi ripensati e adattati proprio per dare il massimo delle prestazioni del Raspberry Pi. Tra questi i più famosi sono Raspbian (una versione più leggera di Debian), Pidora (figlia della più famosa Fedora), Arch Linux ARM (rivisitazione di Arch Linux). Poi ci sono anche sistemi operativi che girano nativamente, come Android 4.0,Google Chromium OS, alcune distribuzioni di UNIX come Free BSD e tante altre (per l’elenco completo vedi qui). Il sito RaspberryPi.org ha una sua lista ufficiale di sistemi operativi supportati che potete trovare qui. In questo articolo vedremo come installare e configurare Raspbian. La scelta è ricaduta su questa distro perchè Debian (la mamma di Raspbian) è molto famosa ed è ben documentata, dunque è più semplice trovare soluzioni e supporto in caso di problemi durante l’utilizzo. Con un sistema operativo di questo genere possiamo facilmente realizzare applicazioni interessanti come un mediacenter, un webserver, un server per le nostre email, torrent, database, ftp… tutto questo condibile con tutta l’elettronica che vogliamo. Oggi però faremo solo il primo passo, impareremo a comandare le uscite e a leggere gli ingressi dei GPIO utilizzando il linguaggio python e poche righe di codice.

Let’s get to business

Cosa ci serve

Prima di iniziare bisogna recuperare tutto il materiale che ci servirà:

  • Il Raspberry Pi (e fin qua…)
  • Alimentatore MicroUSB (vale quanto detto nella sezione Hardware)
  • Una scheda SD da almeno 2GB
  • Un computer con lettore di schede SD
  • Un cavo HDMI o composito
  • Un monitor/TV con ingresso HDMI o composito
  • Una tastiera USB
  • Un cavo Ethernet
  • Un pettine femmina da almeno 13 contatti
  • Una breadboard o millefori
  • Un LED qualsiasi
  • Una resistenza (il cui valore calcoleremo più avanti)
  • Un pulsante da scheda
  • Un buon album di musica a tenervi compagnia (essenziale)
raspberry_material
Fig.8: Lo schermo non ci stava nella foto

Installiamo il sistema operativo

Come detto in precedenza, il SO che utilizzeremo sarà Raspbian, una distribuzione Linux ricompilata da Debian. Al momento in cui stendo questo articolo ho notato che il sito ufficiale del Raspberry Pi suggerisce l’installer NOOBS per i nuovi utenti. In questa guida salteremo questa procedura (che in sostanza vi permette di scegliere quale SO caricare sul Raspi) e andremo direttamente ad installare l’immagine RAW di Raspian. Iniziamo con lo scaricare l’immagine di Raspbian che metteremo sulla scheda SD. L’elenco di tutti i SO e i link si trovano a questo link: http://www.raspberrypi.org/downloads

raspberry_versions
Fig.9: Tutte le versioni di Debian portano il nome di un personaggio di Toy Story

Il primo link è il link diretto al file zip dell’immagine, ossia scarica il file direttamente dal server di raspberrypi.org, mentre il secondo link è di tipo torrent, utilizzabile con torrent client come BitTorrentVuze e utorrent. Il download con i torrent è solitamente più veloce di quello diretto. Una volta scaricato lo zip, estraiamone il contenuto. Avremo un file delle dimensioni di circa 1,8GB con estensione .img. Questo file dovrà essere caricato sulla scheda SD. Ovviamente non basta copiarlo e incollarcelo sopra, sarebbe troppo facile, bisogna utilizzare un tool apposta. Windows Per preparare la scheda SD da windows la procedura è la seguente:

  1. Scaricate il tool Win32Diskimager
  2. Estraetelo in una cartella e avviate l’eseguibile
  3. In Image File selezionate l’immagine di Raspbian scaricata ed estratta precedentemente
  4. In Device selezionate la vostra scheda SD; attenzione a non selezionare uno dei dischi rigidi altrimenti il tool ci scriverà sopra rischiando di cancellare i dati presenti
  5. Cliccate su Write
raspberry_win32
Fig.10: Win32 Disk Imager

Linux Per gli appassionati del pinguino basta eseguire il comandosudo dd bs=4M if=~/raspbian.img of=/dev/schedaSD

if rappresenta il percorso del file sorgente (l’immagine di raspbian), mentre of è la destinazione (la scheda SD). Se non siete sicuri del percorso della vostra scheda potete trovarlo eseguendo il comandosudo lshw -class disk

Sotto la voce “logical name” troverete il percorso giusto. Anche in questo caso attenzione a non sbagliare percorso o finirete per sovrascrivere un hard disk. La procedura di scrittura dell’immagine su scheda SD richiede circa 5/6 minuti, durante i quali vi consiglio la lettura di uno diquesti fantastici articoli. Preparata la scheda SD, è ora di dedicarci al Pi. Colleghiamo tastiera e monitor, inseriamo la scheda SD e alimentiamo. Se siamo nei pressi del router di casa possiamo anche già collegare il cavo Ethernet, ma non è essenziale.

Dalla_quickstart_guide
Fig.11: Dalla Quickstart Guide – raspberrypi.org/quick-start-guide

Se la scheda SD è stata preparata bene, all’avvio si accenderanno sul Raspi la spia rossa PWR (alimentazione collegata) e la spia verde ACT (accesso alla scheda SD). Dopo pochi secondi vedremo apparire sullo schermo il logo di Raspberry Pi (il lampone) e una serie di scritte che ci informano sullo stato dell’avvio del sistema operativo. Al primo avvio ci viene proposta una schermata con le opzioni di configurazione del Raspberry Pi.

raspberry_menu
Fig.12: Pensate se il menu fosse in cinese

Inizialmente il sistema operativo ha solo 1,8GB di memoria disponibile (le dimensioni dell’immagine che abbiamo copiato sulla scheda), selezionando la prima opzione del menu espanderemo la memoria a tutta la capacità della scheda SD, quindi premiamo INVIO e lasciamo che la procedura termini. Alla fine ci verrà ripresentata la stessa schermata d’avvio. Con Change User Password andiamo a modificare la password d’accesso del Raspberry Pi. La password di default (raspberry) può anche essere cambiata successivamente. Con Enable Boot to Desktop impostiamo l’avvio dell’interfaccia grafica all’avvio del Raspi. Questa opzione è utile se si vuole utilizzare il Raspi come PC, quindi con mouse e tastiera e un ambiente più simile a quello a cui siamo abituati quando lavoriamo su un desktop.

Raspberry_ambiente_grafico
Fig.13: L’ambiente grafico è LXDE

In questo articolo non tratterò l’utilizzo dell’ambiente grafico, in quanto intendo comandare il Raspi dal mio computer personale. L’interfaccia grafica diventerebbe inutile e sprecherebbe solo delle risorse. L’interfaccia grafica è studiata per creare un ambiente di lavoro più user friendly (ricordo che il Raspberry Pi è stato pensato per insegnare ai bambini a programmare senza dover comprare un costoso portatile) ed è piena di tool per scrivere i programmi in poche e semplici mosse.

Raspberry_scratch
Fig.14: Scratch è il tool più famoso per imparare a programmare in python

La quarta opzione, Internationalisation Options, ci consente di cambiare lingua e layout della tastiera. Se non vi piace l’inglese e/o se avete intenzione di usare il Raspi con ambiente grafico, selezionate questa voce e seguite la procedura guidata per configurare i parametri. Enable Camera è l’opzione per attivare e configurare la videocamera opzionale (se l’avete acquistata), Add to Restrackè una piccola procedura che vi permette di registrare il vostro Pi su Rastrack, che altro non è che un sito su cui viene visualizzato graficamente la posizione dei Raspberry Pi venduti nel mondo. Questa procedura è opzionale e non comporta nessun vantaggio o svantaggio, generalmente ci si registra solo per contribuire all’espansione della mappa. Notare che per concludere la procedura il Raspi deve essere già collegato ad internet. In alternativa ci si può registrare in un secondo momento direttamente al sito. Proseguendo con le opzioni troviamo Overclock. Come detto in precedenza il Raspberry Pi può essere overclockato fino a 800MHz. Spingere il processore a questa frequenza lo consumerà più in fretta e nessuna garanzia vi salverà. Questa opzione è da usare solo se strettamente necessario e può comunque essere modificata in un secondo momento. Infine, troviamo Advanced Options. Premiamo INVIO ed entriamo nel sottomenu.

raspberry_coffe_option
Fig.15: L’opzione caffè non c’è nemmeno qui?

A questo punto abbiamo qualche altra opzione:

  • Overscan per sistemare eventuali problemi di compatibilità HDMI
  • Hostname per cambiare il nome del Raspberry Pi nella rete locale e nel terminale dei comandi
  • Memory Split per decidere quanta memoria RAM assegnare al processore grafico
  • SSH per attivare il server SSH
  • Update per aggiornare il tool di installazione (utile se avete una distribuzione vecchia scaricata tempo fa)

Selezioniamo SSH e attiviamo il server. SSH è quel protocollo che ci permette di inviare comandi al Raspi (o qualunque macchina con un server SSH attivo) direttamente dalla tastiera del nostro PC. SSH è l’acronimo di Secure SHell ed è l’evoluzione di telnet. Rispetto a telnet, SSH offre una connessione crittografata (telnet comunica in chiaro, password incluse!) e utilizza un processo di autenticazione a chiave pubblica[+]. Una volta che abbiamo finito di sistemare tutte le opzioni che ci interessano, selezioniamo Back (con il tasto TAB) e poiFinish. Quando ci viene chiesto, riavviamo il Raspberry Pi. Se intendete usare il Raspi da locale, lasciate collegati tastiera e monitor e, se non l’avete ancora fatto, collegate il cavo Ethernet tra il Pi e il router di casa. Se invece pensate di usare i comandi da remoto, potete scollegare tutto tranne alimentazione e cavo Ethernet. La connessione ad internet serve solo per fare le prime installazioni ed aggiornamenti, quindi se lavorate in locale potrete lasciare il Pi scollegato dalla rete una volta terminata la procedura di aggiornamento, mentre se lavorate in remoto, ovviamente, il cavo di rete deve essere sempre collegato.

Raspberry Pi. La guida completa
Lavorare con Raspberry Pi

E con questo abbiamo terminato la prima delle tre parti dell’articolo. Nelle parti successive affronteremo i seguenti argomenti:

  • come connettersi ed accedere al Raspberry
  • i comandi base del Raspberry
  • il primo circuito e il primo programma in Python

e per concludere illustrerò tutta una serie di esempi da realizzare con la scheda Raspberry. Allora, a presto!

1 commento su “Iniziare con il Raspberry Pi (parte 1)

  1. Pingback: Raspberry Pi - Primi Passi | Blog & Guide

Lascia un commento