Press "Enter" to skip to content

GOTO 2016 • MicroPython & the Internet of Things • Damien George


il mio nome è Damien George, quindi mi limito a dare
una molto breve rassegna sulla mi
era un fisico teorico
lavorando in una sorta di teoria delle stringhe relativa
argomenti ma ho anche fatto una laurea in
università e computer e ingegneria
e in realtà ero su un team di RoboCup
molti anni fa, forse otto anni fa
lavorare con i cani a quattro zampe Sony così
avresti potuto vederlo ieri è
molto divertente lavorare con quello ma così
durante il mio periodo come fisico ho ottenuto un
bit sidetracked e riscritto Python in
correre su microcontrollori e ora che ha
preso il mio tempo e te lo dirò a
un po ‘di quello che ho fatto lì dentro e come
sta andando così non dimenticare di votare il
sessione alla fine ora l’idea
dietro a micro Python c’è quella elettronica
circuiti piccoli microcontrollori
oggigiorno stanno diventando molto molto
complicato proprio come i computer sono e
c’è un sacco di funzionalità in un piccolo
piccolo chip e per ottenere il massimo
fuori da questi chip ho pensato che sarebbe stato
buono per avere un linguaggio di livello superiore
piuttosto che vedere o assemblare per programmare
loro quindi l’idea era di stare bene a vedere
se fosse possibile mettere Python su a
microcontrollore per rendere Python piccolo
abbastanza e usare le risorse non così
intensivamente in modo che tu possa usarlo come
un linguaggio di applicazione su a
microcontrollore così sappiamo tutti che
linguaggi di alto livello come JavaScript e
Python e Ruby hanno aiutato immensamente in
il ciclo di sviluppo del codice così tu
sapere se vuoi scrivere una sceneggiatura veloce
lo scrivi in uno dei tuoi preferiti
linguaggi di scripting e ottieni
qualcosa fatto in 5-10 minuti e forse
questo è tutto ciò che devi fare o forse tu
conoscilo e poi riscriverlo in qualche altro
linguaggio come Java o C ++ una volta che hai
testato l’idea in modo che lingue come
Python è buono per la prototipazione ma anche
a volte abbastanza buono per la finale
prodotto se le prestazioni non sono grandi
emettere così lo stesso
concetto può essere applicato al
mondo microcontrollore così
i microcontrollori come ho detto stanno diventando
più complicato e loro sono al
indica ora dove hanno appena abbastanza
risorse per iniziare a eseguirle
linguaggi di scripting e la ragione per cui
non è una cosa facile da fare perché
per esempio con la quantità di RAM
è circa un centinaio di kilobyte quindi in a
cento kilobyte che devi fare
tutto ciò che devi avere una pila e
un mucchio e tutti i tuoi dati e avere un
linguaggio come Python che esegue 100
kilobyte non è facile , ma per a
un po ‘del discorso di cui parlerò esattamente
come funziona in che modo Python può essere eseguito
un tale piccolo ricordo, ma prima di tutto così
perché ho persino scelto Python 2 per andare
in fondo a questa Avenue, intendo io
piaciuto Python è una lingua molto bella
da usare penso che sia un livello molto alto
lingua e ha davvero molto bene
caratteristiche come la comprensione delle liste per
esempio e generatori e molto buono
meccanismi di gestione delle eccezioni uno dei
Penso che i punti per Python siano grandi
ha una comunità molto grande che è molto
amichevole e molto utile c’è molto
di risorse online per l’ apprendimento
Penso che Python sia anche molto
linguaggio facile da imparare forse non lo fai
come l’ idea dello spazio bianco e del nuovo
linee e rientranza invece di
parentesi graffe, ma in realtà a superare
è abbastanza veloce ed è bello e pulito
Penso di trovare e direi che Python ha un
curva di apprendimento davvero superficiale ma lunga
così puoi saltare molto facilmente e
puoi camminare e puoi iniziare
imparare cose nuove e cose nuove e
diventi sempre più produttivo ma
continua questa curva di apprendimento perché
ci sono così tante librerie e così tante
cose che puoi fare con Python così tante
funzionalità avanzate che conosci come a
sviluppatore non ti annoi mai veramente
con la lingua c’è sempre di più
cose sofisticate puoi farlo
impara per farti di più
produttivo e penso che sia in realtà uno
dei linguaggi di scripting più ideali
per i microcontrollori perché ha
operazioni bit a bit native ad esempio
come e ‘e o’ e quando sei
stai lavorando con i miei controller
lavorare con bit uno e zero così
essere in grado di fare bit per bit ed è davvero
importante
a differenza, ad esempio, di Lua che non lo fa
avere quei tipi di costruisce anche
ha una distinzione molto buona tra
numeri interi e numeri in virgola mobile così
sai se hai un tipo intero
anche se è di tipo dinamico
se hai un intero e ne aggiungi uno
rimane un numero intero e puoi mantenerlo
aggiungendo uno perché è trasparente
transizione a precisione arbitraria
numeri e se si dispone di un punto a virgola mobile
numero come sai 0.5 allora rimane
un numero in virgola mobile e questo è
davvero importante nel microcontrollore
contesto perché a volte hai bisogno di a
Numero a 32 bit e hai bisogno di saperlo
in realtà hanno la precisione di 32
i bit in contrasto dicono a JavaScript che
tutto è un numero è in realtà solo
un numero in virgola mobile a doppia precisione
quindi se continuo ad aggiungerne uno in JavaScript
alla fine non posso aggiungerne uno più
perché ho 10 o più 100
1 è ancora 10 per cento quando hai
ottenuto un numero di precisione doppio ma in
Python se continui ad aggiungerne uno solo
il numero cresce, cresce e cresce così
avere questa precisione rispetto a
i tipi che penso sono molto importanti in a
l’impostazione del microcontrollore c’è anche
perché python è compilato tu hai
opportunità di ottimizzazione come te
Conoscere con motori a reazione in Java e
JavaScript ci sono un sacco di cose
può essere fatto lì per migliorare le prestazioni
se ne hai bisogno quindi immagino il grande
domanda : sai perché perché non possiamo
usa le implementazioni esistenti di Python
che è chiamato C Python perché è
scritto in C e ce ne sono altri
implementazioni di Python quindi perché non può
ne prendiamo solo uno e lo compiliamo
per un microcontrollore e basta eseguirlo su
il microcontrollore quindi la ragione è
che queste lingue queste esistono
le implementazioni sono abbastanza intense
termini di utilizzo della memoria, ad esempio a
singolo oggetto intero perché è un
oggetto che porta in giro un sacco di
informazioni come è stato nominato per il suo
digitare un conteggio di riferimento e il reale
valore stesso così il numero uno in condizioni normali
Python occupa circa 16 byte del tuo
memoria e deve vivere sul mucchio
perché è un oggetto che può avere
durata estesa fuori dal
funzione attuale quindi devi sempre
si sta facendo che uno più due per
esempio hai bisogno di molta memoria
allocare ed è anche piuttosto
bene inefficiente per aggirare questo
inefficienza in cpython giorno quando il
interprete lo avvia in realtà pre
alloca tutti i numeri da meno
cinque a più 257 perché sono il
numeri più comunemente usati in modo che quando
aggiungi uno più due uguale a tre il
gli oggetti esistono già lì tu sei giusto
facendo riferimento a quelli diversi ma
tuttavia se creo la creazione preliminare
tutti questi e interi che sta usando
circa quattro kilobyte di memoria proprio quando
Inizio a fare numeri così è
non un modo efficace da a
punto di vista del microcontrollore perché
che è quattro kilobyte di memoria solo
sprecato potrebbe essere lo sai metà
la tua memoria quindi questa è una delle ragioni
valuta bene un motivo molto grande per cui tu
non si può semplicemente prendere il normale Python l’altro
uno è quello se volessi fare un metodo
chiama così in Python le cose sono per lo più
oggetti quindi se ho un oggetto LED e io
voglio accenderlo così LED su quello che io
in realtà deve fare è ottenere il LED
oggetto cerca il metodo on ed estrai
quello e poi fa un metodo vincolato
oggetto che lega il metodo on al
Oggetto LED e quindi lo si chiama effettivamente
Quindi, in che si chiama in realtà hanno a
crea un oggetto intermedio che è
il metodo associato richiede circa 20 byte
come scritto lì solo per impostare il led
a qualche intensità richiede circa 36
byte di RAM per memorizzare il numero e per
memorizza l’ oggetto metodo associato e questo
oltre a usare la nostra memoria è anche
non va bene da una sorta di velocità e
punto di vista dell’efficienza e del determinismo
quindi se sto eseguendo il mio codice, cosa succede se io
non posso allocare sullo heap che devo fare
una raccolta dei rifiuti che non è così
bene se voglio solo accendere una luce
quindi ci sono cose come questa che fanno
è difficile eseguire normale Python sotto il mio
controller cappa e poi ce ne sono altri
cose che usano memoria heap come per
loop per esempio okay, quindi ho questo
idea quindi di riscrivere Python e da
zero e ho anche avuto l’idea che io
volevo fare un progetto Kickstarter così
Kickstarter è questo crowdfunding
piattaforma dove si lancia un’idea e
sbirciare
ti daremo i soldi per soddisfarlo
spero che l’idea soddisfi l’idea, così ho avuto
queste due cose Python micro Python
idea di mettere su un controller e solo per
guarda come è stato fare un Kickstarter
ci sono voluti circa sei mesi per andare dal
inizio iniziale dell’idea al
avvio effettivo della campagna e
quello era ancora nel 2013 quindi circa tre
anni fa due anni e mezzo fa e
dal dopo circa sei mesi di fare di
in realtà lavorando a questo stavo pensando
ogni giorno o qualcuno mi picchia
ad esso
qualcuno scriverà un percorso in un
modo diverso per un microcontrollore
perché non si sa quando si è in
nel mezzo di un’idea tu pensi sempre che sia
la più grande idea e tutti gli altri
vuole sapere cosa ti sta per battere
esso
quindi è stato come un weekend per fare un
video per Kickstarter e poi lo sai
lo pubblichi per kickstart e tu dici
sì, voglio solo ottenere questo là fuori
Sono stufo di lavorarci adesso
Voglio solo vedere se riuscirà così
quando quando premevo sai lanciare il
progetto che ero abbastanza sollevato di avere
questa cosa là fuori, ma poi è così
in realtà quando inizia il duro lavoro
perché hai un sacco di gente
contattandoti e diventa di più
e più intenso col passare del tempo
comunque, ma che il progetto Kickstarter
ha avuto molto successo e abbiamo ottenuto quasi un
centomila sterline e quasi due
mille persone impegnate a sostenere e io
penso che fossero semplicemente eccitati dall’idea
di un po ‘del tipo di figo
tecnologia che era il micro Python
portando spiegherò un po ‘ su questo
nelle prossime slide ma sì è stato un
risposta molto travolgente per me e
ma davvero bello averlo
progetto ed è stato adempiuto dopo circa
un anno e mezzo circa due anni
sin dall’inizio così nel 2015 ad aprile I
l’ho chiamato ufficialmente, quindi lo farei
finito tutti i premi e e e
Detto questo, voglio dire che non lo è
significa che il progetto ha completato il microbioma
continua ma lo stesso kickstarter
era finito ma proprio come una nota così
kickstarter stesso ha finora finanziato 1
miliardi di dollari in dollari di progetti
quindi hanno preso 1 miliardo di dollari
e dato fuori
tranne che mantengono il 5% così è
per loro è abbastanza buono farlo
parte di una parte del Kickstarter era
crea piccole schede per microcontrollori e
darli alle persone come ricompensa e noi
è andato a un PCB locale una casa di assemblaggio PCB
nel Regno Unito a Luton e sono stati molto
gentile e disponibile e loro davvero
voleva lavorare con noi perché loro
pensato bene quindi la tecnologia gel è più di un
commento di come funzionano con lo spazio
progetti e parti del LHC il
Collider del CERN e volevano ottenere
più in cose dirette al consumatore loro
pensato bene se noi con cui collaboriamo
con Damon qui e costruisci questi piccoli
tavole sai che possiamo ottenere intuizioni
in più del lato consumatore delle cose
quindi erano davvero entusiasti e lo sai
ti invitano e ti danno il pranzo gratis
e così via e mostrarti il
fabbrica ed è davvero bello da vedere
all’interno di una fabbrica e vedere tutto il
macchine in movimento e penso che tu conosca noi
quando abbiamo detto tutto ciò che dobbiamo fare 3.000
di queste cose hanno detto wow that
quello che conosci normalmente era solito
come cento o duecento, ma di una certa
caricatore per auto enorme scossa o qualcosa del genere
così facendo tremila era un sacco per
loro anche se erano ovviamente per
unità è un costo molto piccolo ma così così
era un po ‘una sfida per loro come
bene per ottenere questo molte unità spedite ma
dal pozzo fino ad oggi che abbiamo fatto
circa 13.000 schede più con loro e
si sono stati molto bravi ed è così
Sì, sicuramente vale la pena lavorare con un
produttore locale piuttosto che qualcuno
da esempi dalla Cina
solo perché le comunicazioni sono così tante
più facile puoi letteralmente guidare un
ora e visitarli è stato davvero
okay ok ma consegna sul calcio
l’antipasto è che non so se lo hai mai fatto
fatto uno o se hai visto conoscere qualcuno
chi ne ha fatto uno ma in realtà sta inviando
un aspro 2.000 cose è un lungo e
processo arduo in questa immagine qui
a sinistra credo ci siano quattro dottori di ricerca
stando seduto e impacchettato quindi mandi un
molte cose e sì, fai amicizia con te
aiutare bene così come ho detto all’inizio
la ragione per cui avevo bisogno non potevo
prendere cpython era perché il principale
il consumo è troppo alto e quindi tutto
i trucchi che ho messo in micro
Pythian sono al fine di ridurre il
consumo di memoria stringhe così va bene sono
internato, il che significa che sei un po ‘te
fare una corda e mortale e quella o
che aiuta con efficienza e anche
l’uso della memoria così come i nostri numeri
sono riparati in modo da non usare il calore
ricordi che in realtà importi i numeri
in un puntatore e ti spiego su
quello sulla prossima slide e questo è un
trucco da Lisp di molto tempo fa
ci sono ottimizzazioni per il metodo
chiama in modo che non utilizzino l’heap per
i loop non usano l’heap che usano
stack invece e un sacco di cose dove
possibile, invece , vivrà in pila
di allocare memoria sull’heap e
tutto il resto è una specie di
tipo di oggetto di allocazione statica come
un modulo che va effettivamente in ROM o in
flash in memoria di sola lettura, quindi quando il mio
il condensatore si avvia quasi quasi
istantaneo perché tutto è
già pre-calcolati e memorizzati in dentro
la sezione di codice di sola lettura in modo che
anche questo è un trucco molto importante
e non usa il conteggio dei riferimenti
come cpython per risparmiare memoria così
usa solo la garbage collection e
ci sono sì, ci sono delle eccezioni
implementato usando una specie di set jump lungo
salta se sai cosa è da C
questo è solo un piccolo diagramma su come
le parti interne del compilatore e del
la macchina virtuale funziona così su
il lato sinistro è una sorta di compilazione
stage in modo che le sceneggiature diventino lessicali
analizzatore quale token eise e quindi
che lo trasforma in un albero di analisi e quindi
il compilatore attraversa l’albero di analisi
e lo annota con qualche tipo di
informazioni un numero di variabili locali
e così via e poi alla fine emette
bytecode e poi sul lato destro
di questo diagramma la macchina virtuale
Esegue il bytecode e utilizza
funzioni di supporto per fare cose come te
sapere inserire le cose nei dizionari o
cercare cose in una stringa o
concatena le stringhe e fa altre cose
come se le liste sollevassero eccezioni
e quindi che può chiamare qualsiasi esterno
c-code o qualsiasi altra lingua giù per la
in basso a destra e poi puoi
in realtà genera codice e ricompila
dentro se stesso quindi è completamente
linguaggio dinamico che il compilatore può anche
emettere un codice macchina nativo molto simile a
come la compilazione in anticipo e lo farò
spiegaci un po ‘ di quello che sta succedendo
quindi qui sto cercando di spiegare come
questo funziona con un po ‘di riempimento del puntatore
interi così questo come ho detto è un vecchio
idea da Lisp forse penso questo
lo ha fatto da pioniere, quindi diciamo che abbiamo un 32 bit
macchina e abbiamo un puntatore abbiamo a
Parola a 32 bit e vogliamo ottenere il massimo
fuori da questa parola, quindi se il più se il
il bit meno significativo è impostato su 1 allora
i 31 bit superiori rappresentano effettivamente un
intero quindi ho 31 bit da rappresentare
un intero dice da meno 1 miliardo a
più 1 miliardo ma se il bit più basso è
in realtà zero allora ho quelli più alti
i bit possono memorizzare qualcos’altro e
in realtà usiamo uno schema in cui se a
po ‘più basso è 0 allora deve guardare
il prossimo bit quindi se il prossimo bit 1 è
una stringa se i successivi bit 0 allora il
i bit superiori sono in realtà un puntatore
perché i puntatori sono allineati a 4 di
è solo il modo in cui gli oggetti devono essere
allineato questo non perde alcun indirizzo
spazio a tutti quindi se i due bit più bassi
sono 0 significa che hai il tuo 32-bit
parole che in realtà puntano a qualcosa
come una lista o un dizionario o un
numero a virgola mobile per esempio o a
classe e in questo modo sei davvero
consumando tutto lo spazio della codifica
lo spazio in questa città dovrebbe essere il numero
è possibile memorizzare in modo efficiente il tuo
numeri quindi se faccio 1 più 2 poi il
le informazioni sono tutte archiviate nel
puntatore vero e proprio che vive sul
impilare o vive letteralmente all’interno del
lista attuale che in realtà non è necessario
immagazzinare sullo heap ovunque così sia
il trucco principale che usi per non aver bisogno
usare così tanto l’heap
e ci sono altri schemi che puoi usare
a specie di cose a virgola mobile a 30 bit
numeri all’interno di una parola macchina
e poi c’è anche questa cosa chiamata
nan boxing dove hai un tu usi
Parole a 64 bit e potrebbero inserire in
Numero a precisione doppia a 64 bit, nonché
come interi e puntatori pure
come archi, quindi ci stai davvero provando
usa questo spazio il più possibile
quindi quello è il principale del principale
trucchi così ora mi limiterò a parlare un po ‘
un po ‘per il bytecode che viene
fuori così questa funzione qui aggiunge solo due
numeri insieme e in fondo a
lo schermo è ciò che compila in questo modo
Carico X carico Y, quindi 0, 1 e
poi li aggiungo insieme e poi io
restituire il valore e agire c’è uno stack
macchina in modo da avere una pila di valori così
Carico X nello stack carico Y the
chiamare l’ operazione di aggiunta li avrà
e quindi l’operazione di ritorno richiederà
in cima allo stack e restituiscilo
valore quindi questo è il tipo di
il modo predefinito con cui il compilatore emette il codice
ma puoi anche chiedere al compilatore di
emette codice macchina diretto codice assembly
così che corre subito sul
macchina non passa attraverso il
macchina virtuale e potrebbe essere un po ‘
cosa difficile da leggere scusa ma è
è comunque scritto in assembler così
è la stessa funzione ma è compilata
all’assemblaggio e essenzialmente a ciò che sono
fare qui è così semplicemente tornerò indietro
una pagina quindi ognuno dei codici opzionali ciascuno
questi codici macchina virtuale sono in corso
una sorta di srotolato in esso è il reale
assembler
quindi è una specie di srotolare il virtuale
macchina cosa sarebbe fare se fossi
eseguendo quei codici byte così c’è
in realtà non ho intenzione di passare attraverso
questo c’è un sacco di set up rail you to
impostare la funzione per decodificare il
argomenti delle parole chiave e così via e poi il
l’ aggiunta effettiva è una sorta di verso il
fine ci um ma chiama qualche runtime
Funziona questo è il nostro codice macchina se
ti stai chiedendo comunque è solo così
solo per dimostrare che è possibile
se vuoi una velocità extra che non vuoi
per passare attraverso la macchina virtuale te
può compilare prima del tempo non è solo
nel tempo compilando perché se devi
specificare in anticipo che si desidera utilizzare
questo particolare output dal compilatore
okay, solo poche parole sullo stile di codifica
quindi ho un background di ricerca e di
me micro Python è una specie di a
progetto di ricerca può anche essere fatto
del tutto e non ho seguito davvero
pratiche di programmazione che forse tu
sono stati insegnati all’università, quindi ho ottimizzato
prima perché sai se non può essere
ottimizzato non può nemmeno funzionare bene il
l’idea è che deve essere ottimizzato per
correre su un microcontrollore c’è molto
trucchi che devono essere utilizzati per ordinare di
ottenere le cose per adattarsi e per funzionare in modo efficiente
la chiarezza del codice è sacrificata per ottenere
codice più piccolo e incoraggia a usare go
a quando puoi perché per fare il
codice più piccolo ad esempio bene lo sai
non incoraggiare ma andare era certamente
non scoraggiato quindi l ‘idea in
lo stile di codifica è un po ‘ diverso da forse
quello che hai usato e intendo che è solo un
commento per dirti che è un po ‘
come se fosse un sacco di divertimento e di e penso
quando in codice micro Python e lì
c’era anche molta analisi per vederti
conoscere l’analisi di milioni di righe di
Codice Python per vedere cosa c’è di più
modo efficace di decodifica e codici byte
erano ad esempio c’è solo questo
poco cruscotto codice che ho creato a
attirare la dimensione del codice e il
velocità dell’esecuzione quindi il rosso il
la linea fuzzy rossa è in realtà la velocità
numero di pi pietre che micro Python
ottiene così questo è solo per assicurarsi che
non improvvisamente raddoppiamo la dimensione del
binario o rallentarlo tanto è
il microfono è un progetto open source
sotto una licenza MIT in modo da poter utilizzare
comunque ti piace ed è sviluppato in
l’apertura su github e github intendo che lo sono
certo la maggior parte di voi lo sa e probabilmente lo usa
github è una fantastica comunità di
programmatori Voglio dire che è davvero una sorta di
come il social network di programmatori e
sviluppatori ed è stato molto molto buono
per micro Python perché attrae
le persone possono contribuire ad aumentare
problemi molto facilmente
è diventato abbastanza popolare ottenuto abbastanza a
poche stelle e nel punto più alto Oh 2% di
tutti i progetti anche se ce ne sono 10
milioni di progetti ma puoi allenarti
guardare a che punto alto oh due per cento è
quindi penso che averlo su Github stato
avere un feedback da persone che corrono
micro Python su così tanti diversi
macchine come te conoscono questo vecchio stesso
sistema incorporato che ha un compilatore GCC
la versione 3, ad esempio, rende il codice
più robusto perché le persone possono ottenere
feedback da questi sistemi ok così giusto
per darvi una rapida panoramica di questo
sorta di dimensioni che corre sul pi
consiglio che era l’hardware che noi
fare per il kickstarter che ha 192k di
ram e un megabyte di ROM o flash e
corre a 168 megahertz e ci sono a
pochi altri numeri lì da altri
sistemi ma può anche funzionare sul tuo
desktop come una specie di Python leggero
implementazione se ti piace, ad esempio
nei progetti open wrt che mette
Linux su un simile piccolo router
navi hanno un pacchetto micro Python
se vuoi eseguire Python su quel sistema
e anche la versione desktop è utile
per i test in modo da sapere invece di
scaricando dal mio controllo ogni
volta che si desidera eseguire il test basta eseguire su
un computer e funziona allo stesso modo, quindi io
pensa per me uno dei più eccitanti
le cose stavano lavorando con l’europeo
Agenzia spaziale ciò che realmente è accaduto era
sì un paio di anni fa, quindi l’inizio
l’anno scorso penso che sia stato qualcuno
inviato dall’Agenzia spaziale europea
io e ho detto pensi micro Python
potrebbe correre nello spazio e non l’ho nemmeno fatto
devo pensare che ero come si, lo penso
può e ma in ogni modo ma quello ha condotto a e
hanno detto ok bene ci piacerebbe fare un
progetto con te per tipo di essenzialmente
creare un contratto e un progetto per fare un
studio di fattibilità per vedere se
micro Python può essere eseguito su hardware spaziale
e entro i limiti dello spazio
sistemi quindi sì, ho imparato molto
su come lo spazio
i sistemi funzionano così per esempio che usano
scintilla scintilla cpu che è una sorta di
una cosa antica ma in realtà è così
piuttosto fresco una volta ci si abitua ad esso è
un set di istruzioni RISC e molto divertimento
lavorare con e l’ implementazione di Leon
di scintilla è sorta di open-source
versione della scintilla una descrizione e
quello è così letteralmente è il
microcontrollore e scintilla sono la CPU e
Artem di
è il sistema operativo in tempo reale che
corre sopra, quindi questo è ciò che
La Pasqua usa molti dei loro carichi utili
e missioni per esempio satelliti e
Satellite di Planck che ha scoperto la CMB
ma era molto bravo a ottenere ottime immagini
della CMB quindi molti dei loro sistemi funzionano
Artem’s che è molto altamente testato
e codice pezzo qualificato e l’idea
doveva far funzionare micro Python all’interno
i nostri team sono un compito piccolo per te
potremmo per esempio dire oK , abbiamo un
macchina virtuale che presentiamo e noi siamo
andando a caricare un po ‘di codice da terra a
questa astronave e quindi una sceneggiatura e poi
sta andando a correre una sorta di termica
controllo cosa per controllare tutto
parametri dell’astronave e poi
stampare alcune dichiarazioni a seconda
su quali fossero i parametri come questi
l’idea era di usare Mac per vedere se
potresti usare micro Python come una sorta di
linguaggio a livello di applicazioni su
veicolo spaziale per consentire più veloce
sviluppo della codifica e che ha funzionato
molto bene e sembra che sia così
possibile e potremmo averne ancora
contratti in corso con ISA per qualificarsi
micro Python per renderlo una sorta di spazio
grado e effettivamente lo uso in realtà
missioni, ma sì, è una specie di pochi
anni di pianificazione ma è molto eccitante
l’altro entusiasmante progetto era con il
BBC quindi hanno questo progetto micro bit
che è questa piccola scheda controller
e così hanno reso la BBC micro molti
anni fa come il Commodore 64 e loro
voglio ricominciare da capo quel tipo
dell’idea realizzando un dispositivo IOT micro
un po ‘ e ispirare i bambini a tornare
in programmazione
hanno dato via sette a otto
centomila di questi a tutti gli 11 anni
vecchi nel Regno Unito e il micro bit qui
può essere eseguito può eseguire lingue diverse
ma e micro Python o Python via micro
python è uno di loro così lo faranno i bambini
essere in grado di imparare a programmare usando pipe
marker Python su uno di questi dispositivi
e stiamo ottenendo buoni feedback
lì, ma c’è ancora molto di più
sviluppo su quello per andare bene così
arrivare a una sorta di parte IOT così dopo
così abbiamo fatto un secondo Kickstarter che era
basato su questo chip di Internet of Things
l’es espressivo è questo è giusto
e ne ho uno qui è un piccolo chip
questo costa per te qualche dollaro
puoi prenderlo dalla Cina ed è così
ha abbastanza memoria per funzionare
microfono ha circa 96 kilobyte
di RAM anche se molto è usato dal
sistema operativo e l’abbiamo fatto
ho iniziato a dire ok, se la gente vuole
avere micro Python in esecuzione su questo
chip sai che ci vorrà
alcune donazioni e il codice mobile per
tu e lo fai e così ho collaborato con
qualche altro sviluppatore che è molto appassionato
su micro Python e siamo riusciti a crescere
quasi 30.000 sterline su un software puro
campagna così ti stava praticamente dicendo
sapere se sei interessato a questo
il software funziona questo open-source gratuito
il software quindi soddisfa i finanziatori e abbiamo
ho avuto una risposta così incredibile che non l’ho fatto
aspettarsi di avvicinarsi così tanto
per una pura campagna software e se
qualcuno qui è tornato con il progetto grazie
tu molto ma è stato davvero eccitante
e darò solo alcune demo demo dal vivo
ora spero che funzionerà su questo
alcuni con questo chip va bene così lo so
c’è che probabilmente non puoi vedere anche tu
molto, ma si può venire a vedere le cose
più tardi, ma è una piccola cosa qui e io
cercherò semplicemente di cambiare schermo okay
ok, funziona, quindi resetterò questo
ora va bene che alcuni rifiuti vengano stampati su
schermo possiamo tutti vedere questo sì sì
va bene
qui c’è un po ‘ di output di debug
va bene così qui micro Python così sono
tutto quello che sto correndo qui è un terminale
emulatore è solo la connessione tramite a
prompt seriale per questa piccola scheda qui
quindi è solo un terzo di te
è solo invio e ricezione
personaggi che il mio computer non sta facendo
qualsiasi cosa eccetto l’invio e la ricezione
personaggi a questo dispositivo e tu puoi
vedi qui ho un prompt di Python così questo
il prompt qui è sulla lavagna quindi c’è un
un po ‘ di informazioni sulla versione up
lì e così via, ma posso davvero così
digita i comandi Python così sai
le cose 1 + 2 mi danno 3 anche se lo sono
scusa vedrò se riesco ad aggiustare il
schermo per voi aprire un altro terminale
così va meglio
ok ok quindi questo è un prompt di Python in esecuzione
alla lavagna quindi se sto scrivendo qualcosa
come sai, questo viene compilato
ed eseguito sulla piccola nave stessa
e quindi la risposta viene ristampata
la porta seriale quindi il computer no
non sta facendo nulla tranne l’invio e
ricevere personaggi quindi c’è qualcosa
c’è il supporto in virgola mobile
per esempio e matematica c’è una matematica
modulo radice quadrata ok c’è grande grande
numeri di supporto per dire 2 alla potenza di
centodue al potere di cento
o al potere di mille sì ok così
è pieno di te, c’è una soluzione perfetta
transizione tra numeri piccoli che
entrare in una parola come stavo dicendo prima
e lungo num numeri arbitrari quindi è un
Pienamente bene, il micro Python non è pieno
Python perché altrimenti non sarebbe adatto
così e l’obiettivo non è per micro pattern
lo scopo è quello di competere con il normale Python
da prendere dal micro Python per consentire
Python per eseguire dove non potrebbe essere eseguito
prima quindi dobbiamo in alcuni casi
sacrificare alcune funzionalità e molte delle
libreria standard che normalmente
aspettarsi con Python non c’è
ma tuttavia penso che la lingua
la sintassi è ancora al cento per cento
completa quindi ci sono molte cose
lì abbiamo per esempio, se si desidera
vedi quindi è abbastanza difficile da digitare il mio
amico quindi qui posso mostrarti l’importo
di memoria e come viene utilizzato in modo tale
stack ci sono 8 kilobyte di stack se
puoi seguire il mouse e circa 2
i kilobyte vengono usati e l’heap
sì, ci sono 28 kilobyte da evitare
mucchio e poi questo qui è un
rappresentazione di ciò che è stato utilizzato su
il mucchio finora è solo per questo
informazioni così e poi questo il
cosa con questo chip è che ha
capacità di rete quindi il vero chip
stesso ha questa piccola antenna qui e
ora bene che ti collega al Wi-Fi e
micro pathing cerca di darti davvero
facile accesso alla rete, quindi facciamolo
importa il modulo di rete ok tutti
posso vedere ok lì e posso così interfaccia
non c’è rete LAN wireless 0 che ho
non che io possa fig ok, questo è il mio IP
indirizzo netmask gateway e dns server
questo è sul locale andare ad Amsterdam
rete in modo che questo sia in grado di connettersi a
altre reti non ho avuto modo di dire
connettersi e quindi basta dare il mio SSID nel mio
password e si connetterà quindi questo è come
mi sono connesso alla rete e poi
quello degli obiettivi di micro persona è
non reinventare nulla, ove possibile
e riutilizzare tutto il Python esistente
librerie di fare le cose in modo, se voglio
connettersi alla rete Io uso la presa
modulo in Python o da un basso livello
punto di vista quindi il modulo socket è
lì e così dico che voglio cercare così
avviso ho anche il completamento delle schede
è così che sto scrivendo così velocemente se io se
una scheda premendo si completerà e
è utile per
elaborando quali funzioni sono disponibili
quindi posso dire di avere l’indirizzo di questo
sito web per questa conferenza
okay, questo è quello che sta cercando
su un server DNS okay, allora facciamolo
qualcosa di un po ‘ più interessante con
la nostra rete quindi ricorda che questo è tutto
correre qui su questo piccolo chip qui
con circa un mucchio di K su ventotto
tutto questo quindi ho dei pre-fatti
piccoli demo quindi ho qui la modalità Incolla
che mi consente di tagliare e incollare facilmente
qualche codice va bene quindi questo è un semplice
demo che prova a scaricare Star
Stima delle guerre e quindi è abbastanza
Semplicemente è solo che guarda su
questo indirizzo web qui e la porta 23 è il
porta telnet quindi apriamo una connessione verso il basso
qui crea un socket per connetterti al nostro
indirizzo e poi semplicemente selvaggio da ricevere
le informazioni da questo calcio si ottengono come
più che possiamo da esso e quindi stamparlo
fuori sullo schermo in modo che arrivi come
dati binari dopo decodificatore come utf-8
perché è Unicode e non voglio
avere qualsiasi fine di linea e quindi questo ciclo
qui continueremo a correre così quando
Ho inserito questo codice qui va bene così ora
i codici in esecuzione lo stanno scaricando
collegato via telnet a questo server e
è solo il download e la stampa del
il testo come viene fuori il server in modo da io
non so se hai utilizzato Star Wars
sq– missione prima ma se lo dici e basta
che in quell’indirizzo puoi guardare
Star Wars è abbastanza bello, così sarà
bene continueremo a correre per a
problema che non conosco non ho mai visto
il tutto credo che corre per
ore così comunque ma questo è possibile vedere
va bene così ho solo Ctrl e lo farò
rompere e sono tornato per avere un
interruzione della tastiera come nella norma – e
quindi torna al mio prompt così con quello
era 1 2 3 4 5 6 7 una specie di 8 linee per
implementalo su questo piccolo dispositivo così
se provi a farlo nell’intenzione CI
non c’è niente che ti fermi solo al
compilare il tempo è necessario scrivere i codici
probabilmente quattro volte più a lungo lo compili
scaricalo se c’è una freccia indietro
e farlo di nuovo ma utilizzando micro pitone
hai il prompt qui e puoi
basta provare le cose molto velocemente così
la prototipazione è molto veloce e così
questo è uno degli obiettivi principali che posso fare
lì un altro demo anche qui solo
questa funzione ctrl e va bene così
la funzione qui è solo per scaricare un URL
HTTP OTTIENE così cerca l’indirizzo
fa un socket e invia un get
richiesta per l’indirizzo web che tu
mancanza e poi fa solo un piccolo ciclo
scaricare e stampare quell’URL
okay, ho questa funzione HTTP GET
e io questa è solo una piccola pagina web
che io uso per testare il micro
Server Python quindi ho appena scaricato
da internet la nostra pagina web così tu
puoi scaricare qualsiasi pagina desideri
ora ovviamente ho solo 28 kilobyte
di RAM non posso andare a scaricare sai
una pagina web megabyte e memorizzarla e
si supponga che quello sia solo un
limitazione di queste cose ma se tu
voglio solo leggere alcuni JSON e inviare
un certo jason è super facile e lo farà
in memoria c’è un modulo JSON
che ti permette di farlo solo questo non lo è
normale e il modulo Jason quindi usa i dump su
convertire dire una lista di numeri e poi
in modo da poter caricare il nuovo contro
sottolineatura è l’espressione precedente
sì, basta ripassare il JSON così tu
sai che hai cose molto potenti a
la formattazione delle stringhe delle dita
dizionari hash tabelle eccezioni e
puoi creare un Web davvero semplice
le applicazioni in questo modo quindi ce ne sono alcune
più cose qui posso demo
quindi alcune cose più orientate all’hardware così
Ho del codice qui che quindi c’è
questo modulo ha chiamato il modulo macchina
che consente di accedere a hardware per
esempio i pin GPIO quindi ho creato un
alcuni pin qui e pin nullo e pin 2
e se io sono d’accordo sono entrambi al
momento mi dispiace che le luci siano
molto difficile da vedere per te tranne te
potrebbe essere in grado di vedere il rosso e il
blu sull’Iran e quindi non ho nulla P P
nulla è perfetto e posso farlo
basso e questo cambierà davvero
lo accende perché il LED è spento
invertito e alto se riesco a digitare correttamente
va bene la volontà alta dovrebbe girarla
di nuovo a posto, così il rosso si spense
se vado in basso, si riprenderà se me ne vado
alto si spegnerà di nuovo oh ok è spento
ora e ok l’ altro giorno la parte di
gran parte di questa demo quindi ho fatto un
funzione qui che permette di pulsare
usando una sorta di modulazione della larghezza di impulso così
se voglio impulso pin o LED non quello
dirò bene questo è il mio ritardo okay
la piccola luce rossa lampeggerà e se io
aumentare il ritardo per dire due
millisecondi lampeggerà più in basso così
comunque puoi venire a dare un’occhiata
questo se più vicino se vuoi dopo, ma
Sono solo se puoi averlo apprezzato
il codice qui è piuttosto semplice solo per
faccio oh e c’è una funzione qui per
fai il pulsante e puoi connetterlo
fino a dire internet così nel senso di
puoi fare una pagina web e quando tu
fai clic su un pulsante per accendere la luce
o l’altro intorno alla pagina web può dirlo
tu il valore di alcuni pin l’analogo SE
o il valore digitale di un pin ora ero
cercherò di farlo davvero
la demo non funzionava prima che lo fosse
a un certo punto l’idea qui va bene
quindi questo codice che ho appena incollato qui è
dovrebbe fare un po ‘di lavoro web
server e tu come il pubblico è
dovrebbe essere in grado di andare sul web
pagina e accendi e spegni le luci ma
purtroppo la rete qui mentre
questo stava scaricando bene
per te in realtà si comporta da server
non funzionava prima, ma ci proverò
di nuovo bene, non funziona, ma
Ti dirò cosa dovrebbe fare
quindi questo è l’indirizzo IP di questo dispositivo
e uno sta diventando LED uno e io voglio
accenderlo così ho appena fatto un semplice sorta
di richiesta API qui, quindi se sono andato a zero
Riesco a leggere sì a zero doveva
girare LED zero per qualche motivo questo
la cosa non funziona come server su questo
rete ma puoi vedere il codice lì
quindi è solo in esecuzione in un ciclo
in attesa di indirizzi in attesa
i clienti e poi questo selvaggio vero loop
qui è solo mettere in pausa l’arrivo
richiesta dal browser Web, così via
attraverso ogni linea e se trova il
linea del cancello
poi divide l’ URL e vede se io
vuole portato 0 o 1 se voglio accenderlo
o spento e quindi questo bit di codice qui
rileva se si desidera accenderlo o spegnerlo
e si gira e si spegne, così questo
è come dovresti essere in grado di crearne un po ‘
Dispositivo IOT ti assicuro che funzionava
prima ok quindi penso di aver bisogno di iniziare
avvolgendo tornerò al mio principale
Scorri e basta dire ok così bene
in sintesi micro Python è l’idea
portare Python in posti che non poteva andare
prima in specialmente in risorsa
ambienti vincolati con così tanto
RAM ad esempio una navicella spaziale o a
piccoli dispositivi Internet of Things e
c’è un sacco di lavoro continuo in particolare
con questo codice esp8266 ce ne sono molti
roba abbiamo bisogno di fare per l’antipasto calcio
incluso un supporto di I / O asincrono che puoi
ho sentito parlare di async I / O sta arrivando
in giro in molte lingue ora io
pensa anche l’ultima versione di
JavaScript ha e stiamo andando a
supporta anche Python
lo supporta e vogliamo supportarlo
il supporto multi-threading è quasi
finito in modo che tu possa effettivamente correre
più thread come fai con un sacco di
altre lingue e sì, c’è un sacco di
altri lavori in corso con il micro bit
più lavoro con ISA per ulteriore spazio
incorporamento e anche le idee da fare
micro Python più facile per qualcuno a solo
prendere e utilizzare nel proprio progetto per
esempio se volessi aggiungerne
capacità di scripting per un gioco e per te
voleva che il linguaggio di scripting fosse
Python quindi potresti semplicemente prendere micro
Python e sorta di risatina nella tua
sistema senza alcuna difficoltà a tutti
e sarebbe solo integrato così
questa è un’altra domanda così
non dimenticare di valutare questa sessione come
tutte le altre sessioni e grazie per
la tua attenzione
bene, Damien, grazie mille per il tuo
presentazione ed è piuttosto un
caratteristica impressionante di ciò che hai raggiunto
con micro lotta e corsa su tale
piccolo ingombro quindi grazie per questo come
bene grazie ho avuto alcune domande da
il pubblico e qualcun altro quando lo fai
decidere di utilizzare Arduino C o micropolitan
o C incorporato hai alcuni indicatori
su questo conosciamo C o embedded see ya
o per i microbot e se necessario
scegli tra esso o tra l’uso
casi okay sì
così micro pathing non può essere eseguito davvero
piccoli dispositivi come questo ha bisogno di almeno
circa 256 K di flash e su Arduino
hai davvero molto limitato probabilmente 16
32 kilobyte di flash e uno o due K
di RAM in modo che il micro pathing non possa scendere
così lontano se vuoi davvero economico e
bassa potenza quindi ricorda il motivo per cui
utilizzare un microcontrollore è perché è
è economico nel volume ed è molto
a bassa potenza funziona a batteria a differenza di a
Raspberry Pi e se vuoi qualcosa
come in un tostapane probabilmente lo faresti
scriviamo come facciamo a sapere che vedremo intendo
So che è essenzialmente un c ++ quindi se
tu stai facendo un tostapane , direi che vedi
se se vuoi fare un
collegato a internet ha liberato il tuo caffè
macchina probabilmente si utilizza micro Python così
ma sì, dipende che dipende da
dimensione del microcontrollore davvero e
quello che ti serve va bene grazie mille
Qualcun altro ha detto conosci il peperoncino
e Java come il microcontrollore VM scusate
quale sì, è la porta della porta
sera lavoro piuttosto complicato no I
non lo so, ma per favore bene
Yep si prega di camminare su di vostro terzo
domanda a riguardo sì signore, non lo so
e qualcuno ha chiesto c’è già come un
soluzione di introduzione con la mia fornitura
che tu sappia
So che ci sono stati catturati in realtà
macchine da caffè che stavano usando micro
Python IDE anche se non conosco il
nome del marchio ma ce n’erano alcuni
aiuto che stavo dando a qualcuno che era
cercando di ottenere un IOT
Macchina per il caffè collegato a Internet è
essendo usato nell’insegnamento c’era a
corso universitario che è stato istituito intorno
è per contribuire ad insegnare laureandi circa
computer e altri commerciali
applicazioni di cui non sono a conoscenza
So che molte persone lo usano ma io
non ho davvero alcun modo per tenere traccia
di quello che usano per essere il MIT
licenza è là fuori in natura e
le persone fanno quello che vogliono con quello che
è buono sì più feedback dalle persone
sarebbe carino e un’ultima domanda
Qual è il futuro per il mio fornire on-line
così bene, non so, voglio dire, è così
per me è stato un esercizio interessante
e ora è diventato davvero bello
progetto open source che molte persone
stanno contribuendo e sono solo felice
essere in grado di contribuire infine ad alcuni
progetto open source perché io uso io uso
molti me stesso
per esempio VM e quindi mi auguro solo che
può crescere e effettivamente trovare un buon uso
e una comunità sostenibile penso
i progetti open-source sono difficili perché
è facile per loro morire se non lo fanno
avere qualcuno che lavora a tempo pieno o loro
non ho una community che la raccoglie
quindi spero di voler dire finora che sia stato
davvero fantastico ce n’è un grande
comunità bene c’è un relativamente
una grande comunità intorno ad essa che era molto
solidale, quindi spero che sia così
continua che è la mia principale speranza per il
futuro spero che tu abbia letto qualcosa di pubblico
oggi sono Ian, grazie ancora per il tuo
grande presentazione, un grande applauso, grazie
tu

Please follow and like us: