Цель : оценить espressif c кодом на основе esp-ide.
жарко очень и влажно тоже
вентилятор нужен похоже.
чтобы точно не простыть
датчик лучше установить
код взят с примера где довольно внятно описывается использование кода и схемы проверки. много чего есть тут = конёк горбунок.
описание схемы и датчика можно найти на просторах интернета.
согласно схеме устанавливаем датчик к плате..
Запускаем уже установленный espressif
выполним карту операции - один пункт
Выполним два пункта.
создадим каталог как указано иже
ФИНИШЬ?
Скачиваем библиотеку компонентов
ниже маршрутная карта и стрелки карта
из скаченного каталога организовать перекачку библиотек датчика))😕🤳)
стрелки указывают путь
Видно что со скаченного архива перетягиваем информацию в проект.
ниже код, который вставить в файл который стрелкой указан выше он уже поправлен по умолчанию
menu "Example configuration"
choice EXAMPLE_SHT3X_DEMO
prompt "Demo mode"
default EXAMPLE_SHT3X_DEMO_HL
help
Choose how to masure values from the sensor. See the main.c for
details.
config EXAMPLE_SHT3X_DEMO_HL
bool "High level"
help
In this example it uses the high level function
sht3x_measure() to perform one measurement in each cycle.
config EXAMPLE_SHT3X_DEMO_LL
bool "Low level"
help
In this example it starts the measurement, waits for the
results and fetches the results using separate functions
endchoice
config EXAMPLE_SHT3X_ADDR
hex "I2C address of SHT3x"
default 0x44
help
I2C address of SHT3x, either 0x44 or 0x45. When ADDR pin is
grounded, choose 0x44. When ADDR pin is pulled up to VDD, choose
0x45.
config EXAMPLE_I2C_MASTER_SCL
int "SCL GPIO Number"
default 5 if IDF_TARGET_ESP8266
default 6 if IDF_TARGET_ESP32C3
default 22 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
default 4 if IDF_TARGET_ESP32H2
help
GPIO number for I2C Master clock line.
config EXAMPLE_I2C_MASTER_SDA
int "SDA GPIO Number"
default 4 if IDF_TARGET_ESP8266
default 5 if IDF_TARGET_ESP32C3
default 21 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
default 3 if IDF_TARGET_ESP32H2
help
GPIO number for I2C Master data line.
endmenu
данный код можно взять с github
Ищем файл mail.c вставляем ниже код указанный. [CTRL-c CTRL-v ]
#include <stdio.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <esp_system.h>
#include <sht3x.h>
#include <string.h>
#include <esp_err.h>
#ifndef APP_CPU_NUM
#define APP_CPU_NUM PRO_CPU_NUM
#endif
static sht3x_t dev;
#if defined(CONFIG_EXAMPLE_SHT3X_DEMO_HL)
void task(void *pvParameters)
{ float temperature;
float humidity;
TickType_t last_wakeup = xTaskGetTickCount();
while (1)
{ // perform one measurement and do something with the results
ESP_ERROR_CHECK(sht3x_measure(&dev, &temperature, &humidity));
printf("SHT3x Sensor: %.2f °C, %.2f %%\n", temperature, humidity);
// wait until 5 seconds are over
vTaskDelayUntil(&last_wakeup, pdMS_TO_TICKS(5000));
}
}
#elif defined(CONFIG_EXAMPLE_SHT3X_DEMO_LL)
void task(void *pvParameters)
{ float temperature;
float humidity;
TickType_t last_wakeup = xTaskGetTickCount();
// get the measurement duration for high repeatability;
uint8_t duration = sht3x_get_measurement_duration(SHT3X_HIGH);
while (1)
{ // Trigger one measurement in single shot mode with high repeatability.
ESP_ERROR_CHECK(sht3x_start_measurement(&dev, SHT3X_SINGLE_SHOT, SHT3X_HIGH));
// Wait until measurement is ready (constant time of at least 30 ms
// or the duration returned from *sht3x_get_measurement_duration*).
vTaskDelay(duration);
// retrieve the values and do something with them
ESP_ERROR_CHECK(sht3x_get_results(&dev, &temperature, &humidity));
printf("SHT3x Sensor: %.2f °C, %.2f %%\n", temperature, humidity);
// wait until 5 seconds are over
vTaskDelayUntil(&last_wakeup, pdMS_TO_TICKS(5000));
}
}
#else // CONFIG_SHT3X_DEMO_PERIODIC
void task(void *pvParameters)
{ float temperature;
float humidity;
esp_err_t res;
// Start periodic measurements with 1 measurement per second.
ESP_ERROR_CHECK(sht3x_start_measurement(&dev, SHT3X_PERIODIC_1MPS, SHT3X_HIGH));
// Wait until first measurement is ready (constant time of at least 30 ms
// or the duration returned from *sht3x_get_measurement_duration*).
vTaskDelay(sht3x_get_measurement_duration(SHT3X_HIGH));
TickType_t last_wakeup = xTaskGetTickCount();
while (1)
{ // Get the values and do something with them.
if ((res = sht3x_get_results(&dev, &temperature, &humidity)) == ESP_OK)
printf("SHT3x Sensor: %.2f °C, %.2f %%\n", temperature, humidity);
else
printf("Could not get results: %d (%s)", res, esp_err_to_name(res));
// Wait until 2 seconds (cycle time) are over.
vTaskDelayUntil(&last_wakeup, pdMS_TO_TICKS(2000));
}
}
#endif
void app_main()
{ ESP_ERROR_CHECK(i2cdev_init());
memset(&dev, 0, sizeof(sht3x_t));
ESP_ERROR_CHECK(sht3x_init_desc(&dev, CONFIG_EXAMPLE_SHT3X_ADDR, 0, CONFIG_EXAMPLE_I2C_MASTER_SDA, CONFIG_EXAMPLE_I2C_MASTER_SCL));
ESP_ERROR_CHECK(sht3x_init(&dev));
xTaskCreatePinnedToCore(task, "sh301x_test", configMINIMAL_STACK_SIZE * 8, NULL, 5, NULL, APP_CPU_NUM);
}
Включим связь с платой esp32. Проверим связь
Ниже выполним операцию 1 и ошибок не должно быть. Кстати появится файл sdkconfig - это главное.
как убедились в правильности сборки и отладки проекта , то надо прошить ЧИП. или отладить файл sdkconfig.
для этого ниже карта операций
После прошивки - пробегут проценты. ниже
Активируем монитор результата .
видим результат подачи на монитор данных.
Итог: Проверили практически результат и проверили годность материала .
Кому интересно можете посетить github САПР ТП. и по АСУ ТП