38
Riccardo Lemmi Open hardware: Arduino, un prodotto italiano.

Open Hardware: Arduino, un prodotto italiano

Embed Size (px)

Citation preview

Page 1: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Open hardware:

Arduino, un prodotto italiano.

Page 2: 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.

Page 3: Open Hardware: Arduino, un prodotto italiano

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.

Page 4: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Open Hardware

Apparati elettronicima non solo

Progetti (design)

Realizzazioni (how to)

Page 5: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Open Hardware

Esempi di OH:

BeagleBoard

Reprap

Openmoko

Arduino

Page 6: Open Hardware: Arduino, un prodotto italiano

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/

Page 7: Open Hardware: Arduino, un prodotto italiano

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/

Page 8: Open Hardware: Arduino, un prodotto italiano

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

Page 9: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Open Hardware

● Generatore eolico

● Lavatrice

● Pannelli solari

● http://gardenbot.org/

● http://www.instructables.com/

Page 10: Open Hardware: Arduino, un prodotto italiano

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.

Page 11: Open Hardware: Arduino, un prodotto italiano

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

Page 12: Open Hardware: Arduino, un prodotto italiano

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.

Page 13: Open Hardware: Arduino, un prodotto italiano

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

Page 14: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Page 15: Open Hardware: Arduino, un prodotto italiano

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

Page 16: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

A/D converter● Risoluzione a 10 bit

● Tempo di conversione da 13 a 260 us

● Interrupt su fine conversione

Page 17: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Counter● Contatore/Timer a 8 bit

● Supporto PWM

● Permette di generare forme d'onda

Page 18: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

2-wire serial● Comunicazioni seriali a 2 fili

● Gestisce il protocollo (master/slave, arbitration)

● Protocollo I2C

Page 19: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Linguaggio di programmazione

Arduino si programma usando un linguaggio la cui sintassi è simile al C/C++ con alcune

semplificazioni e modifiche.

Page 20: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

void setup () {

//... setup pins

}

void loop () {

//... main loop

}

Page 21: Open Hardware: Arduino, un prodotto italiano

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();}

Page 22: Open Hardware: Arduino, un prodotto italiano

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

}

Page 23: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Digital output/inputpinMode(pin, OUTPUT);

digitalWrite(pin, LOW);

digitalWrite(pin, HIGH);

pinMode(s, INPUT);

if (digitalRead(s) == LOW) {

p++;

} else {

p--;

}

Page 24: Open Hardware: Arduino, un prodotto italiano

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

Page 25: Open Hardware: Arduino, un prodotto italiano

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

Page 26: Open Hardware: Arduino, un prodotto italiano

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

Page 27: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Librerie● Comunicazione seriale

● Driver LCD

● Eeprom

● Servo motori

● Motori passo=passo

● Accellerometri

● GPS

● Firmata (!)

● ... (vedi arduino-00XX/hardware/libraries/)

Page 28: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Arduino IDE

Integrated Developing Environment

Basata sulla IDE di Processing

http://www.processing.org/

http://wiring.org.co/

Page 29: Open Hardware: Arduino, un prodotto italiano

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.

Page 30: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Esempi di interfacciamento

http://wiring.org.co/learning/basics/

Page 31: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Pulsante

Si rileva la caduta di tensione sulla resistenza

v = digitalRead(pin)

Page 32: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

LED La scrittura di uno stato

alto accende il LED

digitalWrite(pin, LOW);

Page 33: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Potenziometro

v = analogRead(pin)

Page 34: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Relè

digitalWrite(pin, LOW);

Page 35: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Motore

digitalWrite(pin, LOW);

analogWrite(pin, value);

Page 36: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Sensore di temperatura

LM35

v = analogRead(pin)

Page 37: Open Hardware: Arduino, un prodotto italiano

Riccardo Lemmi

Arduino

Domande

Page 38: Open Hardware: Arduino, un prodotto italiano

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/