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 lambiente 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)
LIDE 竪 gi predisposto per compilare il sorgente ed effettuare lupload sul
microcontrollore
Nessun hardware aggiuntivo grazie al Bootloader AVR ISP
Il cavo USB/Seriale pu嘆 essere scollegato una volta effettuato lupload
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 unuscita
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/
Lets 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
21. Credits
Questa presentazione 竪 liberamente scaricabile
Sorgente: https://www.bazingalabs.it/~simone/ArduinoIntro17102011.key
PDF: https://www.bazingalabs.it/~simone/ArduinoIntro17102011.pdf
Mauro Bolis <mauro@bazingalabs.it>
Universit degli studi di Milano - Biccoca, 2011
Emanuele Brivio <emanuele@bazingalabs.it>
IED, 2011
Simone Lusenti <simone@bazingalabs.it>
CTO, Monkey Trip Communication Srl
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Copyright 息 2011 Bazinga Labs - https://www.bazingalabs.it
21