v3.4.2

A v3.4.2 nagy kiadás. Bemutatja az OpenMV Cam H7 Plus lapkát (SDRAM, hatalmas képkocka-puffer a nagy felbontású felvételhez), az OV5640 5 MP kamerát, az FDCAN támogatást, egy újraírt OV2640 vezérlőt, az Image.jpeg_encode_for_ide() metódust, valamint új pid / modbus könyvtárakat. A WINC1500 ifconfig() API és a find_apriltags() alapértelmezései megváltoztak — olvasd el az alábbi megszakító változásokat.

Kiemelések

  • OpenMV Cam H7 Plus — új lapka SDRAM-vezérlővel és egy ~31 MB-os képkocka-pufferrel a nagy felbontású felvételhez.

  • OV5640 5 MP kameravezérlő I2C-alapú felismeréssel.

  • FDCAN perifériatámogatás, CAN példával.

  • OV2640 újraírás — egyenesen álló képek, működő automatikus funkciók, JPEG pillanatkép és egy új sensor.XGA képkockaméret.

  • IDE JPEGImage.jpeg_encode_for_ide() és nagy JPEG-ek automatikus továbbítása az IDE felé.

  • Megszakító változás: a WINC1500 WLAN.ifconfig() szemantikája megváltozott, az MQTTClient.wait_msg() többé nem dob kivételt üres fogadás esetén, és a find_apriltags() alapértelmezetten 4 irányú összefüggőséget használ — lásd a megszakító változásokat.

Új funkciók

  • WiFi — hozzáadtuk a WLAN.netinfo() metódust (amely (rssi, security, ssid, mac, ip) értéket ad vissza) és a WINC1500 statikus IP-konfigurációt a WLAN.ifconfig() segítségével, egy statikus IP-példával.

  • FDCAN — hozzáadtuk az FDCAN perifériatámogatást és egy can.py példát.

  • IDE JPEG — hozzáadtuk az Image.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide() metódusokat; a nagy JPEG-ek automatikusan az IDE felé továbbítódnak, ha a puffer túl kicsi.

  • Könyvtárak — hozzáadtunk egy pid PID-szabályozó könyvtárat, egy modbus RTU slave könyvtárat (egy 32-modbus példával), valamint egy SSD1306_I2C osztályt az I2C OLED kijelzőkhöz.

  • Példák — hozzáadtuk az MQTT feliratkozást (mqtt_sub.py, az mqtt.py átnevezve mqtt_pub.py-ra).

  • Érzékelő — hozzáadtuk a sensor.XGA (1024x768) képkockaméretet; a print() / repr() egy Bayer képen most már JSON metaadatokat ad ki.

Egyéb változások és fejlesztések

  • Újraírtuk az OV2640 vezérlőt (egyenesen álló képek, működő automatikus funkciók, JPEG pillanatkép elfogadva); engedélyeztük a nagy felbontású apriltageket (megszünteti a <64K-képpontos ROI-korlátot a képes lapkákon); az OV2640 PCLK-t 72 MHz-ről 36 MHz-re csökkentettük.

Hibajavítások

Képkezelés:

  • Javítottunk egy bináris műveleteknél fellépő kép végén túli túlcsordulást, a printf/lebegőpontos pontosságot a find_apriltags() / find_datamatrices() / find_lines() kimenetében, a hibás JSON-t a folt print() kimenetében, a find_apriltags() működését vflippelt / hmirrorozott képeken, a find_lbp() ROI-hibát, a JPEG-tömörítés időtúllépését nagy felbontásoknál, valamint az fb_alloc memóriastatisztika-jelentését.

Kamera és érzékelők:

  • Javítottuk a JPEG-mód gyorsítótár-karbantartását és puffer-igazítását, a maximális DCMI átviteli méretet, az OV2640 regiszterkonfigurációt és felbontásokat, az érzékelő leállított állapotának visszaállítását reset után, valamint az OV7725 képminőséget (kameránkénti sávszűrő hozzáadásával).

