Датчик Arduino Uno DHT11 Не удалось прочитать данные с датчика DHT

Я получаю эту ошибку каждый раз. Я использовал файл тестера DHT из этой библиотеки. Который выдает мне ошибку.

И тут я понял, что в моем коде Arduino распознает только функцию readTemperature, а не readHumidity, но не выдает никаких ошибок компиляции. Кроме того, когда я считываю показания датчика, вот такой вывод:

Тест датчика влажности
Температура: 0C, Влажность: 0%
Температура: 0C, Влажность: 0%
Температура: 0C, Влажность: 0%

Мой код здесь:

//Датчик DHT11:
#include "DHT.h"
#define DHTPIN 5 // к какому цифровому выводу мы подключены
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

//ЖК-дисплей I2C:
#include <Wire.h> // Поставляется с Arduino IDE
#include <LiquidCrystal_I2C.h>

// Установите адрес I2C ЖК-дисплея
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 

void setup() {
  Serial.begin(9600);
  delay(300);
  lcd.begin(16,2);
  Serial.println("Humidity Sensor Test");
  dht.begin();
  delay(300);
}

void loop() {
  // Измерение температуры или влажности занимает около 250 миллисекунд!
  // Показания датчика также могут быть «старыми» до 2 секунд (это очень медленный датчик)
  int h = dht.readHumidity();
  int t = dht.readTemperature();

  // устанавливаем курсор на (0,0):
  lcd.setCursor(0, 0);
  // распечатать от 0 до 9:

  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print("C");

  // устанавливаем курсор на (16,1):
  lcd.setCursor(0,1);
  lcd.print("Humidity: ");
  lcd.print(h);
  lcd.print("%");

  Serial.print("Temp: ");
  Serial.print(t);
  Serial.print("C, Humidity: ");
  Serial.print(h);
  Serial.println("%");
  delay(2500);
}

Также у меня есть резистор 10k между контактами данных и Vcc. Данные подключены к цифровому контакту 5. У кого-нибудь была такая проблема раньше?

, 👍1


1 ответ


1

Существует несколько версий библиотеки DHT11 для Arduino. Вот та, которая сработала у меня: https://github.com/adidax/dht11. Вот простой скетч для проверки датчика с выводом на последовательный монитор.

// На линии данных используется подтягивающий резистор сопротивлением 5 кОм.
// Датчик работает при напряжении 5 В постоянного тока.
// Линия данных подключается к контакту 3 Arduino Uno.

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 3

// Калибровка датчика. Начните с 0 для каждого.
const int HumidityCorrection = -10;          // -10 сработало с моим датчиком.
const int CelsiusTemperatureCorrection = 2;  // 2 сработало с моим датчиком.

const float FahrenheitTemperatureCorrection = CelsiusTemperatureCorrection * 1.8;

// Обновлять последовательный дисплей каждые 60 секунд.
const float UpdateSerialDisplay = 60000;

// Перевод градусов Цельсия в градусы Фаренгейта.
double Fahrenheit(double celsius){
  return 1.8 * celsius + 32;
}

void setup(){
  Serial.begin(9600);
  // Минимальное рекомендуемое время ожидания для получения качественных данных — 1 секунда.
  delay(2000);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
}

void loop(){
  Serial.println("");
  int chk = DHT11.read(DHT11PIN);
  switch(chk){
    case DHTLIB_OK: 
      //Serial.println("ОК");
      break;
    case DHTLIB_ERROR_CHECKSUM: 
      Serial.println("Read sensor: Checksum error"); 
      break;
    case DHTLIB_ERROR_TIMEOUT: 
      Serial.println("Read sensor: Time out error"); 
      break;
    default: 
      Serial.println("Read sensor: Unknown error"); 
      break;
  }

  Serial.print("Humidity: ");
  Serial.print("\t");
  Serial.print(DHT11.humidity + HumidityCorrection);
  Serial.println(" %");

  Serial.print("Temperature: ");
  Serial.print("\t");
  Serial.print(DHT11.temperature + CelsiusTemperatureCorrection);
  Serial.println(" C");

  Serial.print("Temperature: ");
  Serial.print("\t");
  Serial.print(round(Fahrenheit(DHT11.temperature) + FahrenheitTemperatureCorrection));
  Serial.println(" F");

  delay(UpdateSerialDisplay);
}

Как только вы заработаете, вы сможете добавить к нему код ЖК-дисплея. Вот ссылка на руководство/паспорт датчика влажности и температуры DHT 11: http://www.micropik.com/PDF/dht11.pdf

,