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

Post on 15-Jul-2015

111 views 2 download

Transcript of CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things

Linux, Android e

Internet of Things

ITIS G.Galilei - San Secondo (PR)

1La GPIO della RPi

Come interagire con l’I/O della Raspberry PI

La GPIO

La GPIO

OUTPUTUn pin può essere impostato via software. L’uscita può variare in digitale tra 0 e 3.3V (NON 5V COME ARDUINO)

INPUTUn pin può mettersi in «ascolto» sulla base della tensione applicata a tale ingresso. È sempre digitale e può variare massimo tra 0 e 3.3V (ATTENZIONE A NON APPLICARE TENSIONI MAGGIORI)

All the pins have 3.3V logic levels and are not 5V-safe

so the output levels are 0-3.3V and the inputs should

not be higher than 3.3V. If you want to connect a 5V

output to a Pi input,use a level shifter

https://learn.adafruit.com

La GPIO

Raspberry vs Arduino

ARDUINO RASPBERRY

• Low level

• Micro ATMega328, 16MHz

• Controllo totale dell’hardware

• Task semplici e ben definiti• No memoria di massa

• High level

• Piattaforma Linux-like

• Multitasking

• Presenza di memoria di massa• Programmi complessi

Raspberry vs Arduino

Possiamo utilizzare Raspberry per fare quello che si può fare con Arduino, ma serve alla mia applicazione cosi tanta memoria e capacità di calcolo?

La GPIO - File

Prima di iniziare diventare amministratori

sudo su

Collegare un LED, usando una resistenza, tra il pin GPIO11 e GND

Se scrivete sul file ./export nella cartella /sys/class/gpio, il sistema crea un file per gestire direttamente il GPIO desiderato. Nel nostro caso vogliamo pilotare il GPIO11 per accendere e spegnere il LED.

echo 11 >> /sys/class/gpio/export

Configurare la direzione del pin (In/Out)

echo out >> /sys/class/gpio/gpio11/direction

La GPIO - File

TURN OFF

echo 0 >> /sys/class/gpio/gpio11/value

TURN ON

echo 1 >> /sys/class/gpio/gpio11/value

Per eliminare il GPIO creatoecho 11 >> /sys/class/gpio/unexport

La GPIO - WiringPI

La GPIO – Installazione della libreria WiringPI

Il compilatore gcc è già preinstallato su Raspberry Pi. Occorrerà solo installare la libreria WiringPi. Dal Raspberry (connesso a Internet) lanciare in successione i seguenti comandi:

pi@raspberrypi ~ $ sudo apt-get install git-core

pi@raspberrypi ~ $ sudo apt-get update

pi@raspberrypi ~ $ sudo apt-get upgrade

pi@raspberrypi ~ $ git clone

git://git.drogon.net/wiringPi

Quindi:

pi@raspberrypi ~ $ cd wiringPi

pi@raspberrypi ~/wiringPi $ git pull origin

Infine, senza spostarsi dalla directory wiringPi:

pi@raspberrypi ~/wiringPi $ ./build

La GPIO – Utilizzo della libreria WiringPI

La compilazione e il linking possono essere fatti specificando con -l la libreria wiringPi (prestare attenzione alle maiuscole/minuscole). Supponendo che il nostro programma si chiami blink.c:

gcc -o blink blink.c -lwiringPi

Nel caso occorra compilare anche una libreria e collegarla al programma principale, bisognerà specificarla dopo il nome del sorgente principale. Per esempio, supponendo che il file di implementazione della libreria si chiami debounce.c, si avrà:

gcc -o blink blink.c debounce.c -lwiringPi

La GPIO – Utilizzo della libreria WiringPI

#include <wiringPi.h>

int main (void)

{

wiringPiSetup () ;

pinMode (0, OUTPUT) ;

for (;;)

{

digitalWrite (0, HIGH) ; delay (500) ;

digitalWrite (0, LOW) ; delay (500) ;

}

return 0 ;

}

