OpenMV Cam RT1062¶
OpenMV Cam RT1062 是一款低功耗機器視覺開發板,採用 NXP i.MX RT1062(Cortex‑M7 @ 600 MHz)打造。本開發板結合了 USB‑C 高速網路、Wi‑Fi/Bluetooth 與 10/100 Ethernet,並搭配安裝於可拆卸載板上的 OV5640 5MP 感測器。相機在深度睡眠時僅從 LiPo 電池汲取約 30 µA 的電流,因此非常適合電池供電的專案。
完整的資料手冊、照片與尺寸資訊請參閱 OpenMV Cam RT1062 產品頁面。
重點特色¶
NXP i.MX RT1062 Cortex‑M7,運作頻率 600 MHz。
32 MB 外部 SDRAM(16 位元 @ 160 MHz,320 MB/s),外加 1 MB 內部 SRAM 與 16 MB QSPI 快閃記憶體(133 MHz 4 位元 SDR,讀取 66 MB/s);R6 以上具備 4 KB EEPROM。
OV5640 5MP 滾動快門感測器。
板載 IMU(12 位元三軸加速度計,±2/4/8 g)。
高速 USB‑C(480 Mb/s,1.5 A 電流限制)、10/100 Mb/s Ethernet(透過擴充板可支援 PoE)、Wi‑Fi a/b/g/n + Bluetooth 5.1(晶片天線或 U.FL 選項)。
microSD 插槽 — SD 最高 2 GB、SDHC 最高 32 GB、SDXC 最高 2 TB。
LiPo 充電器(R6 以上為 500 mA,R4/R5 為 100 mA)、具備備用電池焊盤的 RTC。深度睡眠時電池耗電 約 30 µA。
14 個 I/O 接腳,全部為 3.3 V 輸出 / 3.3 V 容許,每個接腳 4 mA,皆可觸發中斷。
使用者 RGB LED、使用者 SW 按鈕、硬體電源按鈕(深度睡眠 / 喚醒狀態機),以及一個獨立的狀態 LED 用於充電 / USB / VIN 電源。
警告
RT1062 的 I/O 接腳 不容許 5 V。請勿將裝置直接連接到像 Arduino Mega 這類的 5 V MCU。僅能透過 VIN 為開發板供電。
接腳配置¶
接腳參考¶
接腳名稱 |
功能 |
|---|---|
P0 |
SPI1 MOSI / PWM2 B3 |
P1 |
SPI1 MISO / CAN0 TX |
P2 |
SPI1 SCLK / PWM2 B3 |
P3 |
SPI1 SS / CAN0 RX |
P4 |
I2C1 SCL / UART1 TX / PWM1 X2 |
P5 |
I2C1 SDA / UART1 RX / PWM1 X3 |
P6 |
ADC |
P7 |
PWM2 A0 |
P8 |
PWM2 B0 |
P9 |
PWM1 A3 |
P10 |
PWM1 B3 / 影格同步 I/O |
P11 |
喚醒(低電位有效,接到 GND 以喚醒) |
P12 |
RESET — 拉至 GND 以重置開發板(非 GPIO) |
P13 |
數位 I/O |
P14 |
數位 I/O |
ON/OFF |
複製硬體電源按鈕功能的排針焊盤(低電位有效) |
SW |
使用者按鈕(低電位有效) |
ST |
VIN 供電時為低電位,USB 供電時為高電位 |
CHG |
低電位有效;當所連接的 LiPo 電池充電時為低電位 |
PG |
低電位有效;當 VIN 或 USB 電源存在時為低電位 |
LED_RED |
RGB LED 紅色通道(低電位有效) |
LED_GREEN |
RGB LED 綠色通道(低電位有效) |
LED_BLUE |
RGB LED 藍色通道(低電位有效) |
備註
P10 影格同步線是共用匯流排。 它同時連接到 MCU、相機感測器的觸發 / 曝光接腳,以及使用者排針。方向由應用程式定義 — 視感測器的設定方式而定,可由 MCU、感測器或外部訊號來驅動它。請確保同一時間只有一個驅動端處於作用狀態。
備註
ON/OFF 與 P11 是參考至常開的 RAW 電源軌(而非切換式 3.3 V 電源軌),因此即使開發板其餘部分處於深度睡眠 / 低功耗模式,它們仍可正常運作。兩者皆為低電位有效輸入。
這些接腳會經過電位轉換器,以便能跨接於 RAW 電源軌上。如果你確實需要 ON/OFF 或 P11 具有 3.3 V 直接 GPIO 的行為(例如要從 3.3 V MCU 直接驅動它們而不經過轉換器),開發板提供了上拉與 0 歐姆跳線焊盤,讓你可以略過轉換器。這是進階的硬體改裝 — 大多數使用者應保持原狀。
備註
P13 與 P14 預設為一般 GPIO,沒有特殊功能。透過重新焊接開發板背面的 0 歐姆電阻焊橋,這些焊盤可選擇性地重新導向至其他訊號:
P13 ↔ CHG 狀態 / JTAG TRSTB
P14 ↔ ST 狀態 / JTAG TDI
大多數使用者不會去動這些跳線 — 除非你特別需要電源管理回讀或 JTAG,否則請保留 GPIO 預設值。
電源接腳¶
3.3V — 穩壓 3.3 V 電源軌。在 RT1062 上 僅供輸出 — 請勿將外部電源饋入此接腳。可為擴充板提供最高 1 A。
VIN — 5 V 輸入。為開發板與板載 LiPo 充電器供電。
RAW — 輸入/輸出,常開(3.6 V – 5 V)。承載目前作用中的任一電源(VIN、USB 或所連接的電池),也可作為輸入使用。當要將電源饋入 RAW 時,你必須透過串聯二極體來驅動 RAW — 否則電流會回灌至 VIN/USB,並損壞電源供應器或板載保護電路。
GND — 共同接地。
備註
板載電源管理晶片會自動選擇 USB 或 VIN 中電壓較高者 來為開發板與電池充電器供電。如果連接了 LiPo,它會以剩餘的餘裕進行充電;若 VIN/USB 電壓下降或被拔除,控制器會切換至電池以維持開發板運作。
備註
開發板背面有用於外接 3.3 V RTC 備用電池 的焊盤。將鈕扣電池接到這些焊盤,可在開發板其餘部分未供電時維持 RTC 運作。
小訣竅
使用 電池壽命估算器 來推估 RT1062 在指定的作用 / 深度睡眠工作週期下,以電池供電可運作多久。
Ethernet 接腳¶
RT1062 在 GPIO 排針旁的專用焊盤上引出 10/100 Mb/s Ethernet PHY 的 MDI 對。MDI 接腳無法安全地直接接到 RJ45 — PHY 與線纜之間 必須 有 Ethernet 磁性元件(隔離變壓器,可內建於 magjack 中或位於擴充板上)。OpenMV PoE 擴充板已包含這些元件;如果你要自製接頭,請使用整合磁性元件的 RJ45 或外接變壓器。
ETH_LED — 連線/活動 LED。連線建立時為低電位有效;有流量時閃爍。
ETH_TXP / ETH_TXN — 傳送對。
ETH_RXP / ETH_RXN — 接收對。
備註
排針上還引出了四個絲印標示為 Reserved 的焊盤。它們與 OpenMV N6 上的 gigabit Ethernet 對(DC P/N 與 DD P/N)腳位相容,因此同一片 Ethernet / PoE 擴充板可插在任一開發板上。RT1062 的 PHY 只支援 10/100 Mb/s,所以這四個焊盤 沒有任何電氣連接 — 請保持未接狀態。
復原與除錯接腳¶
RESET — 拉至 GND 以重置開發板。釋放後 MCU 即可正常啟動。
SBL — 在為開發板供電的同時拉至 3.3 V,以進入 ROM bootloader(Serial Boot Loader)模式。OpenMV IDE 使用此模式來重新燒錄板載 bootloader。
板上配有專用的 ARM 10 針 SWD/JTAG 排針,與 ST‑LINK 及 SEGGER J‑Link 轉接器相容。
備註
RT1062 預設僅透過此連接器引出 SWD 除錯功能。完整的 JTAG 並非開箱即用。
板載周邊裝置¶
LED¶
RT1062 有兩個 RGB LED:
使用者 RGB LED — 可由軟體控制,以
LED_RED、LED_GREEN與LED_BLUE形式引出::from machine import LED LED("LED_RED").on() LED("LED_GREEN").on() LED("LED_BLUE").on()
電源 LED — 由板載電源管理硬體直接驅動,無軟體控制。可用它一眼判讀電源狀態。
運作時:
通道
意義
藍
VIN 正在為開發板供電(USB 供電時熄滅)
綠
USB 或 VIN 電源存在
紅
正在為所連接的 LiPo 電池充電
在深度睡眠時所有通道都會熄滅,唯獨紅色除外,當 LiPo 充電時它仍會亮起。
電源狀態接腳¶
來自板載電源管理晶片的三個低電位有效狀態輸入:
PG — 當 VIN 或 USB 電源存在時為低電位。永遠為已連接狀態。
ST — 當開發板以 VIN 運作時為低電位,以 USB 電源運作時為高電位。預設未連接。
CHG — 當所連接的 LiPo 電池充電時為低電位。預設未連接。
from machine import Pin
power_ok = not Pin("PG", Pin.IN).value()
相機感測器¶
OV5640 透過 csi --- 相機感測器 模組來驅動::
import csi
cam = csi.CSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
cam.snapshot(time=2000) # let auto‑exposure settle
while True:
img = cam.snapshot()
OV5640 內建 JPEG 壓縮器。將 csi.CSI.pixformat 設為 csi.JPEG,感測器就會透過相機匯流排將壓縮後的影格直接傳送到相機,使高解析度擷取變得實用:csi.HD(1280×720)、csi.FHD(1920×1080),以及完整 5MP 的 csi.WQXGA2(2592×1944)皆可以 JPEG 串流。使用 csi.CSI.quality(0-100,數值越高 = 影格越大、細節越多)調整壓縮率::
cam.pixformat(csi.JPEG)
cam.framesize(csi.WQXGA2)
cam.quality(90)
感測器安裝於 可拆卸模組 上 — 可換成任一其他 OpenMV 相機模組(全域快門、熱成像、更高解析度等),無需更動開發板的其餘部分。
機器學習¶
ml --- 機器學習 在 Cortex‑M7 上以 CMSIS‑NN 核心執行量化的 TFLite 模型 — 速度足以讓精簡型偵測器以每秒數個影格運作。位於唯讀 /rom 檔案系統上的模型會直接從快閃記憶體載入,無需複製到 RAM。以下是一個 128×128 的 BlazeFace 偵測器,在每一影格上疊加所偵測到的臉部及其六個地標::
import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace
# Initialize the sensor.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400))
# Load built-in face detection model
model = ml.Model("/rom/blazeface_front_128.tflite", postprocess=BlazeFace(threshold=0.4))
print(model)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
# faces is a list of ((x, y, w, h), score, keypoints) tuples
for r, score, keypoints in model.predict([img]):
ml.utils.draw_predictions(img, [r], ("face",), ((0, 0, 255),), format=None)
# keypoints is a ndarray of shape (6, 2)
# 0 - right eye (x, y)
# 1 - left eye (x, y)
# 2 - nose (x, y)
# 3 - mouth (x, y)
# 4 - right ear (x, y)
# 5 - left ear (x, y)
ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))
print(clock.fps(), "fps")
IMU¶
RT1062 韌體 不會 將板載加速度計連接到 imu --- imu 感測器 模組。請改為透過內部 I²C 匯流排直接與它通訊 — 該晶片位於位址 0x15,從暫存器 0x03 開始封裝三個帶正負號的 12 位元加速度通道,外加一個 8 位元溫度位元組::
import machine
import time
ADDR = 0x15
DATA_REG = 0x03
LSB_PER_G = 1024.0 # ±2 g range
def s12(hi, lo):
v = ((hi << 8) | lo) >> 4
return v - 0x1000 if v & 0x800 else v
bus = machine.I2C(2)
print("Devices on I²C2:", bus.scan())
while True:
d = bus.readfrom_mem(ADDR, DATA_REG, 7)
x = s12(d[0], d[1]) / LSB_PER_G
y = s12(d[2], d[3]) / LSB_PER_G
z = s12(d[4], d[5]) / LSB_PER_G
temp_c = d[6] * 0.586 + 25.0
print("x=%+.2fg y=%+.2fg z=%+.2fg T=%.1f°C" % (x, y, z, temp_c))
time.sleep_ms(100)
EEPROM¶
R6 以上的開發板 在與加速度計相同的內部匯流排上配有一顆通用 4 KB I²C EEPROM。(較早的版本沒有 — 在 R4/R5 上呼叫這些程式碼片段會因缺少 I²C ack 而逾時。)請使用標準的 machine.I2C readfrom_mem / writeto_mem API,搭配 16 位元記憶體位址::
import machine
import time
EEPROM_ADDR = 0x50 # default address
PAGE_SIZE = 32 # bytes per page (both read and write)
EEPROM_SIZE = 4096
bus = machine.I2C(2)
# Dump the entire 4 KB one page at a time
data = bytearray()
for offset in range(0, EEPROM_SIZE, PAGE_SIZE):
data += bus.readfrom_mem(EEPROM_ADDR, offset, PAGE_SIZE, addrsize=16)
print(len(data), "bytes")
# Write a small payload back at offset 0 (fits in one page)
bus.writeto_mem(EEPROM_ADDR, 0, b"hello, world", addrsize=16)
time.sleep_ms(10) # ~5 ms write cycle after each page
# Read it back
print(bus.readfrom_mem(EEPROM_ADDR, 0, 12, addrsize=16))
讀取與寫入 都必須維持在 32 位元組的頁面範圍內。任何更大的傳輸都要拆分成每頁一次呼叫,並在連續寫入之間加入約 5 ms 的寫入週期延遲。
Wi‑Fi¶
板載的 CYW43 系列模組透過 network --- 網路設定 以站台介面的形式引出。連線後,ipconfig("addr4") 會回傳 (ip, netmask) 配對::
import network, time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("ssid", "password")
while not wlan.isconnected():
time.sleep(1)
print("Wi‑Fi IP:", wlan.ipconfig("addr4")[0])
Bluetooth¶
同一個無線模組也引出了 Bluetooth 5.1。請使用 aioble --- 非同步 BLE 來進行對 asyncio 友善的 BLE — 例如,以周邊裝置的身分廣播並等待中央裝置連線::
import asyncio
import aioble
async def run():
while True:
conn = await aioble.advertise(250_000, name="OpenMV-RT1062")
print("Connected:", conn.device)
await conn.disconnected()
asyncio.run(run())
Ethernet¶
當 RJ45(含磁性元件)連接到 MDI 焊盤時,10/100 PHY 會以 LAN 介面的形式出現。連線一旦建立,DHCP 就會自動執行::
import network, time
lan = network.LAN()
lan.active(True)
while not lan.isconnected():
time.sleep(1)
print("Ethernet IP:", lan.ipconfig("addr4")[0])
microSD 卡¶
當插入記憶卡時,它會自動掛載於 /sdcard,並可透過一般的檔案系統使用::
import os
for entry in os.listdir("/sdcard"):
print(entry)
匯流排參考¶
GPIO¶
使用 machine.Pin 來讀取或驅動任一絲印標示的接腳。輸出為 3.3 V CMOS,每個接腳可吸入/輸出最高 4 mA。
from machine import Pin
out = Pin("P0", Pin.OUT)
out.on()
out.off()
out.value(1)
inp = Pin("P1", Pin.IN, Pin.PULL_UP)
print(inp.value())
任何輸入接腳也可在邊緣轉態時觸發中斷::
def handler(pin):
print("triggered:", pin)
Pin("P1", Pin.IN, Pin.PULL_UP).irq(
handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)
UART¶
匯流排 |
TX |
RX |
|---|---|---|
UART1 |
P4 |
P5 |
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello")
uart.read(5)
I²C¶
匯流排 |
SCL |
SDA |
|---|---|---|
I2C1 |
P4 |
P5 |
from machine import I2C
i2c = I2C(1, freq=400_000)
i2c.scan()
i2c.writeto(0x76, b"hi")
同一個硬體也可透過 machine.I2CTarget 在目標(從屬)模式下使用,以向另一個 I²C 控制器暴露一塊記憶體區域::
from machine import I2CTarget
buf = bytearray(32)
target = I2CTarget(1, addr=0x42, mem=buf)
SPI¶
匯流排 |
MOSI |
MISO |
SCK |
CS |
|---|---|---|---|---|
SPI1 |
P0 |
P1 |
P2 |
P3 |
from machine import SPI
from machine import Pin
spi = SPI(1, baudrate=10_000_000)
cs = Pin("P3", Pin.OUT, value=1) # CS is not driven by the SPI peripheral
cs.value(0)
spi.write(b"hello")
cs.value(1)
CAN¶
匯流排 |
TX |
RX |
|---|---|---|
CAN1 |
P1 |
P3 |
備註
韌體 v5.0.0 尚未在此開發板上支援 CAN。
from machine import CAN
can = CAN(1, 500_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())
ADC¶
唯一的使用者 ADC 接腳是 P6,其滿刻度約為 3.3 V::
from machine import ADC
import time
adc = ADC("P6")
while True:
voltage = adc.read_u16() * 3.3 / 65535
print(voltage)
time.sleep_ms(100)
PWM¶
接腳 |
FlexPWM 通道 |
|---|---|
P0 |
PWM2 B3 |
P2 |
PWM2 B3 |
P4 |
PWM1 X2 |
P5 |
PWM1 X3 |
P7 |
PWM2 A0 |
P8 |
PWM2 B0 |
P9 |
PWM1 A3 |
P10 |
PWM1 B3 |
透過 machine.PWM 來驅動其中任一個::
from machine import Pin, PWM
pwm = PWM(Pin("P9"), freq=1_000, duty_u16=32768)
軟體位元拍打(bit‑banged)匯流排¶
如果你需要額外的匯流排,machine.SoftI2C 與 machine.SoftSPI 可在任何 GPIO 上運作。
熱成像感測器(板外)¶
韌體包含 fir --- 熱感測器驅動程式 (fir == far infrared,遠紅外線) 驅動程式,可用於外接的熱成像儀:
MLX90621 — 16 × 4 IR 陣列
MLX90640 — 32 × 24 IR 陣列
MLX90641 — 16 × 12 IR 陣列
AMG8833 — 8 × 8 IR 陣列
將模組接到開發板的 I²C 匯流排,並以 fir.init() + fir.snapshot() 讀取影格::
import time
import image
import fir
fir.init() # auto‑detects the sensor
clock = time.clock()
while True:
clock.tick()
try:
img = fir.snapshot(x_scale=5, y_scale=5,
color_palette=image.PALETTE_IRONBOW,
hint=image.BICUBIC,
copy_to_fb=True)
except OSError:
continue
print(clock.fps())
fir 驅動程式只透過 I²C 4 與感測器通訊 — 請將模組接到 P4(SCL)與 P5(SDA)。
計時¶
time¶
time 模組涵蓋阻塞式延遲、單調遞增的計時節拍,以及經過時間的量測::
import time
time.sleep(1) # seconds
time.sleep_ms(500)
time.sleep_us(10)
start = time.ticks_ms()
# ...do work...
elapsed = time.ticks_diff(time.ticks_ms(), start)
虛擬計時器¶
machine.Timer 可在不佔用硬體計時器插槽的情況下排程週期性或單次的回呼函式。將 id 傳入 -1 即可使用虛擬(軟體)計時器::
from machine import Timer
one_shot = Timer(-1)
one_shot.init(period=5_000, mode=Timer.ONE_SHOT,
callback=lambda t: print("once"))
periodic = Timer(-1)
periodic.init(period=2_000, mode=Timer.PERIODIC,
callback=lambda t: print("tick"))
週期值以毫秒為單位。呼叫 deinit() 以停止並釋放該插槽。
即時時鐘¶
machine.RTC 可在重置後維持實際時間,並且(在後方焊盤接上選配的 3.3 V 備用電池時,請參閱 電源接腳)即使完全斷電也能維持::
from machine import RTC
rtc = RTC()
rtc.datetime((2026, 4, 30, 4, 12, 0, 0, 0)) # Y, M, D, weekday, h, m, s, subsec
print(rtc.datetime())
RTC 在深度睡眠期間仍持續運作,因此你可以將它用作 machine.deepsleep() 的喚醒來源。
看門狗¶
若應用程式當機,machine.WDT 會重置開發板。一旦啟動就無法停止或重新設定 — 請在主迴圈中定期餵食它::
from machine import WDT
wdt = WDT(timeout=5_000) # 5 second window
while True:
# ...do work...
wdt.feed()
啟動與執行階段資訊¶
USB bootloader 視窗¶
每次上電時,相機都會執行一段簡短的 bootloader(數秒),讓 OpenMV IDE 無需使用者進入 DFU 模式即可更新韌體。視窗逾時後,bootloader 會將控制權交給 boot.py,接著是 main.py。
正在執行的指令碼可隨時呼叫 machine.bootloader() 重新進入 bootloader::
import machine
machine.bootloader()
檔案系統與啟動順序¶
RT1062 韌體在啟動時最多掛載三個檔案系統:
內部快閃記憶體 — 永遠掛載於
/flash。預設存放main.py與README.txt;於首次啟動時建立。microSD 卡 — 若插入記憶卡,則掛載於
/sdcard。ROMFS — 唯讀、記憶體映射的檔案系統,位於
/rom,用於封裝可受惠於零複製存取的大型資料資產(例如 AI 模型)。由 MicroPython 在啟動時自動掛載,早於任何使用者 Python 程式碼執行之前。
掛載後,若記憶卡存在,工作目錄會設為 /sdcard,否則為 /flash。直譯器接著會從該目錄執行指令碼:
boot.py會在 每次 軟重置時執行(冷開機、從 REPL 按Ctrl‑D,或每當正在執行的指令碼回傳時)。main.py僅在冷開機時 執行,緊接在boot.py之後。後續的軟重置會重新執行boot.py,但會直接落入 REPL — 若要重新執行main.py,你必須完全重置開發板。
將 boot.py 或 main.py 放到 SD 卡上,會覆蓋快閃記憶體中的副本而不更動它 — 這兩個檔案都會在啟動目錄中查找(記憶卡掛載時為 /sdcard,否則為 /flash)。
在剛燒錄好的開發板上隨附的預設 main.py,只會閃爍使用者 RGB LED 的 藍色 通道作為心跳訊號(兩次短脈衝、短暫間隔),讓你不需連接任何主機就能判斷韌體是否乾淨啟動。
sys.path 會擴充以納入全部三個檔案系統及其 lib/ 子目錄,因此可匯入的模組可放在 /flash/lib、/sdcard/lib 或 /rom/lib 中。
若要強制系統忽略已插入的 SD 卡(例如即使有記憶卡也要執行快閃記憶體中的 main.py),請在 /flash 的根目錄建立一個名為 SKIPSD 的空檔案。
透過 USB 連接時,啟動檔案系統(若有記憶卡則為 /sdcard,否則為 /flash)也會在主機上列舉為 USB 大量儲存裝置,讓你可以直接編輯 boot.py、main.py 及任何其他檔案。在重置相機前請先退出此磁碟機,以便主機將其快取的寫入內容刷新。
備註
由於作業系統將該磁碟機視為被動的區塊裝置,由 OpenMV Cam 上執行的程式碼所建立或修改的檔案,要等到主機重新掛載磁碟機後才會顯示。如果作業系統與 OpenMV Cam 同時寫入同一個檔案系統,作業系統會勝出並覆蓋相機所做的變更。對於指令碼要寫回的任何資料,請使用 SD 卡,並在從主機讀取這些檔案前重新掛載。
備註
當主機正在從 USB 大量儲存磁碟機讀取或寫入時,使用者 RGB LED 的 紅色 通道可能會短暫亮起 — 這是韌體驅動的活動指示,並非故障。
儲存空間大小¶
RT1062 出貨時配有:
/flash— 4 MB FAT 檔案系統,可讀寫。/rom— 8 MB 唯讀、記憶體映射的 ROMFS,用於封裝可受惠於零複製 mmap 存取的指令碼與 ML 模型。/sdcard— 所插入 microSD 卡的完整容量(存在時),可讀寫。
硬體錯誤(hard‑fault)指示¶
如果使用者 RGB LED 正快速循環顯示所有顏色 — 快到看起來像是 閃爍的白色 LED 而非各自分明的色相 — 表示韌體遇到了無法復原的硬體錯誤(hard fault)。請重新燒錄韌體以復原;如果重新燒錄沒有幫助,開發板可能已實體損壞。
軟體函式庫¶
完整的模組清單請參閱 函式庫索引 — 其中包含 RT1062 版本所獨有的模組。