SlideShare a Scribd company logo
Introduzione ad Arduino




           Lunedì 17 Ottobre 2011

         Mauro Bolis <mauro@bazingalabs.it>
      Emanuele Brivio <emanuele@bazingalabs.it>
       Simone Lusenti <simone@bazingalabs.it>


                                                  © 2011 Bazinga Labs
                       1
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
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
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
Perché Arduino? (2)

•   Nessuna saldatura richiesta con Arduino Novemila/Diecimila/Uno

•   Montaggio su Breadboard

•   Disponibili versioni per sistemi Embedded




                                       5
Perché Arduino? (3)

•   Made in Italy

•   Open source hardware & software:

    -   disegni CAD

    -   schemi circuiti

    -   sorgenti IDE

•   Facilmente integrabile in sistemi più complessi




                                        6
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
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
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
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
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
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
Dove comprare


•   Ebay

•   Negozi di elettronica

•   Arduino.cc Shop

•   Accessori su SparkFun - http://www.sparkfun.com/




                                     13
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
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
Esempi (2)

•   Auto Rosary (?)
    http://www.chriseckert.com/

•   Mouse Glove
    http://mouseglove.sourceforge.net/

•   Digital Graffiti / Vandal Spray
    http://cuttr.it/tnm8p (Arduino + WiiFlash)

•   Botanic Calls
    http://cuttr.it/8bqe0 (Arduino + ZigBee + PHP +
    MySQL + Asterisk)




                                         16
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
E noi cosa facciamo?




         18
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
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
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

More Related Content

What's hot (20)

PDF
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Mauro Alfieri
 
PDF
Arduino&Raspberry
Mirko Mancin
 
PDF
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Luigi Francesco Cerfeda
 
PPTX
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Sardegna Ricerche
 
PDF
Lezione 3 arduino - corso 20 ore
Mirko Mancin
 
PDF
Arduino nella Pmi
Mirco Piccin
 
PDF
Lezione 1 arduino - corso 20 ore
Mirko Mancin
 
PDF
Arduino basic workshop
Daniele Iori
 
PDF
Corso Arduino Base - MUST
OPS Italia
 
PDF
Come rendere Arduino professionale
Emanuele Bonanni
 
PDF
Modelli arduino
Demetrio Siragusa
 
PDF
Raspberry Pi - Introduzione, caratteristiche, programmazione, casi d'uso
gianlucaghettini
 
PDF
Fare Musica con Arduino
Stefano Panichi
 
PDF
Csp@scuola uav corso1_lez2
CSP Scarl
 
PDF
Programmare raspberry pi - Cowo42 - Osimo (AN)
Gabriele Guizzardi
 
PDF
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
 
PDF
Lezione 2 arduino - corso 20 ore
Mirko Mancin
 
PDF
Freedomotic pitch 12.05.16 Smart Home Now Milano
freedomotic
 
PPTX
Presentazione Arduino
Antonio Serra
 
PDF
Introduzione ad Arduino del Maker DevLab
Biagio (Gino) Zingales Alì
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Mauro Alfieri
 
Arduino&Raspberry
Mirko Mancin
 
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Luigi Francesco Cerfeda
 
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Sardegna Ricerche
 
Lezione 3 arduino - corso 20 ore
Mirko Mancin
 
Arduino nella Pmi
Mirco Piccin
 
Lezione 1 arduino - corso 20 ore
Mirko Mancin
 
Arduino basic workshop
Daniele Iori
 
Corso Arduino Base - MUST
OPS Italia
 
Come rendere Arduino professionale
Emanuele Bonanni
 
Modelli arduino
Demetrio Siragusa
 
Raspberry Pi - Introduzione, caratteristiche, programmazione, casi d'uso
gianlucaghettini
 
Fare Musica con Arduino
Stefano Panichi
 
Csp@scuola uav corso1_lez2
CSP Scarl
 
Programmare raspberry pi - Cowo42 - Osimo (AN)
Gabriele Guizzardi
 
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
 
Lezione 2 arduino - corso 20 ore
Mirko Mancin
 
