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 IDE —
Image.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, iarfind_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 prinWLAN.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 RTUmodbus(cu un exemplu 32-modbus) și o clasăSSD1306_I2Cpentru afișaje OLED I2C.Exemple — s-a adăugat abonare MQTT (
mqtt_sub.py, cumqtt.pyredenumit înmqtt_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 înprint()de blob,find_apriltags()pe imagini vflipped / hmirrored, eroarea ROIfind_lbp(), timeout-ul de compresie JPEG pentru rezoluții mari și raportarea statisticilor de memoriefb_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 temporizatoruluipyb.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
Lista de verificare pentru migrare¶
Pentru o portare curată la v3.4.2, munca tipică este:
Înlocuiește citirile de informații despre conexiune WINC1500
WLAN.ifconfig()cuWLAN.netinfo()(modificarea ifconfig).Verifică
MQTTClient.wait_msg()pentru un returNoneîn loc să prinziOSError(-1)(modificarea wait_msg).Reglează din nou detectarea AprilTag sau compilează cu
IMLIB_ENABLE_FINE_APRILTAGSdacă ai nevoie de conectivitate pe 8 direcții (modificarea find_apriltags).
Toate celelalte scripturi rulează neschimbate.