Всё меняется вокруг имея не возврата круг,
влажность же бывает странной - то приятной, то отвратной.
как узнать, что есть она ? И когда она нужна?
В той пропорции у вас , обеспечив нужный класс.
класс , что спать возможно? класс , что остудиться нужно?
класс отвратности и пора из дома всем,
Всем? Да)) непрошенным гостям, да и вам прогуляться или на работу смотаться.
Кстати есть и животины, что отвратность просто мила✔
- В общем есть датчики влажности am2302 , DHT11, DHT22, DHT21 и другие 😙. Без них никак?
Так вот кому хихи, но примера в этом плане работающего без "ТАНЦЕВ с БУБЕНЦАМИ" = перерыть и перепробовав много и с учетом разных языком в чистом виде не получил . пришлось делать три захода и с учетом : а может датчик левый , а может СПАЛИЛ, а может ПИТАНИЕ, а может настройки, а может схема не та и не для того , а и можно не просто слиться, а сдохнуть морально. Не знаю как вы, но себе поставил + в уме))). ПРОСТО огромадный😶
В общем для работы нужна организация места и не только для данного случая, а как бы в серьез и с перспективами для себя организовал так , а вообще есть
- ГОСТ Р 56906-2016 Бережливое производство. Есть ГОСТ и по влажности помещений и он в открытом доступе.... Влажность влияет и на хранение, и срок годности, и сохраняемость, износ - это ГОСТ27. Ах , а установка espressif тут.
Материал для этого можно взять тут. Можно в поисковике ИНЕТА набрать "DHT-22 esp-ide", что тоже даст материал для изучения и ПОЗНАНИЯ. 😙
схема как бы примерно такая в зависимости от распиновки ПЛАТЫ esp32.....
Для этого используем✔
- 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]
надо создать файл DHT22.h и ниже
Пункты выполняем ? Копируем туда [код №2 ]
выше видим результат и снова создадим файл
далее вводим имя файла DHT22.c
Выполним три пункта . В DHT22.c водим = копируем [код №1]
вводим изменения далее как ниже указано
На компиляцию и ждём?
ждем?
Три пункта выполним.
на прошивку!!!! И первая прошивка делает obj придётся подождать. Время Зависит от быстродействия ПК и количество загруженных задач в процессоре.
Далее запустим HERCULES?
ПРЕДУПРЕЖДЕНИЕ: начало мусор увидите, а потом синхронизация пройдёт и увидите данные.
Итак по oneWIRE ПОДКЛЮЧИЛИСЬ К DHT22 и выдать показания usb кабелю.
Ниже используем другой чип esp32 s3 но подключаем DHT22 к 4 ноге.
Спонсор ООО АК ПРАВОВОЕ СОТРУДНИЧЕСТВО.
блоки питания от OWEN,ru
ранее спонсор actel.ru - поставка комплектов microsemi