![Page 1: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/1.jpg)
Linux, Android e
Internet of Things
ITIS G.Galilei - San Secondo (PR)
![Page 2: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/2.jpg)
1La GPIO della RPi
Come interagire con l’I/O della Raspberry PI
![Page 3: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/3.jpg)
La GPIO
![Page 4: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/4.jpg)
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
![Page 5: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/5.jpg)
La GPIO
![Page 6: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/6.jpg)
Raspberry vs Arduino
![Page 7: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/7.jpg)
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?
![Page 8: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/8.jpg)
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
![Page 9: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/9.jpg)
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
![Page 10: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/10.jpg)
La GPIO - WiringPI
![Page 11: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/11.jpg)
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
![Page 12: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/12.jpg)
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
![Page 13: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/13.jpg)
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
![Page 14: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/14.jpg)
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
![Page 15: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/15.jpg)
La GPIO - Java ed Eclipse
http://pi4j.com/install.html
http://tsvetan-stoyanov.github.io/launchpi/
![Page 16: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/16.jpg)
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
![Page 17: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/17.jpg)
2Esempi di utilizzo
Alcuni esempi su come utilizzare la GPIO
![Page 18: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/18.jpg)
Blink
![Page 19: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/19.jpg)
Led & Button
![Page 20: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/20.jpg)
Sensore di temperatura
![Page 21: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/21.jpg)
Rele
![Page 22: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/22.jpg)
Comunicazione seriale con XBEE
ESEMPIO: http://www.brettdangerfield.com/post/raspberrypi_tempature_monitor_project/
![Page 23: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/23.jpg)
3Raspberry e Arduino
Come interagire tra la Raspberry e Arduino
![Page 24: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/24.jpg)
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/
![Page 25: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/25.jpg)
4Il modulo Camera
Come utilizzare la camera sulla RPi
![Page 26: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/26.jpg)
RPi 007!!
Camera
![Page 27: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/27.jpg)
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!!
![Page 28: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/28.jpg)
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/
![Page 30: CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things](https://reader031.vdocuments.site/reader031/viewer/2022032022/55a68f741a28abad7d8b48b7/html5/thumbnails/30.jpg)
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.