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. 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.
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. 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. 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
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. 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
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
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
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.
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. 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
}
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. 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;
}
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.