v3.3.0

v3.3.0 là một phiên bản lớn. Nó bổ sung hỗ trợ đầy đủ camera nhiệt FLIR Lepton với giao diện sensor.ioctl() mới và bảng màu, một module tv xuất video SPI, chế độ kích hoạt màn trập toàn cầu, một loạt phương thức vẽ/phân tích image mới (gamma_corr(), draw_ellipse(), draw_edges(), nhiều thuộc tính blob), và các thư viện ToF / motor / linalg mới. API cpufreq đã được cải tiến và sensor.set_framesize() giờ sẽ đưa ra ngoại lệ — đọc các thay đổi gây gián đoạn bên dưới.

Điểm nổi bật

  • FLIR Lepton — hỗ trợ camera nhiệt đầy đủ qua giao diện sensor.ioctl() mới, bảng màu, và image.to_rainbow().

  • Module tv — xuất video TV SPI / composite.

  • Chế độ kích hoạt màn trập toàn cầu — chụp kích hoạt MT9V034 qua sensor.ioctl().

  • Xử lý ảnhgamma_corr(), draw_ellipse(), draw_edges(), pha trộn alpha draw_image(), và nhiều thuộc tính blob mới.

  • Thư viện mới — driver khoảng cách ToF VL53L1X, driver motor TB6612, micro-linalg.

  • Gây gián đoạn: API cpufreq đã được cải tiến, sensor.set_framesize() giờ đưa ra ngoại lệ khi thất bại, sensor.alloc_extra_fb() bỏ Bayer/JPEG, và các đối số vị trí của image.replace() đã dịch chuyển — xem phần thay đổi gây gián đoạn.

Tính năng mới

  • FLIR Lepton — thêm sensor.ioctl() để điều khiển cảm biến riêng và một bộ đầy đủ Lepton ioctl (đo bức xạ, làm mới/độ phân giải, chạy lệnh, đặt/lấy thuộc tính, nhiệt độ FPA/AUX theo °C, chế độ/phạm vi đo, chiều rộng/chiều cao), sensor.set_color_palette() / sensor.get_color_palette() với sensor.PALETTE_RAINBOW / PALETTE_IRONBOW, image.to_rainbow(), và các tập lệnh ví dụ Lepton (27-Lepton).

  • Chế độ kích hoạtIOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE để chụp kích hoạt màn trập toàn cầu MT9V034, kèm theo các ví dụ tốc độ cao và chế độ kích hoạt.

  • Module tv — thêm các ràng buộc xuất video TV SPI / composite.

  • Xử lý ảnh — thêm image.gamma_corr(), image.draw_ellipse(), image.draw_edges(), pha trộn alpha draw_image(), từ khóa mask= cho clear(), thêm lại mask_rectangle() / mask_circle() / mask_ellipse(), các từ khóa xoay / hmirror / vflip cho draw_string() / draw_text(), từ khóa transpose (và bí danh assign / set) cho replace(), copy() với x_scale / y_scale cùng crop() / scale(), hàm tạo Image() từ kích thước, định dạng pixel sensor.BINARY, các hàm chuyển đổi không gian màu được xuất, và nhiều thuộc tính blob mới (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, xoay).

  • Thư viện — thêm driver cảm biến khoảng cách ToF vl53l1x, driver motor tb6612 (kèm theo các ví dụ Motor-Shield DC và stepper), và một thư viện micro-linalg (ulinalg / umatrix).

  • Nâng cấp FatFS lên FF13C (hỗ trợ exFAT).

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

  • Cải thiện chất lượng JPEG mặc định (trung bình giữa thấp–cao thay vì giá trị cố định); các thao tác ảnh tại chỗ không còn yêu cầu lặp lại ảnh làm đối số đầu tiên; draw_string() chấp nhận giá trị tỷ lệ không nguyên.

Sửa lỗi

Camera và cảm biến:

  • Sửa lỗi treo khởi động Lepton 3.5 (timeout + khôi phục) và độ tin cậy reset, set_framesize() của MT9V034 trước set_pixformat() (thứ tự gọi không còn quan trọng), MT9V034 WVGA trên STM32H7, phạm vi tự động phơi sáng MT9V034 và cập nhật thanh ghi shadow, và lỗi ADC H7.

