Сензорът за температура и влажност DHT17 е популярен и евтин сензор, който може да се използва при доста широк диапазон от температури и относителна влажност. Нека видим как да го свържете с Arduino и как да четете данни от него.
Необходимо
- - Arduino;
- - DHT17 сензор за температура и влажност.
Инструкции
Етап 1
И така, сензорът DHT11 има следните характеристики:
- обхват на измерена относителна влажност - 20..90% с грешка до 5%, - обхват на измерените температури - 0..50 градуса по Целзий с грешка до 2 градуса;
- време за реакция на промени във влажността - до 15 секунди, температура - до 30 секунди;
- минималният период на гласуване е 1 секунда.
Както можете да видите, сензорът DHT11 не е много точен и температурният диапазон не покрива отрицателни стойности, което едва ли е подходящо за измервания на открито през студения сезон в нашия климат. Неговата ниска цена, малки размери и лекота на използване обаче частично компенсират тези недостатъци.
Фигурата показва външния вид на сензора и неговите размери в милиметри.
Стъпка 2
Помислете за схемата на свързване на сензора за температура и влажност DHT11 към микроконтролера, по-специално към Arduino. На изображението:
- MCU - микроконтролер (например Arduino или подобен) или едноплатен компютър (Raspberry Pi или подобен);
- DHT11 - сензор за температура и влажност;
- ДАННИ - шина за данни; ако дължината на свързващия кабел от сензора към микроконтролера не надвишава 20 метра, препоръчва се тази шина да се изтегли към захранването с резистор 5, 1 kOhm; ако повече от 20 метра, тогава друга подходяща стойност (по-малка).
- VDD - захранване на сензора; допустими напрежения от ~ 3.0 до ~ 5.5 волта DC; ако се използва захранване ~ 3.3 V, препоръчително е да се използва захранващ проводник не по-дълъг от 20 cm.
Един от сензорните проводници - третият - не е свързан с нищо.
Сензорът DHT11 често се продава като цялостен комплект с необходимите тръбопроводи - изтеглящ резистор и кондензатор на филтъра.
Стъпка 3
Нека съставим разглежданата схема. Също така ще свържа логически анализатор към веригата, за да мога да проуча времевата диаграма на комуникацията със сензора.
Стъпка 4
Нека отидем по простия начин: изтеглете библиотеката за сензора DHT11 (връзка в раздела "Източници"), инсталирайте я по стандартния начин (разопаковайте я в директорията / libraries / на средата за разработка на Arduino).
Нека напишем такава проста скица. Нека го заредим в Arduino. Тази скица ще изведе съобщенията RH и Temperature, прочетени от сензора DHT11 към серийния порт на компютъра на всеки 2 секунди.
Стъпка 5
Сега, използвайки времевата диаграма, получена от логическия анализатор, нека разберем как се извършва обменът на информация.
DHT11 сензорът за температура и влажност използва едножилен сериен интерфейс за комуникация с микроконтролера. Един обмен на данни отнема около 40 ms и съдържа: 1 бит за заявка от микроконтролера, 1 бит от реакцията на сензора и 40 бита за данни от сензора. Данните включват: 16 бита информация за влажност, 26 бита информация за температура и 8 контролни бита.
Нека разгледаме по-отблизо времевата диаграма на комуникацията на Arduino със сензора DHT11.
От фигурата се вижда, че има два вида импулси: къси и дълги. Късите импулси в този протокол за обмен означават нули, а дългите импулси - единици.
И така, първите два импулса са заявката на Arduino към DHT11 и съответно реакцията на сензора. Следва 16 бита влажност. Освен това те са разделени на байтове, високи и ниски, високо вляво. Тоест, на нашата фигура данните за влагата са както следва:
0001000000000000 = 00000000 00010000 = 0x10 = 16% относителна влажност.
Данни за температурата, подобни на:
0001011100000000 = 00000000 00010111 = 0x17 = 23 градуса по Целзий.
Контролни битове - контролната сума е само сумирането на 4 получени байта данни:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 в двоично или 16 + 23 = 39 в десетично.