TCA9548A เป็นมัลติเพล็กเซอร์ I2C ที่ช่วยให้คุณเชื่อมต่ออุปกรณ์หลายตัวกับที่อยู่ I2C เดียวกันกับ Raspberry Pi เดียว มันใช้งานได้โดยการแยกอุปกรณ์ I2C แต่ละตัวบนรถบัสของตัวเองทำให้ Raspberry Pi สามารถสื่อสารกับพวกเขาได้ทีละครั้ง สิ่งนี้มีประโยชน์อย่างยิ่งในโครงการที่ซับซ้อนซึ่งอาจเกิดความขัดแย้ง
สิ่งที่คุณต้องการ
- Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
- TCA9548A I2C MULTERXER MODULE
- อุปกรณ์ I2C (เช่นเซ็นเซอร์หรืออุปกรณ์ต่อพ่วง)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- ติดตั้ง Python บนราสเบอร์รี่ pi
ขั้นตอนที่ 1: เดินสาย TCA9548A ไปยังราสเบอร์รี่ pi
TCA9548A เชื่อมต่อกับ Raspberry Pi โดยใช้โปรโตคอล I2C
การเชื่อมต่อ
tca9548a pin | Raspberry Pi Pin |
---|---|
vin | 3.3V (พิน 1) |
gnd | พื้นดิน (พิน 6) |
SDA | SDA (พิน 3, GPIO2) |
SCL | SCL (PIN 5, GPIO3) |
เชื่อมต่ออุปกรณ์ I2C ของคุณเข้ากับรถบัส I2C หมายเลขของ TCA9548A (เช่น SD0/SCL0, SD1/SCL1).
ขั้นตอนที่ 2: เปิดใช้งานอินเตอร์เฟส I2C
- เปิดเครื่องมือกำหนดค่า Raspberry Pi:
sudo raspi-config
- นำทางไปยัง ตัวเลือกอินเตอร์เฟส> i2c และเปิดใช้งาน
- รีบูตราสเบอร์รี่ 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
# Initialize I2C and TCA9548A multiplexer
i2c = busio.I2C(board.SCL, board.SDA)
tca = TCA9548A(i2c)
# Access a specific I2C channel (e.g., channel 0)
channel_0 = tca[0]
# Example: Interfacing with an I2C device on channel 0
import adafruit_bme280 # Replace with your sensor library
sensor = adafruit_bme280.Adafruit_BME280_I2C(channel_0)
# Read data from the sensor
print(f"Temperature: {sensor.temperature:.2f} °C")
print(f"Humidity: {sensor.humidity:.2f} %")
คำอธิบาย:
-
tca[0]
หมายถึงช่อง I2C แรกบน TCA9548A - แทนที่ไลบรารีเซ็นเซอร์ (เช่น
adafruit_bme280
) ด้วยไลบรารีสำหรับเซ็นเซอร์หรืออุปกรณ์เฉพาะของคุณ
ขั้นตอนที่ 5: สลับระหว่างช่อง
TCA9548A ช่วยให้คุณสามารถสลับระหว่างอุปกรณ์ I2C หลายตัวที่เชื่อมต่อกับช่องต่าง ๆ นี่คือตัวอย่างของการวนซ้ำผ่านช่องทางเพื่ออ่านจากอุปกรณ์หลายเครื่อง:
for i in range(8): # TCA9548A has 8 channels (0-7)
if tca[i].try_lock():
print(f"Accessing device on channel {i}")
tca[i].unlock()
คุณสามารถใช้วิธีนี้เพื่อจัดการเซ็นเซอร์หลายตัวหรืออุปกรณ์ต่อพ่วงที่เชื่อมต่อกับมัลติเพล็กเซอร์
แอปพลิเคชันของ TCA9548A
- การหลีกเลี่ยงความขัดแย้งที่อยู่ I2C: ใช้มัลติเพล็กเซอร์เพื่อแยกอุปกรณ์ที่มีที่อยู่ I2C เดียวกัน
- ขยายอุปกรณ์ I2C: เชื่อมต่อรถบัสได้สูงสุด 8 คันแต่ละเครื่องรองรับหลายอุปกรณ์
- โครงการ IoT: ใช้ TCA9548A ในระบบตรวจสอบบ้านอัจฉริยะหรือสิ่งแวดล้อมที่จำเป็นต้องใช้เซ็นเซอร์หลายตัว
- หุ่นยนต์ที่ซับซ้อน: จัดการเซ็นเซอร์หรือแอคทูเอเตอร์หลายตัวในโครงการหุ่นยนต์ขั้นสูง
การแก้ไขปัญหา
-
ไม่พบอุปกรณ์:
- ตรวจสอบการเดินสายและตรวจสอบให้แน่ใจว่ามีการเชื่อมต่อพิน SDA/SCL อย่างเหมาะสม
- ยืนยันว่า TCA9548A ใช้พลังงานและที่อยู่ (
0x70
โดยค่าเริ่มต้น) จะปรากฏในการสแกน I2C
-
ข้อมูลช่องไม่ถูกต้อง:
- ตรวจสอบให้แน่ใจว่าเซ็นเซอร์เชื่อมต่อกับช่องทางที่ถูกต้องและใช้ไลบรารีที่เหมาะสมในสคริปต์ Python ของคุณ
-
ข้อผิดพลาดในการสื่อสาร I2C:
- ตรวจสอบการเชื่อมต่อแบบหลวมหรือที่อยู่ที่ขัดแย้งกัน I2C ในช่องเดียวกัน
บทสรุป
Multiplexer TCA9548A I2C เป็นเครื่องมือที่หลากหลายสำหรับการขยายขีดความสามารถ I2C ของ Raspberry Pi ของคุณและแก้ไขความขัดแย้งที่อยู่ โดยทำตามคำแนะนำนี้คุณสามารถจัดการอุปกรณ์ I2C หลายตัวในโครงการที่ซับซ้อนเช่นระบบตรวจสอบสภาพอากาศบ้านอัจฉริยะและหุ่นยนต์ ทดลองกับอุปกรณ์และช่องทางที่แตกต่างกันเพื่อสำรวจความสามารถอย่างเต็มที่!