Riccardo Lemmi
Open hardware:
Arduino, un prodotto italiano.
Riccardo Lemmi
Open Hardware
Open source hardware is hardware whose design is made publicly available
so that anyone can s...
Riccardo Lemmi
Open Hardware
● Il design è disponibile pubblicamente
● Il design può essere studiato, modificato, distribu...
Riccardo Lemmi
Open Hardware
Apparati elettronici
ma non solo
Progetti (design)
Realizzazioni (how to)
Riccardo Lemmi
Open Hardware
Esempi di OH:
BeagleBoard
Reprap
Openmoko
Arduino
Riccardo Lemmi
Open Hardware
BeagleBoard
È una scheda a basso costo,
senza ventola con performance
e espandibilità tipiche...
Riccardo Lemmi
Open Hardware
Reprap
È una stampante 3D di
dimensioni contenute.
È capace di stampare oggetto in
plastica.
...
Riccardo Lemmi
Open Hardware
Openmoko
È stato il primo progetto
open source e open
hardware di cellulare.
Il sistema opera...
Riccardo Lemmi
Open Hardware
● Generatore eolico
● Lavatrice
● Pannelli solari
● http://gardenbot.org/
● http://www.instru...
Riccardo Lemmi
Arduino
● Arduino Uno è una scheda a
microcontrollore basata sul
processore ATmega328
● 14 ingressi/uscite ...
Riccardo Lemmi
Arduino
Ma per cosa si usa?
Arduino viene usato per sviluppare oggetti interattivi.
I segnali di ingresso s...
Riccardo Lemmi
Arduino
Microcontrollore
http://en.wikipedia.org/wiki/Microcontroller
Un “microcontrollore” è computer
su u...
Riccardo Lemmi
Arduino
AVR Atmega
● High Performance, Low Power AVR® 8-Bit Microcontroller
– RISC Architecture, 20 MIPS Th...
Riccardo Lemmi
Arduino
Riccardo Lemmi
Arduino
Digital I/O
● Sono porte bidirezionali con
resistenza di pull-up
● Ogni porta è programmabile
trami...
Riccardo Lemmi
Arduino
A/D converter
● Risoluzione a 10 bit
● Tempo di conversione da 13 a 260
us
● Interrupt su fine conv...
Riccardo Lemmi
Arduino
Counter
● Contatore/Timer a 8 bit
● Supporto PWM
● Permette di generare forme d'onda
Riccardo Lemmi
Arduino
2-wire serial
● Comunicazioni seriali a 2 fili
● Gestisce il protocollo
(master/slave, arbitration)...
Riccardo Lemmi
Arduino
Linguaggio di programmazione
Arduino si programma usando un linguaggio la
cui sintassi è simile al ...
Riccardo Lemmi
Arduino
void setup () {
//... setup pins
}
void loop () {
//... main loop
}
Riccardo Lemmi
Arduino
/* SOSOSOS... */
int ledPin = 13; // LED connected to digital pin 13
/* dot and line defs */
void s...
Riccardo Lemmi
Arduino
void dot() {
digitalWrite(ledPin, HIGH); // sets the LED on
delay(500); // waits for a second
digit...
Riccardo Lemmi
Arduino
Digital output/input
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
digitalWrite(pin, HIGH);
pinMode...
Riccardo Lemmi
Arduino
Analog input/output
int v = analogRead(pin); // value between 0 and 1023
analogWrite(a, v); // set ...
Riccardo Lemmi
Arduino
Interrupt
attachInterrupt(interrupt, function, mode)
mode
per dichiarare come viene lanciata l'inte...
Riccardo Lemmi
Arduino
Interrupt
int pin = 13;
volatile int state = LOW;
void setup() {
pinMode(pin, OUTPUT);
attachInterr...
Riccardo Lemmi
Arduino
Librerie
● Comunicazione seriale
● Driver LCD
● Eeprom
● Servo motori
● Motori passo=passo
● Accell...
Riccardo Lemmi
Arduino
Arduino IDE
Integrated Developing Environment
Basata sulla IDE di Processing
http://www.processing....
Riccardo Lemmi
Arduino
Fritzing
È un software open-source per
disegnare i protipi di sistemi basati su
Arduino.
La filosof...
Riccardo Lemmi
Arduino
Esempi di interfacciamento
http://wiring.org.co/learning/basics/
Riccardo Lemmi
Arduino
Pulsante
Si rileva la caduta di tensione
sulla resistenza
v = digitalRead(pin)
Riccardo Lemmi
Arduino
LED
La scrittura di uno stato
alto accende il LED
digitalWrite(pin, LOW);
Riccardo Lemmi
Arduino
Potenziometro
v = analogRead(pin)
Riccardo Lemmi
Arduino
Relè
digitalWrite(pin, LOW);
Riccardo Lemmi
Arduino
Motore
digitalWrite(pin, LOW);
analogWrite(pin, value);
Riccardo Lemmi
Arduino
Sensore di temperatura
LM35
v = analogRead(pin)
Riccardo Lemmi
Arduino
Domande
Riccardo Lemmi
Riferimenti
http://blog.makezine.com/
http://blog.craftzine.com/
http://en.wikipedia.org/wiki/Open_hardware...
Upcoming SlideShare
Loading in...5
×

Open Hardware: Arduino, un prodotto italiano

4,589

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,589
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
93
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Open Hardware: Arduino, un prodotto italiano"

  1. 1. Riccardo Lemmi Open hardware: Arduino, un prodotto italiano.
  2. 2. Riccardo Lemmi Open Hardware Open source hardware is hardware whose design is made publicly available so that anyone can study, modify, distribute, make and sell the design or hardware based on that design. The hardware’s source, the design from which it is made, is available in the preferred format for making modifications to it. Ideally, open source hardware uses readily-available components and materials, standard processes, open infrastructure, unrestricted content, and open-source design tools to maximize the ability of individuals to make and use hardware. Open source hardware gives people the freedom to control their technology while sharing knowledge and encouraging commerce through the open exchange of designs.
  3. 3. Riccardo Lemmi Open Hardware ● Il design è disponibile pubblicamente ● Il design può essere studiato, modificato, distribuito, costruito e venduto ● Il design è disponibile in un formato che ne permette la modifica ● Il design dovrebbe basarsi su componenti e materiali facili da trovare, non sottoposti a restrinzioni (copyright o patent) ● I tool utilizzati per la progettazione dovrebbero essere open source.
  4. 4. Riccardo Lemmi Open Hardware Apparati elettronici ma non solo Progetti (design) Realizzazioni (how to)
  5. 5. Riccardo Lemmi Open Hardware Esempi di OH: BeagleBoard Reprap Openmoko Arduino
  6. 6. Riccardo Lemmi Open Hardware BeagleBoard È una scheda a basso costo, senza ventola con performance e espandibilità tipiche del laptop. È basato sul processore ARM Cortex-A8 che gira fino a 600MHz http://beagleboard.org/
  7. 7. Riccardo Lemmi Open Hardware Reprap È una stampante 3D di dimensioni contenute. È capace di stampare oggetto in plastica. Grazie al suo design è in grado di produrre le parti per costruire un nuovo RepRap. Progetto simile: MakerBot http://reprap.org/
  8. 8. Riccardo Lemmi Open Hardware Openmoko È stato il primo progetto open source e open hardware di cellulare. Il sistema operativo era una distribuzione Linux-based pensata specificatamente per l'uso in piattaforme mobili. http://en.wikipedia.org/wiki/Openmoko
  9. 9. Riccardo Lemmi Open Hardware ● Generatore eolico ● Lavatrice ● Pannelli solari ● http://gardenbot.org/ ● http://www.instructables.com/
  10. 10. Riccardo Lemmi Arduino ● Arduino Uno è una scheda a microcontrollore basata sul processore ATmega328 ● 14 ingressi/uscite digitali ● 6 PWM ● 6 ingressi analogici ● Il processore gira a 16 MHz ● La scheda è dotata di porta USB utilizzabile per dialogare con un PC ed un firmware che semplifica la procedura di programmazzione.
  11. 11. Riccardo Lemmi Arduino Ma per cosa si usa? Arduino viene usato per sviluppare oggetti interattivi. I segnali di ingresso sono presi da interruttori e sensori. I segnali di uscita controllano luci, motori e altri dispositivi Può essere usato da solo o in collaborazione con un PC
  12. 12. Riccardo Lemmi Arduino Microcontrollore http://en.wikipedia.org/wiki/Microcontroller Un “microcontrollore” è computer su un unico circuito integrato. Contiene processore, memoria e un insieme programmabile di porte. I programmi possono essere salvati su memoria ROM o Flash ed è disponibile una piccola memoria RAM.
  13. 13. Riccardo Lemmi Arduino AVR Atmega ● High Performance, Low Power AVR® 8-Bit Microcontroller – RISC Architecture, 20 MIPS Throughput at 20 MHz ● High Endurance Non-volatile Memory segments – Flash program memory, EEPROM, SRAM ● Peripheral Features – Two 8-bit Timer/Counters , One 16-bit Timer/Counter – Real Time Counter with Separate Oscillator – Six PWM Channels – 8-channel 10-bit ADC in TQFP and QFN/MLF package – 6-channel 10-bit ADC in PDIP Package – Programmable Serial USART – Master/Slave SPI Serial Interface – Byte-oriented 2-wire Serial Interface (Philips I2C compatible) – Programmable Watchdog Timer with Separate On-chip Oscillator – On-chip Analog Comparator – Interrupt and Wake-up on Pin ChangeN/MLF
  14. 14. Riccardo Lemmi Arduino
  15. 15. Riccardo Lemmi Arduino Digital I/O ● Sono porte bidirezionali con resistenza di pull-up ● Ogni porta è programmabile tramite tre registri di un bit: ● DDxn: controlla la direzione ● PORTxn: controlla la resistenza di pull-up ● PINxn: restituisce il valore in ingresso
  16. 16. Riccardo Lemmi Arduino A/D converter ● Risoluzione a 10 bit ● Tempo di conversione da 13 a 260 us ● Interrupt su fine conversione
  17. 17. Riccardo Lemmi Arduino Counter ● Contatore/Timer a 8 bit ● Supporto PWM ● Permette di generare forme d'onda
  18. 18. Riccardo Lemmi Arduino 2-wire serial ● Comunicazioni seriali a 2 fili ● Gestisce il protocollo (master/slave, arbitration) ● Protocollo I2C
  19. 19. Riccardo Lemmi Arduino Linguaggio di programmazione Arduino si programma usando un linguaggio la cui sintassi è simile al C/C++ con alcune semplificazioni e modifiche.
  20. 20. Riccardo Lemmi Arduino void setup () { //... setup pins } void loop () { //... main loop }
  21. 21. Riccardo Lemmi Arduino /* SOSOSOS... */ int ledPin = 13; // LED connected to digital pin 13 /* dot and line defs */ void setup() { // run once, when the sketch starts pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { // run over and over again dot(); dot(); dot(); line(); line(); line(); }
  22. 22. Riccardo Lemmi Arduino void dot() { digitalWrite(ledPin, HIGH); // sets the LED on delay(500); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(200); // waits for a second } void line() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1500); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(200); // waits for a second }
  23. 23. Riccardo Lemmi Arduino Digital output/input pinMode(pin, OUTPUT); digitalWrite(pin, LOW); digitalWrite(pin, HIGH); pinMode(s, INPUT); if (digitalRead(s) == LOW) { p++; } else { p--; }
  24. 24. Riccardo Lemmi Arduino Analog input/output int v = analogRead(pin); // value between 0 and 1023 analogWrite(a, v); // set analog out pin a to value 0 to 255
  25. 25. Riccardo Lemmi Arduino Interrupt attachInterrupt(interrupt, function, mode) mode per dichiarare come viene lanciata l'interruzione LOW: quando il pin va in stato logico basso CHANGE: quando il pin cambia stato RISING : quando il pin passa da livello logico basso ad alto FALLING: quando il pin passa da livello logico alto a basso 0 per il pin 2 e 1 per il pin 3
  26. 26. Riccardo Lemmi Arduino Interrupt int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); } void loop() { digitalWrite(pin, state); } void blink() { state = !state; }
  27. 27. Riccardo Lemmi Arduino Librerie ● Comunicazione seriale ● Driver LCD ● Eeprom ● Servo motori ● Motori passo=passo ● Accellerometri ● GPS ● Firmata (!) ● ... (vedi arduino-00XX/hardware/libraries/)
  28. 28. Riccardo Lemmi Arduino Arduino IDE Integrated Developing Environment Basata sulla IDE di Processing http://www.processing.org/ http://wiring.org.co/
  29. 29. Riccardo Lemmi Arduino Fritzing È un software open-source per disegnare i protipi di sistemi basati su Arduino. La filosofia dietro il progetto è quella di aiutare gli utenti a documentare i propri progetti, a condividerli con gli altri, a insegnare l'elettronica e a creare i circuiti stampati.
  30. 30. Riccardo Lemmi Arduino Esempi di interfacciamento http://wiring.org.co/learning/basics/
  31. 31. Riccardo Lemmi Arduino Pulsante Si rileva la caduta di tensione sulla resistenza v = digitalRead(pin)
  32. 32. Riccardo Lemmi Arduino LED La scrittura di uno stato alto accende il LED digitalWrite(pin, LOW);
  33. 33. Riccardo Lemmi Arduino Potenziometro v = analogRead(pin)
  34. 34. Riccardo Lemmi Arduino Relè digitalWrite(pin, LOW);
  35. 35. Riccardo Lemmi Arduino Motore digitalWrite(pin, LOW); analogWrite(pin, value);
  36. 36. Riccardo Lemmi Arduino Sensore di temperatura LM35 v = analogRead(pin)
  37. 37. Riccardo Lemmi Arduino Domande
  38. 38. Riccardo Lemmi Riferimenti http://blog.makezine.com/ http://blog.craftzine.com/ http://en.wikipedia.org/wiki/Open_hardware http://en.wikipedia.org/wiki/List_of_open_source_hardware_projects http://www.openhardwaresummit.org/ Atmel AVR Atmega datasheet http://arduino.cc/en/Main/ArduinoBoardUno http://en.wikipedia.org/wiki/Arduino http://www.maartenlamers.com/ThisIsWiring/ http://www.wiring.org.co/ http://www.processing.org/ http://fritzing.org/welcome/ http://www.oswash.org/ http://www.instructables.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×