Mục lục:
- Bước 1: Một số Shell Comands
- Bước 2: Trường hợp một: Các thiết bị I2c có cùng địa chỉ
- Bước 3: Trường hợp 2: Địa chỉ I2c khác nhau
Video: Raspberry PI Nhiều thiết bị I2C: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Bực bội vì bạn không thể sử dụng nhiều thiết bị I2C giống nhau trong dự án của mình. Không cần sử dụng bộ ghép kênh chậm. Nhân raspbian mới nhất hỗ trợ việc tạo nhiều bus I2C bằng cách sử dụng các chân GPIO. Giải pháp này là siêu nhanh.
Bước 1: Một số Shell Comands
Kết nối một trong các thiết bị i2c của bạn khi đang sử dụng raspberry pi, khởi động raspberry pi của bạn và chạy
sudo i2cdetect -y 1
Bạn sẽ thấy một bảng như trong hình đính kèm. Tôi đã đính kèm một cảm biến áp suất nhiệt độ và khí áp BMP280. Địa chỉ i2c là 0x76 theo bảng. Lưu ý địa chỉ này.
Làm điều này cho tất cả các thiết bị i2c của bạn.
Bước 2: Trường hợp một: Các thiết bị I2c có cùng địa chỉ
Đây luôn là trường hợp có vấn đề. Một bus i2c có thể xử lý nhiều thiết bị, nhưng chúng phải có các địa chỉ i2c khác nhau. Một số thiết bị i2c có jumper để đặt các địa chỉ i2c khác, nhưng nhiều thiết bị thì không. Trong trường hợp này, bạn có thể sử dụng bộ ghép kênh i2c (phần cứng) để xoay i2c SDA (Dữ liệu) và SCL (Đồng hồ) hoặc bạn có thể tạo thêm một bus i2c trở lên.
Tôi sẽ tạo hai bus bổ sung, bus nl 3 và 4
Mở cli và chạy
cd / boot
sudo nano config.txt
Thêm dòng mã sau, thích hợp hơn trong phần mà spi và i2c được bật.
dtoverlay = i2c-gpio, bus = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24
Dòng này sẽ tạo một bus i2c bổ sung (bus 4) trên GPIO 23 dưới dạng SDA và GPIO 24 là SCL (GPIO 23 và 24 là mặc định)
Cũng thêm dòng sau để tạo i2c bus 3
dtoverlay = i2c-gpio, bus = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27
GPIO 17 sẽ là SDA và GPIO 27 sẽ là SCL cho i2c bus 4.
Gõ điều khiển X để thoát.
Lưu ý về Đánh số xe buýt và thứ tự:
Không bao giờ sử dụng xe buýt 0 và 2, nó được sử dụng cho những thứ khác trong bảng như eprom trên mũ, v.v.
Đối với bản phát hành raspbian tháng 4 năm 2019:
Bạn phải luôn bắt đầu với xe buýt cao nhất (trong trường hợp này là xe buýt 4) trong tệp config.txt của bạn và làm việc đến xe buýt thấp nhất (xe buýt 3).
Xe buýt thấp nhất luôn phải là xe buýt 3
Nếu bạn cần thêm 5 bus, các bus phải bi theo thứ tự là 7, 6, 5, 4, 3
Vấn đề này về thứ tự xe buýt không có ở đó khi Bản hướng dẫn này ban đầu được viết. Có vẻ như những thay đổi đã được thực hiện đối với hạt nhân.
Tắt PI của bạn, chuyển nó. Kết nối thiết bị i2c của bạn với bus 4 (SDA tới GPIO 23 và SCL tới GPIO 24) và thiết bị còn lại với i2c bus 3 (SDA tới GPIO 17 và SCL tới GPIO 27).
Bật số pi.
Chạy:
sudo i2cdetect -l (Chữ thường L)
Bây giờ bạn sẽ thấy rằng i2c bus 3 và 4 cũng được liệt kê. Cũng chạy:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
Giờ đây, bạn có thể sử dụng cảm biến bằng ngôn ngữ lập trình của mình. Hãy nhớ chỉ định các bus i2c chính xác.
Đính kèm là một ví dụ cho cảm biến nhiệt độ và áp suất BMP280 phổ biến. Không có bộ ghép kênh nào có thể đọc 2 BMP280 nhanh như vậy.
Một ví dụ về 2 cảm biến Sensirion SDP 810 cũng được đính kèm. Một lần nữa hoạt động nhanh hơn nhiều so với bộ ghép kênh mà tôi đã sử dụng trước đây
Tôi đã tạo mã python để đọc hai BMP388 mới từ adafruit.
Tôi cũng có thể thêm các cảm biến khác trong tương lai vào
Bước 3: Trường hợp 2: Địa chỉ I2c khác nhau
Đơn giản. i2c là xe buýt. Mục đích của xe buýt là giao tiếp với nhiều thiết bị. Kết nối các thiết bị song song với cùng một bus i2c. Bạn có thể sử dụng xe buýt một.
Chạy:
sudo i2cdetect -y 1
Bạn sẽ thấy các thiết bị được liệt kê.
Đề xuất:
Arduino Kết nối nhiều thiết bị I2C: 6 bước
Arduino Connect Multiple I2C Devices: Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách kết nối một số mô-đun với kết nối I2C với arduino. nếu bạn muốn. Lưu ý: 4 OLED Hiển thị co
Hướng dẫn: Cách Arduino điều khiển nhiều thiết bị cùng địa chỉ bằng cách sử dụng bộ ghép kênh TCA9548A I2C: 3 bước
Hướng dẫn: Cách Arduino điều khiển nhiều thiết bị cùng địa chỉ bằng cách sử dụng bộ ghép kênh TCA9548A I2C: Mô tả: Mô-đun bộ ghép kênh TCA9548A I2C cho phép kết nối các thiết bị có cùng địa chỉ I2C (tối đa 8 I2C cùng địa chỉ) với một bộ vi điều khiển. Bộ ghép kênh hoạt động như một người gác cổng, chuyển các lệnh đến tập hợp đã chọn o
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
Sử dụng nhiều hơn 4 động cơ - Xếp chồng nhiều động cơ: 3 bước
Sử dụng nhiều hơn 4 động cơ - Xếp chồng nhiều động cơ: Thiết bị thay thế và tăng cường cảm giác Vibrotactile có thể hướng dẫn (https: //www.instructables.com/id/Vibrotactile-Sens …) cho biết cách chế tạo một thiết bị chuyển đổi cảm giác đầu vào các kích thích rung động. Những kích thích rung động đó là p
Đế sạc nhiều thiết bị Lego, Máy tính bảng điện thoại: 15 bước (có hình ảnh)
Dock sạc nhiều thiết bị Lego, Máy tính bảng: xây dựng đế sạc lego của riêng bạn