Guest Post: Raspberry Pi 2 per sviluppatori .NET
Questo post è stato scritto da Marco Minerva, MVP .NET e co-founder della community DotNetToscana.
Raspberry Pi è un single-board computer (un computer completo implementato su una sola scheda elettronica) sviluppato nel Regno Unito dalla Raspberry Pi Foundation. Il lancio al pubblico della prima versione è avvenuto alla fine del mese di febbraio 2012.
L'idea che ha guidato (e guida tuttora) il progetto è la realizzazione di un dispositivo economico, concepito per stimolare l'insegnamento dell'informatica e della programmazione nelle scuole. In realtà, l’idea di avere a disposizione un computer completo con un costo estremamente contenuto (circa 30 euro) ha appassionato sviluppatori di tutte le età, attratti dalle possibilità che venivano offerte loro.
Questo trend ha subito un’ulteriore impennata all’inizio di Febbraio 2015, quando è stato presentato il modello Raspberry Pi 2 Model B, che, con un costo analogo a quello del modello procedente, fornisce un processore ARM Cortex-A7 a 900 MHz con 1 GB di RAM.
Figura 1 La scheda Raspberry Pi 2 Model B
Ma la notizia più interessante per noi, sviluppatori .NET, è che Microsoft ha annunciato che nei prossimi mesi renderà disponibile una versione di Windows 10 in grado di funzionare su questa scheda! Tale versione sarà gratuita per chiunque aderisca al Windows Developer Program for IoT. Potremo dunque eseguire su tale scheda le stesse Windows app che sviluppiamo per PC, tablet, smartphone e Xbox. E’ evidente che questa possibilità apre interessantissimi scenari nel mondo delle app, impensabili fino a poco tempo fa.
Non dobbiamo però aspettare il rilascio di Windows 10 per testare il potenziale della Raspberry Pi 2: possiamo già installare una distribuzione Linux e sfruttare le potenzialità di Mono per scrivere da subito programmi in .NET anche su questa piattaforma.
Installazione di Linux
Il setup e la configurazione di Linux richiedono un po’ di passaggi, ma la procedura è abbastanza semplice. Dobbiamo innanzi tutto procurarci una scheda Micro SD di almeno 8 GB, in cui installeremo il sistema operativo. La distribuzione consigliata è Raspbain, basata su Debian Wheezy e pensata proprio per la nostra board. Possiamo scaricarla da http://downloads.raspberrypi.org/raspbian_latest.
Dobbiamo poi scrivere il file .IMG della distribuzione sulla Micro SD. Per fare questo, possiamo utilizzare ad esempio il programma Win32 Disk Imager(ma qualunque programma analogo va bene):
Figura 2 Win32 Disk Imager per scrivere l'immagine di Rasbpian su Micro SD
Ora possiamo finalmente eseguire il primo avvio della scheda. Inseriamo la Micro SD nell’apposito slot, quindi colleghiamo alla Raspberry un monitor HDMI, una tastiera, un mouse USB e il cavo di rete Ethernet. Dopo la configurazione, potremo dialogare con la scheda in Desktop remoto, quindi non avremo più bisogno di collegare ad essa questi device (a parte ovviamente il cavo di rete).
Accendiamo la scheda alimentandola con un cavo Micro USB. Dopo un paio di minuti, ci troveremo di fronte al programma di configurazione Raspberry Pi Software Configuration Tool:
Figura 3 Il programma di configurazione di Raspberry Pi
Selezioniamo la prima opzione, Expand Filesystem, per poter sfruttare l’intera capacità della scheda di memoria. Ci verrà richiesto se vogliamo eseguire il riavvio, ma non è necessario. Un’altra cosa importante è cambiare la password di accesso dell’utente pi che useremo per collegarci al sistema (la password predefinita è raspberry). Tutte le altre opzioni possono essere impostate in un secondo momento; la documentazione completa è disponibile alla pagina http://www.raspberrypi.org/documentation/configuration/raspi-config.md.
Al termine della configurazione, selezioniamo Finish e confermiamo per riavviare la Raspberry. Una volta tornati alla shell, effettuiamo il login con il nome utente pi e la password che abbiamo impostato nel passaggio precedente. Dobbiamo assicurarci di utilizzare l’ultima versione dei package della distribuzione, quindi eseguiamo i seguenti comandi:
sudo apt-get update (per aggiornare la lista dei package)
sudo apt-get upgrade (per aggiornare tutti i package installati)
Ricordiamo che sudo è il comando che permette di eseguire un’applicazione con privilegi elevati. Ora possiamo installare il pacchetto che ci permetterà di collegarci alla Raspberry tramite Desktop Remoto:
sudo apt-get install xrdp
Installiamo anche XTERM, un emulatore di terminale per il sistema X Window:
sudo apt-get install xterm
L’ultima cosa da fare per completare la configurazione è caricare il pacchetto Samba, che implementa il protocollo SMB, fornisce supporto al Windows naming service (WINS) e permette di effettuare il join ad un dominio Windows:
sudo apt-get install samba samba-common-bin
Grazie a questo pacchetto, la scheda comparirà tra le risorse di rete di Windows con il nome RASPBERRYPI: potremo quindi collegarci ad essa in Desktop Remoto usando direttamente questo nome, anziché il suo indirizzo IP. Lo stesso pacchetto ci permette inoltre di condividere cartelle tra Linux e Windows, per facilitare lo scambio di file e progetti senza dover ricorrere a soluzioni come SSH e FTP. Maggiori informazioni a riguardo sono disponibili su http://raspberrypihq.com/how-to-share-a-folder-with-a-windows-computer-from-a-raspberry-pi.
A questo punto, siamo finalmente in grado di collegarci alla Raspberry Pi 2 dal nostro PC Windows:
Figura 4 Desktop remoto sulla scheda Raspberry Pi 2
Non abbiamo quindi più bisogno di connetterla ad un monitor, né di attaccare tastiera e mouse ad essa: la configurazione headless è terminata.
Installazione di Mono
Ora che Raspbian è correttamente configurato e funzionante, dedichiamoci all’installazione di Mono. Ancora una volta, dobbiamo seguire una serie di passaggi.
Apriamo una finestra di terminale (possiamo farlo anche da Desktop Remoto) e digitiamo i seguenti comandi:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
Stiamo aggiungendo i package dei repository di Mono, così da assicurarci di scaricare l’ultima versione disponibile. Ora eseguiamo nuovamente i comandi sudo apt-get update e sudo apt-get upgrade (come fatto in precedenza) per aggiornare i pacchetti locali.
Finalmente possiamo passare all’installazione vera e propria di Mono:
sudo apt-get install mono-complete
L’intera procedura richiederà qualche minuto per il completamento. Al termine, procuriamoci anche MonoDevelop, l’editor open source del progetto Mono:
sudo apt-get install monodevelop
Abbiamo finito: MonoDevelop è adesso disponibile nella sezione Programmazione del menu del Desktop di Raspian. Una volta avviato, ci troveremo di fronte ad un’interfaccia molto familiare:
Figura 5 MonoDevelop in esecuzione su Raspberry Pi 2
Naturalmente le possibilità non si fermano qui. Non siamo obbligati ad usare MonoDevelop per sviluppare applicazioni. Possiamo lavorare in Windows con Visual Studio, creare un’applicazione e quindi copiarla sulla Raspberry per eseguirla con Mono. Possiamo inoltre utilizzare ASP.NET 5 e sfruttare il supporto a Linux offerto dal nuovo runtime .NET Core di Microsoft per eseguire applicazioni Web direttamente sulla scheda.
Ancora, non dobbiamo dimenticare che la scheda dispone di ben 40 pin di GPIO, che possono essere usati per controllare LED, pulsanti, relè, sensori, motori, ecc. Grazie ad essi (e ad una buona conoscenza di elettronica) è possibile sviluppare applicazioni in grado di interagire con dispositivi esterni per creare termostati, interruttori intelligenti, sistemi di controllo e molto altro.
Insomma, le possibilità che abbiamo a disposizione con la Raspberry Pi 2 sono davvero tante, e sono destinate ad aumentare considerevolmente quando avremo la possibilità di installarvi sopra Windows 10. Stay tuned!