v3.4.2

v3.4.2 este o versiune majoră. Introduce OpenMV Cam H7 Plus (SDRAM, framebuffer uriaș pentru captură de înaltă rezoluție), camera OV5640 5 MP, suport FDCAN, un driver OV2640 rescris, Image.jpeg_encode_for_ide() și noi biblioteci pid / modbus. API-ul WINC1500 ifconfig() și valorile implicite ale find_apriltags() s-au modificat — citește modificările incompatibile de mai jos.

Aspecte importante

  • OpenMV Cam H7 Plus — placă nouă cu un driver SDRAM și un framebuffer de ~31 MB pentru captură de înaltă rezoluție.

  • Driver de cameră OV5640 5 MP cu detecție bazată pe I2C.

  • Suport pentru periferic FDCAN, cu un exemplu CAN.

  • Rescriere OV2640 — imagini drepte, funcții automate funcționale, instantaneu JPEG și o nouă dimensiune de cadru sensor.XGA.

  • JPEG IDEImage.jpeg_encode_for_ide() și transmiterea automată a JPEG-urilor mari către IDE.

  • Incompatibil: semantica WINC1500 WLAN.ifconfig() s-a modificat, MQTTClient.wait_msg() nu mai ridică o excepție la recv gol, iar find_apriltags() are acum implicit conectivitate pe 4 direcții — vezi modificările incompatibile.

Funcționalități noi

  • WiFi — s-au adăugat WLAN.netinfo() (returnează (rssi, security, ssid, mac, ip)) și configurarea IP-static WINC1500 prin WLAN.ifconfig(), cu un exemplu de IP static.

  • FDCAN — s-au adăugat suport pentru periferic FDCAN și un exemplu can.py.

  • JPEG IDE — s-au adăugat Image.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide(); JPEG-urile mari se transmit automat către IDE când tamponul este prea mic.

  • Biblioteci — s-au adăugat o bibliotecă de controler PID pid, o bibliotecă de slave RTU modbus (cu un exemplu 32-modbus) și o clasă SSD1306_I2C pentru afișaje OLED I2C.

  • Exemple — s-a adăugat abonare MQTT (mqtt_sub.py, cu mqtt.py redenumit în mqtt_pub.py).

  • Senzor — s-a adăugat dimensiunea de cadru sensor.XGA (1024x768); print() / repr() pe o imagine Bayer afișează acum metadate JSON.

Alte modificări și îmbunătățiri

  • S-a rescris driverul OV2640 (imagini drepte, funcții automate funcționale, instantaneu JPEG acceptat); s-au activat apriltags de înaltă rezoluție (ridică limita ROI <64K pixeli pe plăcile capabile); s-a coborât PCLK-ul OV2640 de la 72 MHz la 36 MHz.

Remedieri de erori

Imagistică:

  • S-au remediat o depășire dincolo de sfârșitul imaginii la operațiile binare, precizia printf/float în ieșirea find_apriltags() / find_datamatrices() / find_lines(), JSON malformat în print() de blob, find_apriltags() pe imagini vflipped / hmirrored, eroarea ROI find_lbp(), timeout-ul de compresie JPEG pentru rezoluții mari și raportarea statisticilor de memorie fb_alloc.

Camera și senzorii:

  • S-au remediat întreținerea cache-ului și alinierea tamponului în modul JPEG, dimensiunea maximă de transfer DCMI, configurarea registrelor și rezoluțiile OV2640, restaurarea stării de oprire a senzorului la resetare și calitatea imaginii OV7725 (s-a adăugat un filtru de bandare per cameră).

Rețele și sistem:

  • S-au remediat hardfault-ul/eroarea socket.accept(), gestionarea timeout-ului socket WINC1500 (timeout-ul 0 este acum blocant; socket-urile nu se închid la timeout de recv), deep-sleep-ul H7, RTC-ul (actualizare din amonte și probleme H7 EXTI / wakeup-timer / soft-reset) și IRQ-ul temporizatorului pyb.Servo (Servo era nefuncțional).

Suport hardware și plăci

  • OpenMV Cam H7 Plus (OPENMV4R) — placă nouă cu un driver SDRAM care permite un framebuffer mare (~31 MB).

  • OV5640 — driver nou de cameră 5 MP cu detecție bazată pe I2C.

  • FDCAN — suport pentru periferic.

Modificări incompatibile de API

Modificări de API vizibile pentru utilizator între v3.4.1 și v3.4.2. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • major — afectează majoritatea scripturilor care au folosit funcționalitatea; va trebui să portezi codul.

  • minor — API restrâns; afectează doar scripturile care l-au folosit.

  • behavior — același API, rezultate diferite; reverifică scripturile reglate.

Modificările sunt grupate după impact în această ordine. Dacă vrei doar să-ți portezi codul, sari la lista de verificare pentru migrare de la final. Fiecare hash de commit duce la diferența sa pe GitHub.

Semantica WINC1500 WLAN.ifconfig() s-a modificat (major)

Pe shield-ul WiFi WINC1500, WLAN.ifconfig() nu mai returnează vechea listă cu 5 elemente [rssi, security, ssid, mac, ip]. Acum obține/setează un tuplu (ip, subnet, gateway, dns) (și suportă configurarea IP-static), corespunzând interfeței standard network. Codul care citea informații despre conexiune din ifconfig() trebuie să treacă la noua metodă WLAN.netinfo() ((rssi, security, ssid, mac, ip)).

Commit-uri: e685b484a

MQTTClient.wait_msg() returnează None la recv gol (minor)

MQTTClient.wait_msg() din biblioteca mqtt returnează acum None la o recepție goală în loc să ridice OSError(-1). Codul care prindea OSError(-1) pentru a detecta un socket închis/gol trebuie în schimb să verifice o valoare de retur None.

Commit-uri: 76239ea89

find_apriltags() are implicit conectivitate pe 4 direcții (behavior)

image.find_apriltags() are acum implicit conectivitate de muchii pe 4 direcții (în loc de 8 direcții) — mai rapid, dar etichetele detectate pot diferi ușor. Pentru a restaura acuratețea anterioară, compilează firmware-ul cu IMLIB_ENABLE_FINE_APRILTAGS definit.

Commit-uri: c1d9bec2c

Lista de verificare pentru migrare

Pentru o portare curată la v3.4.2, munca tipică este:

  1. Înlocuiește citirile de informații despre conexiune WINC1500 WLAN.ifconfig() cu WLAN.netinfo() (modificarea ifconfig).

  2. Verifică MQTTClient.wait_msg() pentru un retur None în loc să prinzi OSError(-1) (modificarea wait_msg).

  3. Reglează din nou detectarea AprilTag sau compilează cu IMLIB_ENABLE_FINE_APRILTAGS dacă ai nevoie de conectivitate pe 8 direcții (modificarea find_apriltags).

Toate celelalte scripturi rulează neschimbate.