Da zero a maker: condivisione, collaborazione, open source

Post on 27-Jun-2015

915 views 7 download

description

Presentazione al LinuxDay di Ferrara 2014 sul mondo dei maker

Transcript of Da zero a maker: condivisione, collaborazione, open source

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 public­benefit organizationadvancing synthetic biology tobenefit all people and the planet.BioBricks Foundation SyntheticBiology 6.0 Conference announced:July 9­11, 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€

Progettazione

Fritzing (❤tt♣✿✴✴❢r✐t③✐♥❣✳♦r❣✴)

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!