codinggym - lezione 2 - corso linux, android e internet of things

53
Linux, Android e Internet of Things ITIS G.Galilei - San Secondo (PR)

Upload: mirko-mancin

Post on 15-Jul-2015

273 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Linux, Android e

Internet of Things

ITIS G.Galilei - San Secondo (PR)

Page 2: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

1Linux Embedded

Alcuni esempi di schede

in commercio

Page 3: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Linux Embedded Board

Page 4: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

2Raspberry PI

Linux embedded Open Hardware e Low Cost

Page 5: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Raspberry PI

La Raspberry PI è un single-board computer (SBC) sviluppatonel Regno Unito dalla Raspberry PI Foundation.

L’idea di base è la realizzazione di un dispositivo economico, concepito per stimolare l’insegnamento di base dell’informatica e della programmazione nelle scuole.

Dal punto di vista hardware il progetto ruota attorno:• System-on-a-chip (SoC) Broadcom BCM2835, che incorpora un processore

ARM1176JZF-S a 700 Mhz (overcloccabile da software)• GPU VideoCore IV• 256 (modello A), 512 (modello B) Megabyte o 1 Gigabyte (modello 2) di RAM• Sistema Operativo su scheda SD per il boot e per la memoria non volatile. La scheda

è stata progettata per ospitare sistemi operativi basati su un kernel Linux o RISC OS.• GPIO (26 o 40 pin)• USB• Ethernet Card

Doveva essere solo un Python Interpreter!!

Page 6: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

La famiglia Raspberry PI

Page 7: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

REV 1 MODEL BÈ il modello più diffuso della Pi. Ha 512 Mb di Ram

REV 1 MODEL B – WITH LINKSQuesto modello ha dei collegamenti a 0 Ohm sulle USB invece che dei Polyfuses. Questo aiuta in casi di sbalzi di tensione che si verificano sul modello precedente. Ha introdotto però un bug di “hot-swapping” che resetta la scheda quando viene inserito un dispositivo USB. Questo problema è stato risolto nella versione B+.

MODEL AIdentica al modello B solamente che ha 1 usb e 256 Mb di RAM.

COMPUTE MODULELanciato a giugno 2014 per permettere l’integrazione della Pi a livello industriale. Il modulo è stato fatto per essere integrato su un connettore SODIMM. Il vantaggio di questo modulo è che ha integrato una memoria eMMC da 4GB e quindi non necessita di una scheda SD per il sistema operativo.

MODEL B+Lanciato a Luglio 2014. Ha subito grossi trasformazioni sia per il fattore di forma, sia per il numero di GPIO (40), per il numero di USB (4) e migliorato il circuito di alimentazione.

MODEL A+Lanciato a Novembre 2014 ed è essenzialmente il modello B+ con solamente un USB. È il modello più economico sia dal punto di vista del prezzo (solo 20$), sia dal punto di vista dei consumi (0.5 Watt in idle).

Raspberry - le diverse board

Page 8: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Sei volte più veloce rispetto al primo modello, ma proposta ad un prezzo invariato (35$): è la nuova scheda Raspberry Pi 2 equipaggiata con :

• 1 GB di RAM (LPDDR2 SDRAM) • Processore quad core Broadcom BCM2836 da 900 MHz (ARM Cortex-A7). • È possibile collegare fino a quattro dispositivi USB in contemporanea • Tempi di boot dimezzati.

Raspberry PI 2

Il team responsabile del progetto, la Raspberry Pi Foundation, ha già annunciato l'intenzione di realizzarne una variante basata sull'architettura x86 compatibile con il sistema operativo Windows 10 di Microsoft.

Page 9: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

La lista della spesa

• Alimentatore 5V 2A Micro USB

• SD/MicroSD (a seconda del modello di RPi utilizzata) da almeno 4GB

• Tastiera e Mouse USB

• Monitor HDMI• cavo HDMI

• Cavo Ethernet

Page 10: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
Page 11: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Raspberry PI - Le distribuzioni disponibili

Il punto di partenza è sicuramente NOOBS (New Out Of the Box Software)www.raspberrypi.org/downloads

