v4.5.0

v4.5.0은 주요 릴리스입니다. 기존 lcd 모듈이 SPI / 병렬 / DSI / TV 백엔드를 각각 갖춘 통합 display 모듈로 대체되었고, Arduino Giga 보드가 추가되었으며, 디스플레이, 터치, 센서 제어 기능이 대거 추가되었습니다. 몇 가지 호환성을 깨는 변경 사항이 있으니 아래 내용을 읽어보십시오.

주요 내용

  • display 모듈 — lcd를 통합된 SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay 백엔드로 대체합니다.

  • Arduino Giga 보드 지원.

  • 새 디스플레이/터치 하드웨어 — STM32 H7의 DSI 디스플레이, TFP410 DVI/HDMI, HDMI/DVI CEC, ST7701 RGB 패널, 그리고 GT911 / FT5X06 정전식 터치.

  • 새 센서 제어 — 블랙 레벨 보정, 야간 모드, sensor.disable_delays(); 훨씬 빨라진 전치(~5배)와 모폴로지(~2.5배).

  • 호환성 변경: lcddisplay, lcd_touchft5x06, LED 핀 이름 변경 — 호환성을 깨는 변경 사항을 참고하십시오.

새 기능

  • 디스플레이 백엔드DisplayData(DDC/EDID 읽기), TFP410 DVI/HDMI 시리얼라이저, STM32 H7의 MIPI-DSI 디스플레이 지원, HDMI/DVI cec 드라이버, 그리고 ST7701 RGB 패널 초기화 헬퍼를 포함한 Python display 라이브러리.

  • 터치 — 새 GT911 5점 정전식 터치 드라이버(read_points() / read_id() / reset()).

  • machine 확장 — machine.LED 헬퍼 클래스를 포함한 프리징 가능한 machine 라이브러리와 새 machine.LED.value([v]) 메서드.

  • 센서 제어sensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (블랙 레벨 캘리브레이션), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), OV7670 hmirror/vflip, 그리고 더 빠른 재구성을 위해 카메라 안정화 지연을 건너뛰는 sensor.disable_delays().

  • i.MX RTsensor.set_xclk_frequency()가 이제 모든 주파수를 허용하며(가장 가까운 유효한 CSI 분주값으로 맞춤), SPI lcd / tv / fir 모듈이 RT1060에서 활성화되었습니다.

기타 변경 및 개선

  • 훨씬 빠른 이미지 연산 — 이미지 전치가 약 5배 빨라졌고 image.morph()가 약 2.5배 빨라졌습니다.

  • 카메라 버스 프로브가 이제 여러 장치 주소를 스캔하고 검증하여, 버스에 여러 장치가 있는 보드를 지원합니다.

버그 수정

카메라 및 센서:

  • 여러 센서(HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100)의 게인 계산 정확도, MT9V0xx 노출 / 컬럼 비닝, OV5640 노출, OV7670 VGA 윈도잉을 수정했습니다.

  • 이제 STM32는 잘못된 이미지를 반환하는 대신 손상된 전치 프레임을 폐기합니다.

이미지 처리:

  • 이미지 / FIR / ToF / LCD / TV 연산에 영향을 미치던 정수 오버플로, Cortex-M4의 잘못된 vcvtm/vcvtp 부동소수점 명령어(fast_floorf/fast_ceilf), image.to_*() 변환의 인플레이스 스케일링 버그, 그리고 DMA2D 그리기 캐시 손상을 수정했습니다.

디스플레이 및 시스템:

  • DSI 디스플레이 타이밍 및 세로 모드, Nicla Vision / Portenta H7의 micro_speech listen(), STM32 사용자 스위치(pyb.Switch), I2C4 버스 지원을 수정했습니다.

하드웨어 및 보드 지원

  • Arduino Giga — 명명된 Arduino 핀 매핑과 전체 예제 세트를 갖춘 새 보드.

  • OpenMV RT1060 — SPI LCD, TV, FIR 열화상 모듈이 활성화되었습니다.

  • Arduino Nano 33 BLE Sense — LED 핀.

호환성을 깨는 API 변경

v4.4.3과 v4.5.0 사이의 사용자에게 보이는 API 변경. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.

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

  • major — 이를 사용한 대부분의 스크립트를 수정해야 합니다.

  • minor — 좁은 범위의 API이며, 이를 사용한 스크립트만 영향을 받습니다.

  • behavior — API는 동일하지만 결과가 다릅니다. 튜닝된 스크립트를 다시 확인하십시오.

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

lcd 모듈이 display로 대체됨 (major)

기존 lcd 모듈이 제거되고, SPIDisplay(SPI LCD 실드), RGBDisplay / 병렬, DSIDisplay(MIPI-DSI), TVDisplay 백엔드로 분리되어 공통 API를 갖춘 통합 display 모듈로 대체되었습니다. 스크립트는 import lcd에서 display 모듈로 전환하고 적절한 백엔드 객체를 생성해야 합니다.

커밋: 227824aac, 6c6336829

터치 모듈, LED 핀, 번들 드라이버 (minor)

범용 lcd_touch 모듈이 전용 FT5X06 정전식 터치 드라이버 모듈로 대체되었습니다. 모든 보드 간 일관성을 위해 LED 핀 이름이 변경되었습니다(기존 LED 핀 이름을 참조하는 스크립트는 업데이트해야 합니다). 번들 hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/센서 드라이버가 API가 약간 다른 업스트림 micropython-lib 버전으로 대체되었습니다(번들 예제도 이에 맞게 업데이트되었습니다).

커밋: 86ad6dcdb, 9344c3b74, 2b5b7963b

지원되지 않는 센서 제어가 이제 경고를 출력함 (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal(), set_auto_blc()는 이제 활성 센서가 해당 제어를 지원하지 않을 때 RuntimeError를 발생시키는 대신 경고를 출력합니다. 따라서 동일한 스크립트를 기능이 다른 여러 센서에서 실행할 수 있습니다. 예외를 잡는 데 의존하던 코드는 업데이트해야 합니다.

커밋: dbf4996f2

마이그레이션 체크리스트

v4.5.0으로 깔끔하게 포팅하려면 일반적으로 다음 작업이 필요합니다:

  1. import lcd 사용을 새 display 모듈과 적절한 백엔드로 대체하십시오(display 모듈 변경).

  2. lcd_touchFT5X06로 전환하고, 기존 LED 핀 이름을 모두 업데이트하며, 업스트림 IMU 드라이버 API를 다시 확인하십시오(터치/핀/드라이버 변경).

  3. 지원되지 않는 센서 제어를 둘러싼 try/except RuntimeError를 기능 확인으로 대체하십시오(센서 제어 변경).