v3.4.2

v3.4.2는 대규모 릴리스입니다. OpenMV Cam H7 Plus(SDRAM, 고해상도 캡처를 위한 대형 프레임 버퍼), OV5640 5 MP 카메라, FDCAN 지원, 재작성된 OV2640 드라이버, Image.jpeg_encode_for_ide(), 그리고 새로운 pid / modbus 라이브러리를 도입합니다. WINC1500 ifconfig() API와 find_apriltags() 기본값이 변경되었습니다. 아래의 호환성 깨짐 변경 사항을 읽어보세요.

주요 내용

  • OpenMV Cam H7 Plus — SDRAM 드라이버와 고해상도 캡처를 위한 ~31 MB 프레임 버퍼를 갖춘 새 보드.

  • I2C 기반 감지를 갖춘 OV5640 5 MP 카메라 드라이버.

  • CAN 예제와 함께 FDCAN 주변장치 지원.

  • OV2640 재작성 — 정방향 이미지, 동작하는 자동 기능, JPEG 스냅샷, 그리고 새로운 sensor.XGA 프레임 크기.

  • IDE JPEGImage.jpeg_encode_for_ide() 및 대형 JPEG의 IDE 자동 전송.

  • 호환성 깨짐: WINC1500 WLAN.ifconfig() 동작이 변경되었고, MQTTClient.wait_msg()는 빈 수신 시 더 이상 예외를 발생시키지 않으며, find_apriltags()는 기본적으로 4방향 연결성을 사용합니다. 호환성 깨짐 변경 사항을 참고하세요.

새로운 기능

  • WiFiWLAN.netinfo()((rssi, security, ssid, mac, ip) 반환)와 WLAN.ifconfig()를 통한 WINC1500 정적 IP 설정을 정적 IP 예제와 함께 추가했습니다.

  • FDCAN — FDCAN 주변장치 지원과 can.py 예제를 추가했습니다.

  • IDE JPEGImage.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide()를 추가했습니다. 버퍼가 너무 작을 때 대형 JPEG가 IDE로 자동 전송됩니다.

  • 라이브러리pid PID 컨트롤러 라이브러리, modbus RTU 슬레이브 라이브러리(32-modbus 예제 포함), 그리고 I2C OLED 디스플레이를 위한 SSD1306_I2C 클래스를 추가했습니다.

  • 예제 — MQTT 구독(mqtt_sub.py, mqtt.pymqtt_pub.py로 이름 변경)을 추가했습니다.

  • 센서sensor.XGA(1024x768) 프레임 크기를 추가했습니다. Bayer 이미지에 대한 print() / repr()은 이제 JSON 메타데이터를 출력합니다.

기타 변경 및 개선 사항

  • OV2640 드라이버를 재작성했고(정방향 이미지, 동작하는 자동 기능, JPEG 스냅샷 허용); 고해상도 apriltag을 활성화했으며(지원 가능한 보드에서 <64K 픽셀 ROI 제한 해제); OV2640 PCLK를 72 MHz에서 36 MHz로 낮췄습니다.

버그 수정

이미징:

  • 바이너리 연산의 이미지 끝 초과 오버플로, find_apriltags() / find_datamatrices() / find_lines() 출력의 printf/부동소수점 정밀도, 블롭 print()의 잘못된 JSON, vflip / hmirror된 이미지에서의 find_apriltags(), find_lbp() ROI 버그, 대형 해상도에서의 JPEG 압축 타임아웃, 그리고 fb_alloc 메모리 통계 보고를 수정했습니다.

카메라 및 센서:

  • JPEG 모드 캐시 유지 관리 및 버퍼 정렬, 최대 DCMI 전송 크기, OV2640 레지스터 설정 및 해상도, 리셋 시 센서 종료 상태 복원, 그리고 OV7725 이미지 품질(카메라별 밴딩 필터 추가)을 수정했습니다.

네트워킹 및 시스템:

  • socket.accept() 하드폴트/버그, WINC1500 소켓 타임아웃 처리(타임아웃 0은 이제 블로킹; 수신 타임아웃 시 소켓이 닫히지 않음), H7 딥 슬립, RTC(업스트림 업데이트 및 H7 EXTI / 웨이크업 타이머 / 소프트 리셋 문제), 그리고 pyb.Servo 타이머 IRQ(Servo가 동작하지 않던 문제)를 수정했습니다.

하드웨어 및 보드 지원

  • OpenMV Cam H7 Plus (OPENMV4R) — 대형(~31 MB) 프레임 버퍼를 가능하게 하는 SDRAM 드라이버를 갖춘 새 보드.

  • OV5640 — I2C 기반 감지를 갖춘 새로운 5 MP 카메라 드라이버.

  • FDCAN — 주변장치 지원.

호환성 깨짐 API 변경

v3.4.1과 v3.4.2 사이의 사용자에게 보이는 API 호환성 깨짐. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.

각 변경 사항에는 영향도가 태그되어 있습니다:

  • major — 해당 기능을 사용한 대부분의 스크립트에 영향을 미칩니다. 코드를 포팅해야 합니다.

  • minor — 좁은 API. 이를 사용한 스크립트에만 영향을 미칩니다.

  • behavior — 동일한 API, 다른 결과. 튜닝된 스크립트를 다시 확인하세요.

변경 사항은 그 순서대로 영향도별로 묶여 있습니다. 코드 포팅만 원한다면 끝부분의 마이그레이션 체크리스트로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.

WINC1500 WLAN.ifconfig() 동작 변경 (major)

WINC1500 WiFi 실드에서 WLAN.ifconfig()는 더 이상 기존의 5요소 리스트 [rssi, security, ssid, mac, ip]를 반환하지 않습니다. 이제 표준 network 인터페이스에 맞춰 (ip, subnet, gateway, dns) 튜플을 가져오거나 설정합니다(그리고 정적 IP 설정을 지원합니다). ifconfig()에서 연결 정보를 읽던 코드는 새로운 WLAN.netinfo() 메서드((rssi, security, ssid, mac, ip))로 전환해야 합니다.

커밋: e685b484a

MQTTClient.wait_msg()가 빈 수신 시 None 반환 (minor)

mqtt 라이브러리의 MQTTClient.wait_msg()는 이제 빈 수신 시 OSError(-1)을 발생시키는 대신 None을 반환합니다. 닫히거나 빈 소켓을 감지하기 위해 OSError(-1)을 잡던 코드는 대신 None 반환값을 확인해야 합니다.

커밋: 76239ea89

find_apriltags()가 기본적으로 4방향 연결성 사용 (behavior)

image.find_apriltags()는 이제 기본적으로 (8방향 대신) 4방향 에지 연결성을 사용합니다. 더 빠르지만, 검출된 태그가 약간 다를 수 있습니다. 이전 정확도를 복원하려면 IMLIB_ENABLE_FINE_APRILTAGS를 정의하여 펌웨어를 빌드하세요.

커밋: c1d9bec2c

마이그레이션 체크리스트

v3.4.2로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:

  1. WINC1500 WLAN.ifconfig() 연결 정보 읽기를 WLAN.netinfo()로 교체하세요(ifconfig 변경).

  2. OSError(-1)을 잡는 대신 MQTTClient.wait_msg()에서 None 반환을 확인하세요(wait_msg 변경).

  3. 8방향 연결성이 필요하면 AprilTag 검출을 다시 튜닝하거나 IMLIB_ENABLE_FINE_APRILTAGS로 빌드하세요(find_apriltags 변경).

다른 모든 스크립트는 변경 없이 실행됩니다.