From d2a8a8cea64b83438f28e72e6419ba498af3f072 Mon Sep 17 00:00:00 2001 From: thek4n Date: Sat, 6 Jun 2026 15:12:37 +0300 Subject: [PATCH] feat(ap_mode): add to config only ap mode --- README.md | 21 +++++++++++++++++++++ main/Kconfig.projbuild | 15 ++++++++++++++- main/main.c | 27 ++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d7626eb..1a0ccff 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # Pump controller ESP32 +Контроллер насоса с веб интерфейсом. + ## Сборка и прошивка ```sh @@ -6,3 +8,22 @@ PORT="/dev/ttyUSB0" \ ESP_IDF="~/playground/esp-idf/" just build flash ``` + + +## Setup +Настройка. + +При первом запуске устройства с прошивкой (!WIFI_AP) создастся wifi точка +(default ssid: pumpcontroller). Подключиться и зайти в браузере на страницу +192.168.4.1:80. Ввести пароль ssid и пароль основного wifi. Устройство +перезагрузится и подключится к wifi и получит адрес (его можно узнать в +настройках роутера). По этому адресу будет основная страница контроля давления. + +При вводе неверного пароля нужно осуществить сброс до заводских настроек и +повторить настройку. + + +### Reset +Сброс осуществляется замыканием пина D15 на землю и подключением питания. +Устройство моргнет светодиодом 3 раза и перезагрузится, в этот момент нужно +убрать замыкание D15 на землю. diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index c7fc423..f97d1a4 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -1,7 +1,20 @@ menu "Pump Controller Configuration" + config WIFI_AP + bool "Work as WIFI AP" + default false + help + Device wont connect to wifi + + config PUMP_PIN + int "Pump digital pin" + default 4 + range 4 33 + help + Digital pin for pump control. + config AP_WIFI_SSID string "AP WiFi SSID" - default "ESP32_Hotspot" + default "pumpcontroller" help Wi-Fi ssid. diff --git a/main/main.c b/main/main.c index 90a9cf5..c7dd2ac 100644 --- a/main/main.c +++ b/main/main.c @@ -918,6 +918,26 @@ static app_error_t setup_mode_init(void) { return ERR_OK; } +static app_error_t ap_normal_mode_init() { + CHECK_ERROR(wifi_softap_init(), APP_ERR_WIFI_INIT_FAIL); + + CHECK_ERROR(load_thresholds(), APP_ERR_NVS_READ_FAIL); + CHECK_ERROR(adc_init(), APP_ERR_ADC_INIT_FAIL); + CHECK_ERROR(pump_init(), APP_ERR_PUMP_INIT_FAIL); + + CHECK_ERROR(http_server_start(), APP_ERR_HTTP_SERVER_START_FAIL); + CHECK_ERROR(tasks_create(), APP_ERR_TASK_CREATE_FAIL); + + ESP_LOGI(TAG, "========================================="); + ESP_LOGI(TAG, "AP normal mode active"); + ESP_LOGI(TAG, "📱 Connect to Wi-Fi: %s", CONFIG_AP_WIFI_SSID); + ESP_LOGI(TAG, "🔑 Password: %s", strlen(CONFIG_AP_WIFI_PASS) ? CONFIG_AP_WIFI_PASS : "Open network"); + ESP_LOGI(TAG, "🌐 Open browser: http://%s:%d", CONFIG_AP_IP, CONFIG_WEBINTERFACE_PORT); + ESP_LOGI(TAG, "========================================="); + + return ERR_OK; +} + static app_error_t normal_mode_init(void) { g_setup_mode = false; @@ -968,6 +988,11 @@ void app_main(void) { vTaskDelay(pdMS_TO_TICKS(100)); +#if CONFIG_WIFI_AP + if (ap_normal_mode_init() != APP_ERR_OK) { + handle_error(APP_ERR_WIFI_INIT_FAIL); + } +#else // CONFIG_WIFI_AP // Check reset button if (gpio_get_level(RESET_BTN_GPIO) == 0) { ESP_LOGI(TAG, "RESET button pressed, resetting settings..."); @@ -988,6 +1013,6 @@ void app_main(void) { handle_error(APP_ERR_WIFI_CONNECT_FAIL); } } - +#endif // CONFIG_WIFI_AP vTaskDelete(NULL); }