โปรเจ็กต์นี้มอบอินเทอร์เฟซหลามที่เรียบง่ายบน Raspberry Pi ให้กับ ST VL53L0X API (ST Microelectronics)
มีลวดลายตามที่เก็บ cassou/VL53L0X_rasp (https://github.com/cassou/VL53L0X_rasp.git)
เพื่อให้สามารถแชร์บัส i2c กับโค้ด python อื่นๆ ที่ใช้บัส i2c ได้ ไลบรารีนี้จึงใช้ฟังก์ชัน i2c เฉพาะแพลตฟอร์ม VL53L0X ผ่านการเรียกกลับไปยังอินเทอร์เฟซ python smbus
เวอร์ชัน 1.0.2:
เพิ่มการรองรับ TCA9548A I2C Multiplexer ทดสอบด้วย https://www.adafruit.com/products/2717 ฝ่าวงล้อม (จอห์น ไบรอันมัวร์)
เพิ่มตัวอย่างหลามโดยใช้การสนับสนุน TCA9548A Multiplexer (johnbryanmoore)
เพิ่มการสนับสนุนการติดตั้ง pip (grantramsay)
เพิ่มการสนับสนุน smbus2 (grantramsay)
อัปเดตการสนับสนุนการติดตั้ง pip python2/3 (เนซี่)
อัปเดตการสนับสนุน smbus/smbus2 (เนซี่)
เพิ่ม gcc -fPIC CFLAGS สำหรับบิลด์บน Ubuntu (เนซี่)
เพิ่มการสนับสนุนการเปลี่ยนแปลงที่อยู่ I2C (เนซี่)
เวอร์ชัน 1.0.1:
ลดความซับซ้อนของกระบวนการสร้าง (svanimisetti)
เพิ่มตัวอย่างหลามที่สร้างกราฟเอาต์พุตเซ็นเซอร์ (svanimisetti)
อัปเดตคำแนะนำในการสร้าง (svanimisetti, johnbryanmoore)
เวอร์ชัน 1.0.0:
เพิ่มการรองรับเซ็นเซอร์หลายตัวบนบัสเดียวกันโดยใช้การเรียก ST API เพื่อเปลี่ยนที่อยู่ของอุปกรณ์
เพิ่มการสนับสนุนสำหรับการตรวจสอบข้อผิดพลาดที่ได้รับการปรับปรุง เช่น การตรวจจับข้อผิดพลาด I/O ในการเข้าถึง I2C
เวอร์ชัน 0.0.9:
เวอร์ชันเริ่มต้นและรองรับเพียง 1 เซ็นเซอร์พร้อมการตรวจสอบข้อผิดพลาดที่จำกัด
หมายเหตุเกี่ยวกับการรองรับเซ็นเซอร์หลายตัว:
หากต้องการมีเซ็นเซอร์หลายตัวบนบัสเดียวกัน คุณต้องมีหมุดปิดการทำงานของเซ็นเซอร์แต่ละตัวที่เชื่อมโยงกับ GPIO แต่ละตัว เพื่อให้สามารถเปิดใช้งานทีละตัวและตั้งค่าที่อยู่ได้
ทั้งบอร์ด Adafruit และ Pololu สำหรับ VL53L0X มีตัวดึงข้อมูล I2C บนบอร์ด ด้วยเหตุนี้ จำนวนบอร์ดที่สามารถเพิ่มได้จะถูกจำกัดไว้เพียงประมาณ 5 หรือ 6 แผ่นเท่านั้น ก่อนที่การดึงขึ้นจะแรงเกินไป
การเปลี่ยนแปลงแพลตฟอร์มและโค้ด python_lib c อนุญาตให้มีเซ็นเซอร์ได้สูงสุด 16 ตัว
การเปลี่ยนแปลงที่อยู่มีความผันผวน ดังนั้นการตั้งค่าพินปิดเครื่องให้ต่ำหรือการถอดพลังงานจะเปลี่ยนที่อยู่กลับไปเป็นค่าเริ่มต้น 0x29
หมายเหตุเกี่ยวกับการใช้ TCA9548A I2C Multiplexer:
หากจำกัดไว้ที่ GPIO ซึ่งจำเป็นต้องตั้งค่าที่อยู่ใหม่สำหรับเซ็นเซอร์แต่ละตัว การใช้ TCA9548A I2C Multiplexer เป็นตัวเลือกที่ดี เนื่องจากอนุญาตให้ใช้เซ็นเซอร์ได้สูงสุด 8 ตัวโดยไม่ต้องใช้ GPIO
TCA9548A ยังเป็นตัวเลือกที่ดีหากใช้หลายบอร์ดบนบัส I2C เดียวกัน และผลรวมของพูลอัพ I2C ที่รวมกันทั้งหมดจะทำให้บัสไม่ทำงาน
ตามทฤษฎี คุณสามารถเชื่อมต่อมัลติเพล็กเซอร์ TCA9548A ได้หลายตัว โดยแต่ละตัวมีเซ็นเซอร์ได้สูงสุด 8 ตัว ตราบใดที่ TCA9548A แต่ละตัวมีที่อยู่ที่แตกต่างกัน สิ่งนี้ไม่ได้รับการทดสอบ แต่ควรใช้งานได้ในทางทฤษฎี
(โปรดทราบว่าแม้ว่าผู้เขียนจะเป็นวิศวกรซอฟต์แวร์แบบฝังตัว นี่เป็นความพยายามครั้งแรกในการขยาย Python และผู้เขียนไม่ใช่ผู้เชี่ยวชาญด้าน Python แต่อย่างใด ดังนั้นข้อเสนอแนะในการปรับปรุงใด ๆ จึงได้รับการชื่นชม)
# Python2pip2 ติดตั้ง git+https://github.com/pimoroni/VL53L0X-python.git# Python3pip3 ติดตั้ง git+https://github.com/pimoroni/VL53L0X-python.git
หากต้องการสร้างบน Raspberry Pi ก่อนอื่นต้องแน่ใจว่าคุณมีเครื่องมือและไลบรารีการพัฒนาที่เหมาะสม:
sudo apt-get install build-essential python-dev
จากนั้นใช้คำสั่งต่อไปนี้เพื่อโคลนพื้นที่เก็บข้อมูลและคอมไพล์:
ซีดี your_git_directory คอมไพล์โคลน https://github.com/pimoroni/VL53L0X_rasp_python.gitcd VL53L0X-python ทำ
ในไดเร็กทอรี Python มีไฟล์ Python ต่อไปนี้:
VL53L0X.py - ประกอบด้วยอินเทอร์เฟซ python ctypes ไปยัง ST Library
VL53L0X_example.py - ตัวอย่างนี้เข้าถึงเซ็นเซอร์ตัวเดียวด้วยที่อยู่เริ่มต้น
VL53L0X_example_livegraph.py - ตัวอย่างนี้พล็อตข้อมูลระยะทางจากเซ็นเซอร์ตัวเดียวในกราฟสด ตัวอย่างนี้ต้องใช้ matplotlib ใช้ sudo pip install matplotlib
เพื่อติดตั้ง matplotlib
VL53L0X_multi_example.py - ตัวอย่างนี้เข้าถึงเซ็นเซอร์ 2 ตัว โดยตั้งค่าตัวแรกเป็น 0x2B และตัวที่สองเป็น 0x2D ใช้ GPIO 20 และ 16 เชื่อมต่อกับพินปิดเครื่องบนเซ็นเซอร์ 2 ตัวเพื่อควบคุมการเปิดใช้งานเซ็นเซอร์
VL53L0X_TCA9548A_example.py - ตัวอย่างนี้เข้าถึงเซ็นเซอร์ 2 ตัวผ่าน TCA9548A I2C Multiplexer โดยตัวแรกเชื่อมต่อกับบัส 1 และตัวที่สองบนบัส 2 บน TCA9548A