v3.4.2

v3.4.2 je velké vydání. Uvádí OpenMV Cam H7 Plus (SDRAM, obrovský framebuffer pro snímání ve vysokém rozlišení), kameru OV5640 5 MP, podporu FDCAN, přepsaný ovladač OV2640, Image.jpeg_encode_for_ide() a nové knihovny pid / modbus. Změnilo se API ifconfig() pro WINC1500 a výchozí hodnoty find_apriltags() — přečtěte si narušující změny níže.

Hlavní novinky

  • OpenMV Cam H7 Plus — nová deska s ovladačem SDRAM a framebufferem o velikosti ~31 MB pro snímání ve vysokém rozlišení.

  • Ovladač kamery OV5640 5 MP s detekcí přes I2C.

  • Podpora periferie FDCAN s ukázkou CAN.

  • Přepsání OV2640 — obrazy správně orientované, fungující automatické funkce, JPEG snímek a nový framesize sensor.XGA.

  • IDE JPEGImage.jpeg_encode_for_ide() a automatický přenos velkých JPEGů do IDE.

  • Narušující změny: změnila se sémantika WLAN.ifconfig() pro WINC1500, MQTTClient.wait_msg() již nevyvolává výjimku při prázdném příjmu a find_apriltags() má jako výchozí 4směrnou konektivitu — viz narušující změny.

Nové funkce

  • WiFi — přidána WLAN.netinfo() (vrací (rssi, security, ssid, mac, ip)) a konfigurace statické IP pro WINC1500 přes WLAN.ifconfig(), s ukázkou statické IP.

  • FDCAN — přidána podpora periferie FDCAN a ukázka can.py.

  • IDE JPEG — přidány Image.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide(); velké JPEGy se automaticky přenášejí do IDE, když je buffer příliš malý.

  • Knihovny — přidána knihovna PID regulátoru pid, knihovna RTU slave modbus (s ukázkou 32-modbus) a třída SSD1306_I2C pro I2C OLED displeje.

  • Ukázky — přidáno MQTT subscribe (mqtt_sub.py, s přejmenováním mqtt.py na mqtt_pub.py).

  • Senzor — přidán framesize sensor.XGA (1024x768); print() / repr() na Bayer obrazu nyní vypisuje metadata ve formátu JSON.

Další změny a vylepšení

  • Přepsán ovladač OV2640 (správně orientované obrazy, fungující automatické funkce, přijímán JPEG snímek); povoleny apriltagy ve vysokém rozlišení (ruší limit ROI <64K pixelů na schopných deskách); snížen PCLK OV2640 ze 72 MHz na 36 MHz.

Opravy chyb

Obrazové funkce:

  • Opraveno přetečení za konec obrazu u binárních operací, přesnost printf/float ve výstupu find_apriltags() / find_datamatrices() / find_lines(), vadný JSON v print() blobů, find_apriltags() na vflip / hmirror obrazech, chyba ROI u find_lbp(), timeout JPEG komprese pro velká rozlišení a reportování statistik paměti u fb_alloc.

Kamera a senzory:

  • Opravena údržba cache v režimu JPEG a zarovnání bufferu, maximální velikost DCMI přenosu, konfigurace registrů a rozlišení OV2640, obnovení stavu vypnutí senzoru při resetu a kvalita obrazu OV7725 (přidán filtr proti pruhování pro každou kameru).

Síť a systém:

  • Opraven hardfault/chyba socket.accept(), zpracování timeoutu socketu u WINC1500 (timeout 0 je nyní blokující; sockety se při timeoutu příjmu nezavírají), hluboký spánek H7, RTC (aktualizace z upstreamu a problémy H7 EXTI / wakeup-timer / soft-reset) a IRQ časovače pyb.Servo (Servo nefungovalo).

Podpora hardwaru a desek

  • OpenMV Cam H7 Plus (OPENMV4R) — nová deska s ovladačem SDRAM umožňujícím velký (~31 MB) framebuffer.

  • OV5640 — nový ovladač kamery 5 MP s detekcí přes I2C.

  • FDCAN — podpora periferie.

Narušující změny API

Změny API viditelné uživatelem mezi v3.4.1 a v3.4.2. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • major — ovlivňuje většinu skriptů, které funkci používaly; budete muset upravit kód.

  • minor — úzké API; ovlivňuje pouze skripty, které jej používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete jen přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Sémantika WLAN.ifconfig() pro WINC1500 se změnila (major)

Na WiFi shieldu WINC1500 již WLAN.ifconfig() nevrací starý 5prvkový seznam [rssi, security, ssid, mac, ip]. Nyní získává/nastavuje n-tici (ip, subnet, gateway, dns) (a podporuje konfiguraci statické IP), což odpovídá standardnímu rozhraní network. Kód, který četl informace o připojení z ifconfig(), musí přejít na novou metodu WLAN.netinfo() ((rssi, security, ssid, mac, ip)).

Commity: e685b484a

MQTTClient.wait_msg() vrací None při prázdném příjmu (minor)

MQTTClient.wait_msg() z knihovny mqtt nyní při prázdném příjmu vrací None namísto vyvolání OSError(-1). Kód, který zachytával OSError(-1) k detekci zavřeného/prázdného socketu, musí místo toho kontrolovat návratovou hodnotu None.

Commity: 76239ea89

find_apriltags() má jako výchozí 4směrnou konektivitu (behavior)

image.find_apriltags() nyní jako výchozí používá 4směrnou (namísto 8směrné) konektivitu hran — je rychlejší, ale detekované tagy se mohou mírně lišit. Pro obnovení předchozí přesnosti sestavte firmware s definovaným IMLIB_ENABLE_FINE_APRILTAGS.

Commity: c1d9bec2c

Kontrolní seznam migrace

Pro čistý přechod na v3.4.2 typická práce zahrnuje:

  1. Nahradit čtení informací o připojení přes WINC1500 WLAN.ifconfig() za WLAN.netinfo() (změna ifconfig).

  2. Kontrolovat u MQTTClient.wait_msg() návratovou hodnotu None namísto zachytávání OSError(-1) (změna wait_msg).

  3. Znovu vyladit detekci AprilTag nebo sestavit s IMLIB_ENABLE_FINE_APRILTAGS, pokud potřebujete 8směrnou konektivitu (změna find_apriltags).

Všechny ostatní skripty běží beze změny.