Da Zero a Maker 
Matteo Fortini 
25 Ottobre 2014 
#LinuxDayFE 
Ferrara
Chi è il Maker? 
Tu vedi cose e ti chiedi «perché?», 
io invece immagino cose 
che non sono mai esistite 
e mi chiedo: «perché no?» 
G.B.Shaw
Chi è il Maker? 
Ho fatto quello che estremamente mi piaceva. . . 
se poi questo ha portato benecio 
-diretto od indiretto- agli altri, 
questa è una giusticazione al mio 
egoismo di partenza, che è quello -e resta-di 
soddisfare una mia ansia realizzatrice 
Enzo “Drake” Ferrari
(non solo)DIY 
◮ Una parte del making è DIY 
(Do It Yourself) 
◮ Ma si tratta solo di un aspetto
Modding, tampering, xing, hacking 
Please, void you warranty 
makezine.com 
Meaningful and specific parts lists shall be included. 
Cases shall be easy to open. Batteries shall be 
replaceable. Special tools are allowed only for darn 
good reasons. Profiting by selling expensive special 
tools is wrong, and not making special tools available 
is even worse. Torx is OK; tamperproof is rarely OK. 
Components, not entire subassemblies, shall be 
replaceable. Consumables, like fuses and filters, shall 
be easy to access. Circuit boards shall be commented. 
Power from USB is good; power from proprietary 
power adapters is bad. Standard connectors shall 
have pinouts defined. If it snaps shut, it shall snap 
open. Screws better than glues. Docs and drivers 
shall have permalinks and shall reside for all perpetuity 
at archive.org. Ease of repair shall be a design ideal, 
not an afterthought. Metric or standard, not both. 
Schematics shall be included. 
Drafted by Mister Jalopy, with assistance from Phillip Torrone and Simon Hill.
Elettronica 
GSM Phone 
Foto: dam (Flickr)
Non solo elettronica 
Veicoli 
Tabby OSVehicle Arducopter
Non solo elettronica 
Abbigliamento
Non solo elettronica 
Biologia 
OpenWetWare is an effort to promote the sharing of information, know-how, and wisdom among 
researchers and groups who are working in biology  biological engineering. Learn more about 
us. 
If you would like edit access, would be interested in helping out, or want your lab 
website hosted on OpenWetWare, please join us. OpenWetWare is managed by 
theBioBricks Foundation . 
Labs Groups 
From around the world 
Courses 
Host  view classes 
Protocols 
Share techniques  more 
Blogs 
Read OWW blogs 
OWW Community Blog 
Contribute for a strong synbio 
community 
The BioBricks Foundation (BBF) 
is a public­benefit 
organization 
advancing synthetic biology to 
benefit all people and the planet. 
BioBricks Foundation Synthetic 
Biology 6.0 Conference announced: 
July 9­11, 
2013 
Dear SynBio Community 
Members: The BioBricks 
Foundation is pleased to 
announce The BioBricks 
Foundation Synthetic Biology 6. 
Winners of 
BioBricks/OpenWetWare 
Improvement Survey 
Dear OpenWetWare Community, 
Thank you for your participation in 
the OWW improvement survey. 
We thank you for all your valuable 
input toward making 
OpenWetWare one of the most 
effective tools to facilitate your 
research. 
Welcome new OWW users! 
Jacob Gudger • ROBIN ABRAHAM Nadar • Peiju 
Liao • Atul Kaushik • UwDNA Team • Joe 
Phillips • Shiori Sasaki • Ann 
Lesnefsky • Florian Stehr • Sebastian 
Huber • Maxat Zhabagin • Mey 
Takematsu • Reanna Edgerton • Nancy 
Yuan • Paresh Atu Jaini • Edmund 
Fung • Hyunju Ryu • James L 
Funderburgh • Jose Ysla • Simon Ardui 
See all new users. 
Jack Andraka
Non solo elettronica 
Botanica
Non solo elettronica 
Pasta
Non solo elettronica 
Strumenti Musicali
Non solo elettronica 
Dati
Non solo elettronica 
Società
Non solo elettronica 
Frugal Innovation 
Jugaad
Non solo elettronica 
E ovviamente . . .3D Printing!
Condivisione 
La dierenza fondamentale fra i maker di oggi e quelli di 
50 anni fa è la condivisione 
Dale Dougherty
Condivisione 
La dierenza fondamentale fra i maker di oggi e quelli di 
50 anni fa è la condivisione 
Dale Dougherty 
Il mezzo che ha maggiormente permesso questo 
è la rete Internet
Condivisione: Instructables
Condivisione: Instructables
Condivisione: Makerspaces/Fablab
Condivisione: Makerspaces/Fablab
Condivisione: Thingiverse
Condivisione: Thingiverse
Condivisione: GitHub
Condivisione: GitHub
Collaborazione: aerofotograa
Collaborazione: aerofotograa
Collaborazione: ambiente
Collaborazione: ambiente
Collaborazione: meteo
Collaborazione: meteo
Collaborazione: mapping
Collaborazione: mapping
Collaborazione: pròtesi per le mani
Collaborazione: pròtesi per le mani
Alcune regole 
◮ Il percorso è più importante del prodotto
Alcune regole 
◮ Il percorso è più importante del prodotto 
◮ Alzati e crea qualcosa!
Alcune regole 
◮ Il percorso è più importante del prodotto 
◮ Alzati e crea qualcosa! 
◮ Da consumatori a produttori
Alcune regole 
◮ Il percorso è più importante del prodotto 
◮ Alzati e crea qualcosa! 
◮ Da consumatori a produttori 
◮ Ad ogni età
Alcune regole 
◮ Il percorso è più importante del prodotto 
◮ Alzati e crea qualcosa! 
◮ Da consumatori a produttori 
◮ Ad ogni età 
◮ Non è necessario essere tecnici
Open Source 
Una buona condivisione comincia 
con una buona licenza
Open Source 
Una buona condivisione comincia 
con una buona licenza 
Contrapponendosi alle licenze per software pro-prietario, 
la GNU GPL assicura all’utente libertà di utilizzo, 
copia, modica e distribuzione. 
(Fonte: Wikipedia)
Creative Commons 
“Open” riguarda 3 Dimensioni di un’opera: 
◮ Attribution
Creative Commons 
“Open” riguarda 3 Dimensioni di un’opera: 
◮ Attribution 
◮ (Non)Commercial
Creative Commons 
“Open” riguarda 3 Dimensioni di un’opera: 
◮ Attribution 
◮ (Non)Commercial 
◮ (No)Derivatives/ShareAlike
Creative Commons 
“Open” riguarda 3 Dimensioni di un’opera: 
◮ Attribution 
◮ (Non)Commercial 
◮ (No)Derivatives/ShareAlike 
Uno degli esempi più ampi di : 
Wikipedia: +4.000.000 voci!
Open software 
◮ gcc 
Credits: Zoe Romano
Open software 
◮ gcc 
◮ Linux/FreeRTOS 
Credits: Zoe Romano
Open software 
◮ gcc 
◮ Linux/FreeRTOS 
◮ U-Boot/Barebox 
Credits: Zoe Romano
Open software 
◮ gcc 
◮ Linux/FreeRTOS 
◮ U-Boot/Barebox 
◮ GitHub 
Credits: Zoe Romano
Open (easy, cheap) hardware 
◮ Il design hardware è sempre stato “open” 
◮ I produttori forniscono da sempre reference 
design e application note e le aziende li usano 
(il produttore guadagna sui pezzi) 
◮ Il piccolo progettista però non ha le risorse per 
fare schede complesse in casa
Una volta c’era il PIC. . . 
◮ Prendi una board 
◮ Studiati il 
microcontrollore 
◮ Studiati la 
“libreria” 
◮ Cross-compila 
◮ Programma 
◮ Run 
◮ Debug 
◮ Attaccaci qualcosa
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea 
◮ Interazione semplicata
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea 
◮ Interazione semplicata 
◮ Unbrickable
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea 
◮ Interazione semplicata 
◮ Unbrickable 
◮ Hardware sotto licenza
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea 
◮ Interazione semplicata 
◮ Unbrickable 
◮ Hardware sotto licenza 
◮ IDE sotto licenza GPL
Poi arrivò Arduino™ 
◮ Progetto nato all’Interaction Design Institute di 
Ivrea 
◮ Interazione semplicata 
◮ Unbrickable 
◮ Hardware sotto licenza 
◮ IDE sotto licenza GPL 
◮ Solo il nome Arduino e il suo logo sono protetti
Arduino 
Standard di fatto
Arduino 
Standard di fatto
Arduino 
Standard di fatto
Arduino 
Osservazioni 
◮ Pin collegati direttamente all’esterno: povero 
ATMEGA328P! 
◮ C’è un fusibile ripristinabile: il PC è “protetto” 
◮ Qualche conoscenza di elettrotecnica non guasta 
◮ Qualche strumento (multimetro, meglio 
oscilloscopio) non guasta
Arduino 
Osservazioni 
◮ Pin collegati direttamente all’esterno: povero 
ATMEGA328P! 
◮ C’è un fusibile ripristinabile: il PC è “protetto” 
◮ Qualche conoscenza di elettrotecnica non guasta 
◮ Qualche strumento (multimetro, meglio 
oscilloscopio) non guasta 
Però 
◮ Facile da mettere in piedi 
◮ Relativamente indistruttibile 
◮ Libreria molto ben strutturata
Arduino 
Osservazioni 
◮ Pin collegati direttamente all’esterno: povero 
ATMEGA328P! 
◮ C’è un fusibile ripristinabile: il PC è “protetto” 
◮ Qualche conoscenza di elettrotecnica non guasta 
◮ Qualche strumento (multimetro, meglio 
oscilloscopio) non guasta 
Però 
◮ Facile da mettere in piedi 
◮ Relativamente indistruttibile 
◮ Libreria molto ben strutturata 
◮ Finalmente un collegamento con il mondo 
esterno!
Arduino 
I/O 
◮ 5V DC
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz)
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit)
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit) 
◮ DC current per I/O pin: 40mA
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit) 
◮ DC current per I/O pin: 40mA 
◮ Flash memory: 32KB (di cui 0.5KB per il 
bootloader)
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit) 
◮ DC current per I/O pin: 40mA 
◮ Flash memory: 32KB (di cui 0.5KB per il 
bootloader) 
◮ EEPROM: 1KB
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit) 
◮ DC current per I/O pin: 40mA 
◮ Flash memory: 32KB (di cui 0.5KB per il 
bootloader) 
◮ EEPROM: 1KB 
◮ Clock: 16MHz
Arduino 
I/O 
◮ 5V DC 
◮ 14 I/O digitali (6 PWM @500Hz) 
◮ 6 input analogici (10bit) 
◮ DC current per I/O pin: 40mA 
◮ Flash memory: 32KB (di cui 0.5KB per il 
bootloader) 
◮ EEPROM: 1KB 
◮ Clock: 16MHz 
◮ Prezzo: meno di 30€
Progettazione 
Fritzing (❤tt♣✿✴✴❢r✐t③✐♥❣✳♦r❣✴)
Arduino 
Programmazione 
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo 
nta che sia C++)
Arduino 
Programmazione 
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo 
nta che sia C++) 
Il caro vecchio main loop.
Arduino 
Programmazione 
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo 
nta che sia C++) 
Il caro vecchio main loop. 
Esempio C-like: 
void setup(void) 
{ 
. . . 
} 
void loop(void) 
{ 
. . . 
}
Arduino 
Programmazione 
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo 
nta che sia C++) 
Il caro vecchio main loop. 
Esempio C-like: 
void setup(void) 
{ 
. . . 
} 
void loop(void) 
{ 
. . . 
} 
void main (void) 
{ 
setup ( ) ; 
for ( ; ; ) { 
loop ( ) ; 
} 
}
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT 
◮ Serial.begin(baud)
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT 
◮ Serial.begin(baud) 
◮ setto le variabili globali (sic. . . )
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT 
◮ Serial.begin(baud) 
◮ setto le variabili globali (sic. . . ) 
Loop 
◮ Circa 10KHz di frequenza massima su UNO
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT 
◮ Serial.begin(baud) 
◮ setto le variabili globali (sic. . . ) 
Loop 
◮ Circa 10KHz di frequenza massima su UNO 
◮ Non mantiene le variabili locali
Programmazione 
Setup 
Documentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ 
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) 
NB: Si accendono tutti come INPUT 
◮ Serial.begin(baud) 
◮ setto le variabili globali (sic. . . ) 
Loop 
◮ Circa 10KHz di frequenza massima su UNO 
◮ Non mantiene le variabili locali 
◮ Problema del tempo
Tempo 
◮ delay() e delayMicroseconds()
Tempo 
◮ delay() e delayMicroseconds() 
◮ Problema: bloccano il loop. Ritardo su eventi 
asincroni
Tempo 
◮ delay() e delayMicroseconds() 
◮ Problema: bloccano il loop. Ritardo su eventi 
asincroni 
Soluzioni: 
◮ interrupt: solo se indispensabili 
◮ millis() micros() e deadline: 
i f (micros ( ) = deadline ) { 
deadline += PERIOD; 
do_something( ) ; 
}
Tempo 
◮ delay() e delayMicroseconds() 
◮ Problema: bloccano il loop. Ritardo su eventi 
asincroni 
Soluzioni: 
◮ interrupt: solo se indispensabili 
◮ millis() micros() e deadline: 
i f (micros ( ) = deadline ) { 
deadline += PERIOD; 
do_something( ) ; 
} 
◮ . . . e controllo della durata dei calcoli
Funzioni utili 
◮ constrain(x,a,b) 
◮ map(value,fromLow,fromHigh,toLow,toHigh)
Tanti Arduino 
◮ Nano/Micro/Mini 
◮ Leonardo 
◮ Mega 
◮ UNO 
◮ DUE 
◮ TRE 
◮ Yún 
◮ LilyPad 
◮ Ethernet 
◮ Galileo 
◮ . . .
Shields 
◮ Adafruit ❤tt♣✿✴✴✇✇✇✳❛❞❛❢r✉✐t✳❝♦♠✴ 
◮ Seeedstudio ❤tt♣✿✴✴✇✇✇✳s❡❡❡❞st✉❞✐♦✳❝♦♠✴ 
◮ Sparkfun ❤tt♣s✿✴✴✇✇✇✳s♣❛r❦❢✉♥✳❝♦♠✴ 
◮ Robot-italy ❤tt♣✿✴✴✇✇✇✳r♦❜♦t✲✐t❛❧②✳❝♦♠✴ 
◮ Futura elettronica ❤tt♣✿✴✴✇✇✇✳❢✉t✉r❛s❤♦♣✳✐t✴ 
◮ Pin compatibili con “tutti” gli Arduino 
◮ Impilabili con qualche limite
Shields 
◮ Ethernet/Wi 
◮ GSM/GPRS 
◮ GPS 
◮ Accelerometri/magnetometri 
◮ Relé 
◮ Motori 
◮ Meteo 
◮ Ph-Metri 
◮ Contatori Geiger 
◮ XBee 
◮ Arducopter 
◮ Groove
Raspberry PI 
◮ Non completamente “open”, ma molto 
economico
Raspberry PI 
◮ Non completamente “open”, ma molto 
economico 
◮ Broadcom ARM11 @700MHz
Raspberry PI 
◮ Non completamente “open”, ma molto 
economico 
◮ Broadcom ARM11 @700MHz 
◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 
video decoder)
Raspberry PI 
◮ Non completamente “open”, ma molto 
economico 
◮ Broadcom ARM11 @700MHz 
◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 
video decoder) 
◮ Circa 35€ (25€ senza Ethernet)
Raspberry PI 
◮ Non completamente “open”, ma molto 
economico 
◮ Broadcom ARM11 @700MHz 
◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 
video decoder) 
◮ Circa 35€ (25€ senza Ethernet) 
◮ SD Card e alimentazione un po’ critici
Raspberry PI-Espansioni 
◮ Innumerevoli schede 
◮ Compatibili con Arduino 
◮ Raspberry PI camera: 5MP, 1080p@30fps, 20€ 
◮ Purtroppo il loro costo è comparabile con quello 
della mainboard . . .
Beaglebone Black
Conclusioni 
◮ Buon making!

