OpenMV Cam RT1062¶
OpenMV Cam RT1062 je nízkopříkonová deska pro strojové vidění postavená kolem NXP i.MX RT1062 (Cortex‑M7 @ 600 MHz). Deska kombinuje vysokorychlostní síťování přes USB‑C, Wi‑Fi/Bluetooth a 10/100 Ethernet se senzorem OV5640 5MP na vyměnitelném nosiči. Kamera odebírá z LiPo baterie v hlubokém spánku jen ~30 µA, což ji činí vhodnou pro projekty napájené z baterie.
Kompletní datasheet, fotografie a rozměry najdete na produktové stránce OpenMV Cam RT1062.
Hlavní vlastnosti¶
NXP i.MX RT1062 Cortex‑M7 na 600 MHz.
32 MB externí SDRAM (16‑bit @ 160 MHz, 320 MB/s) plus 1 MB interní SRAM a 16 MB QSPI flash (133 MHz 4‑bit SDR, čtení 66 MB/s); 4 KB EEPROM na R6+.
Senzor OV5640 5MP s rolling shutterem.
Integrovaná IMU (12‑bit 3‑osý akcelerometr, ±2/4/8 g).
Vysokorychlostní USB‑C (480 Mb/s, proudový limit 1,5 A), 10/100 Mb/s Ethernet (s podporou PoE přes shield), Wi‑Fi a/b/g/n + Bluetooth 5.1 (čipová anténa nebo varianta U.FL).
Slot microSD — SD do 2 GB, SDHC do 32 GB, SDXC do 2 TB.
Nabíječka LiPo (500 mA na R6+, 100 mA na R4/R5), RTC s ploškami pro záložní baterii. Hluboký spánek odebírá na baterii ~30 µA.
14 I/O pinů, všechny s výstupem 3,3 V / tolerantní k 3,3 V, 4 mA na pin, schopné přerušení.
Uživatelská RGB LED, uživatelské tlačítko SW, hardwarové tlačítko napájení (stavový automat hluboký spánek / probuzení) a samostatná stavová LED pro nabíjení / USB / napájení VIN.
Varování
I/O piny RT1062 nejsou tolerantní k 5 V. Nepřipojujte zařízení přímo k 5V MCU jako je Arduino Mega. Desku napájejte pouze přes VIN.
Rozložení pinů¶
Referenční přehled pinů¶
Název pinu |
Funkce |
|---|---|
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 / frame sync I/O |
P11 |
wakeup (aktivní v nule, pro probuzení připojte na GND) |
P12 |
RESET — připojením na GND resetuje desku (není to GPIO) |
P13 |
digitální I/O |
P14 |
digitální I/O |
ON/OFF |
ploška na headeru replikující hardwarové tlačítko napájení (aktivní v nule) |
SW |
uživatelské tlačítko (aktivní v nule) |
ST |
nízká úroveň při napájení z VIN, vysoká při napájení z USB |
CHG |
aktivní v nule; nízká úroveň, dokud se připojená LiPo baterie nabíjí |
PG |
aktivní v nule; nízká úroveň, když je přítomno napájení z VIN nebo USB |
LED_RED |
červený kanál RGB LED (aktivní v nule) |
LED_GREEN |
zelený kanál RGB LED (aktivní v nule) |
LED_BLUE |
modrý kanál RGB LED (aktivní v nule) |
Poznámka
Linka frame‑sync P10 je sdílená sběrnice. Je zapojena současně k MCU, ke spouštěcímu / expozičnímu pinu senzoru kamery a k uživatelskému headeru. Směr je definovaný aplikací — podle konfigurace senzoru ji může řídit MCU, senzor nebo externí signál. Zajistěte, aby byl vždy aktivní pouze jeden zdroj signálu.
Poznámka
ON/OFF a P11 jsou vztaženy k vždy zapnuté větvi RAW (nikoli ke spínané větvi 3,3 V), takže zůstávají funkční, zatímco zbytek desky je v režimu hlubokého spánku / nízké spotřeby. Oba vstupy jsou aktivní v nule.
Tyto piny procházejí přes převodníky úrovní, aby mohly fungovat na větvi RAW. Pokud nutně potřebujete chování GPIO přímo na 3,3 V na ON/OFF nebo P11 (například pro jejich řízení z 3,3V MCU bez průchodu přes převodník), deska nabízí plošky pull‑up a 0‑ohmové propojky, které umožňují převodník obejít. Jde o pokročilou hardwarovou úpravu — většina uživatelů by se jí měla vyhnout.
Poznámka
P13 a P14 jsou ve výchozím stavu prosté GPIO bez zvláštní funkce. Plošky lze volitelně přesměrovat na jiné signály přepájením 0‑ohmových můstků (solder bridge) na zadní straně desky:
P13 ↔ stav CHG / JTAG TRSTB
P14 ↔ stav ST / JTAG TDI
Většina uživatelů se těchto propojek nedotkne — ponechte je ve výchozím nastavení GPIO, pokud konkrétně nepotřebujete zpětné čtení správy napájení nebo JTAG.
Napájecí piny¶
3.3V — regulovaná větev 3,3 V. Na RT1062 je pouze výstupem — nepřivádějte do tohoto pinu externí napájení. Pro shieldy je k dispozici až 1 A.
VIN — vstup 5 V. Napájí desku a integrovanou nabíječku LiPo.
RAW — vstup/výstup, vždy zapnutý (3,6 V – 5 V). Vede signál podle toho, který zdroj je aktivní (VIN, USB nebo připojená baterie), a lze jej použít i jako vstup. Při přivádění napájení do RAW jej musíte řídit přes sériovou diodu — jinak by proud tekl zpět do VIN/USB a poškodil zdroj nebo integrovanou ochranu.
GND — společná zem.
Poznámka
Integrovaný čip pro správu napájení automaticky vybere ten z USB nebo VIN, který má vyšší napětí, pro napájení desky a nabíječky baterie. Pokud je připojena LiPo baterie, nabíjí se ze zbývající rezervy a řadič se přepne na baterii, aby udržel desku v chodu, pokud VIN/USB poklesnou nebo se odpojí.
Poznámka
Na zadní straně desky jsou pájecí plošky pro externí 3,3 V záložní baterii RTC. Připojením knoflíkové baterie k těmto ploškám zůstane RTC v chodu, zatímco zbytek desky je bez napájení.
Tip
Pomocí odhadovače životnosti baterie můžete modelovat, jak dlouho RT1062 vydrží na baterii při daném pracovním cyklu aktivní / hluboký spánek.
Ethernetové piny¶
RT1062 vyvádí MDI páry 10/100 Mb/s Ethernet PHY na vyhrazené plošky vedle GPIO headeru. MDI piny nelze bezpečně zapojit přímo do RJ45 — mezi PHY a kabelem je nutná ethernetová magnetika (izolační transformátor, buď zabudovaný v magjacku, nebo na shieldu). OpenMV PoE shield ji obsahuje; pokud si vyrábíte vlastní konektor, použijte RJ45 s integrovanou magnetikou nebo externí transformátor.
ETH_LED — LED stavu linky/aktivity. Aktivní v nule, když je linka aktivní; bliká při provozu.
ETH_TXP / ETH_TXN — vysílací pár.
ETH_RXP / ETH_RXN — přijímací pár.
Poznámka
Header rovněž vyvádí čtyři plošky s potiskem Reserved. Ty jsou rozměrově kompatibilní s gigabitovými ethernetovými páry na OpenMV N6 (DC P/N a DD P/N), takže stejný Ethernet / PoE shield lze zapojit do obou desek. PHY čipu RT1062 zvládá jen 10/100 Mb/s, takže tyto čtyři plošky nemají žádné elektrické propojení — ponechte je nezapojené.
Piny pro obnovu a ladění¶
RESET — připojením na GND resetuje desku. Uvolnění umožní MCU normálně nastartovat.
SBL — připojením na 3,3 V během napájení desky se přejde do režimu ROM bootloaderu (Serial Boot Loader). OpenMV IDE tento režim používá k přeflashování integrovaného bootloaderu.
Je osazen vyhrazený header ARM 10‑pin SWD/JTAG kompatibilní s adaptéry ST‑LINK a SEGGER J‑Link.
Poznámka
RT1062 přes tento konektor ve výchozím stavu vyvádí pouze ladění SWD. Plný JTAG není k dispozici bez úprav.
Integrované periferie¶
LED diody¶
RT1062 má dvě RGB LED:
Uživatelská RGB LED — softwarově ovladatelná, vyvedená jako
LED_RED,LED_GREENaLED_BLUEfrom machine import LED LED("LED_RED").on() LED("LED_GREEN").on() LED("LED_BLUE").on()
Napájecí LED — řízená přímo integrovaným hardwarem pro správu napájení, bez softwarového ovládání. Použijte ji k rychlému zjištění, co zdroj dělá.
Za běhu:
Kanál
Význam
Modrá
Desku napájí VIN (zhasnutá při USB)
Zelená
Přítomno napájení z USB nebo VIN
Červená
nabíjení připojené LiPo baterie
V hlubokém spánku jsou všechny kanály zhasnuté kromě červeného, který stále svítí, dokud se LiPo nabíjí.
Piny stavu napájení¶
Tři stavové vstupy aktivní v nule z integrovaného čipu pro správu napájení:
PG — nízká úroveň, když je přítomno napájení z VIN nebo USB. Vždy zapojeno.
ST — nízká úroveň, když deska běží na VIN, vysoká při běhu na napájení z USB. Ve výchozím stavu nezapojeno.
CHG — nízká úroveň, dokud se připojená LiPo baterie nabíjí. Ve výchozím stavu nezapojeno.
from machine import Pin
power_ok = not Pin("PG", Pin.IN).value()
Senzor kamery¶
OV5640 je řízen přes modul csi — kamerové senzory
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 má integrovaný JPEG kompresor. Nastavte csi.CSI.pixformat na csi.JPEG a senzor dodává komprimované snímky přímo do kamery po sběrnici kamery, což činí praktickými zachycení ve vysokém rozlišení: csi.HD (1280×720), csi.FHD (1920×1080) i plné 5MP csi.WQXGA2 (2592×1944) se streamují jako JPEG. Kompresi nalaďte pomocí csi.CSI.quality (0-100, vyšší = větší snímky, více detailů):
cam.pixformat(csi.JPEG)
cam.framesize(csi.WQXGA2)
cam.quality(90)
Senzor je umístěn na vyměnitelném modulu — vyměňte jej za kterýkoli z dalších modulů kamery OpenMV (global shutter, termální, vyšší rozlišení atd.) bez změny zbytku desky.
Strojové učení¶
ml — Strojové učení spouští kvantizované modely TFLite na Cortex‑M7 s jádry CMSIS‑NN — dostatečně rychle pro kompaktní detektory při několika snímcích za sekundu. Modely na souborovém systému /rom určeném pouze pro čtení se nahrávají přímo z flash paměti bez kopírování do RAM. Zde je detektor BlazeFace 128×128 překreslující detekovaný obličej a jeho šest význačných bodů do každého snímku:
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¶
Firmware RT1062 integrovaný akcelerometr k modulu imu — imu senzor nepřipojuje. Komunikujte s ním místo toho přímo po interní sběrnici I²C — čip je na adrese 0x15 a obsahuje tři znaménkové 12‑bitové kanály zrychlení plus 8‑bitový bajt teploty počínaje registrem 0x03
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¶
Desky R6 a novější obsahují generickou 4 KB I²C EEPROM na téže interní sběrnici jako akcelerometr. (Starší revize ji nemají — volání těchto úryvků na R4/R5 vyprší kvůli chybějícímu I²C ack.) Použijte standardní API machine.I2C readfrom_mem / writeto_mem s 16‑bitovou adresou paměti:
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))
Jak čtení, tak zápisy musí zůstat v rámci jedné 32bajtové stránky. Jakýkoli větší přenos rozdělte na jedno volání na stránku a mezi po sobě jdoucí zápisy přidejte prodlevu zápisového cyklu ~5 ms.
Wi‑Fi¶
Integrovaný modul z rodiny CYW43 je vyveden přes network — konfigurace sítě jako stanicové rozhraní. Po připojení ipconfig("addr4") vrací dvojici (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¶
Tentýž bezdrátový modul vyvádí také Bluetooth 5.1. Pro BLE přívětivé k asyncio použijte aioble — Asynchronní BLE — například inzerujte jako periferie a vyčkejte na připojení centrály:
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¶
Když je k MDI ploškám připojen RJ45 (s magnetikou), 10/100 PHY se objeví jako rozhraní LAN. Jakmile linka naběhne, automaticky se spustí DHCP:
import network, time
lan = network.LAN()
lan.active(True)
while not lan.isconnected():
time.sleep(1)
print("Ethernet IP:", lan.ipconfig("addr4")[0])
Karta microSD¶
Po vložení karty se automaticky připojí na /sdcard a je použitelná přes běžný souborový systém:
import os
for entry in os.listdir("/sdcard"):
print(entry)
Referenční přehled sběrnic¶
GPIO¶
Použijte machine.Pin pro čtení nebo řízení kteréhokoli z popsaných pinů. Výstupy jsou 3,3 V CMOS a mohou pojmout/dodat až 4 mA na pin.
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())
Kterýkoli vstupní pin může také vyvolat přerušení při hranových přechodech:
def handler(pin):
print("triggered:", pin)
Pin("P1", Pin.IN, Pin.PULL_UP).irq(
handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)
UART¶
Sběrnice |
TX |
RX |
|---|---|---|
UART1 |
P4 |
P5 |
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello")
uart.read(5)
I²C¶
Sběrnice |
SCL |
SDA |
|---|---|---|
I2C1 |
P4 |
P5 |
from machine import I2C
i2c = I2C(1, freq=400_000)
i2c.scan()
i2c.writeto(0x76, b"hi")
Stejný hardware lze použít i v režimu cíle (slave) přes machine.I2CTarget k vyvedení paměťové oblasti jinému I²C řadiči:
from machine import I2CTarget
buf = bytearray(32)
target = I2CTarget(1, addr=0x42, mem=buf)
SPI¶
Sběrnice |
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¶
Sběrnice |
TX |
RX |
|---|---|---|
CAN1 |
P1 |
P3 |
Poznámka
CAN zatím není na této desce ve firmwaru v5.0.0 podporován.
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¶
Jediný uživatelský ADC pin je P6, který má plný rozsah při ~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¶
Pin |
Kanál 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 |
Řiďte kterýkoli z nich přes machine.PWM
from machine import Pin, PWM
pwm = PWM(Pin("P9"), freq=1_000, duty_u16=32768)
Softwarově bit‑bangované sběrnice¶
machine.SoftI2C a machine.SoftSPI fungují na libovolném GPIO, pokud potřebujete další sběrnici.
Termální senzor (mimo desku)¶
Firmware obsahuje ovladač fir — ovladač termálního senzoru (fir == far infrared, vzdálené infračervené záření) pro externě zapojené termální zobrazovače:
MLX90621 — IR pole 16 × 4
MLX90640 — IR pole 32 × 24
MLX90641 — IR pole 16 × 12
AMG8833 — IR pole 8 × 8
Modul zapojte na sběrnici I²C desky a čtěte snímky pomocí 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())
Ovladač fir komunikuje se senzorem pouze přes I²C 4 — modul zapojte na P4 (SCL) a P5 (SDA).
Časování¶
time¶
Modul time pokrývá blokující prodlevy, monotónní tiky a měření uplynulého času:
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)
Virtuální časovače¶
machine.Timer plánuje periodické nebo jednorázové callbacky, aniž by zabíral slot hardwarového časovače. Pro použití virtuálního (softwarového) časovače předejte jako id hodnotu -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"))
Hodnoty periody jsou v milisekundách. Pro zastavení a uvolnění slotu zavolejte deinit().
Hodiny reálného času¶
machine.RTC udržuje reálný čas napříč resety a (s volitelnou 3,3 V záložní baterií zapojenou na zadní plošky, viz Napájecí piny) i napříč úplnou ztrátou napájení:
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 běží i během hlubokého spánku, takže jej můžete použít jako zdroj probuzení pro machine.deepsleep().
Watchdog¶
machine.WDT resetuje desku, pokud aplikace zamrzne. Po spuštění jej nelze zastavit ani znovu nakonfigurovat — pravidelně jej krmte uvnitř hlavní smyčky:
from machine import WDT
wdt = WDT(timeout=5_000) # 5 second window
while True:
# ...do work...
wdt.feed()
Informace o bootu a běhu¶
Okno USB bootloaderu¶
Při každém zapnutí kamera spustí krátký bootloader (několik sekund), který umožní OpenMV IDE aktualizovat firmware, aniž by uživatel musel vstupovat do režimu DFU. Po vypršení okna bootloader předá řízení boot.py a poté main.py.
Běžící skript může na vyžádání znovu vstoupit do bootloaderu voláním machine.bootloader()
import machine
machine.bootloader()
Souborový systém a pořadí bootu¶
Firmware RT1062 při bootu připojuje až tři souborové systémy:
Interní flash — vždy připojena na
/flash. Ve výchozím stavu obsahujemain.pyaREADME.txt; vytvoří se při úplně prvním bootu.Karta microSD — pokud je karta vložena, připojí se na
/sdcard.ROMFS — souborový systém pouze pro čtení mapovaný do paměti na
/rompoužívaný k distribuci velkých datových zdrojů (např. AI modelů), které těží z přístupu bez kopírování. Připojuje jej automaticky MicroPython při startu, ještě před spuštěním jakéhokoli uživatelského Python kódu.
Po připojení je pracovní adresář nastaven na /sdcard, pokud je karta přítomna, jinak na /flash. Interpret pak spouští skripty z tohoto adresáře:
boot.pyse spouští při každém softwarovém resetu (studený start,Ctrl‑Dz REPL nebo kdykoli běžící skript skončí).main.pyse spouští pouze při studeném startu, hned poboot.py. Následné softwarové resety znovu spustíboot.py, ale přejdou rovnou do REPL — pro opětovné spuštěnímain.pymusíte desku plně resetovat.
Umístění boot.py nebo main.py na SD kartu přepíše kopii ve flash paměti, aniž by se jí dotklo — oba soubory se vyhledávají v bootovacím adresáři (/sdcard, když je karta připojena, jinak /flash).
Výchozí main.py dodávaný na čerstvě naflashované desce pouze bliká modrým kanálem uživatelské RGB LED jako heartbeat (dva krátké pulzy, krátká mezera), takže poznáte, že firmware nabootoval čistě, i bez připojeného hostitele.
sys.path je rozšířen tak, aby zahrnoval všechny tři souborové systémy a jejich podadresáře lib/, takže importovatelné moduly mohou být v /flash/lib, /sdcard/lib nebo /rom/lib.
Chcete‑li přimět systém ignorovat vloženou SD kartu (například pro spuštění main.py z flash paměti i při přítomné kartě), vytvořte v kořeni /flash prázdný soubor s názvem SKIPSD.
Při připojení přes USB se bootovací souborový systém (/sdcard, pokud je karta přítomna, jinak /flash) na hostiteli vyenumeruje také jako USB velkokapacitní úložiště, což vám umožní přímo upravovat boot.py, main.py a jakékoli další soubory. Před resetem kamery jednotku odpojte (eject), aby hostitel vyprázdnil své cache zápisy.
Poznámka
Protože OS zachází s jednotkou jako s pasivním blokovým zařízením, soubory vytvořené nebo upravené kódem běžícím na OpenMV Cam se neobjeví, dokud hostitel jednotku znovu nepřipojí. Pokud OS i OpenMV Cam zapisují do téhož souborového systému současně, OS zvítězí a přepíše změny provedené kamerou. Pro jakákoli data, která skript zapisuje zpět, použijte SD kartu a před jejich čtením z hostitele jednotku znovu připojte.
Poznámka
Červený kanál uživatelské RGB LED se může krátce rozsvítit, zatímco hostitel čte z USB velkokapacitního úložiště nebo do něj zapisuje — jde o indikátor aktivity řízený firmwarem, nikoli o závadu.
Velikosti úložišť¶
RT1062 se dodává s:
/flash— souborový systém FAT 4 MB, čtení/zápis./rom— 8 MB ROMFS pouze pro čtení mapovaný do paměti, používaný k distribuci skriptů a ML modelů, které těží z přístupu mmap bez kopírování./sdcard— plná velikost jakékoli vložené karty microSD (je‑li přítomna), čtení/zápis.
Indikátor hard‑faultu¶
Pokud uživatelská RGB LED rychle cyklicky střídá všechny barvy — natolik rychle, že to spíše vypadá jako mihotavá bílá LED než jednotlivé odstíny — firmware narazil na neobnovitelný hard fault. K obnově přeflashujte firmware; pokud přeflashování nepomůže, deska může být fyzicky poškozená.
Softwarové knihovny¶
Kompletní seznam modulů — včetně toho, které jsou jedinečné pro build RT1062 — najdete v indexu knihoven.