Arduino&Raspberry

25
ARDUINO & RASPBERRY PI C ASI DI O PEN H ARDWARE E MBEDDED Parma Mirko Mancin 2014

description

Introduzione ad arduino e raspberry. Lezione svolta presso l'Università degli studi di Parma durante il corso di sistemi di automazione. Con questa lezione si vogliono introdurre le due piattaforme e darne i contenuti essenziali per iniziarle ad usare. Inoltre vengono mostrati alcuni progetti da me svolti con questi due device.

Transcript of Arduino&Raspberry

Page 1: Arduino&Raspberry

ARDUINO

&

RASPBERRY PICASI DI OPEN HARDWARE EMBEDDED

Parma – Mirko Mancin 2014

Page 2: Arduino&Raspberry

ARDUINO

Parma – Mirko Mancin 2014

1. Una scheda elettronica (con le porte di I/O e un microcontrollore contenente un firmware)

2. Un ambiente di programmazione (ambiente di sviluppo sketch, linguaggio Arduino, Wiring ed

eventualmente Processing)

3. La comunità degli utenti.

Page 3: Arduino&Raspberry

ARDUINO – IN SINTESI

Parma – Mirko Mancin 2014

• Processore: ATMEGAxxx AVR microcontroller

• I/O: Header per pin analogici, digitali, seriali, power

• Porta USB e convertitore USB-Seriale

• Regolatore di potenza• Tasto di reset

• Led di status

• Scheda di PROTOTIPIZZAZIONE!!

Page 4: Arduino&Raspberry

ARDUINO – LE DIVERSE SCHEDE

Parma – Mirko Mancin 2014

Arduino UNO LilyPad Arduino Arduino Nano

Arduino Leonardo Arduino Mega 2560Arduino Mini

Page 5: Arduino&Raspberry

ARDUINO – LE DIVERSE SCHEDE

Parma – Mirko Mancin 2014

Arduino Due Arduino Yun

Arduino Zero

Arduino Tre

Arduino Galileo

Page 6: Arduino&Raspberry

ARDUINO – LE SHIELD

Parma – Mirko Mancin 2014

Tassello fondamentale del

successo di arduino sono le

shield.

Si trattano di «espansioni» per

Arduino che permettono di

aggiungere sopra di essi ulteriori

funzionalitàMotor ShieldEthernet Shield Proto Shield

WiFiXbeeWireless Shield

Page 7: Arduino&Raspberry

ARDUINO – COSA C’È DI DIVERSO

Parma – Mirko Mancin 2014

• Piattaforma di prototipazione elettronica open-source che si basa su hardware e software flessibili

e facili da usare;

• Scheda molto economica (a partire da 30 euro), che sta nel palmo di una mano e consente di

applicare sensori, attuatori e altre componenti elettroniche per poi programmarle con semplicità;

• Circuiti open source => open hardware;

• Non serve costruirsi la «base elettronica» da zero;

• Elettronica quasi «plug&play».

Page 8: Arduino&Raspberry

ARDUINO – COME SI PROGRAMMA

Parma – Mirko Mancin 2014

BOOT

SETUP()

{

}

LOOP()

{

}

http://arduino.cc/en/Main/Software

IDE Arduino

Atmel Visual Studio 6

Page 9: Arduino&Raspberry

ARDUINO – BLINK (HELLO WORLD)

Parma – Mirko Mancin 2014

const int ledPin = 13;

int ledState = LOW;

long previousMillis = 0; // memorizza il tempo dell’ultimo aggiornamento

// long perchè il tempo è in millisecondi

long interval = 1000; // intervallo di lampeggio (millisecondi)

void setup() {

pinMode(ledPin, OUTPUT); // metto il piedino in Output

}

void loop(){

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {

// Salvo il tempo dell’ultima volta che ha lampeggiato il LED

previousMillis = currentMillis;

// se il LED è On mettilo OFF e viceversa:

if (ledState == LOW)

ledState = HIGH;

else

ledState = LOW;

digitalWrite(ledPin, ledState);

}

}

