MicroPython
Python a hardvér patria k sebe
Marek Mansell
PyCon 2017 Slovakia
MicroPython
Čo je to?
MicroPython je implementácia Python3 optimalizovaná pre mikroprocesory
Čo robí?
Prepája jednoduchosť a krásy Pythonu
s "komplikovaným" svetom hardvéru
Prečo je zrazu všade?
Prináša jednoduchý no pritom rýchly vývoj elektronických komponentov. Vhodný aj pre začiatočníkov.
Silná komunita - práve vďaka Python komunite tu sedíte :-)
MikroProcesor
ESP8266
- 32-bit Tensica LX106
- 80 MHz (160MHz)
- Flash 4 MB
- RAM 128 kB
NodeMCU
Prepojenie zariadenia s PC
REPL
"Ahoj Svet!"
>>> 1+1
2
>>> import math
>>> math.pi
3.141592
>>> from os import urandom
>>> urandom(1)[0]
61
>>> print('Ahoj Svet!')
Ahoj Svet!
>>> class TriedaHadov:
... def __init__(self):
... self.odpoved = "Ahoj Python!"
... def pozdrav(self):
... return self.odpoved
I/O Piny
Input / Output
Breadboard
Nepájivé kontaktné polia
Zapojenie LEDky
Program "Blink"
>>> from machine import Pin
>>> from time import sleep
>>> pin_diody = Pin(4, Pin.OUT)
>>> while True:
... pin_diody.value(0)
... sleep(1)
... pin_diody.value(1)
... sleep(1)
"Ahoj Svet!" Hardvérovo
WiFi
>>> import network
>>> wlan = network.WLAN(network.STA_IF) # vytvorí interface
>>> wlan.active(True) # aktivuje interface
>>> wlan.connect('nazov_siete', 'heslo') # pripojí sa k sieti
>>> wlan.ifconfig() # vráti IP adresu/masku/gateway/DNS
Sockety - Server
>>> import socket
>>> from machine import Pin
>>> ledka = Pin(4, Pin.OUT)
>>> s.bind(("192.168.0.55", 5000))
>>> s.listen(1)
>>> while True:
... cl, addr = s.accept()
... data = cl.recv(500)
... cl.close()
... if data == "ON":
... ledka.value(1)
... elif data == "OFF":
... ledka.value(0)
>>> s = socket.socket()
Sockety - Klient
>>> import socket
>>> s = socket.socket()
>>> s.connect(("192.168.0.55", 5000))
>>> s.send("ON")
>>> s.send("OFF")
NeoPixel
>>> from machine import Pin
>>> from neopixel import NeoPixel
>>> pin = Pin(0, Pin.OUT) # nastaví pin ako digitálny výstup
>>> np = NeoPixel(pin, 8) # Vytvorí NeoPixel driver pre 8 pixelov
>>> np[0] = (255, 0, 0) # nastaví prvý pixel na červenú farbu
>>> np.write() # odošle hodnoty, LEDky zmenia farby
>>> np[1] = (255, 255, 255) # nastaví druhý pixel na bielu farbu
>>> np[7] = (128, 0, 128) # nastaví ôsmy pixel na fialovú farbu
NeoPixel
WebREPL
BBC micro:bit
1 milión vyrobených kusov
pre britských žiakov
Rozdaných ZADARMO
MicroPython Dosky
NodeMCU
Witty Board
PyBoard
WiPy
Robotika
Smart Home
Fyzika
Rýchlejší ako zvuk
v=331+0.61*T
Radar
Skupenské premeny
Biológia
Chémia
MicroPython & hudba
from microbit import *
import music
tempo = 120 # Beats per minute (BPM).
duration = 20 # Length of the bleep.
pitch = 1760 # Pitch of the bleep.
while True: # Our code will loop while the micro:bit is on
if button_a.is_pressed() and button_b.is_pressed():
tempo = 120 # The A+B buttons reset the BPM.
elif button_a.is_pressed():
tempo += 10 # The A button speeds up the metronome by 10 BPM.
elif button_b.is_pressed():
tempo -= 10 # The A button slows down the metronome by 10 BPM.
display.show(Image.HEART) # Show a heart(beat, haha).
music.pitch(pitch, duration) # BLEEP!
display.clear()
# wait = how long to pause between bleeps.
wait = ((60 / tempo) * 1000) - duration
# Sleep for "wait" period of time.
sleep(int(wait))
IoT & kvetiny
IoT záhradka
Architektúra
Senzory
Online Návody
docs.micropython.org/en/latest/esp8266/
micropython.sk
Otázky ?
www.marekmansell.sk/presentations www.github.com/marekmansell/presentations
linkedin.com/in/marekmansell
marek.mansell@gmail.com
Kontakt:
Táto prezentácia:
MicroPython - Python a hardvér patria k sebe
By Marek Mansell
MicroPython - Python a hardvér patria k sebe
- 381