Upload
riccardo-lemmi
View
4.555
Download
2
Tags:
Embed Size (px)
Citation preview
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 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.
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.
Riccardo Lemmi
Open Hardware
Apparati elettronicima 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 del laptop.
È basato sul processore ARM Cortex-A8 che gira fino a 600MHz
http://beagleboard.org/
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/
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
Riccardo Lemmi
Open Hardware
● Generatore eolico
● Lavatrice
● Pannelli solari
● http://gardenbot.org/
● http://www.instructables.com/
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.
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
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.
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
Riccardo Lemmi
Arduino
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
Riccardo Lemmi
Arduino
A/D converter● Risoluzione a 10 bit
● Tempo di conversione da 13 a 260 us
● Interrupt su fine conversione
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)
● Protocollo I2C
Riccardo Lemmi
Arduino
Linguaggio di programmazione
Arduino si programma usando un linguaggio la cui sintassi è simile al C/C++ con alcune
semplificazioni e modifiche.
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 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();}
Riccardo Lemmi
Arduinovoid 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
}
Riccardo Lemmi
Arduino
Digital output/inputpinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
digitalWrite(pin, HIGH);
pinMode(s, INPUT);
if (digitalRead(s) == LOW) {
p++;
} else {
p--;
}
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
Riccardo Lemmi
Arduino
Interrupt
attachInterrupt(interrupt, function, mode)
mode per dichiarare come viene lanciata l'interruzione
LOW: quando il pin va in stato logico bassoCHANGE: quando il pin cambia statoRISING : quando il pin passa da livello logico basso ad altoFALLING: quando il pin passa da livello logico alto a basso
0 per il pin 2 e 1 per il pin 3
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;}
Riccardo Lemmi
Arduino
Librerie● Comunicazione seriale
● Driver LCD
● Eeprom
● Servo motori
● Motori passo=passo
● Accellerometri
● GPS
● Firmata (!)
● ... (vedi arduino-00XX/hardware/libraries/)
Riccardo Lemmi
Arduino
Arduino IDE
Integrated Developing Environment
Basata sulla IDE di Processing
http://www.processing.org/
http://wiring.org.co/
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.
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
Riferimentihttp://blog.makezine.com/http://blog.craftzine.com/
http://en.wikipedia.org/wiki/Open_hardwarehttp://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/