Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry Pi - Introduzione, caratteristiche, programmazione, casi d'uso
-
Upload
gianlucaghettini -
Category
Technology
-
view
707 -
download
5
Transcript of Raspberry Pi - Introduzione, caratteristiche, programmazione, casi d'uso
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Raspberry PiUna introduzione
Gianluca Ghettini
http://www.gianlucaghettini.netemail: [email protected]
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: Raspberry Pi
Cosa e il Raspberry Pi?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: Raspberry Pi
SBC (Single Board Computer)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: Raspberry Pi
Piccolo come una carta di credito
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: Raspberry Pi
Potente: equiparabile ad un PC desktop di inizio 2000
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: Raspberry Pi
Economico: praticamente costa 25-35 Euro
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: come fa a costare cosi’ poco?
Niente case esternoNo alimentatore inclusoNessun on/off switchNessun manuale cartaceo a corredo (c’e il sito)scatola di cartone inclusa :-)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: storia
Curiosita: Autore del progetto e David Braben, programmatore di”Elite”, uno dei primi giochi in grafica 3D (prima di Wolfenstein!)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: lista della spesa
Alimentatore 5V 2000mA micro usb
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: sistema completo
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: il grande assente
Manca qualcosa?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: il grande assente
Ma il disco rigido dov’e?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Introduzione: il grande assente
Raspberry Pi ha sul retro uno slot SD card!
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Caratteristiche: CPU
CPU ARM11 32 bitsingle core, 700MHzLa stessa che sta nell’ iPhone EDGE e nell iPhone 3G
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Caratteristiche: consumi
Consuma all’incirca 3WPiu o meno 1 cent Euro al giorno :-)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Caratteristiche: scheda video GPU
Broadcom VideoCore GPU IVQuake 3 Arena gira tranquillamente sul Raspberry :-)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: analog audio & video out
Specifiche
RCA video out (PAL)
Audio stereo
Qualsiasi TV va bene!
Casi d’uso
Un bel Mediacenter?
Cartellonistica digitale?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: HDMI
Specifiche
HD 1080p
Audio integrato
Casi d’uso
Console Retro gaming?
Postazione Desktop daufficio?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: Ethernet RJ45
Specifiche
10/100 MBit/s
No gigabit! Glieloperdoniamo via...
Casi d’uso
Web server casalingo?
Torrent download station?
Firewall casalingo?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: USB x2
Specifiche
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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: GPIO
Specifiche
Sono ben 17
SPI, I2C e UART incluse
Casi d’uso
Cosa ci comandiamo?
Tutto quello che risponde adun segnale elettrico!
Rele
Altri Microcontrollori
LED
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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 notificavia sofware
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Connettori: cos’e un GPIO?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Arduino != Raspberry
Raspberry non e Arduino!
Arduino e puro embeddedRaspberry e letteralmente un PCin miniatura + GPIO
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Arduino != Raspberry
Arduino
Low level
Micro ATMega328, 20MHz
Pieno controllo dell’hardware
Task semplici e ben definiti
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 conArduino ma e uno spreco!
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Arduino != Raspberry
Bit-banging VS Gang-banging :-)
Arduino = Bit-Banging
Bit-Banging: quando manca unprotocollo e sufficienteimplementarselo a mano inassembler (es. I2C su 2 GPIOdisponibili)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Arduino != Raspberry
Bit-banging VS Gang-banging :-)
Raspberry = Gang-Banging
Gang-Banging: quando mancaun protocollo e sufficientecomprare e collegare l’adattatoreUSB opportuno (es. USB to I2Cadapter)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
GPIO
5V
3.3V
SPI (x2)
I2C
UART
PWM
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
GPIO: Libreria Wiring Pi
Libreria Wiring Pi (http://wiringpi.org)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
GPIO: Don’t cross the streams!!!
Il Raspberry funziona in logica CMOS (3.3Volt) ma moltidispositivi sono in logica TTL (5Volt)
Don’t cross thestreams!!!
Occhio a nonscambiare la linea5V con quella a3.3V!
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
GPIO: Don’t cross the streams!!!
Level shifter
Trasforma segnali a5V in segnali a 3.3Ve viceversa
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Getting started: Installazione OS
www.raspberrypi.org
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Getting started: Installazione OS
Semplicissimo!
Scarichiamo NOOBS
Scompattiamo su SD card
Avviamo Raspberry Pi
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Getting started: Installazione OS
Here we go!
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Programmazione: C/C++
Installiamo Eclipse
Funzioni
Socket di rete
File I/O
Grafica (OpenGL)
Sonoro
Tutto quello che possiamofare in Linux si puo fare suRaspberry Pi
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Programmazione: Scratch!
Scratch!
Scratch!
Educativo!
Drag & drop
Animazioni e giochi
Tipo Clik & Play, chi se loricorda?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Programmazione: Bare metal programming
Bare metal programming: giusto per sfizio
Bare Metal Programming
Non serve l’OS
L’intera scheda SD e lamemoria programma
Programmazione inassembler
Conoscenza dell’hardware al100%
Interfacce difficili dautilizzare
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso
Ma cosa possiamo fare con Raspberry?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso
Ma cosa possiamo fare con Raspberry?
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso: solar panel datalogger
Datalogger per impianti fotovoltaici
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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 monitoraremolti inverter
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso: Chiosco eliminacode
Chiosco eliminacode
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso: Chiosco eliminacode
PulsantiUP/DOWN
PulsantePRINT
Stampabiglietto
Informazioni avideo
Anche audiovolendo
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso: Console per retrogaming
Console per retrogaming
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Casi d’uso: Console per retrogaming
RetroPie: multi emulatore per Raspberry Pi
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Domande? :-)
Gianluca Ghettini
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare 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
IntroduzioneCaratteristiche
ConnettoriArduino != Raspberry
Getting startedProgrammare con Raspberry Pi
Casi d’uso interessanti
Grazie per l’attenzione!email: [email protected]: www.gianlucaghettini.net
Gianluca Ghettini