Четверг, 26.12.2024, 15:49
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Январь 2017  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Raspberry Pi. Дополнительные датчики на шине I2C

Raspberry Pi. Дополнительные датчики на шине I2C

Наш канал в YouTube


Фреймворк WebIOPi, на котором построена наша система домашней автоматизации, поддерживает более 30 различных датчиков. К сожалению, поддержка некоторых популярных датчиков в нем отсутствует. Поэтому, давайте поговорим, как выполнить подключение к шине I2C датчиков, не поддерживаемых встроенными драйверами WebIOPi.

В системе домашней автоматизации применяются датчики DHT22, для работы которых используется сторонняя библиотека Adafruit_DHT. Так же с помощью библиотеки Minimal Modbus организована поддержка протокола Modbus RTU для последовательного интерфейса RS485.

Аналогично посредством библиотеки SMBus можно реализовать поддержку различных датчиков, работающих по шине I2C. В качестве примера рассмотрим подключение к шине I2C датчика давления и температуры MPL115A2, датчика температуры и влажности SHT21 и акселерометра MMA7660. Выбор указанных датчиков был обусловлен тем, что они имелись у меня в наличии и на их основе ранее были созданы некоторые девайсы, о которых рассказывалось на страницах нашего сайта.

Датчик MPL115A2 (рис.1) предназначен для измерения атмосферного давления и температуры. Обращаю ваше внимание, что в этом датчике измерение температуры носит вспомогательный характер и служит для точности измерения давления. Температура является не калиброванным параметром и производитель рекомендует использовать этот датчик только для контроля атмосферного давления. Я же со своей стороны отмечу, что точность измерения температуры довольно приемлемая и вполне подойдет для применения в бытовых условиях.

 

MPL115 Raspberry Pi

Рис. 1

 

Датчик MPL115A2 имеет довольно сложный алгоритм вычисления. Расчет компенсированного абсолютного давления производится с использованием полинома второй степени, в котором переменными являются измеренные значения давления и температуры. Остальные значения коэффициенты (их всего шесть) являются постоянными значениями и заносятся в датчик при его калибровке на заводе. Если вы захотите более подробно ознакомиться с алгоритмом вычислений, читайте статью Датчик давления MPL115A2. Здесь же только отмечу, что для корректной работы датчика обязательно наличие между выводом 2 и общим проводом конденсатора на 1 мкФ, а так же двух подтягивающих резисторов 10 кОм с выводов 4 и 5 на плюс питания 3,3 В.

Следующий датчик SHT21 (рис.2) является довольно точным измерителем температуры (от -40 до +125 градусов) и влажности  (от 0 до 100%). Погрешность измерений датчика не превышает 2%.

 

SHT21 Raspberry Pi

Рис. 2

 

Датчик SHT21 обладает миниатюрными размерами 3х3 мм,  выпускается в корпусе QFN и в зависимости от модификации, может иметь различный формат представления выходных данных – шина I2CШИМ, и аналоговый выход (SDM). Более подробную информацию о характеристиках SHT21 смотрите в статье Датчик температуры и влажности SHT21. Два в одном.

Акселерометр MMA7660 (рис.3) – это датчик, предназначенный для определения г движения объекта и измерение углов поворота или ориентации –  т.е. положения в пространстве относительно трехмерной системы координат (X, Y, Z)

 

 MAA7660 Raspberry Pi

Рис. 3

 

Возможно, использование акселерометров в домашней автоматизации не так актуально, однако и им вполне можно найти применение. Например, в качестве датчика положения окон, жалюзи, заслонок вентиляции и т.д., в которых применение контактных датчиков не всегда есть возможность реализовать. Так же о некоторых вариантах использования акселерометров можно почитать в материалах Датчик наклона и Контроль наклона бура в СГБ.

Все рассмотренные выше датчики подключаются на шину I2C. На всякий случай напомню, что на этой шине в системе домашней автоматизации у нас уже используются часы реального времени DS1307, датчик давления и температуры BMP085 и датчик освещенности (люксметр) TSL2561.

Для  работы с новыми датчиками сначала необходимо установить библиотеку SMBus:

sudo apt-get update

sudo apt-get install python3-smbus

sudo reboot

Снятие, вычисление и преобразование показаний с датчиков выполняется с помощью макросов, написанных на Python. Это соответственно макросы getMPL115, getSHT21, getMMA7660, которые можно найти в архиве (ссылка на архив в конце данной статьи). Для вызова определенных макросов и возврата полученных с датчиков данных на html страницу используются стандартные процедуры WebIOPi. В качестве примера ниже приводится процедура вызова макроса для акселерометра getMMA7660 (рис.4):

 

Макрос Python Raspberry Pi

Рис. 4

 

Аналогичным образом можно получить данные и с остальных датчиков. Пример реализации страницы web-интерфейса с показаниями всех датчиков показан на рис.5

 





Категория: | Просмотров: 4250 | Добавил: Admin | Теги: | Рейтинг: 5.0/1 |
Всего комментариев: 0






T2M © 2024
Сайт управляется системой uCoz