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 JPEG —
Image.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 afind_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řesWLAN.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 slavemodbus(s ukázkou 32-modbus) a třídaSSD1306_I2Cpro I2C OLED displeje.Ukázky — přidáno MQTT subscribe (
mqtt_sub.py, s přejmenovánímmqtt.pynamqtt_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 vprint()blobů,find_apriltags()na vflip / hmirror obrazech, chyba ROI ufind_lbp(), timeout JPEG komprese pro velká rozlišení a reportování statistik paměti ufb_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čepyb.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
Kontrolní seznam migrace¶
Pro čistý přechod na v3.4.2 typická práce zahrnuje:
Nahradit čtení informací o připojení přes WINC1500
WLAN.ifconfig()zaWLAN.netinfo()(změna ifconfig).Kontrolovat u
MQTTClient.wait_msg()návratovou hodnotuNonenamísto zachytáváníOSError(-1)(změna wait_msg).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.