Датчик температуры DHT11 / DHT22
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
| ||||
| ||||
| ||||
| ||||
| ||||
|
Об этом проекте
Введение
Фон
DHT11 - это 4-контактный датчик температуры и влажности (один контакт не используется), способный измерять относительную влажность 20–90% и температуру от 0 до 50 ° C. Датчик может работать от 3 до 5,5 В постоянного тока и обменивается данными с использованием собственного проприетарного протокола OneWire. Этот протокол требует очень точного времени для получения данных от датчика. Биты LOW и HIGH кодируются на проводе по времени, в течение которого сигнал является HIGH. Общее время считывания составляет не более 23,4 мс. Это включает задержку 18 мс, необходимую для начала передачи данных, и окно до 5,4 мс для данных. Отдельные сигналы могут быть от 20 мкс до 80 мкс.
Когда Windows 10 IoT Core впервые стала доступна, я взял свой Raspberry Pi 2 и датчик DHT11 и опробовал его на C #. Я быстро обнаружил, что это не сработает. Проблема с C # в Windows 10 IoT Core заключается в том, что он просто не будет достаточно быстрым (по крайней мере, сейчас).
Я разместил сообщение на форуме Microsoft и несколько раз обменялся с другими разработчиками, у которых возникла такая же проблема. В конце концов я наткнулся на ответ Microsoft по протоколу OneWire в Windows 10 IoT Core, который гласил:
Через некоторое время я получил ответ на свой пост:
Что ж, это будет здорово, и я искренне рад появлению новых возможностей, но кто может подождать? Недавно я увидел, что Microsoft опубликовала образец того, как поддерживать протокол OneWire, используя DHT11 в качестве образца датчика и используя C ++ в Windows 10 IoT Core. Я увидел в этом возможность перенести это на C #.
Этот проект посвящен превращению этого образца в библиотеку, которую можно использовать в C #. Я благодарен человеку, который написал библиотеку, чтобы сделать этот популярный датчик полезным в Windows 10 IoT Core, и, надеюсь, с этой библиотекой он будет еще более полезным.
Библиотека
Созданная мною библиотека представляет собой простой рефакторинг кода, первоначально опубликованного Microsoft, поэтому я не беру на себя ответственность за работу, проделанную для получения показаний датчика.
Библиотека представляет собой простой класс под названием Dht11 . в поле имен Sensors.Dht . Создать новый объект на C # очень просто.
Сначала откройте контакт GPIO, к которому подключен датчик DHT11.
using Sensors.Dht; GpioPin pin =GpioController.GetDefault (). OpenPin (4, GpioSharingMode.Exclusive);
Затем передайте эту булавку конструктору Dht11 class и укажите режим привода вывода GPIO. Это позволяет вам решить, добавите ли вы собственный подтягивающий резистор.
Dht11 dht11 =new Dht11 (_pin, GpioPinDriveMode.Input);
Чтобы получить показания с устройства, используйте GetReadingAsync метод.
DhtReading reading =await dht11.GetReadingAsync (). AsTask ();
Существует перегрузка, позволяющая указать максимальное значение повтора. Значение по умолчанию - 20. Это указывает, сколько попыток сделать для считывания показаний датчика, прежде чем отказаться от него и вернуть неудавшееся показание.
DhtReading структура определяется как:
структура открытого значения DhtReading {bool TimedOut; bool IsValid; двойная температура; двойная влажность; int RetryCount;};
Наблюдения
Несмотря на то, что датчик работает на C ++, он все равно не получает показания каждый раз. Таким образом, необходимость в опции повтора в классе (это фактически часть образца Microsoft). Я подумал, что было бы лучше сравнить это с другими платформами, чтобы увидеть, как он работает. Я пробовал код на Raspberry Pi 2 с Raspbian, а также на Arduino Uno. Код, который я использовал для обоих, включен в репозиторий GitHub.
Видео, включенное в этот проект, продемонстрирует и сравнит результат работы каждой из этих платформ.
Начало работы
Соберите схему для Raspberry Pi 2
Используйте это руководство для сборки схемы, используя схему, расположенную в нижней части страницы, в качестве руководства (обратите внимание, что цвета проводов не являются обязательными и были выбраны, чтобы облегчить отслеживание схемы при ее создании). P>
- Поместите Т-образный сапожник на левый конец доски половинного размера + (где цифры начинаются с 1). Два крайних левых контакта будут в E1 . и F1 на борту. Два крайних правых контакта будут на E20 . и F20
- Поместите резистор 4,7 кОм между A4 и 3V3
- Подключите оранжевый штекер к штекеру перемычки между B4 . и F28
- Подключите красный штекер к штекеру перемычки между F29 . и 3V3
- Подключите черный штекер к штекеру перемычки между F30 . и GND
- Поместите датчики DHT11 в J30 . (-), J29 (+) И J28 (s)
- Подключите ленточный кабель к сапожнику и Raspberry Pi.
Соберите схему для Arduino
Используйте это руководство для сборки схемы, используя схему, расположенную в нижней части страницы, в качестве руководства (обратите внимание, что цвета проводов не являются обязательными и были выбраны, чтобы облегчить отслеживание схемы при ее создании). P>
- Поместите резистор 4,7 кОм между E12 и E13
- Подключите белый штекер к штекеру перемычки между D13 . и контакт 5 в Arduino
- Подключите красный штекер к штекеру перемычки между D12 . и 5V булавка в Arduino
- Подключите черный штекер к штекеру перемычки между D11 . и GND на Arduino
- Поместите датчики DHT11 в A11 . (-), A12 (+) и A13 (s)
- Подключите USB-кабель от компьютера к Arduino.
Ниже приведены фотографии схем, которые я построил.
Запуск приложения для Raspberry Pi
Выберите «Отладка», «Конфигурация ARM» и «Удаленный компьютер». Теперь щелкните проект правой кнопкой мыши и выберите «Свойство», а затем щелкните «Тег отладки». Затем введите IP-адрес Raspberry Pi 2 в поле «Удаленный компьютер» и снимите флажок «Использовать аутентификацию».
Нажмите F5 . . Приложение будет развернуто на устройстве, что в первый раз может занять несколько минут.
Запуск приложения для Arduino
Скетч для этого проекта доступен на GitHub в файле под названием Dht11_Speed . . Запустите IDE Arduino и откройте скетч. Загрузите эскиз в Arduino ( Ctrl U
), А затем запустите Serial Monitor ( Ctrl Shift M
)
Если вы не знаете, как это сделать, или если вы новичок в этой среде, в видео ниже будет показано, как это сделать.
Запуск приложения для Raspbian
Код C для Raspberry Pi доступен в GitHub для этого проекта в файле под названием Dht11.c . . Исходный код необходимо скопировать на Raspberry Pi, а затем скомпилировать там. Мне нравится использовать WinSCP для копирования файлов. Если у вас нет этого приложения, я рекомендую вам загрузить и установить его сейчас. В исходном коде используется wiringPi, который необходимо установить до компиляции приложения.
Команда для компиляции кода на Raspberry Pi:
gcc -oDht11_Speed Dht11_Speed.c -L / usr / local / lib -lwiringPi -std =c99 -lm
Для запуска приложения введите команду:
sudo ./Dht11_Speed 1000 10
Где 1000 указывает задержку в 1000 мс (1 секунду), а 10 - количество считываемых отсчетов.
На видео более подробно будет продемонстрировано, как скопировать код и как его скомпилировать на Raspberry Pi с запущенным Raspbian. Чтобы узнать, как загрузить Raspbian на Raspberry Pi, перейдите по ссылке https://www.raspberrypi.org/downloads/raspbian/.
Видео
Видео ниже демонстрирует работу приложения:
Просмотрите это видео на YouTube в режиме "Театр" для получения наилучшего качества.
Код
Исходный код C # / C ++ Visual Studio 2015
https://github.com/porrey/dht.gitСхема
Dht11_RPi2.fzz Dht11_Arduino.fzzПроизводственный процесс
- Регистратор температуры Raspberry Pi
- Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
- Датчик температуры Python и Raspberry Pi
- 1-проводный датчик температуры DS1820 на Raspberry Pi (напрямую через GPIO)
- Цифровой датчик термометра Raspberry Pi 1-Wire (DS18B20)
- Датчик температуры и освещенности Raspberry Pi
- Датчик температуры Raspberry Pi
- Проект Интернета вещей на основе Raspberry PI Подключение датчика DHT11
- Датчик температуры подшипника | детектор
- Измерение температуры инфракрасным датчиком