Як я можу використовувати I2C для розмови з датчиками?


29

Як я можу спілкуватися з цифровими датчиками через інтерфейс I²C?

Апаратне забезпечення:
Які шпильки на GPIO Raspberry Pi я можу використовувати?

Програмне забезпечення:
Які бібліотеки I²C доступні?

Відповіді:


23

Тут багато інформації про GPIO GPI: http://elinux.org/Rpi_Low-level_peripherals

Згідно з цим, ви можете запрограмувати будь-які штифти GPIO для I²C, але:

Контакт 3 (SDA0) і контакт 5 (SCL0) попередньо встановлені для використання в якості інтерфейсу I²C. Тож на платі є 1,8 кілограмів, які підтягують резистори.

На цій вікі-сторінці також є кілька прикладів коду GPIO низького рівня для різних мов, які повинні розпочати роботу. Якщо вам потрібне оновлення того, що насправді є ІС , ось такий, який також враховує RPI.

Для конкретного контролю I²C ця бібліотека пітонів може бути корисною, це обговорюється в цій публікації блогу , яка включає зразок коду.


Будь-які коментарі щодо потенціалу адаптації штифтів Edison Sparkfun GPIO для I2C?
геотеорія

7

Про це триває багато дискусій. Ось, що мені показує моє читання та возитися:

  1. Підтримка I2C не вбудована в ядро ​​за замовчуванням із "стисканням" Debian
  2. Спеціальне ядро ​​доведеться компілювати з модулем i2cspi ( ось уривок дерева GIT )
  3. Написані до цього часу драйвери призначені лише для ядра 3.2 та пізніших версій, і автор не має наміру підтримувати 3.1.9+ через розриви в безпеці ( Кріс Бут обговорює драйвер )
  4. На щастя, цей "драйвовий" дистрибутив, який зараз знаходиться у бета-версії для RasPi, матиме цей драйвер. Він поставляється з ядром 3.2.

2
Так, як ви вже згадуєте, він вбудований у стандартне ядро ​​зараз - як офіційні Raspbian, так і Debian хрипкі дистрибутиви. Тут я дотримувався поради, яку легко дотримуватися, і у мене пристрої I2C відображаються в / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Тут потрібно трохи детальніше: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

Щоб отримати більш детальну інформацію, зберігайте дані тут, а не на веб-посиланнях, і сподіваючись, що це не застаріло: На зображенні Wheezy 2012-09-18 ви редагуєте /etc/modprobe.d/raspi-blacklist.confта коментуєте запис i2c-bcm2708; потім відредагуйте /etc/modulesта додайте i2c-dev; потім перезавантажте. Тепер у вас повинен бути /dev/i2c-0спеціальний файл, який дуже простий у використанні.
Даміан


2

Обладнання:

Як згадував Tapio, апаратне забезпечення добре зафіксовано на веб-сторінці http://elinux.org/Rpi_Low-level_peripherals

Програмне забезпечення:

У просторі користувача Linux є заголовок i2c-dev ( #include <linux/i2c-dev.h>). Крім того, вам потрібен символ, який можна прочитати. Це можна зробити, завантаживши правильні модулі. i2c_bcm2708для драйвера низького рівня та i2c-devдля генерації символьних децивів для автобусів. Застосувати ...

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

для завантаження їх на льоту. Застосувати ...

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

і unblacklist i2c_bcm2708в , /etc/modprobe.d/raspi-blacklist.confщоб зробити /dev/i2c-0і /dev/i2c-1показати на постійній основі .

Відтепер ви можете слідувати підказкам, як користуватися самим I²C del maestro.

Я віддаю перевагу цьому методу перед іншими, тому що він є платформованим. Ви також можете користуватися linux/i2c-dev.hз іншими пристроями, якщо існує драйвер низького рівня I²C.

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.