Hálózat és rendszer:

  • Javítottuk a socket.accept() hardfaultját/hibáját, a WINC1500 socket időtúllépés-kezelését (a 0 időtúllépés mostantól blokkoló; a socketek nem záródnak be recv időtúllépésekor), a H7 mélyalvást, az RTC-t (upstream frissítés és a H7 EXTI / ébresztő-időzítő / szoftveres reset problémái), valamint a pyb.Servo időzítő IRQ-ját (a Servo nem működött).

Hardver- és lapkatámogatás

  • OpenMV Cam H7 Plus (OPENMV4R) — új lapka SDRAM-vezérlővel, amely egy nagy (~31 MB) képkocka-puffert tesz lehetővé.

  • OV5640 — új 5 MP kameravezérlő I2C-alapú felismeréssel.

  • FDCAN — perifériatámogatás.

Megszakító API-változások

A felhasználó számára látható API-változások a v3.4.1 és a v3.4.2 között. Hatókör: Python C-modulok a modules/ könyvtárban és Python könyvtárak a scripts/libraries/ könyvtárban.

Minden változás meg van jelölve a hatásával:

  • major — a funkciót használó legtöbb szkriptet érinti; portolnod kell a kódot.

  • minor — szűk API; csak az azt használó szkripteket érinti.

  • behavior — azonos API, eltérő eredmények; ellenőrizd újra a hangolt szkripteket.

A változások ebben a sorrendben hatás szerint vannak csoportosítva. Ha csak portolni szeretnéd a kódodat, ugorj a végén található migrációs ellenőrzőlistára. Minden commit-hash a hozzá tartozó diffre hivatkozik a GitHubon.

A WINC1500 WLAN.ifconfig() szemantikája megváltozott (major)

A WINC1500 WiFi shielden a WLAN.ifconfig() többé nem a régi 5 elemű [rssi, security, ssid, mac, ip] listát adja vissza. Most már egy (ip, subnet, gateway, dns) tuple-t kér le/állít be (és támogatja a statikus IP-konfigurációt), megfelelve a szabványos network felületnek. Az olyan kódnak, amely a kapcsolati adatokat az ifconfig() metódusból olvasta ki, át kell állnia az új WLAN.netinfo() metódusra ((rssi, security, ssid, mac, ip)).

Commitok: e685b484a

Az MQTTClient.wait_msg() None értéket ad vissza üres fogadás esetén (minor)

A mqtt könyvtár MQTTClient.wait_msg() metódusa most már None értéket ad vissza üres fogadás esetén, ahelyett, hogy OSError(-1) kivételt dobna. Az olyan kódnak, amely az OSError(-1) kivételt kapta el a lezárt/üres socket észleléséhez, ehelyett a None visszatérési értéket kell ellenőriznie.

Commitok: 76239ea89

A find_apriltags() alapértelmezetten 4 irányú összefüggőséget használ (behavior)

Az image.find_apriltags() most már alapértelmezetten 4 irányú (a korábbi 8 irányú helyett) él-összefüggőséget használ — gyorsabb, de az észlelt tagek kissé eltérhetnek. A korábbi pontosság visszaállításához fordítsd le a firmware-t az IMLIB_ENABLE_FINE_APRILTAGS definiálásával.

Commitok: c1d9bec2c

Migrációs ellenőrzőlista

A v3.4.2-re való tiszta portoláshoz a tipikus teendők a következők:

  1. Cseréld le a WINC1500 WLAN.ifconfig() kapcsolati-adat olvasásait a WLAN.netinfo() metódusra (az ifconfig változása).

  2. Ellenőrizd az MQTTClient.wait_msg() None visszatérési értékét az OSError(-1) elkapása helyett (a wait_msg változása).

  3. Hangold újra az AprilTag-észlelést, vagy fordíts az IMLIB_ENABLE_FINE_APRILTAGS definícióval, ha 8 irányú összefüggőségre van szükséged (a find_apriltags változása).

Minden más szkript változatlanul fut.