v4.5.0

v4.5.0 là phiên bản phát hành lớn. Module lcd cũ đã được thay thế bằng module display thống nhất với các backend riêng biệt SPI / parallel / DSI / TV, bo mạch Arduino Giga được thêm vào, và hàng loạt tính năng về màn hình, cảm ứng, và điều khiển cảm biến đã ra đời. Có một số thay đổi phá vỡ tương thích — hãy đọc bên dưới.

Điểm nổi bật

  • Module display mới — thay thế lcd bằng các backend thống nhất SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Hỗ trợ bo mạch Arduino Giga.

  • Phần cứng màn hình/cảm ứng mới — Màn hình DSI trên STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, bảng RGB ST7701, và cảm ứng điện dung GT911 / FT5X06.

  • Điều khiển cảm biến mới — hiệu chỉnh mức đen, chế độ ban đêm, và sensor.disable_delays(); thao tác chuyển vị (~5x) và hình thái học (~2.5x) nhanh hơn nhiều.

  • Thay đổi phá vỡ tương thích: lcddisplay, lcd_touchft5x06, đổi tên chân (pin) LED — xem các thay đổi phá vỡ tương thích.

Tính năng mới

  • Backend màn hìnhDisplayData (đọc DDC/EDID), bộ chuyển đổi DVI/HDMI TFP410, hỗ trợ màn hình MIPI-DSI trên STM32 H7, driver HDMI/DVI cec, và thư viện Python display với helper khởi tạo bảng RGB ST7701.

  • Cảm ứng — driver cảm ứng điện dung 5 điểm GT911 mới (read_points() / read_id() / reset()).

  • Mở rộng machine — thư viện machine có thể đóng băng với lớp helper machine.LED, và phương thức machine.LED.value([v]) mới.

  • Điều khiển cảm biếnsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (hiệu chỉnh mức đen), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), OV7670 hmirror/vflip, và sensor.disable_delays() để bỏ qua các độ trễ ổn định camera giúp cấu hình lại nhanh hơn.

  • i.MX RTsensor.set_xclk_frequency() giờ chấp nhận bất kỳ tần số nào (làm tròn đến bộ chia CSI hợp lệ gần nhất) và các module SPI lcd / tv / fir đã được kích hoạt trên RT1060.

Các thay đổi và cải tiến khác

  • Thao tác ảnh nhanh hơn nhiều — chuyển vị ảnh nhanh hơn ~5x và image.morph() nhanh hơn ~2.5x.

  • Quá trình dò tìm bus camera giờ quét và xác nhận nhiều địa chỉ thiết bị, hỗ trợ các bo mạch có nhiều thiết bị trên bus.

Sửa lỗi

Camera và cảm biến:

  • Đã sửa độ chính xác tính toán độ khuếch đại trên nhiều cảm biến (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), thời gian phơi sáng / gộp cột MT9V0xx, thời gian phơi sáng OV5640, và cửa sổ VGA OV7670.

  • STM32 giờ bỏ qua các khung hình chuyển vị bị hỏng thay vì trả về ảnh lỗi.

Xử lý ảnh:

  • Đã sửa lỗi tràn số nguyên ảnh hưởng đến các thao tác ảnh / FIR / ToF / LCD / TV, các lệnh dấu phẩy động vcvtm/vcvtp không hợp lệ trên Cortex-M4 (fast_floorf/fast_ceilf), lỗi thu phóng tại chỗ trong chuyển đổi image.to_*(), và hỏng bộ nhớ cache DMA2D khi vẽ.

Màn hình và hệ thống:

  • Đã sửa thời gian DSI và chế độ dọc, micro_speech listen() trên Nicla Vision / Portenta H7, công tắc người dùng STM32 (pyb.Switch), và hỗ trợ bus I2C4.

Phần cứng và hỗ trợ bo mạch

  • Arduino Giga — bo mạch mới, với ánh xạ chân Arduino được đặt tên và bộ ví dụ đầy đủ.

  • OpenMV RT1060 — các module SPI LCD, TV, và FIR nhiệt được kích hoạt.

  • Arduino Nano 33 BLE Sense — chân (pin) LED.

Thay đổi API phá vỡ tương thích

Các thay đổi API hiển thị với người dùng giữa v4.4.3 và v4.5.0. Phạm vi: C-module Python trong modules/ và thư viện Python trong scripts/libraries/.

Mỗi thay đổi được gắn nhãn mức độ ảnh hưởng:

  • nghiêm trọng — hầu hết các tập lệnh sử dụng nó cần chỉnh sửa.

  • nhỏ — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã sử dụng nó.

  • hành vi — cùng API, kết quả khác; cần kiểm tra lại các tập lệnh đã tinh chỉnh.

Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi code, hãy chuyển đến danh sách kiểm tra chuyển đổi ở cuối. Mỗi mã hash commit liên kết đến diff của nó trên GitHub.

Module lcd được thay thế bởi display (nghiêm trọng)

Module lcd cũ đã bị xóa và thay thế bằng module display thống nhất được chia thành các backend SPIDisplay (SPI LCD shield), RGBDisplay / parallel, DSIDisplay (MIPI-DSI), và TVDisplay với API chung. Các tập lệnh phải chuyển từ import lcd sang module display và khởi tạo đối tượng backend phù hợp.

Commits: 227824aac, 6c6336829

Module cảm ứng, chân (pin) LED, và driver đi kèm (nhỏ)

Module lcd_touch chung đã được thay thế bằng module driver cảm ứng điện dung FT5X06 chuyên dụng. Tên chân LED đã được đổi tên để nhất quán trên tất cả các bo mạch (các tập lệnh tham chiếu tên chân LED cũ phải cập nhật). Các driver hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/cảm biến đi kèm đã được thay thế bằng các phiên bản micropython-lib upstream, có API hơi khác (các ví dụ đi kèm đã được cập nhật cho phù hợp).

Commits: 86ad6dcdb, 9344c3b74, 2b5b7963b

Các điều khiển cảm biến không được hỗ trợ giờ cảnh báo (hành vi)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal()set_auto_blc() giờ in cảnh báo thay vì ném RuntimeError khi cảm biến đang hoạt động không hỗ trợ điều khiển đó, vì vậy cùng một tập lệnh có thể chạy trên các cảm biến có khả năng khác nhau. Code dựa vào việc bắt ngoại lệ phải được cập nhật.

Commit: dbf4996f2

Danh sách kiểm tra chuyển đổi

Để chuyển đổi sạch sang v4.5.0, công việc thông thường là:

  1. Thay thế cách dùng import lcd bằng module display mới và backend phù hợp (thay đổi module display).

  2. Chuyển lcd_touch sang FT5X06, cập nhật tên chân LED cũ, và kiểm tra lại API driver IMU upstream (thay đổi cảm ứng/chân/driver).

  3. Thay thế try/except RuntimeError xung quanh các điều khiển cảm biến không được hỗ trợ bằng kiểm tra khả năng (thay đổi điều khiển cảm biến).