Linux Mint    Ubuntu    openSUSE    Asterisk    FreeBSD    Android    Nokia N900    Игры в Linux
 Linux Mint    Ubuntu     openSUSE     Asterisk     FreeBSD     Android     N900     Games

Подключаем датчики DHT11 к Raspberry и управляем температурой в доме (Часть 1)

DHT 11
После того, как мы наигрались с GPIO и по управляли релюшками, можно переходить к подключению датчиков температуры и влажности.

Сейчас мы попробуем подключить несколько датчиков DHT11, проверить работоспособность реле (которое мы настроили ранее) и возможность управления большой нагрузкой с помощью контактора.

При выборе датчиков температуры и влажности, я остановился на DHT11. Это не дорогие цифровые датчики, подходящие для домашнего использования. И к тому же должны легко подключаться к Raspberry.

Характеристики датчика DHT11:
Влажность 20-80% (погрешность 5%)
Температура 0-50 °С (погрешность 2%)

Аппаратная часть

Для подключения датчика DHT11 к Raspberry нам потребуется задействовать три пина. В моем случае датчик был четырех контактный, но третий контакт мы не используем.

Первый контакт мы подключаем к +3,3В (PIN 1 на плате), второй контакт к GPIO4 (PIN 7 на плате), третий контакт пустой, четвертый контакт к Ground (PIN 39 на плате).

Подключение датчиков DHT11

Для подключения лучше использовать качественный медный кабель, я задействовал 4 жильный телефонный. Максимальная длинна кабеля ограничена примерно 10 м. На практике у меня заработало с кабелем до 7 м.

Подключение реле и контактора

Вот так выглядит общее подключение датчиков, реле и контактора.

Программная часть

Снимать показание с датчиков решено с помощью C. Для этого установим библиотеку для работы с GPIO

wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.15.tar.gz
tar xzf bcm2835-1.15.tar.gz
cd bcm2835-1.15/
./configure
make
make install

Создаем файл readDHT.c

nano /home/pi/bcm2835-1.15/wiringPi/wiringPi/readDHT.c

Добавляем в него такой код (Скачать файл readDHT.c):
Компилируем:

gcc readDHT.c -lbcm2835 -lrt -o readDHT

Пробуем считать данные ("11" - тип датчика DHT11, а цифра "4" - номер пина):

sudo ./readDHT 11 4

Мы должны увидеть вот такую картину:

Read DHT11

Вполне вероятно, что с первого раза вы ничего не увидите, попробуйте повторить операцию несколько раз. Дело в том, что датчик работает не в реальном времени и когда вы к нему обращаетесь, у него может не быть данных.

Первую часть можно считать завершенной, данные с датчиков мы получаем. А вот как избавиться от пустых значений и забрать данные в чистом виде, я расскажу в следующем материале.