Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MicroPython簡介
Max Lai
自我簡介
• Max Lai
• Taichung.py共同發起人
• 靜宜大學資訊學院兼任助理教授
• 專長是電腦視覺, 敏捷開發, 目前業餘的時間嘗試研究 python 與
IOT 領域相關的 project
MicroPython
• 由劍橋大學數學科學中心的物理學家 Damien P. George 工
作之餘的side project, 將Python移植到ARM Cortex M微處理
器(STM32F405 chip).
• 2013, D...
MicroPython
• a lean and efficient implementation of the Python 3 programming
language
• that includes a small subset of t...
ESP8266
AVR (Arduino) ESP8266 ARM / Broadcom (RPi 2)
ATMega328P Tensilica Xtensa LX106 Cortex A53
8 bit 32 bit 32 bit
1 co...
NodeMCU v2
• 3.3v regulator
• USB to serial interface
• uses CP2102 as UART bridge
• Automatic flash & reset functions
• 採...
MicroPython
firmware
• http://micropython.org/download
/#esp8266
esptool
• 使用 NodeMCU 必須另外安裝 CP210x 驅動程式
• https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
• need ...
PuTTY
• COM port: 請看裝置管理員
• Baud rate: 115200
數位I/O
LED on/off
• 連上NodeMCU的 serial REPL 之後應該會出現 “>>>" 提示號
import machine
led = machine.Pin(2, machine.Pin.OUT)
led.high() #關閉L...
https://goo.gl/lhlbsm
實驗電路圖
Blink LED
• 測試外接LED (LED 正極接在 pin D2), 底下的程式碼能讓LED閃爍十
遍
import machine
import time
ledD2 = machine.Pin(4, machine.Pin.OUT)...
數位輸入-Button
import machine
button = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP)
while True:
if not button.value()...
數位輸入-Button
import machine
import time
ledD2 = machine.Pin(4, machine.Pin.OUT)
button = machine.Pin(12, machine.Pin.IN, ma...
類比I/O
PWM 調控燈光亮度實驗
• Pulse Width Modulation 簡稱PWM,譯為脈衝寬度調製,簡稱脈寬調製。
• PWM是一種對類比信號電平進行數位編碼的方法
• 由於電腦不能輸出類比電壓,只能輸出0 或5V 的的數位電壓值,
• ...
PWM 調控燈光亮度實驗
19
類比輸出-調控燈光亮度
• On the ESP8266 the pins 0, 2, 4, 5, 12, 13, 14 and 15 all support PWM.
The limitation is that they must all ...
類比輸入
import machine
import time
adc = machine.ADC(0)
while True:
print(adc.read())
time.sleep(0.5)
Load File & Run Code
• 如果開發板有1MB以上的Flash, MicroPython 啟動後會配置一個內
部的 filesystem
• 可以將程式碼存入, 當ESP8266啟動時可以自行載入程式執行
(就像是 Ardui...
ampy
• https://github.com/adafruit/ampy
• With ampy you can
• send files from your computer to a MicroPython board's file ...
MQTT簡介
• 一個 machine-to-machine (M2M) 的
發佈(Publish)/訂閱(Subscribe)訊息
的傳輸協定
• 當發佈者將訊息送至Topic平台,
Topic會將這個訊息送到所註冊的訂
閱者
• 發佈者可以...
MQTT 整合應用
ESP8266
(DHT)
MQTT
Gateway
WebServer
MQTT
Broker
Publish
(8266)
Subscribe
(8266)
upload data
類似 ThingSpeak 的角色
N...
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
輸入email
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
告訴你去收確認的email
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
點選確認連結
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
公司資料不必為真,
VAT可不填
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
新建Instances
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
新建User
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
CloudMqtt申請
https://www.youtube.com/watch?v=zx0kMbwxnak
CloudMqtt-訊息發佈及訂閱
https://www.youtube.com/watch?v=zx0kMbwxnak
Remote control by Mqtt
• 遠端控制LED on/off
• Sample code:
https://github.com/cclai999/micropython-lab
Reference
• http://docs.micropython.org/en/latest/esp8266/
• https://learn.adafruit.com/category/micropython
Upcoming SlideShare
Loading in …5
×

MicroPython簡介

1,773 views

Published on

2016/11/26 於 Taichung.py meetup的分享簡報.
有關 MicroPython 的後續介紹, 可以參考我的blog http://maxlai.cc

Published in: Technology
  • Be the first to comment

MicroPython簡介

  1. 1. MicroPython簡介 Max Lai
  2. 2. 自我簡介 • Max Lai • Taichung.py共同發起人 • 靜宜大學資訊學院兼任助理教授 • 專長是電腦視覺, 敏捷開發, 目前業餘的時間嘗試研究 python 與 IOT 領域相關的 project
  3. 3. MicroPython • 由劍橋大學數學科學中心的物理學家 Damien P. George 工 作之餘的side project, 將Python移植到ARM Cortex M微處理 器(STM32F405 chip). • 2013, Damien於 KickStarter 發起 pyboard 這個專案,成功籌 得近10萬英鎊 • pyboard • STM32F405RG: 192k RAM, 1M ROM, 168MHz, Cortex M4F. • USB micro connector for device (and host). • Micro SD card. • 3-axis accelerometer (MMA7660). • Real-time clock, 4 LEDs, 2 switches. • 30 GPIO: symmetric pin layout, plus extra pins. • Internal file system. ”/flash” and ”/sd”. https://goo.gl/mhLBl7
  4. 4. MicroPython • a lean and efficient implementation of the Python 3 programming language • that includes a small subset of the Python standard library and • is optimised to run on microcontrollers and in constrained environments. http://micropython.org/
  5. 5. ESP8266 AVR (Arduino) ESP8266 ARM / Broadcom (RPi 2) ATMega328P Tensilica Xtensa LX106 Cortex A53 8 bit 32 bit 32 bit 1 core 1 core 4 core 20 MHz 80-160 MHz 900 MHz 2KB RAM 160KB RAM 1GB RAM 32KB Flash DIO/QIO Flash MicroSDHC $5 http://nick.zoic.org/pycon2016/esp8266-and-micropython/
  6. 6. NodeMCU v2 • 3.3v regulator • USB to serial interface • uses CP2102 as UART bridge • Automatic flash & reset functions • 採用內建 WiFi 通訊功能之 ESP8266 • 新板 ESP-12E 具備大容量 4MB Flash • 基於 eLua 之開源專案、可自行編譯 • 第二代電路板設計適合進行麵包板實 驗 https://www.seeedstudio.com/
  7. 7. MicroPython firmware • http://micropython.org/download /#esp8266
  8. 8. esptool • 使用 NodeMCU 必須另外安裝 CP210x 驅動程式 • https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx • need Python 2.7 or newer • depends on pySerial version 2.5 or newer for serial communication $ pip install pyserial $ git clone https://github.com/themadinventor/esptool $ cd esptool $ python esptool.py --port COM15 --baud 115200 write_flash --flash_size=32m 0 esp8266-20161110-v1.8.6.bin
  9. 9. PuTTY • COM port: 請看裝置管理員 • Baud rate: 115200
  10. 10. 數位I/O
  11. 11. LED on/off • 連上NodeMCU的 serial REPL 之後應該會出現 “>>>" 提示號 import machine led = machine.Pin(2, machine.Pin.OUT) led.high() #關閉LED led.low() #點亮LED
  12. 12. https://goo.gl/lhlbsm
  13. 13. 實驗電路圖
  14. 14. Blink LED • 測試外接LED (LED 正極接在 pin D2), 底下的程式碼能讓LED閃爍十 遍 import machine import time ledD2 = machine.Pin(4, machine.Pin.OUT) for i in range(10): ledD2.high() time.sleep(0.5) ledD2.low() time.sleep(0.5)
  15. 15. 數位輸入-Button import machine button = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP) while True: if not button.value(): print('Button pressed!')
  16. 16. 數位輸入-Button import machine import time ledD2 = machine.Pin(4, machine.Pin.OUT) button = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP) while True: first = button.value() time.sleep(0.01) second = button.value() if first and not second: print('Button pressed!') ledD2.high() elif not first and second: print('Button released!') ledD2.low()
  17. 17. 類比I/O
  18. 18. PWM 調控燈光亮度實驗 • Pulse Width Modulation 簡稱PWM,譯為脈衝寬度調製,簡稱脈寬調製。 • PWM是一種對類比信號電平進行數位編碼的方法 • 由於電腦不能輸出類比電壓,只能輸出0 或5V 的的數位電壓值, • 我們就通過使用高解析度計數器,利用方波的占空比被調製的方法來對一個具 體類比信號的電位進行編碼。 • PWM 信號仍然是數位的,因為在給定的任何時刻,滿幅值的直流供電要麼是 5V(ON),要麼是0V(OFF)。 • 電壓或電流源是以一種通(ON)或斷(OFF)的重複脈衝序列被加到類比負載上去的。 • 通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。 • 只要頻寬足夠,任何模擬值都可以使用PWM 進行編碼。 • 輸出的電壓值是通過通和斷的時間進行計算的。 • 輸出電壓=(接通時間/脈衝時間)*最大電壓值 18
  19. 19. PWM 調控燈光亮度實驗 19
  20. 20. 類比輸出-調控燈光亮度 • On the ESP8266 the pins 0, 2, 4, 5, 12, 13, 14 and 15 all support PWM. The limitation is that they must all be at the same frequency, and the frequency must be between 1Hz and 1kHz. import time import machine pwm = machine.PWM(machine.Pin(4)) pwm.freq(60) while True: for i in range(0,1024,5): pwm.duty(i) time.sleep(0.005) for i in range(1023, -1, -5): pwm.duty(i) time.sleep(0.005)
  21. 21. 類比輸入 import machine import time adc = machine.ADC(0) while True: print(adc.read()) time.sleep(0.5)
  22. 22. Load File & Run Code • 如果開發板有1MB以上的Flash, MicroPython 啟動後會配置一個內 部的 filesystem • 可以將程式碼存入, 當ESP8266啟動時可以自行載入程式執行 (就像是 Arduino 執行 Arduino sketch一樣) • Start up scripts • boot.py : is executed first (if it exists) • main.py : is executed after boot.py completes
  23. 23. ampy • https://github.com/adafruit/ampy • With ampy you can • send files from your computer to a MicroPython board's file system, • download files from a board to your computer, • and even send a Python script to a board to be executed. $ pip install adafruit-ampy $ ampy --port COM15 ls $ ampy --port COM15 run blink10times.py $ ampy --port COM15 put blink10times.py main.py $ ampy --port COM15 rm main.py
  24. 24. MQTT簡介 • 一個 machine-to-machine (M2M) 的 發佈(Publish)/訂閱(Subscribe)訊息 的傳輸協定 • 當發佈者將訊息送至Topic平台, Topic會將這個訊息送到所註冊的訂 閱者 • 發佈者可以是一個Sensors也可以是 一個推播訊息的入口 • 訂閱者可以是個伺服器上的應用服 務也可以是個手機
  25. 25. MQTT 整合應用 ESP8266 (DHT) MQTT Gateway WebServer MQTT Broker Publish (8266) Subscribe (8266) upload data 類似 ThingSpeak 的角色 NodeMCU (Relay, LED) Subscribe (Relay) Publish (Relay)
  26. 26. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 輸入email
  27. 27. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 告訴你去收確認的email
  28. 28. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 點選確認連結
  29. 29. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 公司資料不必為真, VAT可不填
  30. 30. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 新建Instances
  31. 31. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak
  32. 32. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak
  33. 33. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak 新建User
  34. 34. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak
  35. 35. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak
  36. 36. CloudMqtt申請 https://www.youtube.com/watch?v=zx0kMbwxnak
  37. 37. CloudMqtt-訊息發佈及訂閱 https://www.youtube.com/watch?v=zx0kMbwxnak
  38. 38. Remote control by Mqtt • 遠端控制LED on/off • Sample code: https://github.com/cclai999/micropython-lab
  39. 39. Reference • http://docs.micropython.org/en/latest/esp8266/ • https://learn.adafruit.com/category/micropython

×