v3.4.2¶
v3.4.2 เป็นการเปิดตัวครั้งใหญ่ มีการนำเสนอ OpenMV Cam H7 Plus (SDRAM, บัฟเฟอร์เฟรมขนาดใหญ่สำหรับการจับภาพความละเอียดสูง), กล้อง OV5640 5 MP, การรองรับ FDCAN, การเขียนไดรเวอร์ OV2640 ใหม่, Image.jpeg_encode_for_ide(), และไลบรารี pid / modbus ใหม่ API ifconfig() ของ WINC1500 และค่าเริ่มต้นของ find_apriltags() มีการเปลี่ยนแปลง — อ่านการเปลี่ยนแปลงที่ทำให้โค้ดเดิมเสียหายด้านล่าง
จุดเด่น¶
OpenMV Cam H7 Plus — บอร์ดใหม่พร้อมไดรเวอร์ SDRAM และบัฟเฟอร์เฟรมขนาด ~31 MB สำหรับการจับภาพความละเอียดสูง
ไดรเวอร์กล้อง OV5640 5 MP พร้อมการตรวจจับแบบ I2C
การรองรับอุปกรณ์ต่อพ่วง FDCAN พร้อมตัวอย่าง CAN
การเขียน OV2640 ใหม่ — ภาพตรง, ฟังก์ชันออโต้ที่ทำงานได้, JPEG snapshot, และ framesize
sensor.XGAใหม่IDE JPEG —
Image.jpeg_encode_for_ide()และการส่ง JPEG ขนาดใหญ่ไปยัง IDE โดยอัตโนมัติการเปลี่ยนแปลงที่ทำให้โค้ดเดิมเสียหาย: semantics ของ WINC1500
WLAN.ifconfig()เปลี่ยนแปลง,MQTTClient.wait_msg()ไม่ raise เมื่อ recv ว่างอีกต่อไป, และfind_apriltags()ค่าเริ่มต้นเป็น 4-way connectivity — ดูการเปลี่ยนแปลงที่ทำให้โค้ดเดิมเสียหาย
คุณสมบัติใหม่¶
WiFi — เพิ่ม
WLAN.netinfo()(ส่งคืน(rssi, security, ssid, mac, ip)) และการกำหนดค่า IP แบบ static ของ WINC1500 ผ่านWLAN.ifconfig()พร้อมตัวอย่าง static-IPFDCAN — เพิ่มการรองรับอุปกรณ์ต่อพ่วง FDCAN และตัวอย่าง
can.pyIDE JPEG — เพิ่ม
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); JPEG ขนาดใหญ่ส่งไปยัง IDE โดยอัตโนมัติเมื่อบัฟเฟอร์มีขนาดเล็กเกินไปไลบรารี — เพิ่มไลบรารี PID-controller
pid, ไลบรารี RTU slavemodbus(พร้อมตัวอย่าง 32-modbus), และคลาสSSD1306_I2Cสำหรับจอ OLED แบบ I2Cตัวอย่าง — เพิ่ม MQTT subscribe (
mqtt_sub.py, โดยmqtt.pyเปลี่ยนชื่อเป็นmqtt_pub.py)เซนเซอร์ — เพิ่ม framesize
sensor.XGA(1024x768);print()/repr()บนภาพ Bayer ตอนนี้ส่งออก JSON metadata
การเปลี่ยนแปลงและปรับปรุงอื่น ๆ¶
เขียนไดรเวอร์ OV2640 ใหม่ (ภาพตรง, ฟังก์ชันออโต้ที่ทำงานได้, รับ JPEG snapshot ได้); เปิดใช้งาน apriltags ความละเอียดสูง (ยกขีดจำกัด ROI <64K-pixel บนบอร์ดที่รองรับ); ลด PCLK ของ OV2640 จาก 72 MHz เป็น 36 MHz
การแก้ไขบั๊ก¶
การประมวลผลภาพ:
แก้ไข overflow ของ binary-ops ที่เกินขอบภาพ, ความแม่นยำ printf/float ใน output ของ
find_apriltags()/find_datamatrices()/find_lines(), JSON ที่ผิดรูปแบบใน blobprint(),find_apriltags()บนภาพที่ vflipped / hmirrored, บั๊ก ROI ของfind_lbp(), การหมดเวลาการบีบอัด JPEG สำหรับความละเอียดสูง, และการรายงานสถิติหน่วยความจำfb_alloc
กล้องและเซนเซอร์:
แก้ไขการบำรุงรักษา cache โหมด JPEG และการจัดตำแหน่งบัฟเฟอร์, ขนาดการถ่ายโอน DCMI สูงสุด, การตั้งค่ารีจิสเตอร์และความละเอียดของ OV2640, การคืนค่าสถานะ shutdown ของเซนเซอร์เมื่อรีเซ็ต, และคุณภาพภาพ OV7725 (เพิ่ม banding filter ต่อกล้อง)
เครือข่ายและระบบ:
แก้ไข hardfault/บั๊กของ
socket.accept(), การจัดการ timeout ของ WINC1500 socket (timeout 0 ตอนนี้เป็น blocking; socket ไม่ถูกปิดเมื่อ recv timeout), H7 deep-sleep, RTC (อัปเดต upstream และปัญหา H7 EXTI / wakeup-timer / soft-reset), และ timer IRQ ของpyb.Servo(Servo ไม่ทำงานมาก่อน)
การรองรับฮาร์ดแวร์และบอร์ด¶
OpenMV Cam H7 Plus (OPENMV4R) — บอร์ดใหม่พร้อมไดรเวอร์ SDRAM ที่เปิดใช้งาน framebuffer ขนาดใหญ่ (~31 MB)
OV5640 — ไดรเวอร์กล้อง 5 MP ใหม่พร้อมการตรวจจับแบบ I2C
FDCAN — การรองรับอุปกรณ์ต่อพ่วง
การเปลี่ยนแปลง API ที่ทำให้โค้ดเดิมเสียหาย¶
การเปลี่ยนแปลง API ที่มองเห็นได้ระหว่าง v3.4.1 และ v3.4.2 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละรายการถูกติดแท็กด้วยผลกระทบ:
major — ส่งผลต่อสคริปต์ส่วนใหญ่ที่ใช้คุณสมบัตินี้; คุณจะต้องปรับปรุงโค้ด
minor — API แคบ; ส่งผลเฉพาะสคริปต์ที่ใช้มัน
behavior — API เดิม แต่ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากคุณต้องการปรับปรุงโค้ด ให้ข้ามไปที่ รายการตรวจสอบการย้าย ที่ท้ายเอกสาร hash ของแต่ละ commit เชื่อมโยงไปยัง diff บน GitHub
semantics ของ WINC1500 WLAN.ifconfig() เปลี่ยนแปลง (major)¶
บน WINC1500 WiFi shield, WLAN.ifconfig() ไม่ส่งคืน list 5 องค์ประกอบเดิม [rssi, security, ssid, mac, ip] อีกต่อไป ตอนนี้ได้/ตั้งค่า tuple (ip, subnet, gateway, dns) (และรองรับการกำหนดค่า IP แบบ static) ซึ่งตรงกับอินเทอร์เฟซ network มาตรฐาน โค้ดที่อ่านข้อมูลการเชื่อมต่อจาก ifconfig() ต้องเปลี่ยนไปใช้เมธอด WLAN.netinfo() ใหม่ ((rssi, security, ssid, mac, ip))
Commits: e685b484a
MQTTClient.wait_msg() ส่งคืน None เมื่อ recv ว่าง (minor)¶
MQTTClient.wait_msg() ของไลบรารี mqtt ตอนนี้ส่งคืน None เมื่อ receive ว่างเปล่าแทนที่จะ raise OSError(-1) โค้ดที่ catch OSError(-1) เพื่อตรวจจับ socket ที่ปิด/ว่างต้องตรวจสอบค่าส่งคืน None แทน
Commits: 76239ea89
รายการตรวจสอบการย้าย¶
สำหรับการย้ายไปยัง v3.4.2 อย่างสะอาด งานทั่วไปคือ:
แทนที่การอ่านข้อมูลการเชื่อมต่อ WINC1500
WLAN.ifconfig()ด้วยWLAN.netinfo()(การเปลี่ยนแปลง ifconfig)ตรวจสอบ
MQTTClient.wait_msg()สำหรับค่าส่งคืนNoneแทนการ catchOSError(-1)(การเปลี่ยนแปลง wait_msg)ปรับแต่งการตรวจจับ AprilTag ใหม่หรือ build โดยกำหนด
IMLIB_ENABLE_FINE_APRILTAGSหากต้องการ 8-way connectivity (การเปลี่ยนแปลง find_apriltags)
สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องแก้ไข