gcc -Wall -o blink blink.c -lwiringPi

sudo ./blink

https://github.com/Wi

ringPi/WiringPi/blob/

master/gpio/gpio.1

La GPIO – Utilizzo della libreria WiringPI

L'accesso alla funzione wiringPiSetup() richiede privilegi di root. Quindi qualsiasi programma che sia stato scritto usando wiringPiSetup() deve essere lanciato mediante sudo :

pi@raspberrypi ~ $ sudo ./blink

E' sempre possibile eseguire il programma in background, ignorando però i messaggi di errore e sulla console (come eventuali printf() presenti nel programma.

pi@raspberrypi ~ $ sudo ./blink > /dev/null &

L'esecuzione del programma può essere terminata resettando il sistema oppure da tastiera (mediante il classico Ctrl-C) o ancora, se il relativo processo è in background, con sudo killall -9 , che, nel caso dell'esempio in questione, diventa:

pi@raspberrypi ~ $ sudo killall -9 blink

La GPIO - Java ed Eclipse

http://pi4j.com/install.html

http://tsvetan-stoyanov.github.io/launchpi/

La GPIO - WebIOPi

• sudo apt-get update

• sudo apt-get install gcc-4.7

• sudo apt-get install python3.2

• wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz

• tar xzvf WebIOPi-0.6.0.tar

• cd WebIOPi-0.6.0

• sudo ./setup.sh

L’avvio del server è semplicissimo, eseguire come root il seguente comando:sudo /etc/init.d/webiopi start

Collegarsi da remoto a webiopi http://[RASPBERRY IP]:8000

2Esempi di utilizzo

Alcuni esempi su come utilizzare la GPIO

Blink

Led & Button

Sensore di temperatura

Rele

Comunicazione seriale con XBEE

ESEMPIO: http://www.brettdangerfield.com/post/raspberrypi_tempature_monitor_project/

3Raspberry e Arduino

Come interagire tra la Raspberry e Arduino

Gertduino

Il Gertduino è un Raspberry Pi-add-onche offre le stesse funzionalità di un Arduino Uno, ma con alcune caratteristiche extra. La scheda Gertduino presenta un microcontrollore Atmega328 e dispone di connettori che sono 100 % Arduino Uno compatibile. Contiene anche il pulsante di reset, 2 pulsanti e 6 LED. La scheda Gerduino ha anche un convertitore di livello RS232 che permette di convertire i segnali formano un UART per le tensioni standard RS232. Questo permette la comunicazione diretta con la RPi

http://www.element14.com/community/docs/DOC-64326

Per configurarla: https://projects.drogon.net/raspberry-pi/gertduino/atmega-setup/

4Il modulo Camera

Come utilizzare la camera sulla RPi

RPi 007!!

Camera

Abilitare da RASPI-CONFIG il modulo camera!!

HOW TO TAKE A PHOTO WITH YOUR RASPBERRY PI CAMERA MODULE

1. "raspistill" is a command line application that allows you to capture images with your camera module. Below is an example of this command in use.2. To capture an image in jpeg format, type "raspistill -o image.jpg" at the prompt, where "image" is the name of your image

HOW TO RECORD A VIDEO WITH YOUR RASPBERRY PI CAMERA MODULE

1. "raspivid" is a command line application that allows you to capture video with your camera module. Below is an example of this command in use.2. To capture a 10 second video with your Raspberry Pi camera module, run "raspivid -o video.h264 -t 10000" at the prompt, where "video" is the name of your video and "10000" is the number of milliseconds

SHELL PYTHON

RPi 007!!

Apertura di un forziere con face recognitionhttps://learn.adafruit.com/downloads/pdf/raspberry-pi-face-recognition-treasure-box.pdf

Raspberry Camera application

Camera di sorveglianzahttp://www.instructables.com/id/Raspberry-Pi-as-low-cost-HD-surveillance-camera/

Thanks!ANY QUESTIONS?

You can find me at:

mirko.mancin@gmail.com

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

▪ 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.