Làm cách nào để sử dụng I2C để nói chuyện với các cảm biến?


29

Làm cách nào để nói chuyện với các cảm biến kỹ thuật số qua giao diện I²C?

Phần cứng:
Tôi có thể sử dụng chân nào trên GPIO của Raspberry Pi?

Phần mềm:
Thư viện I²C nào có sẵn?

Câu trả lời:


23

Có rất nhiều thông tin về GPIO của RPi's tại đây: http://elinux.org/Rpi_Low-level_perodesals

Theo đó, bạn có thể lập trình bất kỳ chân GPIO nào cho I²C, nhưng:

Chân 3 (SDA0) và Chân 5 (SCL0) được đặt sẵn để được sử dụng làm giao diện I²C. Vì vậy, có 1,8 kilohm kéo lên điện trở trên bảng cho các chân này.

Trang wiki đó cũng có một số ví dụ mã GPIO cấp thấp cho các ngôn ngữ khác nhau sẽ giúp bạn bắt đầu. Nếu bạn cần xem lại I²C thực sự là gì, thì đây là một trong đó cũng tính đến RPi.

Để kiểm soát I²C cụ thể, thư viện python này có thể hữu ích, nó được thảo luận trong bài đăng trên blog này , bao gồm một mẫu mã.


Bạn có nhận xét gì về tiềm năng thích ứng chân Edison Sparkfun GPIO cho I2C không?
địa lý

7

Rất nhiều cuộc thảo luận đang diễn ra về điều này. Đây là những gì tôi đọc và làm rối tung cho tôi thấy:

  1. Hỗ trợ I2C không được tích hợp vào kernel mặc định với "nén" Debian
  2. Một hạt nhân tùy chỉnh sẽ phải được biên dịch với mô đun i2cspi ( Đây là đoạn trích cây GIT )
  3. Các trình điều khiển đã được viết cho đến nay chỉ dành cho kernel 3.2 trở lên và tác giả không có ý định hỗ trợ 3.1.9+ do lỗ hổng bảo mật ( Chris Boot thảo luận về trình điều khiển )
  4. May mắn thay, bản phân phối "khò khè" của Debian, hiện đang trong giai đoạn thử nghiệm cho RasPi, sẽ có trình điều khiển này trên đó. Nó đi kèm với kernel 3.2.

2
Vâng, như bạn đã đề cập, hiện tại nó đã được tích hợp vào kernel tiêu chuẩn - cả hai bản phát hành chính thức của Raspbian và Debian. Tôi đã làm theo một số lời khuyên ở đây rất dễ thực hiện và tôi có các thiết bị I2C hiển thị trong / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Có thêm một chút chi tiết ở đây nếu cần: robot- Electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

Để biết chi tiết hơn, hãy giữ dữ liệu ở đây thay vì trên các liên kết web và hy vọng điều này không bị lỗi thời: Kể từ hình ảnh Wheezy 2012-09-18, bạn chỉnh sửa /etc/modprobe.d/raspi-blacklist.confvà nhận xét mục nhập cho i2c-bcm2708; sau đó chỉnh sửa /etc/modulesvà nối thêm i2c-dev; sau đó khởi động lại. Bây giờ bạn nên có một /dev/i2c-0tập tin đặc biệt, rất dễ sử dụng.
damian


2

Phần cứng:

Như Tapio đã đề cập, phần cứng được ghi lại tốt tại http://elinux.org/Rpi_Low-level_perodesals

Phần mềm:

Có một tiêu đề i2c-dev trong không gian người dùng Linux ( #include <linux/i2c-dev.h>). Hơn nữa, bạn cần một nhân vật quyết định để đọc từ. Điều này có thể được thực hiện bằng cách tải các mô-đun chính xác. i2c_bcm2708cho trình điều khiển cấp thấp và i2c-devđể tạo ra các ký tự cho các bus. Ứng dụng ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

để tải chúng trên bay. Ứng dụng ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

và unblacklist i2c_bcm2708trong /etc/modprobe.d/raspi-blacklist.confđể làm /dev/i2c-0/dev/i2c-1hiển thị lên vĩnh viễn.

Từ bây giờ bạn có thể làm theo các gợi ý về cách sử dụng I²C del maestro.

Tôi thích phương pháp này hơn các phương pháp khác, vì nó là nền tảng. Bạn cũng có thể sử dụng linux/i2c-dev.hvới các thiết bị khác, miễn là có trình điều khiển I²C cấp thấp.

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.