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.

OpenMV Cam RT1062

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

Raspored pinova OpenMV Cam RT1062 OV5640

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_GREEN i LED_BLUE

    from 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.

Tipke

RT1062 ima dvije tipke:

  • SW — korisnička tipka opće namjene. Čitljiva iz koda kao uobičajen GPIO ulaz aktivan na niskoj razini:

    from machine import Pin
    
    sw = Pin("SW", Pin.IN)
    print(sw.value())
    
  • Tipka za napajanje — upravljana namjenskim strojem stanja kontrolera napajanja na ploči RT1062, u potpunosti u hardveru. Nije izložena korisničkom kodu; kontroler odlučuje što učiniti na temelju toga koliko dugo se drži:

    • Držite ~5 s dok ploča radi → stroj stanja prelazi u duboki san.

    • Držite ~1 s dok je ploča u dubokom snu → stroj stanja ponovno uključuje sustav.

    Povlačenje pada zaglavlja ON/OFF na nisku razinu ima isti učinak kao pritiskanje ugrađene tipke za napajanje — korisno za spajanje vanjskog prekidača ili upravljanje linijom iz drugog mikrokontrolera.

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ži main.py i README.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 /rom koji 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.py se izvodi pri svakom soft resetu (hladno pokretanje, Ctrl‑D iz REPL‑a ili kad god se pokrenuta skripta vrati).

  • main.py se izvodi samo pri hladnom pokretanju, odmah nakon boot.py. Naknadni soft resetovi ponovno pokreću boot.py, ali odmah prelaze na REPL — za ponovno pokretanje main.py morate 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:

  • /flash4 MB FAT datotečni sustav, čitanje/pisanje.

  • /rom8 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.