v3.4.2¶
v3.4.2 to duże wydanie. Wprowadza OpenMV Cam H7 Plus (SDRAM, ogromny bufor ramki do przechwytywania w wysokiej rozdzielczości), kamerę OV5640 5 MP, obsługę FDCAN, przepisany sterownik OV2640, Image.jpeg_encode_for_ide() oraz nowe biblioteki pid / modbus. Zmieniło się API ifconfig() WINC1500 oraz domyślne ustawienia find_apriltags() — zapoznaj się z opisem zmian łamiących kompatybilność poniżej.
Najważniejsze zmiany¶
OpenMV Cam H7 Plus — nowa płytka ze sterownikiem SDRAM i buforem ramki o wielkości ~31 MB do przechwytywania w wysokiej rozdzielczości.
Sterownik kamery OV5640 5 MP z detekcją opartą na I2C.
Obsługa urządzenia peryferyjnego FDCAN, wraz z przykładem CAN.
Przepisanie OV2640 — wyprostowane obrazy, działające funkcje automatyczne, zrzut obrazu JPEG oraz nowy rozmiar ramki
sensor.XGA.IDE JPEG —
Image.jpeg_encode_for_ide()oraz automatyczne przesyłanie dużych plików JPEG do IDE.Zmiana łamiąca kompatybilność: zmieniła się semantyka
WLAN.ifconfig()WINC1500,MQTTClient.wait_msg()nie zgłasza już wyjątku przy pustym odbiorze, afind_apriltags()domyślnie używa łączności 4-kierunkowej — patrz zmiany łamiące kompatybilność.
Nowe funkcje¶
WiFi — dodano
WLAN.netinfo()(zwraca(rssi, security, ssid, mac, ip)) oraz konfigurację statycznego IP WINC1500 za pośrednictwemWLAN.ifconfig(), wraz z przykładem statycznego IP.FDCAN — dodano obsługę urządzenia peryferyjnego FDCAN oraz przykład
can.py.IDE JPEG — dodano
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); duże pliki JPEG są automatycznie przesyłane do IDE, gdy bufor jest zbyt mały.Biblioteki — dodano bibliotekę regulatora PID
pid, bibliotekę slave RTUmodbus(z przykładem 32-modbus) oraz klasęSSD1306_I2Cdla wyświetlaczy OLED na I2C.Przykłady — dodano subskrypcję MQTT (
mqtt_sub.py, ze zmianą nazwymqtt.pynamqtt_pub.py).Sensor — dodano rozmiar ramki
sensor.XGA(1024x768);print()/repr()na obrazie Bayer wypisuje teraz metadane JSON.
Pozostałe zmiany i ulepszenia¶
Przepisano sterownik OV2640 (wyprostowane obrazy, działające funkcje automatyczne, akceptowany zrzut obrazu JPEG); włączono apriltagi w wysokiej rozdzielczości (znosi limit ROI <64K pikseli na płytkach o odpowiednich możliwościach); obniżono PCLK OV2640 z 72 MHz do 36 MHz.
Poprawki błędów¶
Obrazowanie:
Naprawiono przepełnienie operacji binarnych poza końcem obrazu, precyzję printf/float w wyjściu
find_apriltags()/find_datamatrices()/find_lines(), zniekształcony JSON wprint()plam (blob),find_apriltags()na obrazach vflipped / hmirrored, błąd ROIfind_lbp(), limit czasu kompresji JPEG dla dużych rozdzielczości oraz raportowanie statystyk pamięcifb_alloc.
Kamera i sensory:
Naprawiono utrzymanie pamięci podręcznej i wyrównanie bufora w trybie JPEG, maksymalny rozmiar transferu DCMI, konfigurację rejestrów i rozdzielczości OV2640, przywracanie stanu wyłączenia sensora przy resecie oraz jakość obrazu OV7725 (dodano filtr pasmowy dla każdej kamery).
Sieć i system:
Naprawiono błąd/hardfault
socket.accept(), obsługę limitu czasu gniazda WINC1500 (limit czasu 0 jest teraz blokujący; gniazda nie są zamykane przy limicie czasu odbioru), tryb głębokiego uśpienia H7, RTC (aktualizacja z upstream oraz problemy EXTI / wakeup-timer / soft-reset H7) oraz IRQ licznika czasu (timer)pyb.Servo(Servo nie działało).
Sprzęt i obsługa płytek¶
OpenMV Cam H7 Plus (OPENMV4R) — nowa płytka ze sterownikiem SDRAM umożliwiającym duży (~31 MB) bufor ramki.
OV5640 — nowy sterownik kamery 5 MP z detekcją opartą na I2C.
FDCAN — obsługa urządzenia peryferyjnego.
Zmiany API łamiące kompatybilność¶
Widoczne dla użytkownika zmiany API łamiące kompatybilność między v3.4.1 a v3.4.2. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona jej wpływem:
major — dotyczy większości skryptów korzystających z danej funkcji; konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy tylko skryptów, które z niego korzystały.
behavior — to samo API, inne wyniki; ponownie sprawdź dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy skrót commita prowadzi do jego diffu na GitHub.
Zmiana semantyki WLAN.ifconfig() WINC1500 (major)¶
Na shieldzie WiFi WINC1500 WLAN.ifconfig() nie zwraca już starej 5-elementowej listy [rssi, security, ssid, mac, ip]. Teraz pobiera/ustawia krotkę (ip, subnet, gateway, dns) (i obsługuje konfigurację statycznego IP), zgodnie ze standardowym interfejsem network. Kod, który odczytywał informacje o połączeniu z ifconfig(), musi przejść na nową metodę WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commity: e685b484a
MQTTClient.wait_msg() zwraca None przy pustym odbiorze (minor)¶
MQTTClient.wait_msg() z biblioteki mqtt zwraca teraz None przy pustym odbiorze zamiast zgłaszać OSError(-1). Kod, który przechwytywał OSError(-1), aby wykryć zamknięte/puste gniazdo, musi zamiast tego sprawdzać zwracaną wartość None.
Commity: 76239ea89
Lista kontrolna migracji¶
Aby czysto przenieść kod do v3.4.2, typowa praca obejmuje:
Zastąpienie odczytów informacji o połączeniu z
WLAN.ifconfig()WINC1500 metodąWLAN.netinfo()(zmiana w ifconfig).Sprawdzanie zwracanej wartości
NonezMQTTClient.wait_msg()zamiast przechwytywaniaOSError(-1)(zmiana w wait_msg).Ponowne dostrojenie wykrywania AprilTag lub zbudowanie z
IMLIB_ENABLE_FINE_APRILTAGS, jeśli potrzebujesz łączności 8-kierunkowej (zmiana w find_apriltags).
Wszystkie pozostałe skrypty działają bez zmian.