Найти тему

DHT22 в умный дом без АРДУИНО

Всё меняется вокруг имея не возврата круг,

влажность же бывает странной - то приятной, то отвратной.

как узнать, что есть она ? И когда она нужна?

В той пропорции у вас , обеспечив нужный класс.

класс , что спать возможно? класс , что остудиться нужно?

класс отвратности и пора из дома всем,

Всем? Да)) непрошенным гостям, да и вам прогуляться или на работу смотаться.

Кстати есть и животины, что отвратность просто мила✔

  • В общем есть датчики влажности am2302 , DHT11, DHT22, DHT21 и другие 😙. Без них никак?

Так вот кому хихи, но примера в этом плане работающего без "ТАНЦЕВ с БУБЕНЦАМИ" = перерыть и перепробовав много и с учетом разных языком в чистом виде не получил . пришлось делать три захода и с учетом : а может датчик левый , а может СПАЛИЛ, а может ПИТАНИЕ, а может настройки, а может схема не та и не для того , а и можно не просто слиться, а сдохнуть морально. Не знаю как вы, но себе поставил + в уме))). ПРОСТО огромадный😶

В общем для работы нужна организация места и не только для данного случая, а как бы в серьез и с перспективами для себя организовал так , а вообще есть

  • ГОСТ Р 56906-2016 Бережливое производство. Есть ГОСТ и по влажности помещений и он в открытом доступе.... Влажность влияет и на хранение, и срок годности, и сохраняемость, износ - это ГОСТ27. Ах , а установка espressif тут.

Материал для этого можно взять тут. Можно в поисковике ИНЕТА набрать "DHT-22 esp-ide", что тоже даст материал для изучения и ПОЗНАНИЯ. 😙

схема как бы примерно такая в зависимости от распиновки ПЛАТЫ esp32.....

В27  распиновка
В27 распиновка

Для этого используем✔

  • esp32 s nodemcu v1.3 (150<цена<800 яндекс маркет) или подобный
  • espressif v3.00 .... v5.22 (0<цена<0 espressif.com)
  • ПК ddr3 8 /128 2.5Ггц. (5т<цена<10т ) tehnosell.ru
  • Advanced IP Scanner (0< <0) на просторах интернета, можно другой аналог.
  • Hercules (0< <0) на просторах интернет скачать, а можно другой аналог.
  • DHT22 module (150<цена<800 яндекс маркет) или подобный
  • Кабель для прошивки usb-microusb или usb-type c , а лучше оба🙄
В модуле есть подтягивающий резистор, что упрощает монтаж .
В модуле есть подтягивающий резистор, что упрощает монтаж .

Исходный [код №1] для файла DHT22.c (уже исправленный на 240624)

Прим: исправления с комментариями ///замена выше неудачного
на основе информации взятой
тут и тут

#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
#include <stdio.h>
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "driver/gpio.h"
#include "DHT22.h"
// == global defines =======
static const char* TAG = "DHT";
int DHTgpio = 4;// my default DHT pin = 4
float humidity = 0.;
float temperature = 0.;
// == set the DHT used pin====
void setDHTgpio( int gpio )
{ DHTgpio = gpio;}
// == get temp & hum =======
float getHumidity() { return humidity; }
float getTemperature() { return temperature; }
// == error handler ==========================
void errorHandler(int response)
{switch(response) {
case DHT_TIMEOUT_ERROR :
ESP_LOGE( TAG, "Sensor Timeout\n" ); break;
case DHT_CHECKSUM_ERROR:
ESP_LOGE( TAG, "CheckSum error\n" );break;
case DHT_OK:break;
default : ESP_LOGE( TAG, "Unknown error\n" );
}
}/////////
int getSignalLevel( int usTimeOut, bool state )
{ int uSec = 0;
while( gpio_get_level(DHTgpio)==state )
{ if( uSec > usTimeOut ) return -1; ++uSec;
//ets_delay_us(1); // uSec delay
// vTaskDelay(1/portTICK_PERIOD_MS);
esp_rom_delay_us(1); //замена на выше неудачное
} return uSec;
}////////////////////////
#define MAXdhtData 5 // to complete 40 = 5*8 Bits
int readDHT()
{ int uSec = 0; uint8_t dhtData[MAXdhtData];
uint8_t byteInx = 0; uint8_t bitInx = 7;
for (int k = 0; k<MAXdhtData; k++)
dhtData[k] = 0;
// == Send start signal to DHT sensor ===========
gpio_set_direction( DHTgpio, GPIO_MODE_OUTPUT );
// pull down for 3 ms for a smooth and nice wake up
gpio_set_level( DHTgpio, 0 );
//ets_delay_us( 3000 );
//vTaskDelay (3000/portTICK_PERIOD_MS);
esp_rom_delay_us(3000); ///замена выше неудачного
// pull up for 25 us for a gentile asking for data
gpio_set_level( DHTgpio, 1 );
//ets_delay_us( 25 );
//vTaskDelay(25/portTICK_PERIOD_MS);
esp_rom_delay_us(25); ///замена выше неудачного
gpio_set_direction( DHTgpio, GPIO_MODE_INPUT );
// == DHT will keep the line low for 80 us and then high for 80us ====
uSec = getSignalLevel( 85, 0 );
// ESP_LOGI( TAG, "Response = %d", uSec );
if( uSec<0 ) return DHT_TIMEOUT_ERROR;
// -- 80us up ------------------------
uSec = getSignalLevel( 85, 1 );
// ESP_LOGI( TAG, "Response = %d", uSec );
if( uSec<0 ) return DHT_TIMEOUT_ERROR;
// == No errors, read the 40 data bits ================
for( int k = 0; k < 40; k++ )
{ uSec = getSignalLevel( 56, 0 );
if( uSec<0 ) return DHT_TIMEOUT_ERROR;
uSec = getSignalLevel( 75, 1 );
if( uSec<0 ) return DHT_TIMEOUT_ERROR;
if (uSec > 40) {dhtData[ byteInx ] |= (1 << bitInx);}
if (bitInx == 0) { bitInx = 7; ++byteInx; }
else bitInx--;
}
humidity = dhtData[0]; humidity *= 0x100;
humidity += dhtData[1]; humidity /= 10;
temperature = dhtData[2] & 0x7F;
temperature *= 0x100; temperature += dhtData[3];
temperature /= 10;
if( dhtData[2] & 0x80 ) temperature *= -1;
if (dhtData[4] == ((dhtData[0] + dhtData[1] + dhtData[2] + dhtData[3]) & 0xFF))
return DHT_OK; else return DHT_CHECKSUM_ERROR;
}//////////////////////////

