ดังกล่าว TCA9548A เป็นมัลติเพล็กเซอร์ I2C ที่ช่วยให้คุณเชื่อมต่ออุปกรณ์หลายตัวที่มีที่อยู่ I2C เดียวกันเข้ากับ Raspberry Pi เครื่องเดียวได้ โดยทำงานด้วยการแยกอุปกรณ์ I2C แต่ละชิ้นออกไปอยู่บนบัสของตนเอง ทำให้ Raspberry Pi สามารถสื่อสารกับพวกมันทีละตัวได้ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับโปรเจ็กต์ที่ซับซ้อนซึ่งอาจเกิดการชนกันของที่อยู่
สิ่งที่คุณต้องมี
- Raspberry Pi (ทุกรุ่นที่รองรับ GPIO เช่น Pi 3, Pi 4)
- TCA9548A โมดูลมัลติเพล็กเซอร์ I2C
- อุปกรณ์ I2C (เช่น เซ็นเซอร์หรืออุปกรณ์ต่อพ่วง)
- เบรดบอร์ดและสายจัมเปอร์
- ติดตั้ง Python แล้ว บน Raspberry Pi
ขั้นตอนที่ 1: การเดินสายไฟของ TCA9548A ไปยัง Raspberry Pi
TCA9548A เชื่อมต่อกับ Raspberry Pi โดยใช้โปรโตคอล I2C.
การเชื่อมต่อ
| TCA9548A หมุด | พิน Raspberry Pi |
|---|---|
| VIN | 3.3V (ขา 1) |
| GND | กราวด์ (ขา 6) |
| SDA | SDA (พิน 3, GPIO2) |
| SCL | SCL (ขา 5, GPIO3) |
เชื่อมต่ออุปกรณ์ I2C ของคุณกับ TCA9548Aบัส I2C ที่มีการกำหนดหมายเลขของ (เช่น, SD0/SCL0, SD1/SCL1).
ขั้นตอนที่ 2: เปิดใช้งานอินเทอร์เฟซ I2C
- เปิดเครื่องมือกำหนดค่า Raspberry Pi:
sudo raspi-config - ไปที่ ตัวเลือกอินเทอร์เฟซ > I2C และเปิดใช้งานมัน.
- รีบูต Raspberry Pi:
sudo reboot
ขั้นตอนที่ 3: ติดตั้งไลบรารีที่จำเป็น
-
อัปเดตรายการแพ็กเกจของ Raspberry Pi ของคุณ:
sudo apt update && sudo apt upgrade -y -
ติดตั้งเครื่องมือ I2C และไลบรารี Python:
sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a -
ตรวจสอบให้แน่ใจว่า TCA9548A ถูกตรวจพบบนบัส I2C:
sudo i2cdetect -y 1โดยทั่วไปมัลติเพล็กเซอร์จะปรากฏที่ที่อยู่
0x70.
ขั้นตอนที่ 4: โค้ด Python เพื่อใช้ TCA9548A
นี่คือสคริปต์ Python เพื่อเปิดใช้งานช่อง I2C เฉพาะบน TCA9548A และอ่านข้อมูลจากเซ็นเซอร์ที่เชื่อมต่ออยู่.
ตัวอย่างโค้ด Python
import board
import busio
from adafruit_tca9548a import TCA9548A
# เริ่มต้น I2C และ TCA9548A มัลติเพล็กเซอร์
i2c = busio.I2C(board.SCL, board.SDA)
tca = TCA9548A(i2c)
# เข้าถึงช่อง I2C เฉพาะ (เช่น ช่อง 0)
channel_0 = tca[0]
# ตัวอย่าง: เชื่อมต่อกับอุปกรณ์ I2C บนช่อง 0
import adafruit_bme280 # แทนที่ด้วยไลบรารีของเซนเซอร์ของคุณ
sensor = adafruit_bme280.Adafruit_BME280_I2C(channel_0)
# อ่านข้อมูลจากเซนเซอร์
print(f"อุณหภูมิ: {sensor.temperature:.2f} °C")
print(f"ความชื้น: {sensor.humidity:.2f} %")
คำอธิบาย:
-
tca[0]หมายถึงช่อง I2C แรกบน TCA9548A. - แทนที่ไลบรารีเซ็นเซอร์ (เช่น,
adafruit_bme280) ด้วยไลบรารีสำหรับเซนเซอร์หรืออุปกรณ์เฉพาะของคุณ.
ขั้นตอนที่ 5: การสลับระหว่างช่องทาง
นั้น TCA9548A ช่วยให้คุณสลับไปมาระหว่างอุปกรณ์ I2C หลายตัวที่เชื่อมต่ออยู่กับช่องต่างๆ ได้ ต่อไปนี้คือตัวอย่างการวนผ่านช่องต่างๆ เพื่ออ่านข้อมูลจากหลายอุปกรณ์:
for i in range(8): # TCA9548A มี 8 ช่อง (0-7)
if tca[i].try_lock():
print(f"กำลังเข้าถึงอุปกรณ์ที่ช่อง {i}")
tca[i].unlock()
คุณสามารถใช้แนวทางนี้เพื่อจัดการเซ็นเซอร์หรืออุปกรณ์ต่อพ่วงหลายตัวที่เชื่อมต่อกับมัลติเพล็กเซอร์
การประยุกต์ใช้ของ TCA9548A
- หลีกเลี่ยงการชนกันของที่อยู่ I2C: ใช้มัลติเพล็กเซอร์เพื่อแยกอุปกรณ์ที่มีที่อยู่ I2C เดียวกัน
- การขยายอุปกรณ์ I2C: เชื่อมต่อได้สูงสุด 8 บัส โดยแต่ละบัสรองรับอุปกรณ์ได้หลายตัว
- โครงการ IoT: ใช้ TCA9548A ในระบบบ้านอัจฉริยะหรือระบบเฝ้าติดตามสภาพแวดล้อมที่จำเป็นต้องใช้เซ็นเซอร์หลายตัว
- หุ่นยนต์เชิงซับซ้อน: จัดการเซ็นเซอร์หรือแอคชูเอเตอร์หลายตัวในโครงการหุ่นยนต์ขั้นสูง.
การแก้ไขปัญหา
-
ไม่พบอุปกรณ์:
- ตรวจสอบการเดินสายและตรวจให้แน่ใจว่าพิน SDA/SCL เชื่อมต่ออย่างถูกต้อง
- ยืนยันว่า TCA9548A ถูกจ่ายไฟและที่อยู่ของมัน (
0x70ตามค่าเริ่มต้น) ปรากฏในการสแกน I2C
-
ข้อมูลช่องทางไม่ถูกต้อง:
- ตรวจสอบให้แน่ใจว่าเซ็นเซอร์เชื่อมต่อกับช่องที่ถูกต้อง และใช้ไลบรารีที่เหมาะสมในสคริปต์ Python ของคุณ
-
ข้อผิดพลาดในการสื่อสาร I2C:
- ตรวจสอบการเชื่อมต่อที่หลวม หรือที่อยู่ I2C ที่ขัดแย้งกันบนช่องสัญญาณเดียวกัน
บทสรุป
นั้น TCA9548A มัลติเพล็กเซอร์ I2C เป็นเครื่องมืออเนกประสงค์สำหรับขยายความสามารถ I2C ของ Raspberry Pi ของคุณและแก้ปัญหาความขัดแย้งของที่อยู่ โดยทำตามคู่มือนี้ คุณจะสามารถจัดการอุปกรณ์ I2C หลายชิ้นได้อย่างมีประสิทธิภาพในโปรเจ็กต์ที่ซับซ้อน เช่น ระบบตรวจวัดสภาพอากาศ สมาร์ทโฮม และหุ่นยนต์ ลองใช้งานกับอุปกรณ์และช่องสัญญาณที่หลากหลายเพื่อสำรวจความสามารถของเครื่องมือนี้ให้เต็มที่!



