Raspberry Pi - Introduzione, caratteristiche, programmazione, casi d'uso

63
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: [email protected] Gianluca Ghettini

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