Page 10: Arduino&Raspberry

ARDUINO – I/O

Parma – Mirko Mancin 2014

Nello schema di Arduino UNO in verde sono

raffigurati 14 PIN digitali ON/OFF sia IN che OUT.

I PIN 0 e 1 solitamente non vengono utilizzati nei

collegamenti perché adibiti alla comunicazione

seriale con il PC (USB) o con altri dispositivi.

In basso a destra sono rappresentati con il colore

celeste i 6 PIN analogici, utilizzabili in ingresso con

una risoluzione di 2^10 (1024).

Inoltre sono disponibili altri pin come quello verde

acqua a destra per collegare dispositivi in SPI o le

shield.

Page 11: Arduino&Raspberry

ARDUINO – I/O DIGITALE

Parma – Mirko Mancin 2014

In entrambi i componenti è presente una resistenza: nel

caso del LED dobbiamo limitare la corrente a 10mA, quindi

andremo ad utilizzare una resistenza di

330Ω = (5V-1,6V)/0,01A.

Nel caso dell'ingresso, invece, dobbiamo proteggere

ARDUINO; l'amperaggio massimo consentito è di 40mA ma la guida ufficiale consiglia di utilizzare una resistenza di

470Ω quindi con i 10mA che otteniamo stiamo su una soglia

decisamente più sicura.

È possibile anche attivare le resistenze interne di ARDUINO

via software.

Controlliamo l'accensione del LED mediante il PIN 13 e

leggiamo lo stato del pulsante tramite il PIN 3. Lo stato del

pulsante dipende ovviamente dal fatto se è normalmente

aperto o chiuso e dalla resistenza applicata. Vi consiglio di

fare delle prove per capire cosa sta leggendo ARDUINO e

quindi eventualmente modificare resistenze o codice.

- Led rossi = 1,6 V

- Led giallo = 2,2V

- Led verde = 2,4 V

- Led bianco = 3,0 V ( warm o sunny )

- Led bianco ( cold ) o blu = 3,5 V

Page 12: Arduino&Raspberry

ARDUINO – I/O DIGITALE

Parma – Mirko Mancin 2014

#define buttonPin 2 // il numero del PIN del tasto

#define ledPin 13 // il numero del PIN del LED

int buttonState = 0; // variabile che assumerà il valore letto dal PIN del tasto

void setup() {

// inizializzo il PIN del LED indicando il numero e che si tratta di un'uscita:

pinMode(ledPin, OUTPUT);

// inizializzo il PIN del Tasto indicando il numero e che si tratta di un ingresso:

pinMode(buttonPin, INPUT);

}

void loop(){

// a ogni ciclo leggo il valore del tasto:

buttonState = digitalRead(buttonPin);

// controllo se il tasto è premuto.

// se lo stato è HIGH:

if (buttonState == HIGH) {

// accendo il LED:

digitalWrite(ledPin, HIGH);

}

// altrimenti:

else {

// spengo il LED:

digitalWrite(ledPin, LOW);

}

}

Page 13: Arduino&Raspberry

ARDUINO – I/O ANALOGICO

Parma – Mirko Mancin 2014

#define sensor A0 // il numero del PIN del sensore

#define ledPin 11 // il numero del PIN del led

int value = 0; // variabile che assumerà il valore letto

int LEDbrightness;

void setup() {

// inizializzo la seriale per stampare a video

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

}

void loop(){

// a ogni ciclo leggo il valore del tasto:

value = analogRead(sensor);

Serial.println(value);

LEDbrightness = map(value, 0, 1023, 0, 255);

// il LED diventa più luminoso quanto tu più premi

analogWrite(ledPin, LEDbrightness);

delay(100);

}

Page 14: Arduino&Raspberry

ARDUINO – COSA SI PUÒ FARE

Parma – Mirko Mancin 2014

Tweet Arduino

3D printer

Wii Nunchuck

YougurtIno Segnalatore per ciclicsti

Mini robot

Page 15: Arduino&Raspberry

ARDUINO – COSA SI PUÒ FARE

