Da zero a maker: condivisione, collaborazione, open source
1. Da Zero a Maker
Matteo Fortini
25 Ottobre 2014
#LinuxDayFE
Ferrara
2. 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
3. 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
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.
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 publicbenefit
organization
advancing synthetic biology to
benefit all people and the planet.
BioBricks Foundation Synthetic
Biology 6.0 Conference announced:
July 911,
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
17. Condivisione
La dierenza fondamentale fra i maker di oggi e quelli di
50 anni fa è la condivisione
Dale Dougherty
18. 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
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
Una buona condivisione comincia
con una buona licenza
43. 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)
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!
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’era il 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
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!
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€
77. Arduino
Programmazione
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo
nta che sia C++)
Il caro vecchio main loop.
78. 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)
{
. . .
}
79. 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 ( ) ;
}
}
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
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
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 . . .