• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь DHT11 - не работает!

ArdMow

New member
Всем добра!

Нужна помощь по 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 = "mypassword";
// веб-сервер на порте 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!
Пробовал все библиотеки. Что делаю не так? Может датчик не рабочий?
 

ArdMow

New member
Итак, добился выводит вот что: humidity=2147483647

и резистор поставьте
У меня модуль там есть резистор. Или еще один нужен?
У чела работает значит и у Вас будет работать если железо исправно.
У меня другое железо (старая версия), у меня ESP8266 NodeMCU V3
 

CodeNameHawk

Moderator
Команда форума
Ну не работает. Куда копать еще?
Для отладки выкинуть все, что связанно с WiFi.
Подать внешнее питание.
Определиться есть ли у вас резистор и какого номинала.
Тестером посмотреть уровни на датчике(просто в программе подайте ноль, потом единицу).
 
Сверху Снизу