From a65af5e141d09fb382111aa1555139d0413c3764 Mon Sep 17 00:00:00 2001 From: Sven Luethi Date: Sat, 17 Aug 2024 21:05:18 +0200 Subject: [PATCH] modified: firmware/main/src/leds.c Include internal LED in sequence modified: firmware/main/src/sht31.c Swap pins to new design, send heater-off command on init, change to i2c address 0x44 from 0x45 acording to new design modified: firmware/sdkconfig Activate RTOS control over sleep mode --- firmware/main/src/leds.c | 25 ++++++++++++++++++------- firmware/main/src/sht31.c | 30 ++++++++++++++++++++++++------ firmware/sdkconfig | 2 +- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/firmware/main/src/leds.c b/firmware/main/src/leds.c index a1805cf..c17c25a 100644 --- a/firmware/main/src/leds.c +++ b/firmware/main/src/leds.c @@ -15,20 +15,20 @@ void led_blink_task(void *pvParameter) led_init(); while (1) { - //gpio_set_level(LED_INT, 1); - ESP_LOGI(TAG, "Blink LEDs..."); + //ESP_LOGI(TAG, "Blink LEDs..."); // Blink the LEDs gpio_set_level(LED1, 0); gpio_set_level(LED2, 0); - vTaskDelay(850 / portTICK_PERIOD_MS); + gpio_set_level(LED_INT, 1); + vTaskDelay(800 / portTICK_PERIOD_MS); gpio_set_level(LED1, 1); - gpio_set_level(LED2, 0); vTaskDelay(50 / portTICK_PERIOD_MS); - gpio_set_level(LED1, 1); gpio_set_level(LED2, 1); vTaskDelay(50 / portTICK_PERIOD_MS); gpio_set_level(LED1, 0); - gpio_set_level(LED2, 1); + gpio_set_level(LED_INT, 0); + vTaskDelay(50 / portTICK_PERIOD_MS); + gpio_set_level(LED2, 0); vTaskDelay(50 / portTICK_PERIOD_MS); } } @@ -36,7 +36,7 @@ void led_blink_task(void *pvParameter) esp_err_t led_init() { gpio_set_direction(LED1,GPIO_MODE_OUTPUT); gpio_set_direction(LED2,GPIO_MODE_OUTPUT); - //gpio_set_direction(LED_INT,GPIO_MODE_OUTPUT); + gpio_set_direction(LED_INT,GPIO_MODE_OUTPUT); return ESP_OK; } @@ -50,6 +50,12 @@ void led2_on() { ESP_LOGI(TAG, "LED 2 turned on"); } +void led3_on() { + gpio_set_level(LED_INT, 0); + ESP_LOGI(TAG, "LED 3 turned on"); +} + + void led1_off() { @@ -63,5 +69,10 @@ void led2_off() ESP_LOGI(TAG, "LED 2 turned off"); } +void led3_off() +{ + gpio_set_level(LED_INT, 1); + ESP_LOGI(TAG, "LED 3 turned off"); +} diff --git a/firmware/main/src/sht31.c b/firmware/main/src/sht31.c index d76ddad..b51b59e 100644 --- a/firmware/main/src/sht31.c +++ b/firmware/main/src/sht31.c @@ -6,10 +6,11 @@ #include "functions.h" #include "sht31.h" -#define SDA_PIN GPIO_NUM_2 -#define CLK_PIN GPIO_NUM_14 -#define SENSOR_ADDR 0x45 //default address is 0x44 (pin 2 logic low). We chose 0x45 with logic high in v0.9 and 0x44 with newer versions where second sensor is removed. +#define SDA_PIN GPIO_NUM_14 +#define CLK_PIN GPIO_NUM_13 +#define SENSOR_ADDR 0x44 //default address is 0x44 (pin 2 logic low). We chose 0x45 with logic high in v0.9 and 0x44 with newer versions where second sensor is removed. #define SHT31_MEASURE_CMD_HIGHREP 0x2400 +#define SHT31_HEATER_OFF_CMD 0x3066 static const char * TAG = "sht31.c"; @@ -18,8 +19,8 @@ static const char * TAG = "sht31.c"; static const i2c_config_t config = { .mode = I2C_MODE_MASTER, - .sda_io_num = GPIO_NUM_2, - .scl_io_num = GPIO_NUM_14, + .sda_io_num = SDA_PIN, + .scl_io_num = CLK_PIN, .sda_pullup_en = GPIO_PULLUP_DISABLE, .scl_pullup_en = GPIO_PULLUP_DISABLE, .clk_stretch_tick = 5 @@ -42,7 +43,7 @@ void sht31_sensor_test_task(void *pvParameters) } else { ESP_LOGE(TAG, "Failed to read from SHT31 sensor"); } - vTaskDelay(2000 / portTICK_RATE_MS); + vTaskDelay(30000 / portTICK_RATE_MS); } } @@ -54,6 +55,23 @@ esp_err_t sht31_init(void) { printf("Sensor initialization failed!\n"); return ESP_FAIL; } + + // Send the heater off command + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, (SENSOR_ADDR << 1) | I2C_MASTER_WRITE, true); + i2c_master_write_byte(cmd, SHT31_HEATER_OFF_CMD >> 8, true); + i2c_master_write_byte(cmd, SHT31_HEATER_OFF_CMD & 0xFF, true); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to send command to SHT31"); + return ret; + } + + + printf("Sensor initialized.\n"); return ESP_OK; } diff --git a/firmware/sdkconfig b/firmware/sdkconfig index 27cd472..58b92e7 100644 --- a/firmware/sdkconfig +++ b/firmware/sdkconfig @@ -238,7 +238,7 @@ CONFIG_FREERTOS_GLOBAL_DATA_LINK_IRAM=y CONFIG_FREERTOS_TIMER_STACKSIZE=2048 CONFIG_TASK_SWITCH_FASTER=y # CONFIG_USE_QUEUE_SETS is not set -# CONFIG_ENABLE_FREERTOS_SLEEP is not set +CONFIG_ENABLE_FREERTOS_SLEEP=y # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y