OpenMV Cam RT1062¶
OpenMV Cam RT1062 je ploča za strojni vid niske potrošnje izgrađena oko NXP i.MX RT1062 (Cortex‑M7 @ 600 MHz). Ploča kombinira USB‑C umrežavanje velike brzine, Wi‑Fi/Bluetooth i 10/100 Ethernet s OV5640 5MP senzorom na uklonjivom nosaču. Kamera u dubokom snu troši samo ~30 µA iz LiPo baterije, što je čini izvrsno prikladnom za projekte napajane baterijom.
Za potpunu specifikaciju, fotografije i dimenzije pogledajte stranicu proizvoda OpenMV Cam RT1062.
Istaknute značajke¶
NXP i.MX RT1062 Cortex‑M7 na 600 MHz.
32 MB vanjske SDRAM memorije (16‑bitna @ 160 MHz, 320 MB/s) plus 1 MB interne SRAM memorije i 16 MB QSPI flash memorije (133 MHz 4‑bitni SDR, 66 MB/s čitanje); 4 KB EEPROM na R6+.
OV5640 5MP senzor s pomičnim zatvaračem (rolling‑shutter).
Ugrađeni IMU (12‑bitni 3‑osni akcelerometar, ±2/4/8 g).
USB‑C velike brzine (480 Mb/s, ograničenje struje 1,5 A), 10/100 Mb/s Ethernet (s podrškom za PoE putem štita), Wi‑Fi a/b/g/n + Bluetooth 5.1 (čipna antena ili opcija U.FL).
microSD utor — SD do 2 GB, SDHC do 32 GB, SDXC do 2 TB.
LiPo punjač (500 mA na R6+, 100 mA na R4/R5), RTC s padovima za rezervnu bateriju. Duboki san troši ~30 µA iz baterije.
14 I/O pinova, svi 3,3 V izlaz / 3,3 V tolerantni, 4 mA po pinu, s podrškom za prekide.
Korisnička RGB LED, korisnička SW tipka, hardverska tipka za napajanje (stroj stanja za duboki san / buđenje) i zasebna statusna LED za punjenje / USB / VIN napajanje.
Upozorenje
I/O pinovi RT1062 nisu 5 V tolerantni. Ne spajajte uređaj izravno na 5 V MCU poput Arduino Mega. Napajajte ploču isključivo putem VIN.
Raspored pinova¶
Referenca pinova¶
Naziv pina |
Funkcija |
|---|---|
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 |
buđenje (aktivno na niskoj razini, spojite na GND za buđenje) |
P12 |
RESET — povucite na GND za resetiranje ploče (nije GPIO) |
P13 |
digitalni I/O |
P14 |
digitalni I/O |
ON/OFF |
pad zaglavlja koji replicira hardversku tipku za napajanje (aktivan na niskoj razini) |
SW |
korisnička tipka (aktivna na niskoj razini) |
ST |
niska razina pri VIN napajanju, visoka pri USB napajanju |
CHG |
aktivno na niskoj razini; niska razina dok se priključena LiPo baterija puni |
PG |
aktivno na niskoj razini; niska razina kada je prisutno VIN ili USB napajanje |
LED_RED |
crveni kanal RGB LED (aktivan na niskoj razini) |
LED_GREEN |
zeleni kanal RGB LED (aktivan na niskoj razini) |
LED_BLUE |
plavi kanal RGB LED (aktivan na niskoj razini) |
Napomena
Linija frame‑sync P10 je zajednička sabirnica. Spojena je istovremeno na MCU, na pin za okidanje / ekspoziciju senzora kamere i na korisničko zaglavlje. Smjer ovisi o aplikaciji — MCU, senzor ili vanjski signal mogu je upravljati ovisno o tome kako je senzor konfiguriran. Pobrinite se da je istovremeno aktivan samo jedan upravljač.
Napomena
ON/OFF i P11 referencirani su na uvijek uključenu RAW liniju (a ne na prekidanu 3,3 V liniju), pa ostaju funkcionalni dok je ostatak ploče u dubokom snu / načinu rada niske potrošnje. Oba ulaza aktivna su na niskoj razini.
Ovi pinovi prolaze kroz pretvarače razine kako bi mogli raditi na RAW liniji. Ako vam je apsolutno potrebno ponašanje GPIO izravno na 3,3 V na ON/OFF ili P11 (na primjer za upravljanje njima s 3,3 V MCU bez prolaska kroz pretvarač), ploča izlaže pull‑up i 0‑ohmske padove premosnica koji vam omogućuju zaobilaženje pretvarača. Ovo je napredna hardverska prerada — većina korisnika trebala bi je ostaviti na miru.
Napomena
P13 i P14 su prema zadanim postavkama obični GPIO bez posebne funkcije. Padovi se opcionalno mogu preusmjeriti na druge signale ponovnim lemljenjem 0‑ohmskih otporničkih lemnih mostova na stražnjoj strani ploče:
P13 ↔ CHG status / JTAG TRSTB
P14 ↔ ST status / JTAG TDI
Većina korisnika neće dirati ove premosnice — ostavite ih na zadanoj GPIO postavci osim ako vam izričito ne treba očitavanje upravljanja napajanjem ili JTAG.
Pinovi za napajanje¶
3.3V — regulirana 3,3 V linija. Samo izlaz na RT1062 — ne dovodite vanjsko napajanje na ovaj pin. Do 1 A dostupno za štitove.
VIN — 5 V ulaz. Napaja ploču i ugrađeni LiPo punjač.
RAW — ulaz/izlaz, uvijek uključen (3,6 V – 5 V). Prenosi koji god je izvor aktivan (VIN, USB ili priključena baterija), a može se koristiti i kao ulaz. RAW morate napajati kroz serijsku diodu kada u njega dovodite napajanje — u protivnom će struja teći natrag u VIN/USB i oštetiti napajanje ili ugrađenu zaštitu.
GND — zajednička masa.
Napomena
Ugrađeni čip za upravljanje napajanjem automatski bira koji god od USB ili VIN ima veći napon za napajanje ploče i punjača baterije. Ako je priključena LiPo baterija, ona se puni iz preostale rezerve, a kontroler prelazi na bateriju kako bi ploča nastavila raditi ako VIN/USB padnu ili budu isključeni.
Napomena
Stražnja strana ploče ima lemne padove za vanjsku 3,3 V rezervnu bateriju za RTC. Spajanje gumbaste baterije na ove padove održava RTC u radu dok ostatak ploče nema napajanje.
Savjet
Koristite procjenitelj trajanja baterije za modeliranje koliko će dugo RT1062 raditi na bateriji za zadani radni ciklus aktivnog rada / dubokog sna.
Ethernet pinovi¶
RT1062 izlaže MDI parove 10/100 Mb/s Ethernet PHY‑a na namjenskim padovima pokraj GPIO zaglavlja. MDI pinovi nije sigurno spajati izravno na RJ45 — Ethernet magnetika (izolacijski transformator, ugrađen u magjack ili na štitu) obvezna je između PHY‑a i kabela. OpenMV PoE štit ih uključuje; ako sami izrađujete priključak, koristite RJ45 s integriranom magnetikom ili vanjski transformator.
ETH_LED — LED za vezu/aktivnost. Aktivna na niskoj razini kada je veza uspostavljena; treperi pri prometu.
ETH_TXP / ETH_TXN — par za odašiljanje.
ETH_RXP / ETH_RXN — par za prijem.
Napomena
Zaglavlje također izlaže četiri pada označena na silkscreenu kao Reserved. Ovi su kompatibilni s otiskom gigabitnih Ethernet parova na OpenMV N6 (DC P/N i DD P/N) pa se isti Ethernet / PoE štit može priključiti na bilo koju ploču. PHY RT1062 podržava samo 10/100 Mb/s, pa ta četiri pada nemaju električnu povezanost — ostavite ih nespojene.
Pinovi za oporavak i otklanjanje pogrešaka¶
RESET — povucite na GND za resetiranje ploče. Otpuštanjem se MCU normalno pokreće.
SBL — povucite na 3,3 V tijekom napajanja ploče za ulazak u ROM bootloader (Serial Boot Loader) način rada. OpenMV IDE koristi ovaj način rada za ponovno flashanje ugrađenog pokretača (bootloader).
Ugrađeno je namjensko ARM 10‑pinsko SWD/JTAG zaglavlje, kompatibilno s ST‑LINK i SEGGER J‑Link adapterima.
Napomena
RT1062 prema zadanim postavkama izlaže samo SWD otklanjanje pogrešaka kroz ovaj konektor. Puni JTAG nije dostupan odmah.
Ugrađene periferije¶
LED‑ovi¶
RT1062 ima dvije RGB LED:
Korisnička RGB LED — softverski upravljiva, izložena kao
LED_RED,LED_GREENiLED_BLUEfrom machine import LED LED("LED_RED").on() LED("LED_GREEN").on() LED("LED_BLUE").on()
LED napajanja — upravljana izravno ugrađenim hardverom za upravljanje napajanjem, bez softverske kontrole. Koristite je za brzo očitavanje stanja napajanja.
Tijekom rada:
Kanal
Značenje
Plava
VIN napaja ploču (isključena pri USB)
Zelena
Prisutno USB ili VIN napajanje
Crvena
punjenje priključene LiPo baterije
U dubokom snu svi su kanali isključeni osim crvene, koja i dalje svijetli dok se LiPo baterija puni.
Pinovi statusa napajanja¶
Tri statusna ulaza aktivna na niskoj razini iz ugrađenog čipa za upravljanje napajanjem:
PG — niska razina kada je prisutno VIN ili USB napajanje. Uvijek spojeno.
ST — niska razina kada ploča radi na VIN, visoka kada radi na USB napajanju. Prema zadanim postavkama nije spojeno.
CHG — niska razina dok se priključena LiPo baterija puni. Prema zadanim postavkama nije spojeno.
from machine import Pin
power_ok = not Pin("PG", Pin.IN).value()
Senzor kamere¶
OV5640 se upravlja kroz modul csi — senzori kamere
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 ima ugrađeni JPEG kompresor. Postavite csi.CSI.pixformat na csi.JPEG i senzor isporučuje komprimirane sličice izravno kameri preko sabirnice kamere, što čini snimanje visoke razlučivosti praktičnim: csi.HD (1280×720), csi.FHD (1920×1080) i puni 5MP csi.WQXGA2 (2592×1944) svi se prenose kao JPEG. Podesite kompresiju s csi.CSI.quality (0-100, više = veće sličice, više detalja):
cam.pixformat(csi.JPEG)
cam.framesize(csi.WQXGA2)
cam.quality(90)
Senzor se nalazi na uklonjivom modulu — zamijenite ga bilo kojim drugim OpenMV modulom kamere (globalni zatvarač, termalni, veća razlučivost itd.) bez mijenjanja ostatka ploče.
Strojno učenje¶
ml — Strojno učenje izvodi kvantizirane TFLite modele na Cortex‑M7 s CMSIS‑NN jezgrama — dovoljno brzo za kompaktne detektore pri nekoliko sličica u sekundi. Modeli na samo‑za‑čitanje datotečnom sustavu /rom učitavaju se izravno iz flash memorije bez kopiranja u RAM. Evo 128×128 BlazeFace detektora koji preklapa detektirano lice i njegovih šest orijentacijskih točaka na svaku sličicu:
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 ne spaja ugrađeni akcelerometar na modul imu — imu senzor. Umjesto toga komunicirajte s njim izravno preko interne I²C sabirnice — čip se nalazi na adresi 0x15 i sadrži tri predznačena 12‑bitna kanala ubrzanja plus 8‑bitni bajt temperature počevši od registra 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¶
Ploče R6 i novije uključuju generički 4 KB I²C EEPROM na istoj internoj sabirnici kao akcelerometar. (Ranije revizije ga nemaju — pozivanje ovih isječaka na R4/R5 isteći će zbog nedostajućeg I²C ack.) Koristite standardni machine.I2C readfrom_mem / writeto_mem API s 16‑bitnom memorijskom adresom:
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))
I čitanja i pisanja moraju ostati unutar stranice od 32 bajta. Podijelite svaki veći prijenos u jedan poziv po stranici i dodajte kašnjenje ciklusa pisanja od ~5 ms između uzastopnih pisanja.
Wi‑Fi¶
Ugrađeni modul iz obitelji CYW43 izložen je putem network — konfiguracija mreže kao stanično sučelje (station). Nakon povezivanja, ipconfig("addr4") vraća par (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¶
Isti bežični modul također izlaže Bluetooth 5.1. Koristite aioble — Asinkroni BLE za asyncio‑prilagođen BLE — na primjer, oglašavajte kao periferija i čekajte da se central poveže:
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¶
Kada je RJ45 (s magnetikom) spojen na MDI padove, 10/100 PHY pojavljuje se kao LAN sučelje. DHCP se pokreće automatski čim se veza uspostavi:
import network, time
lan = network.LAN()
lan.active(True)
while not lan.isconnected():
time.sleep(1)
print("Ethernet IP:", lan.ipconfig("addr4")[0])
microSD kartica¶
Kada je kartica umetnuta, automatski se montira na /sdcard i može se koristiti kroz uobičajeni datotečni sustav:
import os
for entry in os.listdir("/sdcard"):
print(entry)
Referenca sabirnica¶
GPIO¶
Koristite machine.Pin za čitanje ili upravljanje bilo kojim od pinova označenih na silkscreenu. Izlazi su 3,3 V CMOS i mogu primati/davati do 4 mA po pinu.
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())
Bilo koji ulazni pin može također aktivirati prekid pri promjenama na rubu:
def handler(pin):
print("triggered:", pin)
Pin("P1", Pin.IN, Pin.PULL_UP).irq(
handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)
UART¶
Sabirnica |
TX |
RX |
|---|---|---|
UART1 |
P4 |
P5 |
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello")
uart.read(5)
I²C¶
Sabirnica |
SCL |
SDA |
|---|---|---|
I2C1 |
P4 |
P5 |
from machine import I2C
i2c = I2C(1, freq=400_000)
i2c.scan()
i2c.writeto(0x76, b"hi")
Isti hardver također se može koristiti u target (slave) načinu rada kroz machine.I2CTarget za izlaganje memorijskog područja drugom I²C kontroleru:
from machine import I2CTarget
buf = bytearray(32)
target = I2CTarget(1, addr=0x42, mem=buf)
SPI¶
Sabirnica |
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¶
Sabirnica |
TX |
RX |
|---|---|---|
CAN1 |
P1 |
P3 |
Napomena
CAN još nije podržan na ovoj ploči u firmwareu v5.0.0.
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¶
Jedini korisnički ADC pin je P6, koji ima puni raspon pri ~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 |
FlexPWM kanal |
|---|---|
P0 |
PWM2 B3 |
P2 |
PWM2 B3 |
P4 |
PWM1 X2 |
P5 |
PWM1 X3 |
P7 |
PWM2 A0 |
P8 |
PWM2 B0 |
P9 |
PWM1 A3 |
P10 |
PWM1 B3 |
Upravljajte bilo kojim od njih putem machine.PWM
from machine import Pin, PWM
pwm = PWM(Pin("P9"), freq=1_000, duty_u16=32768)
Softverski bit‑bang sabirnice¶
machine.SoftI2C i machine.SoftSPI rade na bilo kojem GPIO ako vam treba dodatna sabirnica.
Termalni senzor (izvan ploče)¶
Firmware uključuje fir — upravljački program termalnog senzora (fir == daleko infracrveno) upravljački program za vanjski spojene termalne kamere:
MLX90621 — 16 × 4 IR polje
MLX90640 — 32 × 24 IR polje
MLX90641 — 16 × 12 IR polje
AMG8833 — 8 × 8 IR polje
Spojite modul na I²C sabirnicu ploče i čitajte sličice s 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())
Upravljački program fir komunicira sa senzorom samo preko I²C 4 — spojite modul na P4 (SCL) i P5 (SDA).
Vremensko usklađivanje¶
time¶
Modul time pokriva blokirajuća kašnjenja, monotone otkucaje i mjerenje proteklog vremena:
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)
Virtualni mjerači vremena¶
machine.Timer raspoređuje periodične ili jednokratne povratne pozive bez zauzimanja hardverskog mjesta za mjerač vremena. Proslijedite -1 kao id za korištenje virtualnog (softverskog) mjerača vremena:
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"))
Vrijednosti razdoblja su u milisekundama. Pozovite deinit() za zaustavljanje i oslobađanje mjesta.
Sat stvarnog vremena¶
machine.RTC održava točno vrijeme kroz resetiranja i (s opcionalnom 3,3 V rezervnom baterijom spojenom na stražnje padove, pogledajte Pinovi za napajanje) kroz potpuni gubitak napajanja:
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 također radi kroz duboki san, pa ga možete koristiti kao izvor buđenja za machine.deepsleep().
Watchdog¶
machine.WDT resetira ploču ako se aplikacija zaglavi. Nakon pokretanja ne može se zaustaviti ili ponovno konfigurirati — periodično ga hranite unutar svoje glavne petlje:
from machine import WDT
wdt = WDT(timeout=5_000) # 5 second window
while True:
# ...do work...
wdt.feed()
Informacije o pokretanju i izvođenju¶
Prozor USB bootloadera¶
Pri svakom uključivanju kamera pokreće kratki bootloader (nekoliko sekundi) koji omogućuje OpenMV IDE‑u ažuriranje firmwarea bez potrebe da korisnik uđe u DFU način rada. Nakon isteka prozora bootloader predaje upravljanje datoteci boot.py pa zatim main.py.
Pokrenuta skripta može ponovno ući u bootloader na zahtjev pozivanjem machine.bootloader()
import machine
machine.bootloader()
Datotečni sustav i redoslijed pokretanja¶
Firmware RT1062 montira do tri datotečna sustava pri pokretanju:
Interna flash memorija — uvijek montirana na
/flash. Prema zadanim postavkama sadržimain.pyiREADME.txt; stvara se pri prvom pokretanju.microSD kartica — ako je kartica umetnuta, montira se na
/sdcard.ROMFS — samo‑za‑čitanje, memorijski mapiran datotečni sustav na
/romkoji se koristi za isporuku velikih podatkovnih sredstava (npr. AI modela) koja imaju koristi od zero‑copy pristupa. MicroPython ga automatski montira pri pokretanju, prije nego što se pokrene bilo koji korisnički Python.
Nakon montiranja, radni direktorij postavlja se na /sdcard kada je kartica prisutna, inače na /flash. Interpreter zatim pokreće skripte iz tog direktorija:
boot.pyse izvodi pri svakom soft resetu (hladno pokretanje,Ctrl‑Diz REPL‑a ili kad god se pokrenuta skripta vrati).main.pyse izvodi samo pri hladnom pokretanju, odmah nakonboot.py. Naknadni soft resetovi ponovno pokrećuboot.py, ali odmah prelaze na REPL — za ponovno pokretanjemain.pymorate u potpunosti resetirati ploču.
Postavljanje datoteke boot.py ili main.py na SD karticu nadjačava kopiju u flash memoriji bez njezina diranja — obje se datoteke traže u direktoriju za pokretanje (/sdcard kada je kartica montirana, inače /flash).
Zadani main.py isporučen na svježe flashanoj ploči samo treperi plavim kanalom korisničke RGB LED kao otkucaj srca (dva kratka impulsa, kratka pauza), pa možete utvrditi da se firmware uredno pokrenuo bez ikakvog priključenog domaćina.
sys.path je proširen tako da uključuje sva tri datotečna sustava i njihove lib/ poddirektorije, pa moduli koji se mogu uvoziti mogu boraviti u /flash/lib, /sdcard/lib ili /rom/lib.
Da biste prisilili sustav da zanemari umetnutu SD karticu (na primjer za pokretanje main.py iz flash memorije čak i uz prisutnu karticu), stvorite praznu datoteku naziva SKIPSD u korijenu /flash.
Kada je spojen putem USB‑a, datotečni sustav za pokretanje (/sdcard ako je kartica prisutna, inače /flash) također se na domaćinu pojavljuje kao USB pogon za masovnu pohranu, što vam omogućuje izravno uređivanje boot.py, main.py i bilo kojih drugih datoteka. Izbacite pogon prije resetiranja kamere kako bi domaćin ispraznio svoje predmemorirane zapise.
Napomena
Budući da OS tretira pogon kao pasivni blok‑uređaj, datoteke koje stvori ili izmijeni kod pokrenut na OpenMV Cam neće se pojaviti dok domaćin ponovno ne montira pogon. Ako i OS i OpenMV Cam istovremeno pišu na isti datotečni sustav, OS će pobijediti i prepisati izmjene koje je napravila kamera. Koristite SD karticu za sve podatke koje skripta zapisuje natrag i ponovno montirajte prije čitanja tih datoteka s domaćina.
Napomena
Crveni kanal korisničke RGB LED može nakratko zasvijetliti dok domaćin čita ili piše na USB pogon za masovnu pohranu — to je indikator aktivnosti vođen firmwareom, a ne kvar.
Veličine pohrane¶
RT1062 se isporučuje s:
/flash— 4 MB FAT datotečni sustav, čitanje/pisanje./rom— 8 MB samo‑za‑čitanje memorijski mapiran ROMFS, koji se koristi za isporuku skripti i ML modela koji imaju koristi od zero‑copy mmap pristupa./sdcard— puna veličina koje god microSD kartice je umetnuta (kada je prisutna), čitanje/pisanje.
Indikator ozbiljnog kvara (hard fault)¶
Ako korisnička RGB LED brzo izmjenjuje sve boje — dovoljno brzo da obično izgleda kao svjetlucava bijela LED umjesto zasebnih nijansi — firmware je naišao na neotklonjiv ozbiljan kvar (hard fault). Ponovno flashajte firmware za oporavak; ako ponovno flashanje ne pomogne, ploča je možda fizički oštećena.
Softverske biblioteke¶
Pogledajte indeks biblioteka za potpuni popis modula — uključujući one koji su jedinstveni za RT1062 build.