Официальный сайт компании Arduino по адресу arduino.cc
DHT11 - не работает!
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 18/06/2018 - 13:43
Всем добра!
Нужна помощь по DHT11.
DHT11 мать его - не работает!
Подключаю к ESP8266 NodeMCU V3:
- минус к GND
- плюс VV (выход 5V)
- данные к D7
Скетч:
/********* Руи Сантос (Rui Santos) Более подробно о проекте на: http://randomnerdtutorials.com *********/ // подключаем библиотеку «ESP8266WiFi»: #include <ESP8266WiFi.h> #include <DHT.h> // оставляем раскомментированной строчку, // соответствующую модели вашего датчика: #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT21 // DHT 21 (AM2301) //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 // вписываем здесь данные для своей WiFi-сети: const char* ssid = "TP-LINK"; const char* password = "mypass"; // веб-сервер на порте 80: WiFiServer server(80); // датчик DHT: const int DHTPin = 13; // инициализируем датчик DHT: DHT dht(DHTPin, DHTTYPE); // временные переменные: static char celsiusTemp[7]; static char fahrenheitTemp[7]; static char humidityTemp[7]; // этот блок будет запускаться только при загрузке ESP: void setup() { // инициализируем последовательный порт (в отладочных целях): Serial.begin(115200); delay(10); dht.begin(); // подключаемся к WiFi-сети: Serial.println(); Serial.print("Connecting to "); // "Подключаемся к " Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // "Подключение к WiFi выполнено" // запускаем веб-сервер: server.begin(); Serial.println("Web server running. Waiting for the ESP IP..."); // "Веб-сервер запущен. Ждем IP-адрес ESP..." delay(5000); // печатаем IP-адрес ESP: Serial.println(WiFi.localIP()); } // этот блок будет запускаться снова и снова: void loop() { // начинаем прослушку новых клиентов: WiFiClient client = server.available(); if (client) { Serial.println("New client"); // "Новый клиент" // создаем переменную типа «boolean», // чтобы определить конец HTTP-запроса: boolean blank_line = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (c == '\n' && blank_line) { // данные от датчика могут запаздывать на 2 секунды // (это очень медленный датчик): float h = dht.readHumidity(); // считываем температуру в Цельсиях (по умолчанию): float t = dht.readTemperature(); // считываем температуру в Фаренгейтах // (isFahrenheit = true): float f = dht.readTemperature(true); // проверяем, корректны ли считанные данные, // и если нет, то выходим и начинаем заново: if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); // "Не удалось прочитать // данные от датчика DHT" strcpy(celsiusTemp,"Failed"); strcpy(fahrenheitTemp, "Failed"); strcpy(humidityTemp, "Failed"); } else{ // рассчитываем градусы в Цельсиях и Фаренгейтах, // а также влажность: float hic = dht.computeHeatIndex(t, h, false); dtostrf(hic, 6, 2, celsiusTemp); float hif = dht.computeHeatIndex(f, h); dtostrf(hif, 6, 2, fahrenheitTemp); dtostrf(h, 6, 2, humidityTemp); // все эти Serial.print() ниже можно удалить, // т.к. они для отладочных целей: Serial.print("Humidity: "); // "Влажность: " Serial.print(h); Serial.print(" %\t Temperature: "); // "Температура: " Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t Heat index: "); // "Тепловой индекс: " Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.print(" *F"); Serial.print("Humidity: "); // "Влажность: " Serial.print(h); Serial.print(" %\t Temperature: "); // "Температура: " Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t Heat index: "); // "Тепловой индекс: " Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); // веб-страница, отображающая температуру и влажность: client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head></head><body><h1>ESP8266 - Temperature and Humidity</h1><h3>Temperature in Celsius: "); client.println(celsiusTemp); client.println("*C</h3><h3>Temperature in Fahrenheit: "); client.println(fahrenheitTemp); client.println("*F</h3><h3>Humidity: "); client.println(humidityTemp); client.println("%</h3><h3>"); client.println("</body></html>"); break; } if (c == '\n') { // если обнаружен переход на новую строку: blank_line = true; } else if (c != '\r') { // если в текущей строчке найден символ: blank_line = false; } } } // закрываем соединение с клиентом: delay(1); client.stop(); Serial.println("Client disconnected."); // "Клиент отключен." } }
Вываливает это: Failed to read from DHT sensor!
Пробовал все бибилиотеки. Что делаю не так? Может датчик не рабочий?
резистор между vcc и выходом датчика поставили?
Нет. Это модуль уже с резистором. Или еще один нужен?
Подключите к обычной ардуине и узнаете - рабочий он или нет. Возможно, что библиотеки DHT-шки для ESP не рихтованы.
Интересно, с какой же частотой он читается?
Обычной нет, увы.
Еще варианты?
ардуинщики пошли....ардуины у них нет...
У меня только одна из трёх библиотек заработала в связке DTH & ESP. И пин пришлось подбирать. С любым не работало. Сейчас это
#define DHTPIN 2 равно GPIO4
У меня только одна из трёх библиотек заработала в связке DTH & ESP. И пин пришлось подбирать. С любым не работало. Сейчас это
#define DHTPIN 2 равно GPIO4
Какая именно заработала?
У тебя ESP8266 Nodemcu ?
Не помню. Скачивал с github по одной пока не заработало. Да именно Nodemcu. Уже полгода через blynk пишет параметры квартиры.
Не помню. Скачивал с github по одной пока не заработало. Да именно Nodemcu. Уже полгода через blynk пишет параметры квартиры.
Посмотри пожалуйста. Очень прошу. Задолбался бороться с этой бедой...
Не помню. Но в ридми той,которая стоит в library написано: You must have the following Arduino libraries installed to use this class:
В файле library.properties должно быть ейное имя и версия
Спасибо, но
А у меня esp с dht11 показывает Temperature = nan *C, humidity = nan
вот теперь голову ломаю как нормальное число получить.
Забей. DHT11 годится лишь на то, чтобы стать звездой памойки.
DHT22 брать сразу?, у людей как-то работает 11й
DHT22 брать сразу?, у людей как-то работает 11й
в том то и дело, что работает "как то". Вернее, делает вид, что работает. Температуре, в пределах +- 2 градуса верить еще можно (хотя я бы не стал), а с влажностью - полная беда.
DHT22 брать сразу?, у людей как-то работает 11й
Не далее как неделю назад по скайпу позвонил товарищ и говорит: твой код - говно, и не работает с DHT (заявлена поддержка DHT1* и DHT2*). Как так, говорю - работало ведь?
Короче: из трёх DHT22 два - в помойку, показывают для влажности всегда 100%. Касаешься кондёра на платке датчика - начинает чего-то там бормотать по-басурмански. Третий - завёлся, но с такими вводными - доверия ему нет, как завещал Борман.
Выпилил бы нахер поддержку DHT, да люди пользуются.
Вот такой вот толстый намёк.
Забавная история, а у меня на малине3 завелся таки DHT11
еще хотел спросить какой же датчик надежней брать, если 11 и 22 нет доверия?
Отпишите меня от этой темы. Везде нажал отписаться все равно приходит.
Отписывайся пока приходят сообщения (на ссылки тыкай). Через несколько попыток все нормализуется. И галку не ставь под камментом.