OpenMV N6¶
OpenMV N6 je postaven na čipu STMicroelectronics STM32N657 (Cortex‑M55 @ 800 MHz) s 1GHz integrovanou NPU s výkonem 600 GOPS INT8. Deska kombinuje NPU se senzorem PAG7936 1 MP s globální závěrkou na výměnném nosiči, gigabitovým Ethernetem, USB‑C high‑speed, Wi‑Fi a Bluetooth 5.1 a zvládá inferenci YOLOv8/YOLOv11 při 30 FPS souběžně se živým streamováním videa.
Kompletní datasheet, fotografie a rozměry najdete na produktové stránce OpenMV N6.
Hlavní vlastnosti¶
STM32N657 Cortex‑M55 na 800 MHz (1280 DMIPS) s ARM Helium 128bitovou SIMD — vektorová propustnost 6,4 gigaops.
1GHz NPU, 600 GOPS INT8 — zvládá detekci YOLOv8/YOLOv11 při 30 FPS.
ISP pro RAW Bayer až do 5 MP, 2D GPU pro škálování a 3D rotaci, enkodér H.264 do 1080p a hardwarový JPEG kodek.
64 MB externí SDRAM (16bitová @ 200 MHz DDR, 800 MB/s) plus 4,2 MB interní SRAM a 32 MB octal flash paměť (200 MHz DDR, 400 MB/s).
PAG7936 barevný senzor 1 MP s globální závěrkou.
Integrovaná IMU (akcelerometr + gyroskop) a mikrofon pro fúzi zvuku a pohybu.
High‑speed USB‑C (480 Mb/s, proudový limit 1,5 A), gigabitový 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 až 2 GB, SDHC až 32 GB, SDXC až 2 TB.
LiPo nabíječka (rychlé nabíjení 500 mA), ADC pro napětí baterie, RTC s 8 KB zálohovací RAM a vyhrazený pin pro zálohovací baterii.
18 I/O pinů, všechny s výstupem 3,3 V / tolerantní na 3,3 V, 20 mA na pin, schopné generovat přerušení.
Uživatelská RGB LED, uživatelské tlačítko a samostatná stavová LED pro nabíjení / USB / napájení VIN.
Varování
I/O piny N6 nejsou tolerantní na 5 V. Nepřipojujte zařízení přímo k 5V MCU, jako je Arduino Mega. N6 napájejte pouze přes VIN.
Rozložení pinů¶
Reference pinů¶
Název pinu |
Funkce |
|---|---|
P0 |
SPI2 MOSI / I2S2 SDO |
P1 |
SPI2 MISO / I2S2 SDI |
P2 |
SPI2 SCLK / UART4 TX / CAN1 TX / I2S2 CK |
P3 |
SPI2 SS / UART4 RX / CAN1 RX / I2S2 WS |
P4 |
I2C2 SCL / UART3 TX / TIM2 CH3 / I3C2 SCL |
P5 |
I2C2 SDA / UART3 RX / TIM2 CH4 / I3C2 SDA |
P6 |
TIM12 CH1 (na tomto pinu není ADC — viz |
P6_ADC |
vyhrazený 12bitový ADC vstup (interně propojený s P6) |
P7 |
TIM4 CH1 |
P8 |
TIM4 CH2 |
P9 |
TIM17 CH1 |
P10 |
TIM15 CH2 / frame sync I/O |
P11 |
wakeup (aktivní v nule, WKUP3) |
P12 |
RESET — stáhnutím na GND se deska resetuje (není to GPIO) |
P13 |
UART7 RX |
P14 |
UART7 TX |
P15 |
SPI4 CS |
P16 |
SPI4 SCK |
P17 |
SPI4 MISO |
P18 |
SPI4 MOSI |
SW |
uživatelské tlačítko (aktivní v nule) |
ONOFF (SW2) |
tlačítko probuzení z hlubokého spánku (aktivní v nule, WKUP2) |
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í VIN nebo USB |
BAT_ADC |
interní ADC kanál měřící napětí připojené LiPo baterie |
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 zároveň propojena s MCU, triggerovacím / expozičním pinem senzoru kamery i s uživatelským headerem. Směr je definován aplikací — linku může řídit MCU, senzor nebo externí signál podle toho, jak je senzor nakonfigurován (některé senzory mohou stejný pin používat jako triggerovací vstup nebo jako expoziční výstup). Dbejte na to, aby byl vždy aktivní pouze jeden ovladač.
Poznámka
ONOFF a P11 jsou vztaženy k vždy zapnuté větvi RAW (nikoli k spínané větvi 3,3 V), takže zůstávají funkční, i když je zbytek desky v hlubokém spánku / nízkopříkonovém režimu. Oba vstupy jsou aktivní v nule.
Tyto piny procházejí 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 pinech ONOFF nebo P11 (například k jejich ovládání z 3,3V MCU bez průchodu převodníkem), deska nabízí pájecí plošky s pull‑up a 0ohmovou propojkou, které umožňují převodník obejít. Jedná se o pokročilou hardwarovou úpravu — většina uživatelů by ji měla ponechat beze změny.
Poznámka
P15–P18 jsou sdíleny s gigabitovým Ethernet PHY, který je ve výchozím stavu zapojen a aktivní. Chcete‑li tyto piny použít jako uživatelské I/O, musíte přepájet 0ohmový rezistor na zadní straně desky do polohy GPIO. Tím se vypne pouze gigabitový Ethernet — Ethernet 10/100 Mb/s na svých vyhrazených pinech funguje dál.
Napájecí piny¶
3.3V — regulovaná větev 3,3 V. Na N6 je pouze výstupní — 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 LiPo nabíječku.
RAW — vstup/výstup, vždy zapnutý (3,6 V – 5 V). Vede ten zdroj, který je právě 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 budit přes sériovou diodu — jinak by proud tekl zpět do VIN/USB a poškodil napájecí zdroj nebo ochranu na desce.
GND — společná zem.
Poznámka
Čip pro správu napájení na desce automaticky vybírá z USB a VIN ten s vyšším napětím pro napájení desky a nabíječky baterie. Pokud je připojena LiPo baterie, nabíjí se z přebytečné rezervy, a pokud napětí VIN/USB poklesne nebo se odpojí, řadič přejde na baterii, aby deska zůstala v chodu.
Poznámka
Na zadní straně desky jsou pájecí plošky pro externí 3,3V zálohovací baterii RTC. Připojení knoflíkového článku k těmto ploškám udržuje RTC a 8 KB zálohovací RAM v chodu, i když je zbytek desky bez napájení.
Tip
K modelování, jak dlouho N6 vydrží v provozu na baterii při daném pracovním cyklu aktivní / hluboký spánek, použijte odhadovač výdrže baterie.
Ethernet piny¶
N6 vyvádí páry MDI Ethernet PHY na vyhrazené plošky vedle GPIO headeru. Piny MDI nelze bezpečně připojit přímo k RJ45 — mezi PHY a kabelem je nutná Ethernet magnetika (izolační transformátor, ať už 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 navázaná; bliká při provozu.
DA P / DA N — pár A (TX při 10/100, používán všemi rychlostmi).
DB P / DB N — pár B (RX při 10/100, používán všemi rychlostmi).
DC P / DC N — pár C, používán pouze při gigabitu.
DD P / DD N — pár D, používán pouze při gigabitu.
10/100 Mb/s potřebuje jen páry A a B. Gigabit potřebuje všechny čtyři páry A–D.
Piny pro obnovu a ladění¶
RESET — stáhnutím na GND se deska resetuje. Po uvolnění MCU nastartuje normálně.
BOOT0 — přitáhnutím na 3,3 V při zapnutí desky se vstoupí do režimu ROM bootloaderu. OpenMV IDE tento režim používá k přeflashování bootloaderu na desce.
BOOT1 — přepínač, který uvede desku do vývojářského režimu pro použití s nástroji ST (ST‑LINK připojený k ARM 10pinovému SWD/JTAG headeru). Pro normální provoz s firmwarem a nástroji OpenMV jej ponechte vypnutý.
Deska je osazena vyhrazeným ARM 10pinovým SWD/JTAG headerem kompatibilním s adaptéry ST‑LINK a SEGGER J‑Link.
Integrované periferie¶
LED¶
N6 má dvě RGB LED:
Uživatelská RGB LED — softwarově řiditelná, 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 hardwarem správy napájení na desce, bez softwarového ovládání. Použijte ji k rychlému přečtení stavu napájení.
Za běhu:
Kanál
Význam
Modrá
deska je napájena z VIN (zhasne při USB)
Zelená
přítomno napájení 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í během nabíjení LiPo baterie.
Piny stavu napájení¶
Tři stavové vstupy aktivní v nule umožňují firmwaru vidět, co dělá čip správy napájení na desce:
ST — nízká úroveň, když deska běží na VIN, vysoká, když běží na napájení z USB.
CHG — nízká úroveň, dokud se připojená LiPo baterie nabíjí.
PG — nízká úroveň, když je přítomno napájení VIN nebo USB.
from machine import Pin
on_vin = not Pin("ST", Pin.IN).value()
charging = not Pin("CHG", Pin.IN).value()
power_ok = not Pin("PG", Pin.IN).value()
Senzor kamery¶
PAG7936 je ovládán přes modul csi — kamerové senzory
import csi
cam = csi.CSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.HD) # 1280×800
cam.snapshot(time=2000) # let auto‑exposure settle
while True:
img = cam.snapshot()
Senzor sedí na výměnném modulu — vyměňte jej za kterýkoli z dalších modulů kamery OpenMV (globální závěrka, termální, vyšší rozlišení atd.) bez nutnosti měnit zbytek desky.
PAG7936 podporuje triggerovaný režim — integrace pixelů je přesně synchronizována s každým voláním csi.CSI.snapshot namísto volně běžícího snímkového hodinového signálu, což je užitečné pro synchronizaci snímání s externí událostí nebo jiným senzorem. Povolte jej přes csi.CSI.ioctl s csi.IOCTL_SET_TRIGGERED_MODE. Snímková frekvence klesne přibližně na polovinu oproti volně běžícímu režimu, protože vyčítání už nepipelinuje s integrací dalšího snímku:
cam.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
NPU¶
1GHz Neural‑ART NPU desky N6 (600 GOPS INT8) je vyvedena přes modul ml — Strojové učení. Modely uložené na souborovém systému /rom určeném pouze pro čtení se načítají přímo z flash paměti bez kopírování do RAM, takže i velké detektory pohodlně vejdou vedle živého framebufferu. Spusťte detektor YOLOv8 na každém snímku a vykreslete predikce přes živý obraz:
import csi
import time
import ml
from ml.postprocessing.ultralytics import YoloV8
# Initialize the sensor.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
# Load YOLO V8 model from ROM FS.
model = ml.Model("/rom/yolov8n_192.tflite", postprocess=YoloV8(threshold=0.4))
print(model)
# Visualization parameters.
n = len(model.labels)
model_class_colors = [
(int(255 * i // n), int(255 * (n - i - 1) // n), 255)
for i in range(n)
]
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
# boxes is a list of list per class of ((x, y, w, h), score) tuples
boxes = model.predict([img])
# Draw bounding boxes around the detected objects
for i, class_detections in enumerate(boxes):
rects = [r for r, score in class_detections]
labels = [model.labels[i] for j in range(len(rects))]
colors = [model_class_colors[i] for j in range(len(rects))]
ml.utils.draw_predictions(img, rects, labels, colors, format=None)
print(clock.fps(), "fps")
Mikrofon¶
Mikrofon na desce se snímá přes audio — Modul Audio. Každý buffer přichází jako 16bitový PCM se znaménkem typu bytearray, což velmi usnadňuje jeho předání do ulab/numpy pro rychlý DSP. Jednoduchý detektor hlasitosti — vypíše vždy, když efektivní hodnota (RMS) hlasitosti překročí práh:
import audio
from ulab import numpy as np
def loudness(pcmbuf):
samples = np.array(np.frombuffer(pcmbuf, dtype=np.int16), dtype=np.float)
rms = np.sqrt(np.mean(samples ** 2))
if rms > 10000:
print("Loud!", int(rms))
audio.init(channels=1, frequency=16000, gain_db=24)
audio.start_streaming(loudness)
while True:
pass
IMU¶
Akcelerometr + gyroskop na desce pod modulem kamery jsou vyvedeny přes imu — imu senzor
import imu
import time
while True:
print(imu.acceleration_mg()) # (x, y, z) in milli‑g
print(imu.angular_rate_mdps()) # (x, y, z) in milli‑deg/s
time.sleep_ms(100)
Wi‑Fi¶
Čip CYW43439 na desce je vyveden přes network — konfigurace sítě jako rozhraní stanice (station). 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ýž CYW43439 vyvádí i Bluetooth 5.1. Pro BLE přívětivé k asynciu použijte aioble — Asynchronní BLE — například inzerujte zařízení jako periferii a čekejte na připojení centrálního zařízení:
import asyncio
import aioble
async def run():
while True:
conn = await aioble.advertise(250_000, name="OpenMV-N6")
print("Connected:", conn.device)
await conn.disconnected()
asyncio.run(run())
Ethernet¶
Když je k ploškám MDI připojen RJ45 (s magnetikou), gigabitové PHY se zobrazí jako rozhraní LAN. Jakmile je linka navázána, 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)
Reference sběrnic¶
GPIO¶
Ke čtení nebo řízení kteréhokoli z pinů popsaných na potisku použijte machine.Pin. Výstupy jsou 3,3 V CMOS a mohou na každém pinu pohltit/dodat až 20 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())
Kterýkoli vstupní pin může také vyvolat přerušení při změnách hrany:
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 |
|---|---|---|
UART3 |
P4 |
P5 |
UART4 |
P2 |
P3 |
UART7 |
P14 |
P13 |
from machine import UART
uart = UART(3, baudrate=115200)
uart.write("hello")
uart.read(5)
I²C¶
Sběrnice |
SCL |
SDA |
|---|---|---|
I2C2 |
P4 |
P5 |
from machine import I2C
i2c = I2C(2, freq=400_000)
i2c.scan()
i2c.writeto(0x76, b"hi")
Stejný hardware lze přes machine.I2CTarget použít i v režimu cíle (slave) a zpřístupnit tak paměťovou oblast jinému I²C kontroléru:
from machine import I2CTarget
buf = bytearray(32)
target = I2CTarget(2, addr=0x42, mem=buf)
SPI¶
Sběrnice |
MOSI |
MISO |
SCK |
CS |
|---|---|---|---|---|
SPI2 |
P0 |
P1 |
P2 |
P3 |
SPI4 |
P18 |
P17 |
P16 |
P15 |
from machine import SPI
from machine import Pin
spi = SPI(2, 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 |
P2 |
P3 |
Poznámka
CAN zatím není ve firmwaru v5.0.0 na této desce 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¶
Oba ADC kanály procházejí napěťovým děličem s operačním zesilovačem ve funkci bufferu, než se dostanou do MCU, takže read_u16() je na každém pinu mapováno na jiné napětí plného rozsahu.
Pin |
Plný rozsah |
Poznámky |
|---|---|---|
P6_ADC |
~3,3 V |
univerzální ploška, interně propojená s P6 |
BAT_ADC |
~5,0 V |
interní kanál pro LiPo baterii |
from machine import ADC
import time
adc = ADC("P6_ADC")
bat = ADC("BAT_ADC")
while True:
print("P6:", adc.read_u16() * 3.3 / 65535, "V")
print("BAT:", bat.read_u16() * 5.0 / 65535, "V")
time.sleep_ms(100)
PWM¶
Pin |
Časovač / kanál |
|---|---|
P4 |
TIM2 CH3 |
P5 |
TIM2 CH4 |
P6 |
TIM12 CH1 |
P7 |
TIM4 CH1 |
P8 |
TIM4 CH2 |
P9 |
TIM17 CH1 |
P10 |
TIM15 CH2 |
Kterýkoli z nich ovládejte přes machine.PWM
from machine import Pin, PWM
pwm = PWM(Pin("P6"), 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í kamery:
MLX90621 — IR pole 16 × 4
MLX90640 — IR pole 32 × 24
MLX90641 — IR pole 16 × 12
AMG8833 — IR pole 8 × 8
Připojte modul k I²C sběrnici 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 2 — připojte modul k P4 (SCL) a P5 (SDA).
Časování¶
time¶
Modul time pokrývá blokující zpoždění, monotónní ticky 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. Jako id předejte -1 pro použití virtuálního (softwarového) časovače:
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. K zastavení a uvolnění slotu zavolejte deinit().
Hodiny reálného času¶
machine.RTC udržuje reálný čas přes resety a (s volitelnou 3,3V zálohovací baterií připojenou k zadním ploškám, viz Napájecí piny) i přes úplnou ztrátu 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 překonfigurovat — krmte jej pravidelně 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 N6 při bootu připojuje až tři souborové systémy:
Interní flash paměť — vždy připojena na
/flash. Ve výchozím stavu obsahujemain.pyaREADME.txt; vytváří se při úplně prvním bootu.Karta microSD — pokud je karta vložena, připojí se na
/sdcard.ROMFS — souborový systém určený pouze pro čtení, mapovaný do paměti, na
/rom, používaný pro distribuci velkých datových assetů (např. AI modelů), které těží z přístupu bez kopírování. MicroPython jej připojuje automaticky při startu, dříve než se spustí jakýkoli uživatelský Python.
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 spustí při každém soft resetu (studený start,Ctrl‑Dz REPL nebo kdykoli běžící skript skončí).main.pyse spustí pouze při studeném startu, ihned poboot.py. Následné soft resety znovu spustíboot.py, ale skočí rovnou do REPL — k opětovnému 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 hledají v boot 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 tep (dva krátké pulzy, krátká pauza), takže poznáte, že se firmware nabootoval čistě bez připojeného hostitele.
sys.path je rozšířena tak, aby zahrnovala všechny tři souborové systémy a jejich podadresáře lib/, takže importovatelné moduly mohou ležet v /flash/lib, /sdcard/lib nebo /rom/lib.
Chcete‑li systém přinutit ignorovat vloženou SD kartu (například ke spuštění main.py z flash paměti i při přítomné kartě), vytvořte prázdný soubor s názvem SKIPSD v kořeni /flash.
Při připojení přes USB se boot souborový systém (/sdcard, pokud je karta přítomna, jinak /flash) na hostiteli také vyčíslí jako USB mass‑storage disk, což vám umožňuje přímo editovat boot.py, main.py a další soubory. Před resetováním kamery disk vysuňte, aby hostitel uložil své uložené (cached) zápisy.
Poznámka
Protože OS zachází s diskem 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 disk znovu nepřipojí. Pokud OS i OpenMV Cam zapisují do stejného souborového systému současně, OS zvítězí a přepíše změny provedené kamerou. Pro veškerá data, která skript zapisuje zpět, používejte SD kartu a před jejich čtením z hostitele kartu znovu připojte.
Poznámka
Červený kanál uživatelské RGB LED se může krátce rozsvítit, když hostitel čte z USB mass‑storage disku nebo na něj zapisuje — jde o indikátor aktivity řízený firmwarem, nikoli o závadu.
Velikosti úložiště¶
N6 se dodává s:
/flash— 4 MB FAT souborový systém, pro čtení i zápis./rom— 24 MB souborový systém ROMFS určený 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 vložené microSD karty (pokud je přítomna), pro čtení i zápis.
Indikátor hard‑faultu¶
Pokud uživatelská RGB LED rychle cykluje všemi barvami — natolik rychle, že to spíše vypadá jako mihotavá bílá LED než jako rozlišitelné odstíny — firmware narazil na neopravitelný hard fault. Pro obnovu firmware přeflashujte; pokud přeflashování nepomůže, deska může být fyzicky poškozena.
Softwarové knihovny¶
Kompletní seznam modulů — včetně těch, které jsou jedinečné pro build N6 — najdete v indexu knihoven.