From 8fc948621462080a4e60e2d0d0528b07df38fd65 Mon Sep 17 00:00:00 2001 From: DaOfficialWizard <45744329+ZanzyTHEbar@users.noreply.github.com> Date: Thu, 29 Dec 2022 19:30:32 +0000 Subject: [PATCH] Feature/esp eye support (#34) - add support for ESP-EYE --- .github/workflows/main.yml | 4 +- ESP.code-workspace | 64 ++++ ESP/lib/src/data/config/project_config.cpp | 13 +- ESP/lib/src/io/camera/cameraHandler.cpp | 19 ++ ESP/lib/src/network/OTA/OTA.cpp | 2 +- .../src/network/WifiHandler/WifiHandler.hpp | 3 +- .../src/network/WifiHandler/wifiHandler.cpp | 27 +- ESP/lib/src/network/stream/streamServer.cpp | 13 +- ESP/platformio.ini | 285 ++++++++++++++++-- 9 files changed, 368 insertions(+), 62 deletions(-) create mode 100644 ESP.code-workspace diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0193119..b882415 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: true matrix: - targets: [esp32Cam_release, + targets: [esp32CAM_release, # esp32AITinker_release, # esp_eye_release, # esp32M5Stack_release, @@ -23,7 +23,7 @@ jobs: # esp32M5Stack, # esp_eye, # wrover, - # esp32Cam_OTA, + # esp32CAM_OTA, # esp32AITinker_OTA, # esp32M5Stack_OTA, # esp_eye_OTA, diff --git a/ESP.code-workspace b/ESP.code-workspace new file mode 100644 index 0000000..3841b08 --- /dev/null +++ b/ESP.code-workspace @@ -0,0 +1,64 @@ +{ + "folders": [ + { + "path": "ESP" + } + ], + "settings": { + "files.associations": { + "*.Rmd": "rmd", + "array": "cpp", + "atomic": "cpp", + "*.tcc": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "map": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "regex": "cpp", + "set": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp", + "iostream": "cpp" + } + } +} \ No newline at end of file diff --git a/ESP/lib/src/data/config/project_config.cpp b/ESP/lib/src/data/config/project_config.cpp index de8c625..2a94a7d 100644 --- a/ESP/lib/src/data/config/project_config.cpp +++ b/ESP/lib/src/data/config/project_config.cpp @@ -367,11 +367,12 @@ std::string ProjectConfig::CameraConfig_t::toRepresentation() std::string ProjectConfig::WiFiConfig_t::toRepresentation() { std::string json = Helpers::format_string( - "{\"name\": \"%s\", \"ssid\": \"%s\", \"password\": \"%s\", \"channel\": %u, \"adhoc\": %s}", + "{\"name\": \"%s\", \"ssid\": \"%s\", \"password\": \"%s\", \"channel\": %u, \"power\": %u,\"adhoc\": %s}", this->name.c_str(), this->ssid.c_str(), this->password.c_str(), this->channel, + this->power, this->adhoc ? "true" : "false"); return json; } @@ -387,6 +388,14 @@ std::string ProjectConfig::AP_WiFiConfig_t::toRepresentation() return json; } +std::string ProjectConfig::WiFiTxPower_t::toRepresentation() +{ + std::string json = Helpers::format_string( + "\"wifi_tx_power\": {\"power\": %u}", + this->power); + return json; +} + //********************************************************************************************************************** //* //! Get Methods @@ -398,4 +407,4 @@ ProjectConfig::CameraConfig_t *ProjectConfig::getCameraConfig() { return &this-> std::vector *ProjectConfig::getWifiConfigs() { return &this->config.networks; } ProjectConfig::AP_WiFiConfig_t *ProjectConfig::getAPWifiConfig() { return &this->config.ap_network; } ProjectConfig::MDNSConfig_t *ProjectConfig::getMDNSConfig() { return &this->config.mdns; } -ProjectConfig::WiFiTxPower_t *ProjectConfig::getWiFiTxPowerConfig() { return &this->config.txpower; } \ No newline at end of file +ProjectConfig::WiFiTxPower_t *ProjectConfig::getWiFiTxPowerConfig() { return &this->config.txpower; } diff --git a/ESP/lib/src/io/camera/cameraHandler.cpp b/ESP/lib/src/io/camera/cameraHandler.cpp index 7768adb..9228dbd 100644 --- a/ESP/lib/src/io/camera/cameraHandler.cpp +++ b/ESP/lib/src/io/camera/cameraHandler.cpp @@ -6,6 +6,25 @@ CameraHandler::CameraHandler(ProjectConfig *configManager, void CameraHandler::setupCameraPinout() { + log_i("Camera module is %s", CAMERA_MODULE_NAME); +#if CONFIG_CAMERA_MODULE_ESP_EYE + /* IO13, IO14 is designed for JTAG by default, + * to use it as generalized input, + * firstly declair it as pullup input + **/ + pinMode(13, INPUT_PULLUP); + pinMode(14, INPUT_PULLUP); + log_i("ESP_EYE"); +#elif CONFIG_CAMERA_MODULE_CAM_BOARD + /* IO13, IO14 is designed for JTAG by default, + * to use it as generalized input, + * firstly declair it as pullup input + **/ + pinMode(13, INPUT_PULLUP); + pinMode(14, INPUT_PULLUP); + log_i("CAM_BOARD"); +#endif + config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.grab_mode = CAMERA_GRAB_LATEST; diff --git a/ESP/lib/src/network/OTA/OTA.cpp b/ESP/lib/src/network/OTA/OTA.cpp index 9f18de7..96b5549 100644 --- a/ESP/lib/src/network/OTA/OTA.cpp +++ b/ESP/lib/src/network/OTA/OTA.cpp @@ -52,7 +52,7 @@ void OTA::SetupOTA() } }); log_i("Starting up basic OTA server"); - log_i("OTA will be live for 30s, after which it will be disabled until restart"); + log_i("OTA will be live for 5 minutes, after which it will be disabled until restart"); auto mdnsConfig = _deviceConfig->getMDNSConfig(); ArduinoOTA.setHostname(mdnsConfig->hostname.c_str()); ArduinoOTA.begin(); diff --git a/ESP/lib/src/network/WifiHandler/WifiHandler.hpp b/ESP/lib/src/network/WifiHandler/WifiHandler.hpp index f1bdaa6..117247f 100644 --- a/ESP/lib/src/network/WifiHandler/WifiHandler.hpp +++ b/ESP/lib/src/network/WifiHandler/WifiHandler.hpp @@ -22,13 +22,12 @@ public: ProjectConfig *configManager; StateManager *stateManager; - ProjectConfig::WiFiTxPower_t *txpower; bool _enable_adhoc; private: void setUpADHOC(); - void adhoc(const char *ssid, uint8_t channel, const char *password = NULL); + void adhoc(const std::string &ssid, uint8_t channel, const std::string &password = std::string()); bool iniSTA(const char *ssid, const char *password, uint8_t channel, wifi_power_t power); std::string ssid; diff --git a/ESP/lib/src/network/WifiHandler/wifiHandler.cpp b/ESP/lib/src/network/WifiHandler/wifiHandler.cpp index f53f686..40a19b8 100644 --- a/ESP/lib/src/network/WifiHandler/wifiHandler.cpp +++ b/ESP/lib/src/network/WifiHandler/wifiHandler.cpp @@ -6,7 +6,6 @@ WiFiHandler::WiFiHandler(ProjectConfig *configManager, const std::string &password, uint8_t channel) : configManager(configManager), stateManager(stateManager), - txpower(NULL), ssid(ssid), password(password), channel(channel), @@ -22,7 +21,7 @@ void WiFiHandler::setupWifi() this->setUpADHOC(); return; } - txpower = configManager->getWiFiTxPowerConfig(); + ProjectConfig::WiFiTxPower_t *txpower = configManager->getWiFiTxPowerConfig(); WiFi.mode(WIFI_STA); WiFi.setSleep(WIFI_PS_NONE); @@ -67,24 +66,25 @@ void WiFiHandler::setupWifi() } } -void WiFiHandler::adhoc(const char *ssid, uint8_t channel, const char *password) +void WiFiHandler::adhoc(const std::string &ssid, uint8_t channel, const std::string &password) { stateManager->setState(WiFiState_e::WiFiState_ADHOC); - log_i("\n[INFO]: Setting Access Point...\n"); + log_i("\n[INFO]: Configuring access point...\n"); WiFi.mode(WIFI_AP); WiFi.setSleep(WIFI_PS_NONE); - Serial.printf("\r\nStarting AP. \r\nAP IP address: "); + Serial.printf("\r\nStarting AP. \r\n"); IPAddress IP = WiFi.softAPIP(); Serial.printf("[INFO]: AP IP address: %s.\r\n", IP.toString().c_str()); // You can remove the password parameter if you want the AP to be open. - WiFi.softAP(ssid, password, channel); // AP mode with password + ProjectConfig::WiFiTxPower_t *txpower = configManager->getWiFiTxPowerConfig(); + WiFi.softAP(ssid.c_str(), password.c_str(), channel); // AP mode with password WiFi.setTxPower((wifi_power_t)txpower->power); } void WiFiHandler::setUpADHOC() { - log_i("\n[INFO]: Setting Access Point...\n"); + log_i("\n[INFO]: Setting Up Access Point...\n"); size_t ssidLen = configManager->getAPWifiConfig()->ssid.length(); size_t passwordLen = configManager->getAPWifiConfig()->password.length(); if (ssidLen <= 0) @@ -96,17 +96,18 @@ void WiFiHandler::setUpADHOC() if (passwordLen <= 0) { log_i("\n[INFO]: Configuring access point without a password\n"); - this->adhoc(configManager->getAPWifiConfig()->ssid.c_str(), + this->adhoc(configManager->getAPWifiConfig()->ssid, configManager->getAPWifiConfig()->channel); return; } - this->adhoc(configManager->getAPWifiConfig()->ssid.c_str(), + this->adhoc(configManager->getAPWifiConfig()->ssid, configManager->getAPWifiConfig()->channel, - configManager->getAPWifiConfig()->password.c_str()); + configManager->getAPWifiConfig()->password); + log_i("\n[INFO]: Configuring access point...\n"); - log_d("\n[DEBUG]: ssid: %s\n", configManager->getAPWifiConfig()->ssid.c_str()); - log_d("\n[DEBUG]: password: %s\n", configManager->getAPWifiConfig()->password.c_str()); + log_d("\n[DEBUG]: ssid: %s\n", configManager->getAPWifiConfig()->ssid); + log_d("\n[DEBUG]: password: %s\n", configManager->getAPWifiConfig()->password); log_d("\n[DEBUG]: channel: %d\n", configManager->getAPWifiConfig()->channel); } @@ -137,11 +138,9 @@ bool WiFiHandler::iniSTA(const char *ssid, const char *password, uint8_t channel return false; } } - stateManager->setState(WiFiState_e::WiFiState_Connected); log_i("Successfully connected to %s \n\r", ssid); log_i("Setting TX power to: %d \n\r", (uint8_t)power); WiFi.setTxPower(power); - return true; } diff --git a/ESP/lib/src/network/stream/streamServer.cpp b/ESP/lib/src/network/stream/streamServer.cpp index bb98b48..9ff55f4 100644 --- a/ESP/lib/src/network/stream/streamServer.cpp +++ b/ESP/lib/src/network/stream/streamServer.cpp @@ -33,7 +33,7 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req) fb = esp_camera_fb_get(); if (!fb) { - log_e("Camera capture failed"); + log_e("Camera capture failed with response: %s", esp_err_to_name(res)); res = ESP_FAIL; } else @@ -43,10 +43,8 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req) _jpg_buf_len = fb->len; _jpg_buf = fb->buf; } - if (res == ESP_OK) res = httpd_resp_send_chunk(req, STREAM_BOUNDARY, strlen(STREAM_BOUNDARY)); - if (res == ESP_OK) { size_t hlen = snprintf((char *)part_buf, 128, STREAM_PART, _jpg_buf_len, _timestamp.tv_sec, _timestamp.tv_usec); @@ -54,7 +52,6 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req) } if (res == ESP_OK) res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len); - if (fb) { esp_camera_fb_return(fb); @@ -66,18 +63,14 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req) free(_jpg_buf); _jpg_buf = NULL; } - if (res != ESP_OK) break; - long request_end = millis(); long latency = (request_end - last_request_time); last_request_time = request_end; log_d("Size: %uKB, Time: %ums (%ifps)\n", _jpg_buf_len / 1024, latency, 1000 / latency); } - last_frame = 0; - return res; } @@ -105,9 +98,7 @@ int StreamServer::startStreamServer() { httpd_register_uri_handler(camera_stream, &stream_page); Serial.println("Stream server initialized"); - Serial.print("\n\rThe stream is under: http://"); - Serial.print(WiFi.localIP()); - Serial.printf(":%i\n\r", this->STREAM_SERVER_PORT); + Serial.printf("\n\rThe stream is under: http://%s:%i\n\r", WiFi.localIP().toString().c_str(), this->STREAM_SERVER_PORT); return 0; } } diff --git a/ESP/platformio.ini b/ESP/platformio.ini index 07523c3..1d762dd 100644 --- a/ESP/platformio.ini +++ b/ESP/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [platformio] -default_envs = esp32Cam ; do not change this value +default_envs = esp32AITinker ; do not change this value unless you know what you are doing ; The below options are available for all environments ; The ssid and password are requried for the trackers to connect to your network!!! @@ -67,25 +67,27 @@ build_flags = -DPCLK_GPIO_NUM=${pinoutsESPCAM_M5STACK.PCLK_GPIO_NUM} ; Set the PCLK pin [pinoutsESPCAM] -; AI Tinker camera, the ov2650 +; ESP32CAM, the ov2640 PWDN_GPIO_NUM = 32 -RESET_GPIO_NUM = -1 -XCLK_GPIO_NUM = 0 -SIOD_GPIO_NUM = 26 -SIOC_GPIO_NUM = 27 -Y9_GPIO_NUM = 35 -Y8_GPIO_NUM = 34 -Y7_GPIO_NUM = 39 -Y6_GPIO_NUM = 36 -Y5_GPIO_NUM = 21 -Y4_GPIO_NUM = 19 -Y3_GPIO_NUM = 18 -Y2_GPIO_NUM = 5 -VSYNC_GPIO_NUM = 25 -HREF_GPIO_NUM = 23 -PCLK_GPIO_NUM = 22 +RESET_GPIO_NUM = 33 +XCLK_GPIO_NUM = 4 +SIOD_GPIO_NUM = 18 +SIOC_GPIO_NUM = 23 +Y9_GPIO_NUM = 36 +Y8_GPIO_NUM = 19 +Y7_GPIO_NUM = 21 +Y6_GPIO_NUM = 39 +Y5_GPIO_NUM = 35 +Y4_GPIO_NUM = 14 +Y3_GPIO_NUM = 13 +Y2_GPIO_NUM = 34 +VSYNC_GPIO_NUM = 5 +HREF_GPIO_NUM = 27 +PCLK_GPIO_NUM = 25 -build_flags = +build_flags = + '-DCAMERA_MODULE_NAME="ESP32_CAM"' + -DCONFIG_CAMERA_MODULE_CAM_BOARD=1 ; CAMERA PINOUT DEFINITIONS -DPWDN_GPIO_NUM=${pinoutsESPCAM.PWDN_GPIO_NUM} ; Set the PWDN pin -DRESET_GPIO_NUM=${pinoutsESPCAM.RESET_GPIO_NUM} ; Set the RESET pin @@ -104,8 +106,88 @@ build_flags = -DHREF_GPIO_NUM=${pinoutsESPCAM.HREF_GPIO_NUM} ; Set the HREF pin -DPCLK_GPIO_NUM=${pinoutsESPCAM.PCLK_GPIO_NUM} ; Set the PCLK pin +[pinoutsAITinker] +; AI Tinker camera, the ov2650 +PWDN_GPIO_NUM = 32 +RESET_GPIO_NUM = -1 +XCLK_GPIO_NUM = 0 +SIOD_GPIO_NUM = 26 +SIOC_GPIO_NUM = 27 +Y9_GPIO_NUM = 35 +Y8_GPIO_NUM = 34 +Y7_GPIO_NUM = 39 +Y6_GPIO_NUM = 36 +Y5_GPIO_NUM = 21 +Y4_GPIO_NUM = 19 +Y3_GPIO_NUM = 18 +Y2_GPIO_NUM = 5 +VSYNC_GPIO_NUM = 25 +HREF_GPIO_NUM = 23 +PCLK_GPIO_NUM = 22 + +build_flags = + '-DCAMERA_MODULE_NAME="ESP32_CAM_AI_THINKER"' + -DCONFIG_CAMERA_MODULE_AITINKER_BOARD=1 + ; CAMERA PINOUT DEFINITIONS + -DPWDN_GPIO_NUM=${pinoutsAITinker.PWDN_GPIO_NUM} ; Set the PWDN pin + -DRESET_GPIO_NUM=${pinoutsAITinker.RESET_GPIO_NUM} ; Set the RESET pin + -DXCLK_GPIO_NUM=${pinoutsAITinker.XCLK_GPIO_NUM} ; Set the XCLK pin + -DSIOD_GPIO_NUM=${pinoutsAITinker.SIOD_GPIO_NUM} ; Set the SIOD pin + -DSIOC_GPIO_NUM=${pinoutsAITinker.SIOC_GPIO_NUM} ; Set the SIOC pin + -DY9_GPIO_NUM=${pinoutsAITinker.Y9_GPIO_NUM} ; Set the Y9 pin + -DY8_GPIO_NUM=${pinoutsAITinker.Y8_GPIO_NUM} ; Set the Y8 pin + -DY7_GPIO_NUM=${pinoutsAITinker.Y7_GPIO_NUM} ; Set the Y7 pin + -DY6_GPIO_NUM=${pinoutsAITinker.Y6_GPIO_NUM} ; Set the Y6 pin + -DY5_GPIO_NUM=${pinoutsAITinker.Y5_GPIO_NUM} ; Set the Y5 pin + -DY4_GPIO_NUM=${pinoutsAITinker.Y4_GPIO_NUM} ; Set the Y4 pin + -DY3_GPIO_NUM=${pinoutsAITinker.Y3_GPIO_NUM} ; Set the Y3 pin + -DY2_GPIO_NUM=${pinoutsAITinker.Y2_GPIO_NUM} ; Set the Y2 pin + -DVSYNC_GPIO_NUM=${pinoutsAITinker.VSYNC_GPIO_NUM} ; Set the VSYNC pin + -DHREF_GPIO_NUM=${pinoutsAITinker.HREF_GPIO_NUM} ; Set the HREF pin + -DPCLK_GPIO_NUM=${pinoutsAITinker.PCLK_GPIO_NUM} ; Set the PCLK pin + +[pinoutsESP-EYE] +; CAMERA_MODULE_ESP-EYE_KIT +PWDN_GPIO_NUM = -1 +RESET_GPIO_NUM = -1 +XCLK_GPIO_NUM = 4 +SIOD_GPIO_NUM = 18 +SIOC_GPIO_NUM = 23 +Y9_GPIO_NUM = 36 +Y8_GPIO_NUM = 37 +Y7_GPIO_NUM = 38 +Y6_GPIO_NUM = 39 +Y5_GPIO_NUM = 35 +Y4_GPIO_NUM = 14 +Y3_GPIO_NUM = 13 +Y2_GPIO_NUM = 34 +VSYNC_GPIO_NUM = 5 +HREF_GPIO_NUM = 27 +PCLK_GPIO_NUM = 25 + +build_flags = + '-DCAMERA_MODULE_NAME="ESP32_CAM_ESP_EYE"' + -DCONFIG_CAMERA_MODULE_ESP_EYE=1 + ; CAMERA PINOUT DEFINITIONS + -DPWDN_GPIO_NUM=${pinoutsESP-EYE.PWDN_GPIO_NUM} ; Set the PWDN pin + -DRESET_GPIO_NUM=${pinoutsESP-EYE.RESET_GPIO_NUM} ; Set the RESET pin + -DXCLK_GPIO_NUM=${pinoutsESP-EYE.XCLK_GPIO_NUM} ; Set the XCLK pin + -DSIOD_GPIO_NUM=${pinoutsESP-EYE.SIOD_GPIO_NUM} ; Set the SIOD pin + -DSIOC_GPIO_NUM=${pinoutsESP-EYE.SIOC_GPIO_NUM} ; Set the SIOC pin + -DY9_GPIO_NUM=${pinoutsESP-EYE.Y9_GPIO_NUM} ; Set the Y9 pin + -DY8_GPIO_NUM=${pinoutsESP-EYE.Y8_GPIO_NUM} ; Set the Y8 pin + -DY7_GPIO_NUM=${pinoutsESP-EYE.Y7_GPIO_NUM} ; Set the Y7 pin + -DY6_GPIO_NUM=${pinoutsESP-EYE.Y6_GPIO_NUM} ; Set the Y6 pin + -DY5_GPIO_NUM=${pinoutsESP-EYE.Y5_GPIO_NUM} ; Set the Y5 pin + -DY4_GPIO_NUM=${pinoutsESP-EYE.Y4_GPIO_NUM} ; Set the Y4 pin + -DY3_GPIO_NUM=${pinoutsESP-EYE.Y3_GPIO_NUM} ; Set the Y3 pin + -DY2_GPIO_NUM=${pinoutsESP-EYE.Y2_GPIO_NUM} ; Set the Y2 pin + -DVSYNC_GPIO_NUM=${pinoutsESP-EYE.VSYNC_GPIO_NUM} ; Set the VSYNC pin + -DHREF_GPIO_NUM=${pinoutsESP-EYE.HREF_GPIO_NUM} ; Set the HREF pin + -DPCLK_GPIO_NUM=${pinoutsESP-EYE.PCLK_GPIO_NUM} ; Set the PCLK pin + [pinoutsESPWROVER] -; CAMERA_MODEL_WROVER_KIT +; CAMERA_MODULE_WROVER_KIT PWDN_GPIO_NUM = -1 RESET_GPIO_NUM = -1 XCLK_GPIO_NUM = 21 @@ -117,13 +199,15 @@ Y7_GPIO_NUM = 39 Y6_GPIO_NUM = 36 Y5_GPIO_NUM = 19 Y4_GPIO_NUM = 18 -Y3_GPIO_NUM = 5 -Y2_GPIO_NUM = 4 +Y3_GPIO_NUM = 5 +Y2_GPIO_NUM = 4 VSYNC_GPIO_NUM = 25 HREF_GPIO_NUM = 23 PCLK_GPIO_NUM = 22 build_flags = + '-DCAMERA_MODULE_NAME="ESP32_CAM_WROVER_KIT"' + -DCONFIG_CAMERA_MODULE_WROVER_KIT=1 ; CAMERA PINOUT DEFINITIONS -DPWDN_GPIO_NUM=${pinoutsESPWROVER.PWDN_GPIO_NUM} ; Set the PWDN pin -DRESET_GPIO_NUM=${pinoutsESPWROVER.RESET_GPIO_NUM} ; Set the RESET pin @@ -159,8 +243,8 @@ monitor_filters = board_build.partitions = min_spiffs.csv ; uncomment this to use the min_spiffs partition table, supports OTA and 1MB of SPIFFS build_flags = - !python tools\autoversioning.py ; add build version to build as preprocessor defines - !python tools\git_rev.py ; add git revision to build as preprocessor defines + !python tools/\autoversioning.py ; add build version to build as preprocessor defines + !python tools/\git_rev.py ; add git revision to build as preprocessor defines -DOTA_SERVER_PORT=${wifi.OTAServerPort} ; Set the OTA server -DENABLE_ADHOC=${wifi.enableADHOC} -DADHOC_CHANNEL=${wifi.adhocChannel} @@ -194,7 +278,7 @@ lib_deps = build_type = debug extra_scripts = pre:tools/customname.py -[env:esp32Cam] +[env:esp32AITinker] platform = ${common.platform} board = esp32cam framework = ${common.framework} @@ -213,9 +297,9 @@ build_flags = ${common.build_flags} -DCORE_DEBUG_LEVEL=4 ; set the debug level -DDEBUG_MODE=1 ; Set the debug mode ; CAMERA PINOUT DEFINITIONS - ${pinoutsESPCAM.build_flags} + ${pinoutsAITinker.build_flags} -[env:esp32Cam_release] +[env:esp32AITinker_release] platform = ${common.platform} board = esp32cam framework = ${common.framework} @@ -233,10 +317,10 @@ build_flags = ${common.build_flags} -DDEBUG_MODE=0 ; Set the debug mode -DCORE_DEBUG_LEVEL=1 ; CAMERA PINOUT DEFINITIONS - ${pinoutsESPCAM.build_flags} + ${pinoutsAITinker.build_flags} ; Experimental OTA Environment - do not select unless you know what you are doing -[env:esp32Cam_OTA] +[env:esp32AITinker_OTA] platform = ${common.platform} board = esp32cam framework = ${common.framework} @@ -245,7 +329,7 @@ build_flags = ${common.build_flags} -DCORE_DEBUG_LEVEL=1 -DDEBUG_ESP_OTA ; CAMERA PINOUT DEFINITIONS - ${pinoutsESPCAM.build_flags} + ${pinoutsAITinker.build_flags} lib_deps = ${common.lib_deps} upload_speed = ${common.upload_speed} @@ -332,6 +416,147 @@ upload_flags = build_type = release extra_scripts = ${common.extra_scripts} +[env:esp32CAM] +platform = ${common.platform} +board = esp32cam +framework = ${common.framework} +monitor_speed = ${common.monitor_speed} +monitor_rts = ${common.monitor_rts} +monitor_dtr = ${common.monitor_dtr} +monitor_filters = ${common.monitor_filters} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; +lib_ldf_mode = ${common.lib_ldf_mode} +upload_speed = ${common.upload_speed} +lib_deps = ${common.lib_deps} +build_type = ${common.build_type} +extra_scripts = ${common.extra_scripts} +build_flags = ${common.build_flags} + -DDEBUG_MODE=1 ; Set the debug mode + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESPCAM.build_flags} + +[env:esp32CAM_release] +platform = ${common.platform} +board = esp32cam +framework = ${common.framework} +monitor_speed = ${common.monitor_speed} +monitor_rts = ${common.monitor_rts} +monitor_dtr = ${common.monitor_dtr} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; +lib_ldf_mode = ${common.lib_ldf_mode} +upload_speed = ${common.upload_speed} +lib_deps = ${common.lib_deps} +build_type = release +extra_scripts = ${common.extra_scripts} +build_flags = ${common.build_flags} + -DDEBUG_MODE=0 ; Set the debug mode + -DCORE_DEBUG_LEVEL=1 + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESPCAM.build_flags} + +; Experimental OTA Environment - do not select unless you know what you are doing +[env:esp32CAM_OTA] +platform = ${common.platform} +board = esp32cam +framework = ${common.framework} +build_flags = ${common.build_flags} + -DDEBUG_MODE=0 ; Set the debug mode + -DCORE_DEBUG_LEVEL=1 + -DDEBUG_ESP_OTA + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESPCAM.build_flags} + +lib_deps = ${common.lib_deps} +upload_speed = ${common.upload_speed} +monitor_speed = ${common.monitor_speed} +monitor_rts = ${common.monitor_rts} +monitor_dtr = ${common.monitor_dtr} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; uncomment this to use the min_spiffs partition table, great for using OTA +lib_ldf_mode = ${common.lib_ldf_mode} +upload_port = 192.168.1.38 +upload_protocol = espota +upload_flags = + --port=3232 + --auth=12345678 +build_type = release +extra_scripts = ${common.extra_scripts} + +[env:esp_eye] +platform = ${common.platform} +board = esp-wrover-kit +framework = ${common.framework} +;board_build.f_flash = 80000000L +;board_build.flash_mode = qio +monitor_speed = ${common.monitor_speed} +; monitor_rts = ${common.monitor_rts} +; monitor_dtr = ${common.monitor_dtr} +monitor_filters = ${common.monitor_filters} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; +lib_ldf_mode = ${common.lib_ldf_mode} +upload_speed = ${common.upload_speed} +lib_deps = ${common.lib_deps} +build_type = ${common.build_type} +extra_scripts = ${common.extra_scripts} +build_flags = ${common.build_flags} + -DDEBUG_MODE=1 ; Set the debug mode + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESP-EYE.build_flags} + +[env:esp_eye_release] +platform = ${common.platform} +board = esp-wrover-kit +framework = ${common.framework} +;board_build.f_flash = 80000000L +;board_build.flash_mode = qio +monitor_speed = ${common.monitor_speed} +; monitor_rts = ${common.monitor_rts} +; monitor_dtr = ${common.monitor_dtr} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; +lib_ldf_mode = ${common.lib_ldf_mode} +upload_speed = ${common.upload_speed} +lib_deps = ${common.lib_deps} +build_type = release +extra_scripts = ${common.extra_scripts} +build_flags = ${common.build_flags} + -DDEBUG_MODE=0 ; Set the debug mode + -DCORE_DEBUG_LEVEL=1 + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESP-EYE.build_flags} + +; Experimental OTA Environment - do not select unless you know what you are doing +[env:esp_eye_OTA] +platform = ${common.platform} +board = esp-wrover-kit +framework = ${common.framework} +;board_build.f_flash = 80000000L +;board_build.flash_mode = qio +build_flags = ${common.build_flags} + -DDEBUG_MODE=0 ; Set the debug mode + -DCORE_DEBUG_LEVEL=1 + -DDEBUG_ESP_OTA + ; CAMERA PINOUT DEFINITIONS + ${pinoutsESP-EYE.build_flags} +lib_deps = ${common.lib_deps} +upload_speed = ${common.upload_speed} +monitor_speed = ${common.monitor_speed} +;monitor_rts = ${common.monitor_rts} +;monitor_dtr = ${common.monitor_dtr} +;build_unflags = ${common.build_unflags} +board_build.partitions = ${common.board_build.partitions} ; uncomment this to use the min_spiffs partition table, great for using OTA +lib_ldf_mode = ${common.lib_ldf_mode} +upload_port = 192.168.1.38 +upload_protocol = espota +upload_flags = + --port=3232 + --auth=12345678 +build_type = release +extra_scripts = ${common.extra_scripts} + [env:wrover] platform = ${common.platform} board = esp-wrover-kit @@ -341,7 +566,7 @@ board_build.flash_mode = qio monitor_speed = ${common.monitor_speed} monitor_filters = ${common.monitor_filters} ;build_unflags = ${common.build_unflags} -board_build.partitions = ${common.board_build.partitions} ; uncomment this to use the huge_app partition table, does not support OTA and only 1MB of SPIFFS +board_build.partitions = ${common.board_build.partitions} lib_ldf_mode = ${common.lib_ldf_mode} upload_speed = ${common.upload_speed} lib_deps = ${common.lib_deps}