NOOBS è un software che fornisce una pratica interfaccia per installare sulla nostra Raspberry Pi qualsiasi distribuzione Linux.Appena installato consiste in una sorta di immagine di recovery che viene avviata al primo boot della Raspberry Pi, e ci pone davanti ad una finestra di dialogo che chiede quale sistema operativo vogliamo installare.

Page 12: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Raspberry PI - Le distribuzioni disponibili

Page 13: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Raspberry PI - Le distribuzioni alternative

• Games/RetrogamingDal sito chameleon.enging.com potete scaricare una distribuzione dedicata al retrogaming con l’emulazione di vecchi computer (comodore 64, Atari, ecc)

• Secuirtypwnpi (http://www.pwnpi.com/) è una distribuzione dedicata al security testing. Dispone di più di 200 tool di analisi di rete.

Page 14: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
Page 15: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

3Come configurare

la RPi

Esempi di configurazione della Raspberry PI

Page 16: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Configurare l’SD

1. Scaricare il sistema operativo per il Raspberry PiRASPBIAN (*)

2. Scompattare il file che avete scaricato Attendi il completamento della procedura, al termine apparirà un file con estensione .img

3. Scarica Win32DiskImager (WINDOWS)a) Scarica il file win32diskimager-binary.zip da: https://launchpad.net/win32-image-writer/+downloadb) Decomprimi il file .zip c) Al termine della procedura verrà visualizzata una nuova directory chiamata

win32diskimager-binary

(*) Lista immagini RASPBIAN: http://downloads.raspberrypi.org/raspbian/images/

Page 17: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Configurare l’SD

4. Installare Raspbian sulla scheda SD a) Collega la scheda SD al tuo PC b) Accedete alla directory creata nel passaggio 3(b) ed avviate il file

Win32DiskImager.exe (se utilizzate Windows 7 o Windows 8 dovrete cliccare con il tasto destro del mouse sul file e selezionare “Esegui come amministratore”). Vi verrà mostrata una schermata come questa:

c) Se la vostra scheda SD non compare automaticamente nella sezione Device dovrete andare a selezionarla manualmente dall’apposita tendina

d) Nella sezione Image File selezionate il file .img di Rabian che avete scaricato e decompresso (punto 2b)

e) Clicca su Write f) La procedura richiede alcuni minuti, al termine la scheda SD potrà essere

usata sul vostro Raspberry Pi

Page 18: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
Page 19: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Primo accesso

a) Collegare tutti i cavi necessarib) Al primo avvio apparirà la finestra Raspi-configc) Potete modificare la configurazione ad esempio le voci international options se necessario

d) Se è vostra intenzione utilizzare la parte desktop abilitarla all’apposito menù Enable boot to Desktop

e) In fine selezionate Expand Filesystem e digitate ‘yes’ per eseguire il reboot

Page 20: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Primo accesso - HDMI

Page 21: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Primo accesso - HDMI

Page 22: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - Ethernet

Se non volete visualizzare la parte desktop e/o non avete la possibilità di utilizzare un monitor, potete utilizzare la Rpi in SSH.

Dovete scoprire l’indirizzo IP della RPi.:• Accedendo al router e vedere i dispositivi collegati• Utilizzare dal vostro PC un tool chiamato IPScan che trova i dispositivi

collegati in rete (che rispondono alla porta ICMP)• Attaccare un monitor alla RPi e, attraverso il terminale, digitare il comando

ifconfig per visualizzare il proprio indirizzo IP

Page 23: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - Ethernet

Credenziali di DEFAULTUsername: piPassword: raspberry

Page 24: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - WiFi

Page 25: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - WiFi

Per configurare una connessione WiFi è possibile farlo in 3 modi:• Attraverso l’interfaccia grafica

Sulla RPi è installato un software chiamato

WiFi config che permette la configurazioneimmediata di una rete WiFi.

• Attraverso l’ethernetBisogna modificare i seguenti file:

/etc/network/interfaces

/etc/wpa_supplicant/wpa_supplicant.conf

• Wicd-cursessudo apt-get install wicd-curses

Page 26: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - WiFi

Esempio di una configurazione di /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

allow-hotplug eth0

iface eth0 inet dhcp

#auto wlan0

allow-hotplug wlan0

iface wlan0 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface home inet static

address 192.168.0.157

netmask 255.255.255.0

broadcast 192.168.0.255

gateway 192.168.0.1

iface default inet dhcp

Page 27: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Accesso da rete - WiFi

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1

network={

ssid="****"

scan_ssid=1

# Protocol type can be: RSN (for WP2) and WPA (for WPA1)

proto=WPA

# Key management type can be: WPA-PSK or WPA-EAP

key_mgmt=WPA-PSK

pairwise=CCMP TKIP

group=CCMP TKIP

psk="****"

id_str="home"

priority=5

}

Page 28: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

4Cosa fare con la RPi

Esempi di utilizzo della Raspberry PI

Page 29: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Scratch https://scratch.mit.edu/scratch_1.4/

http://www.pd.infn.it/~lacaprar/ProgettoScuola/Scratch/

Page 30: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Python

http://www.raspberrypi.org/documentation/usage/python/

Page 31: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Wolfram http://www.wolfram.com/raspberry-pi/

http://www.raspberrypi.org/learning/getting-started-with-mathematica/

http://www.raspberrypi.org/controlling-telescopes-with-raspberry-pi-and-mathematica/

Page 32: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Wolfram http://www.wolfram.com/raspberry-pi/

http://blog.stephenwolfram.com/2013/11/putting-the-wolfram-

language-and-mathematica-on-every-raspberry-pi/

Page 33: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

WEB SERVER

EthernetWifi

Page 34: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

WEB SERVER

INSTALLARE LO STACK LAMPP

• sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-

server mysql-client php5-mysql phpmyadmin vsftpd -y

• sudo chown -R pi /var/www

• sudo nano /etc/vsftpd.conf

#EDIT THE FOLLOWING LINES anonymous_enable=YES to anonymous_enable=NO

Uncomment local_enable=YES and write_enable=YES by deleting the # symbolin front of each line

then go to the bottom of the file and add force_dot_files=YES.

• ln -s /var/www/ ~/www

• sudo reboot

Page 35: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

WEB SERVER

Page 36: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

WEB SERVER

Page 37: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

USB

Page 38: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

Raspbian, essendo una distribuzione derivata da Debian, ha il vantaggio di supportare una moltitudine di protocolli: FTP, SMB, WEBDAV etc.

Per questa ragione, collocando un Raspberry Pi in una rete, è abbastanza facile condividere le sue risorse col resto dalla LAN. Se a questo aggiungiamo la possiblità di collegare un Hard Disk esterno o una penna USB di alta capacità, capiamo subito di quanto sia facile condividere dei file o trasformarlo in un client bit- torrent sempre attivo e disponibile, con un consumo di corrente paragonabile a quello di un cellulare.

Una volta collegato l’hard disk alla Raspberry eseguire il seguente comando da terminale:

sudo apt-get install ntfs-3g

Questo è un tool per formattare i dischi in NTFS. È necessario formattare l’hard disk in questa modalità per vedere il disco su linux, ma anche per trasferire file maggiori di 2GB (cosa che FAT32 non permette).

Page 39: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

Una volta installato il programma digitare il seguente comando per visualizzare le partizioni presenti (devono essere almeno due):

sudo fdisk -l

SD

HARD DISK

Page 40: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

Prima di montare i dischi nel filesystem bisogna creare la cartella dove verrano inseriti tutti i file:

• sudo mkdir /media/USBHDD

Ora si può procedere a montare l’hard disk:

• sudo mount -t auto /dev/sda1 /media/USBHDD

A questo punto bisogna creare una cartella condivisa che poi sarà visualizzabile in rete da qualsiasi host:

• sudo mkdir /media/USBHDD/shares

Page 41: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

È arrivato il momento di installare SAMBA. Questo è un servizio che permette di accedere ad una cartella condivisa in rete su sistemi UNIX:

• sudo apt-get install samba samba-common-bin

Una volta installato, prima di fare qualsiasi cosa, bisogna configurare Samba. Per questobisogna modificare il seguente file (prima facciamo un backup del file originale):

• sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old

• sudo nano /etc/samba/smb.conf

Page 42: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

La prima cosa da notare è l'identificativo del gruppo di lavoro, per impostazione predefinita workgroup = WORKGROUP. Se si utilizza un nome diverso modificarlo, altrimenti lasciare come predefinito.

