diff --git a/firmware/main/include/leds.h b/firmware/main/include/leds.h index f8a581f..4b92871 100644 --- a/firmware/main/include/leds.h +++ b/firmware/main/include/leds.h @@ -7,8 +7,12 @@ extern "C" { void led_blink_task(void *pvParameter); esp_err_t led_init(); + +void led0_toggle(); +void led0_on(); void led1_on(); void led2_on(); +void led0_off(); void led1_off(); void led2_off(); diff --git a/firmware/main/include/wifi.h b/firmware/main/include/wifi.h index 64dc099..dcdbfeb 100644 --- a/firmware/main/include/wifi.h +++ b/firmware/main/include/wifi.h @@ -7,6 +7,7 @@ extern "C" { #endif esp_err_t wifi_init(void); +esp_err_t wifi_sleep(); #ifdef __cplusplus } diff --git a/firmware/main/src/leds.c b/firmware/main/src/leds.c index c17c25a..50f0e1d 100644 --- a/firmware/main/src/leds.c +++ b/firmware/main/src/leds.c @@ -19,14 +19,14 @@ void led_blink_task(void *pvParameter) // Blink the LEDs gpio_set_level(LED1, 0); gpio_set_level(LED2, 0); - gpio_set_level(LED_INT, 1); + //gpio_set_level(LED_INT, 1); vTaskDelay(800 / portTICK_PERIOD_MS); gpio_set_level(LED1, 1); vTaskDelay(50 / portTICK_PERIOD_MS); gpio_set_level(LED2, 1); vTaskDelay(50 / portTICK_PERIOD_MS); gpio_set_level(LED1, 0); - gpio_set_level(LED_INT, 0); + //gpio_set_level(LED_INT, 0); vTaskDelay(50 / portTICK_PERIOD_MS); gpio_set_level(LED2, 0); vTaskDelay(50 / portTICK_PERIOD_MS); @@ -40,39 +40,45 @@ esp_err_t led_init() { return ESP_OK; } + + +void led0_toggle() { + gpio_set_level(LED_INT, gpio_get_level(LED_INT)); + //ESP_LOGI(TAG, "LED 3 turned on"); +} + +void led0_on() { + gpio_set_level(LED_INT, 0); + //ESP_LOGI(TAG, "LED 3 turned on"); +} + void led1_on() { gpio_set_level(LED1, 1); - ESP_LOGI(TAG, "LED 1 turned on"); + //ESP_LOGI(TAG, "LED 1 turned on"); } void led2_on() { gpio_set_level(LED2, 1); - ESP_LOGI(TAG, "LED 2 turned on"); -} - -void led3_on() { - gpio_set_level(LED_INT, 0); - ESP_LOGI(TAG, "LED 3 turned on"); + //ESP_LOGI(TAG, "LED 2 turned on"); } +void led0_off() +{ + gpio_set_level(LED_INT, 1); + //ESP_LOGI(TAG, "LED 3 turned off"); +} + void led1_off() { gpio_set_level(LED1, 0); - ESP_LOGI(TAG, "LED 1 turned off"); + //ESP_LOGI(TAG, "LED 1 turned off"); } void led2_off() { gpio_set_level(LED2, 0); - ESP_LOGI(TAG, "LED 2 turned 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/main.c b/firmware/main/src/main.c index 36edfaf..b6f79ae 100644 --- a/firmware/main/src/main.c +++ b/firmware/main/src/main.c @@ -2,6 +2,7 @@ #include #include #include +#include //#include //#include #include @@ -16,16 +17,27 @@ static const char * TAG = "main.c"; +void vApplicationIdleHook(void) { + //led0_toggle(); + led0_off(); + esp_light_sleep_start(); + //wifi_sleep(); + led0_on(); +} void app_main() { ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(led_init()); - ESP_ERROR_CHECK(wifi_init()); - ESP_ERROR_CHECK(uart_init()); + //ESP_ERROR_CHECK(wifi_init()); + //ESP_ERROR_CHECK(uart_init()); ESP_ERROR_CHECK(controller_init()); + led0_on(); + xTaskCreate(led_blink_task, "led_blink_task", configMINIMAL_STACK_SIZE, NULL, 5, NULL); - xTaskCreate(uart_read_task, "uart_read_task", 2048, NULL, 10, NULL); + //xTaskCreate(uart_read_task, "uart_read_task", 2048, NULL, 10, NULL); xTaskCreate(sht31_sensor_test_task, "sht31_sensor_test_task", 2048, NULL, 10, NULL); + + //vTaskStartScheduler(); } diff --git a/firmware/main/src/wifi.c b/firmware/main/src/wifi.c index 6bb1672..31be320 100644 --- a/firmware/main/src/wifi.c +++ b/firmware/main/src/wifi.c @@ -9,20 +9,36 @@ esp_err_t wifi_init(void) { tcpip_adapter_init(); ESP_ERROR_CHECK(esp_event_loop_create_default()); + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + wifi_config_t sta_config = { .sta = { .ssid = CONFIG_ESP_WIFI_SSID, .password = CONFIG_ESP_WIFI_PASSWORD, }, }; + ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &sta_config)); ESP_ERROR_CHECK(esp_wifi_start()); ESP_ERROR_CHECK(esp_wifi_connect()); + // Enable power saving + ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_MIN_MODEM)); + return ESP_OK; } - +esp_err_t wifi_sleep() { + /* + // Enter light sleep mode + wifi_fpm_open(); // Enable modem sleep + wifi_fpm_do_sleep(0xFFFFFFF); // Enter sleep mode indefinitely + // The system will wake up when an interrupt occurs + wifi_fpm_close(); // Close modem sleep mode after waking up + */ + return ESP_OK; +} diff --git a/firmware/sdkconfig b/firmware/sdkconfig index 58b92e7..6e6738b 100644 --- a/firmware/sdkconfig +++ b/firmware/sdkconfig @@ -108,9 +108,9 @@ CONFIG_ESP8266_NMI_WDT=y # CONFIG_ESP8266_XTAL_FREQ_40 is not set CONFIG_ESP8266_XTAL_FREQ_26=y CONFIG_ESP8266_XTAL_FREQ=26 -CONFIG_ESP8266_DEFAULT_CPU_FREQ_80=y -# CONFIG_ESP8266_DEFAULT_CPU_FREQ_160 is not set -CONFIG_ESP8266_DEFAULT_CPU_FREQ_MHZ=80 +# CONFIG_ESP8266_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP8266_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP8266_DEFAULT_CPU_FREQ_MHZ=160 CONFIG_ESP_FILENAME_MACRO_NO_PATH=y # CONFIG_ESP_FILENAME_MACRO_RAW is not set # CONFIG_ESP_FILENAME_MACRO_NULL is not set @@ -141,11 +141,11 @@ CONFIG_ESP8266_WIFI_RX_BUFFER_NUM=16 CONFIG_ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM=16 CONFIG_ESP8266_WIFI_RX_PKT_NUM=7 CONFIG_ESP8266_WIFI_TX_PKT_NUM=6 -CONFIG_ESP8266_WIFI_NVS_ENABLED=y +# CONFIG_ESP8266_WIFI_NVS_ENABLED is not set CONFIG_ESP8266_WIFI_CONNECT_OPEN_ROUTER_WHEN_PWD_IS_SET=y CONFIG_ESP8266_WIFI_ENABLE_WPA3_SAE=y # CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE is not set -CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE is not set # CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP_PHY_INIT_DATA_VDD33_CONST=33 CONFIG_ESP8266_PHY_MAX_WIFI_TX_POWER=20