# MicroPython如何使用
## 目錄
1. [什么是MicroPython](#什么是micropython)
2. [MicroPython的特點](#micropython的特點)
3. [MicroPython的安裝與配置](#micropython的安裝與配置)
- 3.1 [硬件準備](#硬件準備)
- 3.2 [固件燒錄](#固件燒錄)
- 3.3 [連接設備](#連接設備)
4. [MicroPython基礎語法](#micropython基礎語法)
- 4.1 [變量與數據類型](#變量與數據類型)
- 4.2 [控制結構](#控制結構)
- 4.3 [函數與模塊](#函數與模塊)
5. [MicroPython硬件交互](#micropython硬件交互)
- 5.1 [GPIO控制](#gpio控制)
- 5.2 [PWM輸出](#pwm輸出)
- 5.3 [ADC與DAC](#adc與dac)
- 5.4 [I2C與SPI通信](#i2c與spi通信)
6. [常用庫與擴展](#常用庫與擴展)
7. [實戰項目示例](#實戰項目示例)
- 7.1 [LED閃爍](#led閃爍)
- 7.2 [溫濕度傳感器讀取](#溫濕度傳感器讀取)
8. [常見問題與解決](#常見問題與解決)
9. [總結](#總結)
---
## 什么是MicroPython
MicroPython是Python 3編程語言的一個精簡實現,專為微控制器和嵌入式系統設計。它由Damien George于2013年發起,能夠在資源受限的設備(如ESP8266、ESP32、STM32等)上運行完整的Python解釋器,為嵌入式開發帶來了高級語言的便利性。
---
## MicroPython的特點
1. **輕量級**:核心解釋器僅需256KB ROM和16KB RAM
2. **兼容Python 3**:支持大多數Python標準庫語法
3. **硬件級訪問**:提供直接操作GPIO、I2C等硬件的API
4. **交互式解釋器(REPL)**:支持實時代碼執行與調試
5. **跨平臺**:支持多種MCU架構(ARM, xtensa等)
---
## MicroPython的安裝與配置
### 硬件準備
常見支持設備:
- ESP系列:ESP8266/ESP32(最流行)
- STM32系列:Pyboard(官方開發板)
- RP2040:Raspberry Pi Pico
- Nordic nRF系列
### 固件燒錄
以ESP32為例:
1. 下載固件:
```bash
wget https://micropython.org/resources/firmware/esp32-20220618-v1.19.1.bin
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32-*.bin
screen /dev/ttyUSB0 115200
>>>提示符# 基本類型
counter = 10 # 整型
temp = 23.5 # 浮點
name = "ESP32" # 字符串
is_active = True # 布爾
# 復合類型
pins = [0, 2, 4] # 列表
config = {'ssid': 'mywifi', 'pw': '1234'} # 字典
# 條件判斷
if voltage > 3.3:
print("Warning!")
elif voltage < 1.8:
print("Low power")
else:
print("Normal")
# 循環
for pin in [2, 4, 5]:
digital_write(pin, HIGH)
while True:
read_sensor()
time.sleep(1)
# 自定義函數
def blink(pin, times=3):
for _ in range(times):
digital_write(pin, HIGH)
time.sleep(0.5)
digital_write(pin, LOW)
# 導入模塊
import machine
import time
from math import sqrt
from machine import Pin
led = Pin(2, Pin.OUT) # ESP32內置LED通常接GPIO2
button = Pin(0, Pin.IN, Pin.PULL_UP)
led.value(1) # 高電平
if not button.value():
print("Button pressed!")
from machine import Pin, PWM
pwm = PWM(Pin(15), freq=1000, duty=512) # 50%占空比
pwm.duty(256) # 調整為25%
from machine import ADC, Pin
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB) # 0-3.3V量程
voltage = adc.read() / 4095 * 3.3
# ESP32支持DAC
from machine import DAC
dac = DAC(Pin(25))
dac.write(128) # 輸出1.65V
# I2C示例
from machine import I2C, Pin
i2c = I2C(scl=Pin(22), sda=Pin(21))
devices = i2c.scan() # 掃描設備地址
# SPI示例
from machine import SPI
spi = SPI(1, baudrate=8000000, polarity=0, phase=0)
spi.write(b'\x01\x02\x03')
| 模塊名稱 | 功能描述 |
|---|---|
machine |
硬件抽象層(核心功能) |
network |
網絡連接(WiFi/藍牙) |
urequests |
HTTP請求 |
ujson |
JSON處理 |
utime |
時間相關操作 |
neopixel |
WS2812 RGB LED控制 |
import time
from machine import Pin
led = Pin(2, Pin.OUT)
while True:
led.value(not led.value())
time.sleep(0.5)
使用DHT11:
import dht
from machine import Pin
sensor = dht.DHT11(Pin(15))
sensor.measure()
print(f"Temp: {sensor.temperature()}°C")
print(f"Humidity: {sensor.humidity()}%")
無法連接REPL
內存不足
import gc
gc.collect() # 手動垃圾回收
WiFi連接失敗
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('SSID', 'password')
固件不兼容
MicroPython極大降低了嵌入式開發的門檻,讓開發者能夠: - 使用熟悉的Python語法快速原型開發 - 通過REPL實現交互式調試 - 輕松集成各種傳感器和外設
下一步建議: 1. 探索官方文檔(micropython.org) 2. 參與社區項目貢獻 3. 嘗試移植到更多硬件平臺
“MicroPython brings Python’s productivity to the embedded world.” - Damien George “`
(注:實際字數約2800字,完整3750字版本需要擴展每個章節的詳細示例和原理說明,建議在硬件交互和實戰項目部分增加更多具體案例)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。