I2C (Inter-Integrated Circuit), двухпроводной интерфейс, представляет собой последовательный интерфейс, используемый для быстрого подключения нескольких устройств к контроллерам и процессорам, таким как Omega2. Примеры I2C- устройств:
Связь осуществляется по 2 линиям связи, каждая из которых имеет свой вывод на Omega2:
Шина I2C использует архитектуру «ведущий-ведомый», что означает следующее:
Для получения дополнительной информации см. статью на Википедии о I2C.
Все взаимодействия I2C на Omega2 выполняются с использованием файла виртуального устройства /dev/i2c-0. Это стало возможным благодаря sysfs, псевдо-файловой системе, которая в файлах содержит информацию об аппаратном обеспечении Omega и позволяет пользователю управлять оборудованием, редактируя файлы.
Выводы I2C (SCL и SDA) на Omega2 и на док-станции расширения выделены ниже.
Примечание. На некоторых старых док-станциях SCL обозначается как контакт 20, а SDA обозначается как контакт 21.
Для работы с устройствами I2C используют две утилиты командной строки, i2cget и i2cset. Эти инструменты работают путем доступа к данным, хранящимся в регистрах на устройстве. Регистр - это место в памяти устройства. При чтении/записи на устройство I2C вам необходимо указать регистр на устройстве, к которому вы хотите получить доступ.
Команда i2cget используется для чтения значения определенного регистра на устройстве I2C.
Пример использования команды:
i2cget -y 0
Параметры команды описаны ниже:
Например, допустим, у нас есть датчик температуры I2C по адресу 0x40, действующий как ведомый со следующими регистрами:
Допустим, нам интересно считать температуру в градусах Фаренгейта. Делаем это, используя следующую команду:
i2cget -y 0 0x40 0x00
Результат 0x48, что равно 72 в десятичном исчислении (22 градуса по Цельсию).
i2cset позволяет установить значение регистра на целевом устройстве I2C. Типичная команда:
i2cset -y 0
Параметры команды описаны ниже:
Предположим, у нас есть контроллер освещенности в помещении I2C по адресу 0x27, действующий как ведомый со следующими регистрами:
Например, чтобы включить свет в гостиной, и выключить на кухне, запустим следующие команды:
i2cset -y 0 0x27 0x00 0x01 # вкл. в гостинной
i2cset -y 0 0x27 0x01 0x00 # выкл. на кухне
Некоторые расширения используют I2C для связи с Omega. Чтобы узнать больше о том, как с ними работать, ознакомьтесь с руководствами:
Разработан модуль I2C Python, который вы можете импортировать в свое приложение. Все подробности см. в I2C Python Module.
Пример. Управление I2C - ЖК-дисплеем.
Это пособие приводят Мэтью Огборн и Дэвид Стайн.
Сначала найдите или купите I2C ЖК-дисплей. Их можно найти в Интернете на Amazon или Ebay.
Установите на свой Omega2 следующие пакеты:
opkg update
opkg install git git-http python pyOnionI2C
Затем установите библиотеку (от Дэвида) для ЖК-дисплея:
cd /root
git clone https://bitbucket.org/fires/fireonion_i2c_lcd
Подключите ваш ЖК-дисплей, как показано ниже:
Если вы задумались, «подождите, этот дисплей 5В, а Omega - 3,3 В, как это будет работать?», вы очень внимательны! Что случится, если мы будем использовать 5В на док-станции для питания дисплея, а затем управлять дисплеем с помощью I2C-сигналов Omega с напряжением 3.3В? Это безопасно для Omega, поскольку на GPIO не будет 5В на входе, если мы не пытаемся выполнить I2C-считывание (предполагается, что большинство экранов не поддерживают считывание значения регистров). ЖК-дисплей способен считывать команды от Omega, поскольку логический максимум 3,3В больше, чем логический максимум порогового напряжения на большинстве TTL-схем, используемых в дисплеях.
Перейдите в каталог src:
cd fireonion_i2c_lcd/src
Для использования библиотеки вы можете использовать параметры командной строки:
Наберите:
python lcd.py –help
На выходе:
Usage: lcd.py [options]
Options:
-h, --help show this help message and exit
-a ADDRESS, --address=ADDRESS
I2C Adress
-p, --persistent -p = do not clear display before new write (не очищать дисплей перед новой записью)
--line1=LINE1 text to line 1 (текст на 1 линии)
--line2=LINE2 text to line 2
--line3=LINE3 text to line 3
--line4=LINE4 text to line 4
--backlight-off Turn off backlight (выкл. подсветку)
Пример:
root@Omega-1CD7:~/fires-fireonion_i2c_lcd/src# python lcd.py -a 0x3f --line1="Onion LCD LIB" --line2="--davidstein.cz--"
Теперь вы должны увидеть образец текста на ЖК-дисплее. Вы можете отредактировать lcd.py, чтобы изменить отображаемый текст. Также можете импортировать всю библиотеку в свой проект Python!
Дополнительная информация в блоге Дэвида.
Также разработана библиотеку I2C для C и C ++. Все подробности см. в «Библиотеке I2C C»
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru