v4.5.0¶
v4.5.0 เป็นรุ่นหลักที่สำคัญ โมดูล lcd เดิมถูกแทนที่ด้วยโมดูล display แบบรวมศูนย์ที่มีแบ็กเอนด์แยกสำหรับ SPI / parallel / DSI / TV มีการเพิ่มบอร์ด Arduino Giga และนำเสนอฟีเจอร์ด้านการแสดงผล การสัมผัส และการควบคุมเซนเซอร์มากมาย มีการเปลี่ยนแปลงที่ไม่รองรับย้อนหลังหลายอย่าง — อ่านรายละเอียดด้านล่าง
ไฮไลต์¶
โมดูล
displayใหม่ — แทนที่lcdด้วยแบ็กเอนด์รวมศูนย์SPIDisplay/RGBDisplay/DSIDisplay/TVDisplayรองรับบอร์ด Arduino Giga
ฮาร์ดแวร์แสดงผล/สัมผัสใหม่ — จอ DSI บน STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, แผง ST7701 RGB และการสัมผัสแบบ capacitive GT911 / FT5X06
การควบคุมเซนเซอร์ใหม่ — การปรับเทียบระดับดำ, โหมดกลางคืน และ
sensor.disable_delays(); ความเร็ว transpose เร็วขึ้นมาก (~5x) และ morphology (~2.5x)การเปลี่ยนแปลงที่ไม่รองรับย้อนหลัง:
lcd→display,lcd_touch→ft5x06, เปลี่ยนชื่อพิน LED — ดูการเปลี่ยนแปลงที่ไม่รองรับย้อนหลัง
ฟีเจอร์ใหม่¶
แบ็กเอนด์การแสดงผล —
DisplayData(การอ่าน DDC/EDID), อุปกรณ์ DVI/HDMI serializerTFP410, รองรับจอ MIPI-DSI บน STM32 H7, ไดรเวอร์ HDMI/DVIcecและไลบรารี Pythondisplayพร้อมตัวช่วยเริ่มต้นแผงST7701RGBการสัมผัส — ไดรเวอร์การสัมผัสแบบ capacitive 5 จุด
GT911ใหม่ (read_points()/read_id()/reset())ส่วนขยาย
machine— ไลบรารีmachineแบบ freezable พร้อมคลาสช่วยmachine.LEDและเมธอด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 RT —
sensor.set_xclk_frequency()รับความถี่ใดก็ได้ (ปรับไปยัง CSI divider ที่ใกล้เคียงที่สุด) และโมดูล SPIlcd/tv/firถูกเปิดใช้งานบน RT1060
การเปลี่ยนแปลงและปรับปรุงอื่น ๆ¶
การประมวลผลภาพเร็วขึ้นมาก — image transpose เร็วขึ้น ~5x และ
image.morph()เร็วขึ้น ~2.5xการสแกน camera-bus ตอนนี้สแกนและตรวจสอบที่อยู่อุปกรณ์หลายรายการ รองรับบอร์ดที่มีหลายอุปกรณ์บนบัส
การแก้ไขบั๊ก¶
กล้องและเซนเซอร์:
แก้ไขความแม่นยำในการคำนวณค่าเกนสำหรับเซนเซอร์หลายรุ่น (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), MT9V0xx exposure / column-binning, OV5640 exposure และ OV7670 VGA windowing
STM32 ตอนนี้ทิ้งเฟรม transpose ที่เสียหายแทนที่จะส่งคืนภาพที่ผิดพลาด
การประมวลผลภาพ:
แก้ไขการล้น integer ที่ส่งผลกระทบต่อการทำงาน image / FIR / ToF / LCD / TV, คำสั่ง floating-point
vcvtm/vcvtpที่ไม่ถูกต้องบน Cortex-M4 (fast_floorf/fast_ceilf), บั๊ก in-place scaling ในimage.to_*()และความเสียหายของ cache จาก DMA2D draw
การแสดงผลและระบบ:
แก้ไขการตั้งเวลา DSI display และโหมด portrait,
micro_speechlisten()บน Nicla Vision / Portenta H7, สวิตช์ผู้ใช้ STM32 (pyb.Switch) และรองรับบัส I2C4
ฮาร์ดแวร์และรองรับบอร์ด¶
Arduino Giga — บอร์ดใหม่ พร้อมการแมปพิน Arduino และชุดตัวอย่างครบชุด
OpenMV RT1060 — เปิดใช้งานโมดูล SPI LCD, TV และ FIR thermal
Arduino Nano 33 BLE Sense — พิน LED
การเปลี่ยนแปลง API ที่ไม่รองรับย้อนหลัง¶
การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v4.4.3 และ v4.5.0 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละอย่างถูกแท็กตามผลกระทบ:
major — สคริปต์ส่วนใหญ่ที่ใช้งานต้องได้รับการแก้ไข
minor — API เฉพาะกลุ่ม; มีผลเฉพาะสคริปต์ที่ใช้งาน
behavior — API เหมือนเดิม ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการพอร์ตโค้ด ให้ข้ามไปที่ migration checklist ที่ท้ายเอกสาร แต่ละ commit hash เชื่อมต่อไปยัง diff บน GitHub
โมดูล lcd ถูกแทนที่ด้วย display (major)¶
โมดูล lcd เดิมถูกลบออกและแทนที่ด้วยโมดูล display แบบรวมศูนย์ที่แยกเป็น SPIDisplay (SPI LCD shield), RGBDisplay / parallel, DSIDisplay (MIPI-DSI) และแบ็กเอนด์ TVDisplay ที่มี API ร่วมกัน สคริปต์ต้องเปลี่ยนจาก import lcd ไปใช้โมดูล display และสร้างออบเจ็กต์แบ็กเอนด์ที่เหมาะสม
โมดูล Touch, พิน LED และไดรเวอร์ที่รวมมา (minor)¶
โมดูล lcd_touch ทั่วไปถูกแทนที่ด้วยโมดูลไดรเวอร์ capacitive-touch FT5X06 เฉพาะทาง ชื่อพิน LED ถูกเปลี่ยนชื่อเพื่อความสม่ำเสมอในทุกบอร์ด (สคริปต์ที่อ้างอิงชื่อพิน LED เดิมต้องอัปเดต) ไดรเวอร์ hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/sensor ที่รวมมาถูกแทนที่ด้วยเวอร์ชัน micropython-lib upstream ซึ่ง API แตกต่างกันเล็กน้อย (ตัวอย่างที่รวมมาได้รับการอัปเดตให้ตรงกัน)
การควบคุมเซนเซอร์ที่ไม่รองรับตอนนี้จะแสดงคำเตือน (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() และ set_auto_blc() ตอนนี้แสดงคำเตือนแทนการยก RuntimeError เมื่อเซนเซอร์ที่ใช้งานอยู่ไม่รองรับการควบคุมนั้น ทำให้สคริปต์เดียวกันสามารถทำงานบนเซนเซอร์ที่มีความสามารถต่างกันได้ โค้ดที่อาศัยการจับข้อยกเว้นต้องได้รับการอัปเดต
Commit: dbf4996f2
รายการตรวจสอบการย้าย¶
สำหรับการพอร์ตที่สะอาดไปยัง v4.5.0 งานทั่วไปคือ:
แทนที่การใช้
import lcdด้วยโมดูลdisplayใหม่และแบ็กเอนด์ที่เหมาะสม (การเปลี่ยนแปลงโมดูล display)เปลี่ยน
lcd_touchเป็นFT5X06, อัปเดตชื่อพิน LED เดิม และตรวจสอบ API ไดรเวอร์ IMU upstream อีกครั้ง (การเปลี่ยนแปลง touch/pin/driver)แทนที่
try/except RuntimeErrorรอบการควบคุมเซนเซอร์ที่ไม่รองรับด้วยการตรวจสอบความสามารถ (การเปลี่ยนแปลงการควบคุมเซนเซอร์)