Freedomotic pitch 12.05.16 Smart Home Now Milano
freedomotic
 
Presentazione Arduino
Antonio Serra
 
Introduzione ad Arduino del Maker DevLab
Biagio (Gino) Zingales Alì
 

Similar to Introduzione ad Arduino (20)

PDF
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
bakikiy278
 
PDF
Arduino 2- Slide descrizione Architettura
robertodefazio3
 
PDF
Software libero nei sistemi embedded
Daniele Costarella
 
PDF
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Mirco Piccin
 
PDF
Open Hardware: Arduino, un prodotto italiano
Riccardo Lemmi
 
PDF
Free Software e Open Hardware
Stefano Sanna
 
DOC
Arduino & raspberry pi - Un connubio stimolante
Mirco Sbrollini
 
PDF
Csp@scuola uav corso1_lez3
CSP Scarl
 
PPTX
Raspberry
PasqualeMarasca
 
RTF
Arduino&raspberry pi - Un connubio vincente
Mirco Sbrollini
 
PDF
Fpga il componente universale 2010-11-09
Ionela
 
PDF
Arduino day 2017
Enrico La Sala
 
PPTX
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Giuseppe Cramarossa
 
PDF
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Ionela
 
PDF
Internet delle cose
Biagio (Gino) Zingales Alì
 
PDF
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Ionela
 
PDF
Alfabeto di Arduino - lezione 2
Michele Maffucci
 
PDF
LinuxDay 2010, Arduino il re dell'hardware open
Mauro Fava
 
PDF
Introduzione all'elettronica con i microcontrollori: Arduino
Stefano Varano
 
PDF
Microcontrollori
samu97
 
SLIDES PRESENTAZION LEZIONE 1 ARDUINO.pdf
bakikiy278
 
Arduino 2- Slide descrizione Architettura
robertodefazio3
 
Software libero nei sistemi embedded
Daniele Costarella
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Mirco Piccin
 
Open Hardware: Arduino, un prodotto italiano
Riccardo Lemmi
 
Free Software e Open Hardware
Stefano Sanna
 
Arduino & raspberry pi - Un connubio stimolante
Mirco Sbrollini
 
Csp@scuola uav corso1_lez3
CSP Scarl
 
Raspberry
PasqualeMarasca
 
Arduino&raspberry pi - Un connubio vincente
Mirco Sbrollini
 
Fpga il componente universale 2010-11-09
Ionela
 
Arduino day 2017
Enrico La Sala
 
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Giuseppe Cramarossa
 
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Ionela
 
Internet delle cose
Biagio (Gino) Zingales Alì
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Ionela
 
Alfabeto di Arduino - lezione 2
Michele Maffucci
 
LinuxDay 2010, Arduino il re dell'hardware open
Mauro Fava
 
Introduzione all'elettronica con i microcontrollori: Arduino
Stefano Varano
 
Microcontrollori
samu97
 
Ad

Introduzione ad Arduino

  • 1. Introduzione ad Arduino Lunedì 17 Ottobre 2011 Mauro Bolis <[email protected]> Emanuele Brivio <[email protected]> Simone Lusenti <[email protected]> © 2011 Bazinga Labs 1
  • 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
  • 16. Esempi (2) • Auto Rosary (?) http://www.chriseckert.com/ • Mouse Glove http://mouseglove.sourceforge.net/ • Digital Graffiti / Vandal Spray http://cuttr.it/tnm8p (Arduino + WiiFlash) • Botanic Calls http://cuttr.it/8bqe0 (Arduino + ZigBee + PHP + MySQL + Asterisk) 16
  • 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
  • 18. E noi cosa facciamo? 18
  • 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
  • 21. Credits Questa presentazione è liberamente scaricabile Sorgente: https://www.bazingalabs.it/~simone/ArduinoIntro17102011.key PDF: https://www.bazingalabs.it/~simone/ArduinoIntro17102011.pdf Mauro Bolis <[email protected]> Università degli studi di Milano - Biccoca, 2011 Emanuele Brivio <[email protected]> IED, 2011 Simone Lusenti <[email protected]> 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

Editor's Notes