Исходный [код №2] для файла DHT22.h (уже исправленный на 240624)

ПРИМ :исправления с комментариями ///замена выше неудачного на основе информации взятой тут и тут

#ifndef DHT22_H_
#define DHT22_H_
#define DHT_OK 0
#define DHT_CHECKSUM_ERROR -1
#define DHT_TIMEOUT_ERROR -2
// == function prototypes =====================
void setDHTgpio(int gpio);
void errorHandler(int response);
int readDHT();
float getHumidity();
float getTemperature();
int getSignalLevel( int usTimeOut, bool state );
#endif

Исходный [код №3] для файла mail.c (уже исправленный на 240624)

ПРИМ :исправления с комментариями ///замена выше неудачного на основе информации взятой тут и тут

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "rom/ets_sys.h"
#include "nvs_flash.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include "DHT22.h"
#include "soc/gpio_num.h" ////нннннн////работает
void DHT_reader_task(void *pvParameter)
{ setDHTgpio(GPIO_NUM_27);
//ets_update_cpu_frequency_rom(ets_get_detected_xtal_freq() / 1000000);
while(1)
{ printf("DHT Sensor Readings\n" );
int ret = readDHT();
errorHandler(ret);
printf("Humidity %.2f %%\n", getHumidity());
printf("Temperature %.2f degC\n\n", getTemperature());
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}//////////////////////////////////
void app_main()
{ nvs_flash_init();
vTaskDelay(2000 / portTICK_PERIOD_MS);
xTaskCreate(&DHT_reader_task, "DHT_reader_task", 2048, NULL, 5, NULL );
}
  • Итак у нас всё есть и схема собрана и подключён кабель для прошивки программы.
пункта три
пункта три

запустим espressif?

надо создать проект
надо создать проект

Создадим проект ))) копируем в mail.c [код №3]

код N3 вносим в  mail.c
код N3 вносим в mail.c

надо создать файл DHT22.h и ниже

правой кнопой мыши на папке main
правой кнопой мыши на папке main
создадим файл DHT22.h
создадим файл DHT22.h

Пункты выполняем ? Копируем туда [код №2 ]

стрелки указывают на куда надо обратить внимание
стрелки указывают на куда надо обратить внимание

выше видим результат и снова создадим файл

правой кнопой мыши на папке main
правой кнопой мыши на папке main

далее вводим имя файла DHT22.c

стрелки указывают на что обратить внимание
стрелки указывают на что обратить внимание

Выполним три пункта . В DHT22.c водим = копируем [код №1]

как скопировали , и  крутанули mаcеfile то   согласно стрелке
как скопировали , и крутанули mаcеfile то согласно стрелке

вводим изменения далее как ниже указано

если изменили то компиляция
если изменили то компиляция

На компиляцию и ждём?

вроде так
вроде так

ждем?

проверка связи.
проверка связи.

Три пункта выполним.

прошивка.
прошивка.

на прошивку!!!! И первая прошивка делает obj придётся подождать. Время Зависит от быстродействия ПК и количество загруженных задач в процессоре.

Далее запустим HERCULES?

стрелки всё показывают.
стрелки всё показывают.

ПРЕДУПРЕЖДЕНИЕ: начало мусор увидите, а потом синхронизация пройдёт и увидите данные.

Итак по oneWIRE ПОДКЛЮЧИЛИСЬ К DHT22 и выдать показания usb кабелю.

Ниже используем другой чип esp32 s3 но подключаем DHT22 к 4 ноге.

как бы вкупе показали.
как бы вкупе показали.

Спонсор ООО АК ПРАВОВОЕ СОТРУДНИЧЕСТВО.

блоки питания от OWEN,ru

ранее спонсор actel.ru - поставка комплектов microsemi