La nostra prossima tappa è di attivare l'autenticazione dell'utente per il nostro stoccaggio samba, altrimenti chiunque abbia accesso generale alla nostra rete (come ospiti gli utenti Wi-Fi), sarà in grado di visualizzare il contenuto della cartella. Scorrere verso in basso nel file di configurazione di Samba fino ad arrivare al sezione che recita:

Togliere il simbolo # dalla linea security = user per consentire la verifica nome utente / password per le condivisioni Samba.

Page 43: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

Ora aggiungere una nuova sezione al file di configurazione. Scorrere fino in fondo fino alla fine del file e inserire il testo seguente:

[Backup]

comment = Backup Folder

path = /media/USBHDD/shares

valid users = @users

force group = users

create mask = 0660

directory mask = 0771

read only = no

Premere CTRL + X per uscire, premere Y quando viene chiesto se si desidera mantenere le modifiche e sovrascrivere il file di configurazione esistente. Una volta tornati al prompt dei comandi digitare il seguente comando per riavviare i demoni di Samba:

• sudo /etc/init.d/samba restart

Page 44: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

A questo punto abbiamo bisogno di aggiungere un utente che può accedere alle condivisioni Samba del Pi. Username: backupsPassword: backups4ever

È possibile impostare il nome utente e la password a piacere. Per farlo digitare i seguenti comandi:

• sudo useradd backups -m -G users

• sudo passwd backups

Verrà richiesto di digitare la password due volte per confermare. Dopo aver confermato la password, è il momento di aggiungere "backup", come un utente legittimo Samba. Immettere il seguente comando:

• sudo smbpasswd -a backups

Immettere la password per l'account di backup quando richiesto.

Page 45: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

FILE SERVER

Ora da Windows (o da altri sistemi Samba-capable) è possibile visualizzare il contenuto della cartella condivisa:

• Aggiungere una nuova risorsa di rete con hostname RASPBERRYPI (o l’hostnamedella vostra RPi).

• Immettere utente e password inseriti nel passo precedente.

Page 46: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SMART DISPLAY

HDMI

RCA

Page 47: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SMART DISPLAY

Page 48: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SMART DISPLAY

• CodeIgniter is a powerful open-source PHP framework with a very small footprint

• DukeScript, fornisce agli sviluppatori Java un modo per costruire applicazioni HTML5 e JavaScript nel comfort del linguaggio Java.

• Vaadin è un framework Java per la creazione di applicazioni web moderne .• Java Server Faces (JSF), un framework java basato sul design pattern

architetturale Model-View-Controller

• D3.js è una libreria JavaScript per manipolare i documenti in base ai dati in diversi formati.

• HIGHCHARTS, è una libreria JavaScript che permettere di generare grafici in modo semplice e veloce.

• HTMLWidgets - http://www.htmlwidgets.org/, libreria in javascript per creare grafici con Rstudio (AVANZATA)

• Leafletjs, è una moderna libreria Javascript per le mappe interattive mobile-friendly basate su OpenStreetMap.

Page 49: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SENSING STATION

GPIO

Page 50: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SENSING STATION

Page 51: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

SENSING STATION

Downloading the Code from Github• sudo apt-get install git

• git clone

https://github.com/adafruit/Adafruit_Python_DHT.git

• cd Adafruit_Python_DHT

Installare la libreria• sudo apt-get update

• sudo apt-get install build-essential python-dev

• sudo python setup.py install

Testare la libreria• cd examples

Per eseguire il codice d’esempio, digitare il seguente commando (il sensore è collegato in questo caso al GPIO#4):• sudo ./AdafruitDHT.py 22 4

Tutorial

Page 52: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

Thanks!ANY QUESTIONS?

You can find me at:

[email protected]

Page 53: CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things

CREDITS

Special thanks to all the people who made and released these awesome resources for free:

▪ Busy Icons by Olly Holovchenko

▪ Presentation template by SlidesCarnival

▪ Photographs by Unsplash

▪ Source slide

▪ Introduzione alla Rpi (1)

▪ Introduzione alla Rpi (2)

▪ Guida RPi

▪ http://wasnlab.tlc.unipr.it

This template is free to use under Creative Commons

Attribution license. If you use the graphic assets (photos,

icons and typographies) provided with this presentation you

must keep the Credits slide.