Xử lý ảnh:

  • Sửa lỗi truy cập bộ nhớ không hợp lệ trong find_apriltags(), copy() khi sao chép ảnh đã chia tỷ lệ vào bộ đệm khung hình chính, phân bổ bộ đệm khung hình to_grayscale() / to_rgb565(), len() của đối tượng điểm đặc trưng, xử lý ranh giới MCU JPEG, phân tích danh sách ngưỡng binary(), và draw_keypoints() chấp nhận các tuple điểm đặc trưng.

Hệ thống:

  • Sửa lỗi rò rỉ mất cân bằng mark/free fb_alloc trên các phương thức image / fir / lcd / tv / nn, làm cho py_assert giải phóng bộ nhớ bộ đệm khung hình khi bắt ngoại lệ (#417), xóa cờ UART overrun (ORE) để các overrun không còn chặn đọc UART, sửa trình xử lý ngắt RTC, và sửa công cụ cascade_convert.py trên Windows.

Hỗ trợ phần cứng và bo mạch

  • Camera nhiệt FLIR Lepton.

  • TV shield — xuất video TV SPI / composite.

  • Chế độ kích hoạt màn trập toàn cầu (MT9V034).

Thay đổi API gây gián đoạn

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

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

  • nghiêm trọng — ảnh hưởng đến hầu hết các tập lệnh đã dùng tính năng này; bạn sẽ cần chuyển đổi code.

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

  • hành vi — API giống nhau, kết quả khác; hãy kiểm tra lại các tập lệnh đã được 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 di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.

API cpufreq được cải tiến (nghiêm trọng)

Module cpufreq đã được cải tiến để hỗ trợ H7. Các hằng số cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZcpufreq.get_frequency() đã bị loại bỏ. cpufreq.set_frequency() giờ nhận một số nguyên MHz đơn thuần (ví dụ: cpufreq.set_frequency(120)), và cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() đã được thêm vào.

Commits: 6babf84a1

Các đối số vị trí của image.replace() đã dịch chuyển (nhỏ)

image.replace() đã có thêm đối số transpose, dịch chuyển đối số mask theo vị trí từ vị trí 4 sang vị trí 5. Code truyền mask theo vị trí (ví dụ: img.replace(src, hmirror, vflip, mask)) phải chuyển sang dạng từ khóa img.replace(src, mask=mask).

Commits: dbe7bf059

sensor.alloc_extra_fb() không còn chấp nhận Bayer/JPEG (nhỏ)

sensor.alloc_extra_fb() không còn chấp nhận sensor.BAYER hoặc sensor.JPEG (hiện cũng hỗ trợ sensor.BINARY). Code phân bổ thêm bộ đệm khung hình ở định dạng Bayer hoặc JPEG phải dùng GRAYSCALE / RGB565 (hoặc phân bổ bộ đệm theo cách khác).

Commits: f9e6b3fe0

sensor.set_framesize() đưa ra ngoại lệ khi thất bại (hành vi)

sensor.set_framesize() giờ đưa ra ValueError khi kích thước khung hình không được hỗ trợ thay vì trả về False. Code kiểm tra giá trị trả về False phải bắt ngoại lệ ValueError thay thế.

Commits: b0442633e

Danh sách kiểm tra di chuyển

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

  1. Chuyển đổi code cpufreq sang set_frequency() với MHz nguyên và get_current_frequencies() / get_supported_frequencies() (cải tiến cpufreq).

  2. Truyền mask vào image.replace() dưới dạng từ khóa (thay đổi replace).

  3. Phân bổ thêm bộ đệm khung hình dưới dạng GRAYSCALE / RGB565 thay vì Bayer/JPEG (thay đổi alloc_extra_fb).

  4. Bắt ValueError quanh sensor.set_framesize() thay vì kiểm tra False (thay đổi set_framesize).

Tất cả các tập lệnh khác chạy không đổi.