CodingGym - Lezione 3 - Corso Linux, Android e Internet of Things
-
Upload
mirko-mancin -
Category
Internet
-
view
113 -
download
2
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/
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.