Добрый день! Подскажите, в чем ошибка. Датчик DHT22 соединила с выводом питания «3V3», «-» с «GND», а «OUT» с одним из входов - D1 или GPIO 5 - выдает ошибку, если интервал между считыванием меньше, то мусорные значения
Прилагаю скетч:
// импортируем библиотеку поддержки ESP8266
#include <ESP8266WiFi.h>
#include <DHT.h>
#define DHTPIN 5
#define DHTTYPE DHT22
//Параметры сети WiFi
const char* ssid = "sima";
const char* password = "11111111";
float temperature;
float humidity;
//объявление объекта DHT
DHT dht (DHTPIN, DHTTYPE);
void setup(void) {
// Инициализация порта:
Serial.begin(115200);
dht.begin();
// Инициализация WiFi:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("hm");
}
Serial.println("");
Serial.println("WiFi connected");
//Вывод IP платы в терминал
Serial.println(WiFi.localIP());
}
void loop() {
delay(500);
// put your main code here, to run repeatedly:
humidity = dht.readHumidity();
delay (2000);
temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)){
Serial.println();
return;
}
Serial.print("Влажность: ");
Serial.print(humidity);
Serial.println(" %\t ");
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" *С ");
}
Буду очень благодарна за помощь!
Серафима:
выдает ошибку
раз ошибка секретная, то теперь только гадать на картах Таро.
К вай фаю подключается, ip адрес выдает, а далее:
Read fail
Влажность: 6553.50 %
Температура: -3276.70 *С
Read fail
Надеюсь, подтяжка к плюсу в схеме есть.
В моем датчике DHT22 предусмотрен резистор
ua6em
09.Декабрь.2024 08:49:05
7
а если на другой пин подключить?
Не происходит никаких изменений, все та же ошибка
ua6em
09.Декабрь.2024 10:15:11
9
проверить распиновку
static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1;
ua6em
09.Декабрь.2024 10:19:42
11
тут как бы особенностей нет или не к тому пину подключено или датчик неисправен, у меня таких датчиков неисправных не было
из примера:
// DHT Temperature & Humidity Sensor
// Unified Sensor Library Example
// Written by Tony DiCola for Adafruit Industries
// Released under an MIT license.
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.
// Uncomment the type of sensor in use:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// See guide for details on sensor wiring and usage:
// https://learn.adafruit.com/dht/overview
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(9600);
// Initialize device.
dht.begin();
Serial.println(F("DHTxx Unified Sensor Example"));
// Print temperature sensor details.
sensor_t sensor;
dht.temperature().getSensor(&sensor);
Serial.println(F("------------------------------------"));
Serial.println(F("Temperature Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
Serial.println(F("------------------------------------"));
// Print humidity sensor details.
dht.humidity().getSensor(&sensor);
Serial.println(F("Humidity Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("%"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("%"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("%"));
Serial.println(F("------------------------------------"));
// Set delay between sensor readings based on sensor details.
delayMS = sensor.min_delay / 1000;
}
void loop() {
// Delay between measurements.
delay(delayMS);
// Get temperature event and print its value.
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Error reading temperature!"));
}
else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
}
// Get humidity event and print its value.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println(F("Error reading humidity!"));
}
else {
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
}
}
Попробуйте всё же в стр. 53 задержку 3 сек.
стр.58 можно убрать
Заменила датчик на другой, задержки меняла, и все равно не считывает. На ардуино UNO датчики исправно работают
ua6em
10.Декабрь.2024 11:59:25
14
значит неправильно подключено что-то, фото приложите
ua6em
10.Декабрь.2024 13:12:36
16
фото макетки где датчик, расфокусировано, чётко, крупным планом, с проводами
1 лайк
ua6em
10.Декабрь.2024 13:20:51
18
проверь питание на датчике
Отправила показания через ардуино на lcd, все верно показывает, питание также осуществлялось ESP
А библиотека какая используется? Она точно на ESP умеет работать?
@ua6em привёл пример из библиотеки от Adafruit. Попробуйте её, если у Вас другая.
1 лайк