สารบัญ:

Raspberry PI หลายอุปกรณ์ I2C: 3 ขั้นตอน
Raspberry PI หลายอุปกรณ์ I2C: 3 ขั้นตอน

วีดีโอ: Raspberry PI หลายอุปกรณ์ I2C: 3 ขั้นตอน

วีดีโอ: Raspberry PI หลายอุปกรณ์ I2C: 3 ขั้นตอน
วีดีโอ: HOWTO Raspberry Pi + LCD 16x2 i2c 2024, กรกฎาคม
Anonim
Raspberry PI อุปกรณ์ I2C หลายตัว
Raspberry PI อุปกรณ์ I2C หลายตัว
Raspberry PI อุปกรณ์ I2C หลายตัว
Raspberry PI อุปกรณ์ I2C หลายตัว

ผิดหวังเพราะคุณไม่สามารถใช้อุปกรณ์ I2C เดียวกันหลายเครื่องในโครงการของคุณ ไม่จำเป็นต้องใช้มัลติเพล็กเซอร์ที่ช้า เคอร์เนล raspbian ล่าสุดรองรับการสร้างบัส I2C หลายตัวโดยใช้พิน GPIO วิธีแก้ปัญหานี้เร็วมาก

ขั้นตอนที่ 1: คำสั่งเชลล์บางส่วน

คำสั่งเชลล์บางส่วน
คำสั่งเชลล์บางส่วน

เชื่อมต่อหนึ่งในอุปกรณ์ i2c ของคุณในขณะที่ raspberry pi ของคุณเริ่มต้น raspberry pi ของคุณและเรียกใช้

sudo i2cdetect -y 1

คุณจะเห็นตารางดังรูปแนบ ฉันได้แนบเซ็นเซอร์อุณหภูมิและความดันบรรยากาศ BMP280 แล้ว ที่อยู่ i2c คือ 0x76 ตามตาราง หมายเหตุที่อยู่นี้

ทำเช่นนี้กับอุปกรณ์ i2c ทั้งหมดของคุณ

ขั้นตอนที่ 2: กรณีที่หนึ่ง: อุปกรณ์ I2c มีที่อยู่เหมือนกัน

กรณีที่หนึ่ง: อุปกรณ์ I2c มีที่อยู่เหมือนกัน
กรณีที่หนึ่ง: อุปกรณ์ I2c มีที่อยู่เหมือนกัน

นี่เป็นกรณีที่มีปัญหาเสมอ บัส i2c สามารถรองรับอุปกรณ์ได้หลายเครื่อง แต่ควรมีที่อยู่ i2c ที่แตกต่างกัน อุปกรณ์ i2c บางตัวมีจัมเปอร์สำหรับตั้งค่าที่อยู่ i2c อื่นๆ แต่ส่วนมากจะไม่มี ในกรณีนี้ คุณอาจใช้มัลติเพล็กเซอร์ i2c (ฮาร์ดแวร์) เพื่อหมุน i2c SDA (ข้อมูล) และ SCL (นาฬิกา) หรือคุณสามารถสร้างบัส i2c เพิ่มเติมได้

ฉันจะสร้างบัส aditional สองตัว nl bus 3 และ 4

เปิด cli แล้วรัน

cd /boot

sudo nano config.txt

เพิ่มบรรทัดของโค้ดต่อไปนี้ ควรใช้ในส่วนที่เปิดใช้งาน spi และ i2c

dtoverlay=i2c-gpio, บัส=4, i2c_gpio_delay_us=1, i2c_gpio_sda=23, i2c_gpio_scl=24

บรรทัดนี้จะสร้างบัส i2c เพิ่มเติม (บัส 4) บน GPIO 23 เป็น SDA และ GPIO 24 เป็น SCL (GPIO 23 และ 24 เป็นค่าเริ่มต้น)

เพิ่มบรรทัดต่อไปนี้เพื่อสร้าง i2c bus 3

dtoverlay=i2c-gpio, บัส=3, i2c_gpio_delay_us=1, i2c_gpio_sda=17, i2c_gpio_scl=27

GPIO 17 จะเป็น SDA และ GPIO 27 จะเป็น SCL สำหรับบัส i2c 4

Tipe ควบคุม X เพื่อออก

หมายเหตุเกี่ยวกับหมายเลขและลำดับรถประจำทาง:

ห้ามใช้รถบัส 0 และ 2 ใช้สำหรับสิ่งอื่น ๆ ในบอร์ดเช่น eprom บนหมวก ฯลฯ

สำหรับการเปิดตัว Raspbian ในเดือนเมษายน 2019:

คุณควรเริ่มต้นด้วยบัสสูงสุด (บัส 4 ในกรณีนี้) ใน config.txt ของคุณและทำงานผ่านบัสที่ต่ำที่สุด (บัส 3)

รถบัสที่ต่ำที่สุดต้องเป็นรถบัส 3. เสมอ

หากคุณต้องการรถบัสเสริม 5 คัน รถบัสต้องแบ่งเป็น 7, 6, 5, 4, 3

ปัญหานี้เกี่ยวกับการสั่งซื้อรถบัสไม่ได้อยู่ที่นั่นเมื่อเริ่มเขียนคำแนะนำนี้ ดูเหมือนว่ามีการเปลี่ยนแปลงเคอร์เนล

ปิด PI ของคุณ เปลี่ยนมัน เชื่อมต่ออุปกรณ์ i2c ของคุณกับบัส 4 (SDA เป็น GPIO 23 และ SCL เป็น GPIO 24) และอีกเครื่องหนึ่งไปยัง i2c bus 3 (SDA เป็น GPIO 17 และ SCL เป็น GPIO 27)

เปิด pi

วิ่ง:

sudo i2cdetect -l (ตัวพิมพ์เล็ก L)

ตอนนี้คุณจะเห็นว่ามีบัส i2c 3 และ 4 อยู่ในรายการด้วย ยังเรียกใช้:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

ตอนนี้คุณสามารถใช้เซ็นเซอร์ในภาษาการเขียนโปรแกรมของคุณ อย่าลืมระบุบัส i2c ที่ถูกต้อง

เอกสารแนบเป็นตัวอย่างสำหรับเซ็นเซอร์อุณหภูมิและความดัน BMP280 ยอดนิยม ไม่มีมัลติเพล็กเซอร์ใดที่สามารถอ่าน BMP280 2 อันได้เร็วขนาดนี้

ตัวอย่างของเซนเซอร์ Sensirion SDP 810 2 ตัวก็แนบมาด้วย ทำงานได้เร็วกว่ามัลติเพล็กเซอร์ที่ฉันเคยใช้ในอดีตอีกครั้ง

ฉันสร้างรหัสหลามเพื่ออ่าน BMP388 ใหม่สองรายการจาก adafruit

ฉันอาจเพิ่มเซ็นเซอร์อื่น ๆ ในอนาคตที่

ขั้นตอนที่ 3: กรณีที่ 2: ที่อยู่ I2c ต่างกัน

เรียบง่าย. i2c เป็นรถบัส วัตถุประสงค์ของรถบัสคือการสื่อสารกับอุปกรณ์หลายเครื่อง เชื่อมต่ออุปกรณ์ขนานกับบัส i2c เดียวกัน คุณสามารถใช้รถบัสหนึ่ง

วิ่ง:

sudo i2cdetect -y 1

คุณจะเห็นรายการอุปกรณ์

แนะนำ: