1. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Raspberry Pi
Una introduzione
Gianluca Ghettini
http://www.gianlucaghettini.net
email: gianluca.ghettini@gmail.com
Gianluca Ghettini
2. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
Cosa e il Raspberry Pi?
Gianluca Ghettini
3. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
SBC (Single Board Computer)
Gianluca Ghettini
4. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
CPU ARM11 700MHz
256 MB RAM (o 512)
VIDEO/AUDIO OUT
USB x2
GPIO
Ethernet card!
Gianluca Ghettini
5. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
Piccolo come una carta di credito
Gianluca Ghettini
6. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
Potente: equiparabile ad un PC desktop di inizio 2000
Gianluca Ghettini
7. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: Raspberry Pi
Economico: praticamente costa 25-35 Euro
Gianluca Ghettini
8. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: come fa a costare cosi' poco?
Niente case esterno
No alimentatore incluso
Nessun on/o switch
Nessun manuale cartaceo a corredo (c'e il sito)
scatola di cartone inclusa :-)
Gianluca Ghettini
9. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: storia
Nasce nel 2012 come strumento didattico
Progetto open-source
Basato su GNU/Linux: gira Linux sopra!
Community
Gianluca Ghettini
10. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: storia
Doveva essere solo un Python Interpreter
Basato sul CPU ARM11 700MHz
Successo enorme tra i Maker
Gianluca Ghettini
11. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: storia
Curiosita: Autore del progetto e David Braben, programmatore di
Elite, uno dei primi giochi in gra
13. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: lista della spesa
Alimentatore 5V 2000mA micro usb
Gianluca Ghettini
14. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: lista della spesa
Tastiera mouse USB
Monitor HDMI o TV
Sistema operativo Linux (e free ovviamente!)
Gianluca Ghettini
15. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: sistema completo
Gianluca Ghettini
16. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: il grande assente
Manca qualcosa?
Gianluca Ghettini
17. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: il grande assente
Ma il disco rigido dov'e?
Gianluca Ghettini
18. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: il grande assente
Raspberry Pi ha sul retro uno slot SD card!
Gianluca Ghettini
19. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Introduzione: SD card
L'SD card e il disco rigido del Raspberry
Almeno 4GB
Una moltitudine di OS derivati GNU/Linux
Gianluca Ghettini
20. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Caratteristiche: CPU
CPU ARM11 32 bit
single core, 700MHz
La stessa che sta nell' iPhone EDGE e nell iPhone 3G
Gianluca Ghettini
21. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Caratteristiche: consumi
Consuma all'incirca 3W
Piu o meno 1 cent Euro al giorno :-)
Gianluca Ghettini
22. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Caratteristiche: scheda video GPU
Broadcom VideoCore GPU IV
Quake 3 Arena gira tranquillamente sul Raspberry :-)
Gianluca Ghettini
23. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Connettori: analog audio video out
Speci
24. che
RCA video out (PAL)
Audio stereo
Qualsiasi TV va bene!
Casi d'uso
Un bel Mediacenter?
Cartellonistica digitale?
Gianluca Ghettini
26. che
HD 1080p
Audio integrato
Casi d'uso
Console Retro gaming?
Postazione Desktop da
ucio?
Gianluca Ghettini
27. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Connettori: Ethernet RJ45
Speci
28. che
10/100 MBit/s
No gigabit! Glielo
perdoniamo via...
Casi d'uso
Web server casalingo?
Torrent download station?
Firewall casalingo?
Gianluca Ghettini
30. che
USB 2.0
500mA max? dipende...
Meglio alimentare a parte
Casi d'uso
Dongle Wi-Fi?
Lettore codici a barre?
Hard disk esterno?
Ci colleghiamo di tutto!
Gianluca Ghettini
32. che
Sono ben 17
SPI, I2C e UART incluse
Casi d'uso
Cosa ci comandiamo?
Tutto quello che risponde ad
un segnale elettrico!
Rele
Altri Microcontrollori
LED
Gianluca Ghettini
33. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Connettori: cos'e un GPIO?
Se impostato come OUTPUT
Un pin che puo essere messo a 0 o 5 Volt via software
Se impostato come INPUT
Un pin che sente la tensione applicata ai suoi capi e lo noti
35. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Connettori: cos'e un GPIO?
Gianluca Ghettini
36. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Connettori: cos'e un GPIO?
#include wiringPi.h
int main (void)
{
wiringPiSetup () ;
pinMode (0, OUTPUT) ;
for (;;)
{
digitalWrite (0, HIGH) ; delay (500) ;
digitalWrite (0, LOW) ; delay (500) ;
}
return 0 ;
}
Gianluca Ghettini
37. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Arduino != Raspberry
Raspberry non e Arduino!
Arduino e puro embedded
Raspberry e letteralmente un PC
in miniatura + GPIO
Gianluca Ghettini
38. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Arduino != Raspberry
Arduino
Low level
Micro ATMega328, 20MHz
Pieno controllo dell'hardware
Task semplici e ben de
39. niti
No memoria di massa
Raspberry
High level
Gira Linux sopra!
Multitasking
Hard disk!
Programmi complessi
Possiamo utilizzare Raspberry per fare quello che si puo fare con
Arduino ma e uno spreco!
Gianluca Ghettini
40. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Arduino != Raspberry
Bit-banging VS Gang-banging :-)
Arduino = Bit-Banging
Bit-Banging: quando manca un
protocollo e suciente
implementarselo a mano in
assembler (es. I2C su 2 GPIO
disponibili)
Gianluca Ghettini
41. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Arduino != Raspberry
Bit-banging VS Gang-banging :-)
Raspberry = Gang-Banging
Gang-Banging: quando manca
un protocollo e suciente
comprare e collegare l'adattatore
USB opportuno (es. USB to I2C
adapter)
Gianluca Ghettini
42. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO
5V
3.3V
SPI (x2)
I2C
UART
PWM
Gianluca Ghettini
43. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO: Libreria Wiring Pi
Libreria Wiring Pi (http://wiringpi.org)
Gianluca Ghettini
44. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO: Don't cross the streams!!!
Il Raspberry funziona in logica CMOS (3.3Volt) ma molti
dispositivi sono in logica TTL (5Volt)
Don't cross the
streams!!!
Occhio a non
scambiare la linea
5V con quella a
3.3V!
Gianluca Ghettini
45. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO: Don't cross the streams!!!
Level shifter
Trasforma segnali a
5V in segnali a 3.3V
e viceversa
Gianluca Ghettini
46. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO: library WiringPi, OUTPUT mode
#include wiringPi.h
int main (void)
{
wiringPiSetup();
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
return 0;
}
Gianluca Ghettini
47. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
GPIO: library WiringPi, INPUT mode
#include wiringPi.h
int main (void)
{
wiringPiSetup();
pinMode(17, INPUT);
int value = digitalRead(17);
return 0;
}
Gianluca Ghettini
48. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Getting started: Installazione OS
www.raspberrypi.org
Gianluca Ghettini
49. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Getting started: Installazione OS
NOOBS: New Out Of Box Software
NOOBS include:
Raspbian (derivato Debian)
Pidora (derivato Fedora)
Arch Linux (ArchLinux per ARM)
OpenELEC (derivato XBMC)
RaspBMC (derivato XBMC)
RISC OS (senza fronzoli, leggerissimo)
Esistono moltissimi altri OS non inclusi in NOOBS
Gianluca Ghettini
50. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Getting started: Installazione OS
Semplicissimo!
Scarichiamo NOOBS
Scompattiamo su SD card
Avviamo Raspberry Pi
Gianluca Ghettini
51. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Getting started: Installazione OS
Here we go!
Gianluca Ghettini
52. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Programmazione
Per programmare il Raspberry Pi ci serve...
il Raspberry Pi :-)
Concetto della programmazione Desktop, non Embedded!
Niente programmatore esterno
Bastano una tastiera, mouse e video collegati
Installiamo il nostro IDE preferito!
Gianluca Ghettini
53. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Programmazione
Quale linguaggio?
Arduino
Mikro C
Assembler ATmega328
Raspberry Pi
C/C++
Python
Java!!!!!!!!!
Assembler ARM
C# (Mono)
.
Perche cosi' tanti linguaggi? Raspberry e un PC!
Gianluca Ghettini
54. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Programmazione: C/C++
Installiamo Eclipse
Funzioni
Socket di rete
File I/O
Gra
55. ca (OpenGL)
Sonoro
Tutto quello che possiamo
fare in Linux si puo fare su
Raspberry Pi
Gianluca Ghettini
56. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Programmazione: Scratch!
Scratch!
Scratch!
Educativo!
Drag drop
Animazioni e giochi
Tipo Clik Play, chi se lo
ricorda?
Gianluca Ghettini
57. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Programmazione: Bare metal programming
Bare metal programming: giusto per s
58. zio
Bare Metal Programming
Non serve l'OS
L'intera scheda SD e la
memoria programma
Programmazione in
assembler
Conoscenza dell'hardware al
100%
Interfacce dicili da
utilizzare
Gianluca Ghettini
59. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso
Ma cosa possiamo fare con Raspberry?
Gianluca Ghettini
60. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso
Ma cosa possiamo fare con Raspberry?
Gianluca Ghettini
61. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: solar panel datalogger
Datalogger per impianti fotovoltaici
Gianluca Ghettini
62. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: solar panel datalogger
Datalogger per impianti fotovoltaici
RS485
MySQL
Connessione LAN
Monitoring 24h/24
Possibilita di monitorare
molti inverter
Gianluca Ghettini
63. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: solar panel datalogger
Per il collegamento agli inverter?
Due possibilita
USB to RS485
RS232 (GPIO) to RS485
Gianluca Ghettini
64. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: solar panel datalogger
Ma non bastava arduino?
Utilizzando Raspberry abbiamo un serie di vantaggi
XAMP server per gestione remota da browser web
Connessione LAN a PC
Storage dei dati di produzione
Gianluca Ghettini
65. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Chiosco eliminacode
Chiosco eliminacode
Gianluca Ghettini
66. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Chiosco eliminacode
Pulsanti
UP/DOWN
Pulsante
PRINT
Stampa
biglietto
Informazioni a
video
Anche audio
volendo
Gianluca Ghettini
67. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Console per retrogaming
Console per retrogaming
Gianluca Ghettini
68. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Console per retrogaming
Basato su RetroPie OS
Emulatori
SEGA mega drive
SEGA master system
MAME
Commodore 64
NES SNES
Atari 2600
Gianluca Ghettini
69. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Console per retrogaming
RetroPie: multi emulatore per Raspberry Pi
Gianluca Ghettini
70. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Casi d'uso: Console per retrogaming
Cosa serve
Raspberry Pi :-)
Bottoni arcade
Joystick arcade
RetroPie OS
Un bel case?
Gianluca Ghettini
71. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Domande? :-)
Gianluca Ghettini
72. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Alcuni link utili
http://www.raspberrypi.org/
http://wiringpi.com/
http://www.vincenzov.net/
http://raspberrypi.stackexchange.com/
http://rpy-italia.org/
Gianluca Ghettini
73. Introduzione
Caratteristiche
Connettori
Arduino != Raspberry
Getting started
Programmare con Raspberry Pi
Casi d'uso interessanti
Grazie per l'attenzione!
email: gianluca.ghettini@gmail.com
website: www.gianlucaghettini.net
Gianluca Ghettini