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.
2. 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.
3. 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!!
4. ARDUINO – LE DIVERSE SCHEDE
Parma – Mirko Mancin 2014
Arduino UNO LilyPad Arduino Arduino Nano
Arduino Leonardo Arduino Mega 2560Arduino Mini
5. ARDUINO – LE DIVERSE SCHEDE
Parma – Mirko Mancin 2014
Arduino Due Arduino Yun
Arduino Zero
Arduino Tre
Arduino Galileo
6. 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
7. 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».
8. ARDUINO – COME SI PROGRAMMA
Parma – Mirko Mancin 2014
BOOT
SETUP()
{
}
LOOP()
{
}
http://arduino.cc/en/Main/Software
IDE Arduino
Atmel Visual Studio 6
9. 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);
}
}
10. 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.
11. 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
12. 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);
}
}
13. 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);
}
14. ARDUINO – COSA SI PUÒ FARE
Parma – Mirko Mancin 2014
Tweet Arduino
3D printer
Wii Nunchuck
YougurtIno Segnalatore per ciclicsti
Mini robot
15. ARDUINO – COSA SI PUÒ FARE
Parma – Mirko Mancin 2014
Stazione meteo Agro
Stazione meteo UrbanMonitoraggio domotico Wireless Sensors Bung Network
16. 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).
17. RASPBERRY PI – LE DIVERSE VERSIONI
Parma – Mirko Mancin 2014
18. 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.”
19. RASPBERRY PI – LE DIVERSE DISTRIBUZIONI
Parma – Mirko Mancin 2014
20. RASPBERRY PI – FUNZIONALITÀ
Parma – Mirko Mancin 2014
• Controllo della GPIO
• Web/Cloud/Torrent Server
• Smartdisplay
• Videosorveglianza
• Mediacenter
• Gaming
• Robotica
• Piattaforma entry di programmazione
21. RASPBERRY PI – COSA SI PUÒ FARE
Parma – Mirko Mancin 2014
22. 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
23. 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/)
• …
24. 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
• …
25. 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
mirko.mancin@gmail.com
www.mancio.myds.me