Da Zero a MakerMatteo Fortini25 Ottobre 2014#LinuxDayFEFerrara
Chi è il Maker?
Tu vedi cose e ti chiedi «perché?»,io invece immagino coseche non sono mai esistiteemi chiedo: «perché no?»
G.B.Shaw
Chi è il Maker?
Ho fatto quello che estremamente mi piaceva. . .se poi questo ha portato bene�cio-diretto od indiretto- agli altri,questa è una giusti�cazione al mioegoismo 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, hackingPlease, void you warranty
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.
makezine.com
Drafted by Mister Jalopy, with assistance from Phillip Torrone and Simon Hill.
ElettronicaGSM Phone
Foto: dam (Flickr)
Non solo elettronicaVeicoli
Tabby OSVehicle Arducopter
Non solo elettronicaAbbigliamento
Non solo elettronicaBiologia
OpenWetWare is an effort to promote the sharing of information, know-how, and wisdom amongresearchers and groups who are working in biology & biological engineering. Learn more aboutus. If you would like edit access, would be interested in helping out, or want your labwebsite hosted on OpenWetWare, please join us. OpenWetWare is managed bytheBioBricks Foundation .
Labs &GroupsFrom around the world
CoursesHost & view classes
ProtocolsShare techniques & more
BlogsRead OWW blogs
OWW Community BlogContribute for a strong synbiocommunityThe BioBricks Foundation (BBF)is a publicbenefit organizationadvancing synthetic biology tobenefit all people and the planet.BioBricks Foundation SyntheticBiology 6.0 Conference announced:July 911, 2013Dear SynBio CommunityMembers: The BioBricksFoundation is pleased toannounce The BioBricksFoundation Synthetic Biology 6.Winners ofBioBricks/OpenWetWareImprovement SurveyDear OpenWetWare Community,Thank you for your participation inthe OWW improvement survey.We thank you for all your valuableinput toward makingOpenWetWare one of the mosteffective tools to facilitate yourresearch.
Welcome new OWW users!Jacob Gudger • ROBIN ABRAHAM Nadar • PeijuLiao • Atul Kaushik • UwDNA Team • JoePhillips • Shiori Sasaki • AnnLesnefsky • Florian Stehr • SebastianHuber • Maxat Zhabagin • MeyTakematsu • Reanna Edgerton • NancyYuan • Paresh Atu Jaini • EdmundFung • Hyunju Ryu • James LFunderburgh • Jose Ysla • Simon Ardui
See all new users.
Jack Andraka
Non solo elettronicaBotanica
Non solo elettronicaPasta
Non solo elettronicaStrumenti Musicali
Non solo elettronicaDati
Non solo elettronicaSocietà
Non solo elettronicaFrugal Innovation
Jugaad
Non solo elettronicaE ovviamente . . . 3D Printing!
Condivisione
La di�erenza fondamentale fra i maker di oggi e quelli di50 anni fa è la condivisione
Dale Dougherty
Condivisione
La di�erenza fondamentale fra i maker di oggi e quelli di50 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: aerofotogra�a
Collaborazione: aerofotogra�a
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 cominciacon una buona licenza
Open Source
Una buona condivisione cominciacon una buona licenza
Contrapponendosi alle licenze per software pro-prietario,la GNU GPL assicura all’utente libertà di utilizzo,copia,modi�ca 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 referencedesign e application note e le aziende li usano(il produttore guadagna sui pezzi)
◮ Il piccolo progettista però non ha le risorse perfare schede complesse in casa
Una volta c’era il PIC. . .
◮ Prendi una board◮ Studiati ilmicrocontrollore
◮ Studiati la“libreria”
◮ Cross-compila◮ Programma◮ Run◮ Debug◮ Attaccaci qualcosa
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
◮ Interazione sempli�cata
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
◮ Interazione sempli�cata◮ Unbrickable
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
◮ Interazione sempli�cata◮ Unbrickable
◮ Hardware sotto licenza
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
◮ Interazione sempli�cata◮ Unbrickable
◮ Hardware sotto licenza◮ IDE sotto licenza GPL
Poi arrivò Arduino™
◮ Progetto nato all’Interaction Design Institute diIvrea
◮ Interazione sempli�cata◮ Unbrickable
◮ Hardware sotto licenza◮ IDE sotto licenza GPL◮ Solo il nome Arduino e il suo logo sono protetti
ArduinoStandard di fatto
ArduinoStandard di fatto
ArduinoStandard di fatto
ArduinoOsservazioni
◮ Pin collegati direttamente all’esterno: poveroATMEGA328P!
◮ C’è un fusibile ripristinabile: il PC è “protetto”◮ Qualche conoscenza di elettrotecnica non guasta◮ Qualche strumento (multimetro, megliooscilloscopio) non guasta
ArduinoOsservazioni
◮ Pin collegati direttamente all’esterno: poveroATMEGA328P!
◮ C’è un fusibile ripristinabile: il PC è “protetto”◮ Qualche conoscenza di elettrotecnica non guasta◮ Qualche strumento (multimetro, megliooscilloscopio) non guasta
Però◮ Facile da mettere in piedi◮ Relativamente indistruttibile◮ Libreria molto ben strutturata
ArduinoOsservazioni
◮ Pin collegati direttamente all’esterno: poveroATMEGA328P!
◮ C’è un fusibile ripristinabile: il PC è “protetto”◮ Qualche conoscenza di elettrotecnica non guasta◮ Qualche strumento (multimetro, megliooscilloscopio) non guasta
Però◮ Facile da mettere in piedi◮ Relativamente indistruttibile◮ Libreria molto ben strutturata◮ Finalmente un collegamento con il mondoesterno!
ArduinoI/O
◮ 5V DC
ArduinoI/O
◮ 5V DC◮ 14 I/O digitali
ArduinoI/O
◮ 5V DC◮ 14 I/O digitali (6 PWM @500Hz)
ArduinoI/O
◮ 5V DC◮ 14 I/O digitali (6 PWM @500Hz)◮ 6 input analogici (10bit)
ArduinoI/O
◮ 5V DC◮ 14 I/O digitali (6 PWM @500Hz)◮ 6 input analogici (10bit)◮ DC current per I/O pin: 40mA
ArduinoI/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 ilbootloader)
ArduinoI/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 ilbootloader)
◮ EEPROM: 1KB
ArduinoI/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 ilbootloader)
◮ EEPROM: 1KB◮ Clock: 16MHz
ArduinoI/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 ilbootloader)
◮ EEPROM: 1KB◮ Clock: 16MHz◮ Prezzo: meno di 30€
ArduinoProgrammazione
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo �nta che sia C++)
ArduinoProgrammazione
Si programma in wiring ❤tt♣✿✴✴✇✐r✐♥❣✳♦r❣✳❝♦✴ (fac-ciamo �nta che sia C++)Il caro vecchio main loop.
ArduinoProgrammazione
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){
. . .}
ArduinoProgrammazione
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
SetupDocumentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP])NB: Si accendono tutti come INPUT
Programmazione
SetupDocumentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP])NB: Si accendono tutti come INPUT
◮ Serial.begin(baud)
Programmazione
SetupDocumentazione: ❤tt♣✿✴✴❛r❞✉✐♥♦✳❝❝✴❡♥✴❘❡❢❡r❡♥❝❡✴❍♦♠❡P❛❣❡
◮ pinMode([INPUT|OUTPUT|INPUT_PULLUP])NB: Si accendono tutti come INPUT
◮ Serial.begin(baud)◮ setto le variabili globali (sic. . . )
Programmazione
SetupDocumentazione: ❤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
SetupDocumentazione: ❤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
SetupDocumentazione: ❤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 eventiasincroni
Tempo
◮ delay() e delayMicroseconds()◮ Problema: bloccano il loop. Ritardo su eventiasincroni
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 eventiasincroni
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 moltoeconomico
Raspberry PI
◮ Non completamente “open”, ma moltoeconomico
◮ Broadcom ARM11 @700MHz
Raspberry PI
◮ Non completamente “open”, ma moltoeconomico
◮ Broadcom ARM11 @700MHz◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264video decoder)
Raspberry PI
◮ Non completamente “open”, ma moltoeconomico
◮ Broadcom ARM11 @700MHz◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264video decoder)
◮ Circa 35€ (25€ senza Ethernet)
Raspberry PI
◮ Non completamente “open”, ma moltoeconomico
◮ Broadcom ARM11 @700MHz◮ GPU (OpenGL-ES, OpenVG, 1080p30 H.264video 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 quellodella mainboard . . .
Beaglebone Black
Conclusioni
◮ Buon making!