2. Cos’è Arduino? (1)
• “Arduino is an open-source electronics prototyping platform based on
flexible, easy-to-use hardware and software”
• Derivato da Wiring (http://wiring.org.co)
• Può ricevere input da sensori collegati
• Può controllare l’ambiente circostante
• Microcontrollore programmabile (ATmega168)
• Programmazione in un linguaggio basato su C e simile a Processing
(Language reference: http://cuttr.it/mj5h2)
2
3. Cos’è Arduino? (2)
“Physical Computing is about prototyping with electronics: turning sensors, actuators
and microcontrollers into materials for designers and artists.”
“It involves the design of smart objects that can communicate with humans using
sensors and actutors controlled by a behaviour implemented as software running inside a
microcontroller.”
Massimo Banzi, Tinker.it & Arduino Co-Founder
3
4. Perché Arduino? (1)
• Prototipi low-cost (circa 22€ per Arduino Uno), installazioni e oggetti
interattivi
• Semplice da programmare (es: no gestione memoria, ...)
• Board Shields (Estensioni):
- WiFi/Bluetooth/Ethernet
- ZigBee
- Servo
- SD Card
4
5. Perché Arduino? (2)
• Nessuna saldatura richiesta con Arduino Novemila/Diecimila/Uno
• Montaggio su Breadboard
• Disponibili versioni per sistemi Embedded
5
6. Perché Arduino? (3)
• Made in Italy
• Open source hardware & software:
- disegni CAD
- schemi circuiti
- sorgenti IDE
• Facilmente integrabile in sistemi più complessi
6
7. Programmare Arduino (1)
• Connessione via USB a un computer (OS X/Linux/Windows), rilevato come
porta seriale (adattatore FTDI integrato)
• L’IDE è già predisposto per compilare il sorgente ed effettuare l’upload sul
microcontrollore
• Nessun hardware aggiuntivo grazie al Bootloader AVR ISP
• Il cavo USB/Seriale può essere scollegato una volta effettuato l’upload
7
8. Programmare Arduino (2)
• Microcontrollore ATmega168
Flash 16k bytes (of which 2k is used for the bootloader)
SRAM 1024 bytes
EEPROM 512 bytes
• 14 KB per memorizzare il programma (compilato)
• 1024 B SRAM per memorizzare le variabili (incluse eventuali stringhe)
• 512 B EEPROM per memorizzare dati persistenti (numero limitato di cicli di
scrittura, ogni scrittura di 1 Byte impiega 3.3ms)
8
9. Programmare Arduino (3)
Input/Output
• Pin digitali
- ogni pin può fungere da ingresso o uscita, per selezionare:
pinMode(pinNumber, INPUT|OUTPUT)
- ingresso: lettura stato logico (0-5V), elevata resistenza in serie (100MΩ),
bassa corrente.
- uscita: stato logico H/L, bassa resistenza, corrente max 40mA. Collegare
in serie una resistenza da almeno 470Ω per evitare di rovinare pin/µC.
- lettura dello stato del pin: val = digitalRead(pinNumber)
- impostazione dello stato del pin: digitalWrite(pinNumber, LOW|HIGH)
9
10. Programmare Arduino (4)
Input/Output
• Pin analogici:
- 6 pin di input con ADC (analog-to-digital converter)
- ingresso: numero intero da 0 a 1023
- uscita: usano Pulse-Width Modulation (PWM) per “simulare” un’uscita
analogica generando un pattern a onda quadra. Da 0 a 5V.
- lettura dello stato del pin: val = analogRead(pinIdentifier)
- impostazione di un valor di tensione in uscita: analogWrite(pinNumber,
value)
- dettagli: http://cuttr.it/itutx
10
11. Programmare Arduino (5)
• Scrivere programmi è molto semplice!
• Per iniziare:
- Download Arduino IDE:
http://cuttr.it/ksksk
- Esempi (File->Examples)
• Tanti esempi richiedono solamente un Arduino, una breadboard, qualche
cavo da laboratorio, resistori e LED
11
12. Interagire con Arduino
• Hardware
- usando sensori e shield
• Software
- connessione con porta seriale usando qualunque linguaggio di
programmazione:
Java, PHP, Python, Perl, Ruby, VB.NET, …
• Comunicare con il mondo
- Bluetooth, WiFi, ZigBee, 3G, Ethernet
- GPS, Accelerometri, Giroscopi
- Display LCD, Touch Screen
12
13. Dove comprare
• Ebay
• Negozi di elettronica
• Arduino.cc Shop
• Accessori su SparkFun - http://www.sparkfun.com/
13
14. Arduino vs Others
• Pro
- Facile apprendimento
- Programmazione ad altro livello (altre devel boards devono essere
programmate in assembly o con costosi cross-compilers, es: TI
MSP430F2013)
- Board espandibile con shield
- Molti esempi
- Community molto attiva (anche Italiana)
• Contro:
- Debug dei programmi non possibile
- Consumi più elevati rispetto ad alcuni concorrenti
14
15. Esempi (1)
• Garage Parking Assistant
http://leblanc.co.cc/?p=1011
• Grow Room Controller
http://cuttr.it/0325a
• Scrolling News
http://cuttr.it/5jik5
• Dog Writing Light
http://cuttr.it/8c28f
• “sudo make me a sandwitch”
15
17. Esempi (3)
• TableTalk
http://cuttr.it/mu4po
• Digital Clock
http://cuttr.it/qdch7
• Simple Web Server
• Real Time GPS Tracker
http://cuttr.it/51ru3 (Arduino + GPS +
Google Maps)
17
19. Proposta 1 - Wheeled Robot
• Due ruote motrici + ruota folle
• Guida autonoma con collision avoidance
• Guida in modalità “assistita” da un terminale remoto (PC, iPhone, ...)
• Guida con percorso definito da linguaggio a regole
19
20. Idee e Tutorial
• Guide, Tutorial, Language Reference, Hardware Reference
http://arduino.cc/
• Let’s Make Robots
http://letsmakerobots.com/
• Makezine
http://makezine.com/
• Top 40 Arduino Projects
http://cuttr.it/w6x9s
• Arduino.cc Playground
http://arduino.cc/playground/Projects/Ideas
20