Da zero a maker: condivisione, collaborazione, open source

  • 1.
    Da Zero aMaker Matteo Fortini 25 Ottobre 2014 #LinuxDayFE Ferrara
  • 2.
    Chi è ilMaker? Tu vedi cose e ti chiedi «perché?», io invece immagino cose che non sono mai esistite e mi chiedo: «perché no?» G.B.Shaw
  • 3.
    Chi è ilMaker? Ho fatto quello che estremamente mi piaceva. . . se poi questo ha portato benecio -diretto od indiretto- agli altri, questa è una giusticazione al mio egoismo di partenza, che è quello -e resta-di soddisfare una mia ansia realizzatrice Enzo “Drake” Ferrari
  • 4.
    (non solo)DIY ◮Una parte del making è DIY (Do It Yourself) ◮ Ma si tratta solo di un aspetto
  • 5.
    Modding, tampering, xing,hacking Please, void you warranty makezine.com Meaningful and specific parts lists shall be included. Cases shall be easy to open. Batteries shall be replaceable. Special tools are allowed only for darn good reasons. Profiting by selling expensive special tools is wrong, and not making special tools available is even worse. Torx is OK; tamperproof is rarely OK. Components, not entire subassemblies, shall be replaceable. Consumables, like fuses and filters, shall be easy to access. Circuit boards shall be commented. Power from USB is good; power from proprietary power adapters is bad. Standard connectors shall have pinouts defined. If it snaps shut, it shall snap open. Screws better than glues. Docs and drivers shall have permalinks and shall reside for all perpetuity at archive.org. Ease of repair shall be a design ideal, not an afterthought. Metric or standard, not both. Schematics shall be included. Drafted by Mister Jalopy, with assistance from Phillip Torrone and Simon Hill.
  • 6.
    Elettronica GSM Phone Foto: dam (Flickr)
  • 7.
    Non solo elettronica Veicoli Tabby OSVehicle Arducopter
  • 8.
    Non solo elettronica Abbigliamento
  • 9.
    Non solo elettronica Biologia OpenWetWare is an effort to promote the sharing of information, know-how, and wisdom among researchers and groups who are working in biology biological engineering. Learn more about us. If you would like edit access, would be interested in helping out, or want your lab website hosted on OpenWetWare, please join us. OpenWetWare is managed by theBioBricks Foundation . Labs Groups From around the world Courses Host view classes Protocols Share techniques more Blogs Read OWW blogs OWW Community Blog Contribute for a strong synbio community The BioBricks Foundation (BBF) is a public­benefit organization advancing synthetic biology to benefit all people and the planet. BioBricks Foundation Synthetic Biology 6.0 Conference announced: July 9­11, 2013 Dear SynBio Community Members: The BioBricks Foundation is pleased to announce The BioBricks Foundation Synthetic Biology 6. Winners of BioBricks/OpenWetWare Improvement Survey Dear OpenWetWare Community, Thank you for your participation in the OWW improvement survey. We thank you for all your valuable input toward making OpenWetWare one of the most effective tools to facilitate your research. Welcome new OWW users! Jacob Gudger • ROBIN ABRAHAM Nadar • Peiju Liao • Atul Kaushik • UwDNA Team • Joe Phillips • Shiori Sasaki • Ann Lesnefsky • Florian Stehr • Sebastian Huber • Maxat Zhabagin • Mey Takematsu • Reanna Edgerton • Nancy Yuan • Paresh Atu Jaini • Edmund Fung • Hyunju Ryu • James L Funderburgh • Jose Ysla • Simon Ardui See all new users. Jack Andraka
  • 10.
  • 11.
  • 12.
    Non solo elettronica Strumenti Musicali
  • 13.
  • 14.
  • 15.
    Non solo elettronica Frugal Innovation Jugaad
  • 16.
    Non solo elettronica E ovviamente . . .3D Printing!
  • 17.
    Condivisione La dierenzafondamentale fra i maker di oggi e quelli di 50 anni fa è la condivisione Dale Dougherty
  • 18.
    Condivisione La dierenzafondamentale fra i maker di oggi e quelli di 50 anni fa è la condivisione Dale Dougherty Il mezzo che ha maggiormente permesso questo è la rete Internet
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    Alcune regole ◮Il percorso è più importante del prodotto
  • 38.
    Alcune regole ◮Il percorso è più importante del prodotto ◮ Alzati e crea qualcosa!
  • 39.
    Alcune regole ◮Il percorso è più importante del prodotto ◮ Alzati e crea qualcosa! ◮ Da consumatori a produttori
  • 40.
    Alcune regole ◮Il percorso è più importante del prodotto ◮ Alzati e crea qualcosa! ◮ Da consumatori a produttori ◮ Ad ogni età
  • 41.
    Alcune regole ◮Il percorso è più importante del prodotto ◮ Alzati e crea qualcosa! ◮ Da consumatori a produttori ◮ Ad ogni età ◮ Non è necessario essere tecnici
  • 42.
    Open Source Unabuona condivisione comincia con una buona licenza
  • 43.
    Open Source Unabuona condivisione comincia con una buona licenza Contrapponendosi alle licenze per software pro-prietario, la GNU GPL assicura all’utente libertà di utilizzo, copia, modica e distribuzione. (Fonte: Wikipedia)
  • 44.
    Creative Commons “Open”riguarda 3 Dimensioni di un’opera: ◮ Attribution
  • 45.
    Creative Commons “Open”riguarda 3 Dimensioni di un’opera: ◮ Attribution ◮ (Non)Commercial
  • 46.
    Creative Commons “Open”riguarda 3 Dimensioni di un’opera: ◮ Attribution ◮ (Non)Commercial ◮ (No)Derivatives/ShareAlike
  • 47.
    Creative Commons “Open”riguarda 3 Dimensioni di un’opera: ◮ Attribution ◮ (Non)Commercial ◮ (No)Derivatives/ShareAlike Uno degli esempi più ampi di : Wikipedia: +4.000.000 voci!
  • 48.
    Open software ◮gcc Credits: Zoe Romano
  • 49.
    Open software ◮gcc ◮ Linux/FreeRTOS Credits: Zoe Romano
  • 50.
    Open software ◮gcc ◮ Linux/FreeRTOS ◮ U-Boot/Barebox Credits: Zoe Romano
  • 51.
    Open software ◮gcc ◮ Linux/FreeRTOS ◮ U-Boot/Barebox ◮ GitHub Credits: Zoe Romano
  • 52.
    Open (easy, cheap)hardware ◮ Il design hardware è sempre stato “open” ◮ I produttori forniscono da sempre reference design e application note e le aziende li usano (il produttore guadagna sui pezzi) ◮ Il piccolo progettista però non ha le risorse per fare schede complesse in casa
  • 53.
    Una volta c’erail PIC. . . ◮ Prendi una board ◮ Studiati il microcontrollore ◮ Studiati la “libreria” ◮ Cross-compila ◮ Programma ◮ Run ◮ Debug ◮ Attaccaci qualcosa
  • 54.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea
  • 55.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea ◮ Interazione semplicata
  • 56.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea ◮ Interazione semplicata ◮ Unbrickable
  • 57.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea ◮ Interazione semplicata ◮ Unbrickable ◮ Hardware sotto licenza
  • 58.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea ◮ Interazione semplicata ◮ Unbrickable ◮ Hardware sotto licenza ◮ IDE sotto licenza GPL
  • 59.
    Poi arrivò Arduino™ ◮ Progetto nato all’Interaction Design Institute di Ivrea ◮ Interazione semplicata ◮ Unbrickable ◮ Hardware sotto licenza ◮ IDE sotto licenza GPL ◮ Solo il nome Arduino e il suo logo sono protetti
  • 60.
  • 61.
  • 62.
  • 63.
    Arduino Osservazioni ◮Pin collegati direttamente all’esterno: povero ATMEGA328P! ◮ C’è un fusibile ripristinabile: il PC è “protetto” ◮ Qualche conoscenza di elettrotecnica non guasta ◮ Qualche strumento (multimetro, meglio oscilloscopio) non guasta
  • 64.
    Arduino Osservazioni ◮Pin collegati direttamente all’esterno: povero ATMEGA328P! ◮ C’è un fusibile ripristinabile: il PC è “protetto” ◮ Qualche conoscenza di elettrotecnica non guasta ◮ Qualche strumento (multimetro, meglio oscilloscopio) non guasta Però ◮ Facile da mettere in piedi ◮ Relativamente indistruttibile ◮ Libreria molto ben strutturata
  • 65.
    Arduino Osservazioni ◮Pin collegati direttamente all’esterno: povero ATMEGA328P! ◮ C’è un fusibile ripristinabile: il PC è “protetto” ◮ Qualche conoscenza di elettrotecnica non guasta ◮ Qualche strumento (multimetro, meglio oscilloscopio) non guasta Però ◮ Facile da mettere in piedi ◮ Relativamente indistruttibile ◮ Libreria molto ben strutturata ◮ Finalmente un collegamento con il mondo esterno!
  • 66.
  • 67.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali
  • 68.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz)
  • 69.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit)
  • 70.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit) ◮ DC current per I/O pin: 40mA
  • 71.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit) ◮ DC current per I/O pin: 40mA ◮ Flash memory: 32KB (di cui 0.5KB per il bootloader)
  • 72.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit) ◮ DC current per I/O pin: 40mA ◮ Flash memory: 32KB (di cui 0.5KB per il bootloader) ◮ EEPROM: 1KB
  • 73.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit) ◮ DC current per I/O pin: 40mA ◮ Flash memory: 32KB (di cui 0.5KB per il bootloader) ◮ EEPROM: 1KB ◮ Clock: 16MHz
  • 74.
    Arduino I/O ◮5V DC ◮ 14 I/O digitali (6 PWM @500Hz) ◮ 6 input analogici (10bit) ◮ DC current per I/O pin: 40mA ◮ Flash memory: 32KB (di cui 0.5KB per il bootloader) ◮ EEPROM: 1KB ◮ Clock: 16MHz ◮ Prezzo: meno di 30€
  • 75.
  • 76.
    Arduino Programmazione Siprogramma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo nta che sia C++)
  • 77.
    Arduino Programmazione Siprogramma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo nta che sia C++) Il caro vecchio main loop.
  • 78.
    Arduino Programmazione Siprogramma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo nta che sia C++) Il caro vecchio main loop. Esempio C-like: void setup(void) { . . . } void loop(void) { . . . }
  • 79.
    Arduino Programmazione Siprogramma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo nta che sia C++) Il caro vecchio main loop. Esempio C-like: void setup(void) { . . . } void loop(void) { . . . } void main (void) { setup ( ) ; for ( ; ; ) { loop ( ) ; } }
  • 80.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT
  • 81.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT ◮ Serial.begin(baud)
  • 82.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT ◮ Serial.begin(baud) ◮ setto le variabili globali (sic. . . )
  • 83.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT ◮ Serial.begin(baud) ◮ setto le variabili globali (sic. . . ) Loop ◮ Circa 10KHz di frequenza massima su UNO
  • 84.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT ◮ Serial.begin(baud) ◮ setto le variabili globali (sic. . . ) Loop ◮ Circa 10KHz di frequenza massima su UNO ◮ Non mantiene le variabili locali
  • 85.
    Programmazione Setup Documentazione:❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡ ◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP]) NB: Si accendono tutti come INPUT ◮ Serial.begin(baud) ◮ setto le variabili globali (sic. . . ) Loop ◮ Circa 10KHz di frequenza massima su UNO ◮ Non mantiene le variabili locali ◮ Problema del tempo
  • 86.
    Tempo ◮ delay()e delayMicroseconds()
  • 87.
    Tempo ◮ delay()e delayMicroseconds() ◮ Problema: bloccano il loop. Ritardo su eventi asincroni
  • 88.
    Tempo ◮ delay()e delayMicroseconds() ◮ Problema: bloccano il loop. Ritardo su eventi asincroni Soluzioni: ◮ interrupt: solo se indispensabili ◮ millis() micros() e deadline: i f (micros ( ) = deadline ) { deadline += PERIOD; do_something( ) ; }
  • 89.
    Tempo ◮ delay()e delayMicroseconds() ◮ Problema: bloccano il loop. Ritardo su eventi asincroni Soluzioni: ◮ interrupt: solo se indispensabili ◮ millis() micros() e deadline: i f (micros ( ) = deadline ) { deadline += PERIOD; do_something( ) ; } ◮ . . . e controllo della durata dei calcoli
  • 90.
    Funzioni utili ◮constrain(x,a,b) ◮ map(value,fromLow,fromHigh,toLow,toHigh)
  • 91.
    Tanti Arduino ◮Nano/Micro/Mini ◮ Leonardo ◮ Mega ◮ UNO ◮ DUE ◮ TRE ◮ Yún ◮ LilyPad ◮ Ethernet ◮ Galileo ◮ . . .
  • 92.
    Shields ◮ Adafruit❤tt♣✿✴✴✇✇✇✳❛❞❛❢r✉✐t✳❝♦♠✴ ◮ Seeedstudio ❤tt♣✿✴✴✇✇✇✳s❡❡❡❞st✉❞✐♦✳❝♦♠✴ ◮ Sparkfun ❤tt♣s✿✴✴✇✇✇✳s♣❛r❦❢✉♥✳❝♦♠✴ ◮ Robot-italy ❤tt♣✿✴✴✇✇✇✳r♦❜♦t✲✐t❛❧②✳❝♦♠✴ ◮ Futura elettronica ❤tt♣✿✴✴✇✇✇✳❢✉t✉r❛s❤♦♣✳✐t✴ ◮ Pin compatibili con “tutti” gli Arduino ◮ Impilabili con qualche limite
  • 93.
    Shields ◮ Ethernet/Wi ◮ GSM/GPRS ◮ GPS ◮ Accelerometri/magnetometri ◮ Relé ◮ Motori ◮ Meteo ◮ Ph-Metri ◮ Contatori Geiger ◮ XBee ◮ Arducopter ◮ Groove
  • 94.
    Raspberry PI ◮Non completamente “open”, ma molto economico
  • 95.
    Raspberry PI ◮Non completamente “open”, ma molto economico ◮ Broadcom ARM11 @700MHz
  • 96.
    Raspberry PI ◮Non completamente “open”, ma molto economico ◮ Broadcom ARM11 @700MHz ◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 video decoder)
  • 97.
    Raspberry PI ◮Non completamente “open”, ma molto economico ◮ Broadcom ARM11 @700MHz ◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 video decoder) ◮ Circa 35€ (25€ senza Ethernet)
  • 98.
    Raspberry PI ◮Non completamente “open”, ma molto economico ◮ Broadcom ARM11 @700MHz ◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264 video decoder) ◮ Circa 35€ (25€ senza Ethernet) ◮ SD Card e alimentazione un po’ critici
  • 99.
    Raspberry PI-Espansioni ◮Innumerevoli schede ◮ Compatibili con Arduino ◮ Raspberry PI camera: 5MP, 1080p@30fps, 20€ ◮ Purtroppo il loro costo è comparabile con quello della mainboard . . .
  • 100.
  • 101.