Parma – Mirko Mancin 2014

Stazione meteo Agro

Stazione meteo UrbanMonitoraggio domotico Wireless Sensors Bung Network

Page 16: Arduino&Raspberry

RASPBERRY PI

Parma – Mirko Mancin 2014

• Scheda nata come piccolo computer delle dimensioni di una carta di credito, economica (circa

30 euro) e basata su Linux.

• Nasce come progetto per l’insegnamento dell’informatica a bambini e ragazzi.

• Inizialmente doveva essere solamente un interprete Python.

• SystemOnChip Broadcom (ARM11).

Page 17: Arduino&Raspberry

RASPBERRY PI – LE DIVERSE VERSIONI

Parma – Mirko Mancin 2014

Page 18: Arduino&Raspberry

RASPBERRY PI – LE DIVERSE VERSIONI

Parma – Mirko Mancin 2014

«New compute module for business and industrial users.

The compute module contains the guts of a Raspberry Pi

(the BCM2835 processor and 512Mbyte of RAM) as well as

a 4Gbyte eMMC Flash device (which is the equivalent of

the SD card in the Pi). This is all integrated on to a small

67.6x30mm board which fits into a standard DDR2

SODIMM connector (the same type of connector as used

for laptop memory*). The Flash memory is connected

directly to the processor on the board, but the remaining

processor interfaces are available to the user via the

connector pins. You get the full flexibility of the BCM2835

SoC (which means that many more GPIOs and interfaces

are available as compared to the Raspberry Pi), and

designing the module into a custom system should be

relatively straightforward as we’ve put all the tricky bits

onto the module itself.”

Page 19: Arduino&Raspberry

RASPBERRY PI – LE DIVERSE DISTRIBUZIONI

Parma – Mirko Mancin 2014

Page 20: Arduino&Raspberry

RASPBERRY PI – FUNZIONALITÀ

Parma – Mirko Mancin 2014

• Controllo della GPIO

• Web/Cloud/Torrent Server

• Smartdisplay

• Videosorveglianza

• Mediacenter

• Gaming

• Robotica

• Piattaforma entry di programmazione

Page 21: Arduino&Raspberry

RASPBERRY PI – COSA SI PUÒ FARE

Parma – Mirko Mancin 2014

Page 22: Arduino&Raspberry

RASPBERRY PI – COSA SI PUÒ FARE

Parma – Mirko Mancin 2014

Gestione impianti d’irrigazione

Sistema di comunicazione

tra macchine CNC

Gateway per reti di sensori

Page 23: Arduino&Raspberry

RASPBERRY PI – COME PROGRAMMARE

Parma – Mirko Mancin 2014

Essendo un linux pc a tutti gli effetti la programmazione di tale

dispositivo può essere effettuata attraverso la maggior parte dei

linguaggi di programmazione conosciuti.

• C/C++ (con Eclipse, Qt, …)

• Java

• Python

• Web (Apache, MySql, …)

• Controllo diretto della GPIO (https://code.google.com/p/webiopi/)

• …

Page 24: Arduino&Raspberry

RASPBERRY PI & ARDUINO

Parma – Mirko Mancin 2014

http://www.makeuseof.com/tag/how-to-build-home-automation-system-raspberry-pi-and-arduino/

Il collegamento tra i due dispositivi

può avvenire in differenti modalità:

• Attraverso la connessione seriale

tra la GPIO della raspberry e la

seriale di Arduino

• Wireless attraverso dispositivi

radio

• Attraverso la rete internet

usando la raspberry come

«server» e gli arduino come

client

• …

Page 25: Arduino&Raspberry

LINK UTILI

Parma – Mirko Mancin 2014

Altro mio materiale

• Corso Arduino ( https://www.slideshare.net/mancio90/ )

• Github ( https://github.com/loweherz/ )

Community

• Forum Arduino

• Slideshare

Basic connections ( http://www.robot-italy.com/it/blog/tutorial_ita/475 )

Componentistica

• Robot-italy

• Seeedstudio

• Conrad.it

[email protected]

www.mancio.myds.me