...или почему надо сначала читать о том, что покупаешь.
Заказал я из Китая очередную посылочку. Вот сегодня приехала, так что робот опять откладывается в сторону... эх, обязательно до него доберусь! На самом деле, приехало кое-что и для робота, модуль вай-фая, например, так что всё по порядку и потихоньку.
Герой дня, DHT-11 |
Однако, сегодня мы подключаем и разбираемся с датчиком температуры и влажности DHT-11. В планах у меня ни много ни мало - улично-балконная метеостанция. В принципе, всё приехало для неё уже... или не всё?
Присмотрел я гигро-термодатчик уже давно, а тут собирал посылку и тоже купил до кучи. Купил, и не посмотрел диапазон его измерений. Датчик и датчик. Датчик же температуры и влажности - меряет температуру и влажность - ясен пень!
Теперь вот читаю параметры и расстраиваюсь. Оказывается, что он комнатный, и измеряет температуру только до нуля градусов. Нет, ну в жарком африканском климате где-нибудь может он и за уличный сойдёт, но у меня-то тут зимой морозы случаются, снежок идёт... Ну, ладно, будем испытывать, что есть.
Колдунство с бубном над библиотеками
Библиотек к датчику оказалась тьма-тьмущая, и ни одна не захотела работать. Не буду вдаваться в описание процесса, но времени ухлопал кучу - весь вечер ушёл. Может вам повезёт больше, мне сегодня не повезло. Не компиллирует, и всё тут. Установил DHT.h - требует Adafruit_Sensor.h! Пришлось найти, скачать и скормить - угомонился, так что даю ссылки на обе.
Да, при этом Адафрут можно не подключать, как выяснилось, и так работает. Но быть она в библиотеках должна!
Подключение
Проверяйте контакты китайских датчиков! Они могут не совпадать с тем, что написано в Интернете, а также со здравой логикой и с тем, как вам казалось, что они должны быть соединены... Вот.
Намаялся я с этим датчиком. Всего-то было контакты прозвонить. Оказалось, что у моего питание - это средний пин, а данные снимать надо с первого (крайний левый).
В результате - потратил кучу нервов и времени.
Вот принципиально не буду схему подключения давать! Сами прозвоните - всего-то три ноги, глядишь и время сэкономите, а не как я...
Текст прошивки
// Скетч управляет работой DHT-11 и выводит данные на компьютер
#include "DHT.h"
#define DHTPIN 12 // Номер пина, к которому подключаем датчик
long time_pass; // Переменная таймера
// Нужно раскомментить строку вашего датчика, у меня DHT-11
// Я оставил это из оригинального скетча, мало ли...
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE); // Указываем параметры работы датчика
//(в скобках № пина и тип датчика)
void setup() {
Serial.begin(9600); // Устанавливаем последовательный порт на 9600 бод
dht.begin(); // Инициируем датчик
time_pass = millis(); // Обнулили таймер
}
void loop() {
float h, t, f; // влажность, температура в Цельсиях и Фаренгейтах
// Если прошло 2 секунды между измерениями
if ((millis() - time_pass) >= 2000)
{
h = dht.readHumidity(); // Читаем влажность
t = dht.readTemperature(); // Читаем температуру в Цельсиях
f = dht.readTemperature(true); // а так - в Фаренгейтах
time_pass = millis(); // Снова обнулили таймер
// Проверяем корректно ли всё прочитано, иначе - выходим
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Ошибка чтения с сенсора!");
return;
}
// Считаем температурный индекс в Фаренгейтах (по умолчанию)
float hif = dht.computeHeatIndex(f, h);
// А так в Цельсиях
float hic = dht.computeHeatIndex(t, h, false);
// Выводим всё на экран
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" % ");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F ");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
}
Вот такая жестокая схема |
Итог
Вот, в принципе, и всё. Тупил я сегодня просто по-страшному, а всё потому что спешил. Но вот, всё работает. В результате получаем лог с кучей данных. Результатом я не очень доволен, кстати. Время измерения 2 секунды. Температура меняется оооочень меееедленно!
Включил: +29. Дома +24, не больше. Ну, ок, думаю, подождём - ничего.
Ладно, подышал на него. О! Влажность подскочила до 95%! Температура +29...
Сунул под лампочку - ты смотри - подскочила до +30!
На балкон понёс, на улице подозреваю, около нуля. Открыл окно, стою проветриваюсь, прохладой так и несёт - начал остывать (в смысле датчик): +25, +24... Я думаю, околею тут, пока ты промёрзнешь. Поставил ноут со всем этим хозяйством на подоконник и пошёл на кухню. Вернулся через несколько минут - "нагрело" до +12... Мда...
Такая вот игрушка. Серьёзно я его не воспринимаю после всего это.
Ладно, барометр у меня ещё лежит тут :) Так что до скорого, как налажу - отпишусь!
Комментариев нет:
Отправить комментарий