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

Меню

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

Авторский блог

Raspberry Pi

Каталог схем

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

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

Каталог сайтов

Форум

Канал YouTube


Сузуки Клуб Россия

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

Наш опрос
Как Вы узнали об этом сайте?
Всего ответов: 516

Ссылки




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







.
Статистика

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

Raspberry Pi для домашней автоматизации. Дополнительные датчики на шине I2C

Raspberry Pi для домашней автоматизации. Дополнительные датчики на шине I2C


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

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

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

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

 

Рис. 1

 

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

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

 

MPL115A2 SHT21 MAA7660

Рис. 2

 

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

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

 

MPL115A2 SHT21 MAA7660

Рис. 3

 

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

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

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

sudo apt-get update

sudo aot-get install python3-smbus

sudo reboot

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

 

MPL115A2 SHT21 MAA7660

Рис. 4

 

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

 





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






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