diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 481c46fb9..da8275611 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -41,7 +41,7 @@ jobs: plat: - esp32cam - xiao-esp32s3-sense - - freenove-esp32s3 + - freenove-esp32s3-n16r8 steps: - name: Checkout branch if: ${{ ! needs.prepare-release.outputs.release_created }} @@ -228,7 +228,7 @@ jobs: plat: - esp32cam - xiao-esp32s3-sense - - freenove-esp32s3 + - freenove-esp32s3-n16r8 # Sets permissions of the GITHUB_TOKEN to allow downloading artifacts permissions: @@ -255,16 +255,16 @@ jobs: rm -rf release mkdir -p release cd "AI-on-the-edge-device__update__${{ matrix.plat }}__SLFork_${{ steps.vars.outputs.branch }}_(${{ steps.vars.outputs.sha_short }})" - zip -r ../release/${{ matrix.plat }}/AI-on-the-edge-device__update__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * + zip -r ../release/AI-on-the-edge-device__update__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * cd .. cd "AI-on-the-edge-device__manual-setup__${{ matrix.plat }}__SLFork_${{ steps.vars.outputs.branch }}_(${{ steps.vars.outputs.sha_short }})" - zip -r ../release/${{ matrix.plat }}/AI-on-the-edge-device__manual-setup__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * + zip -r ../release/AI-on-the-edge-device__manual-setup__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * cd .. cd "AI-on-the-edge-device__remote-setup__${{ matrix.plat }}__SLFork_${{ steps.vars.outputs.branch }}_(${{ steps.vars.outputs.sha_short }})" - zip -r ../release/${{ matrix.plat }}/AI-on-the-edge-device__remote-setup__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * + zip -r ../release/AI-on-the-edge-device__remote-setup__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * cd .. cd "AI-on-the-edge-device__debug-files__${{ matrix.plat }}__SLFork_${{ steps.vars.outputs.branch }}_(${{ steps.vars.outputs.sha_short }})" - zip -r ../release/${{ matrix.plat }}/AI-on-the-edge-device__debug-files__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * + zip -r ../release/AI-on-the-edge-device__debug-files__${{ matrix.plat }}__SLFork_v${{ needs.prepare-release.outputs.version }}.zip * cd .. - name: Upload artifacts to release tag diff --git a/README.md b/README.md index 39c924f4c..fdfee00cb 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,18 @@ As a result, you get the digitized value of your meter. There are several option ## Supported Hardware +### Board + | Board Type | SOC | Firmware Release | Remarks -|:--- |:--- |:--- |:--- -| [ESP32-CAM](http://www.ai-thinker.com/pro_view-24.html) | ESP32 | All | - Only boards with >4MB RAM are supported
- Beware of inferior quality Chinese clones -| [XIAO ESP32 Sense](https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html) | ESP32S3 | $\ge$ v17.0.0 |- No onboard illumination: Separate illumination (PWM controlable LED / Intelligent LED) necessary
- Running quite hot, small heat sink recommended +|:--- |:--- |:--- |:--- +| [ESP32-CAM](http://www.ai-thinker.com/pro_view-24.html) | ESP32 | All | - Only boards with >4MB RAM are supported
- Beware of inferior quality Chinese clones +| [XIAO ESP32 Sense](https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html) | ESP32S3 | $\ge$ v17.0.0 |- No onboard illumination: Separate illumination (PWM controlable LED / Intelligent LED) necessary
- Running quite hot, small heat sink recommended +| [Freenove ESP32S3 WROOM](https://github.com/Freenove/Freenove_ESP32_S3_WROOM_Board) | ESP32S3 | $\ge$ v17.0.0 |- SOC and pin compatible Chinese clones supported + +### Camera +| Camera Type | Resolution | Firmware Release | Remarks +|:--- |:--- |:--- |:--- +| [OV2640](https://www.arducam.com/ov2640/) | 2MP (max. 1600x1200) | All | - Officially EOL since 2009, but still very popular
- Pin and function compatible Chinese clones are supported ## Device Installation @@ -68,8 +76,8 @@ A possibly already available development version (upcoming release version) can ### 3. Install MCU Part Of Firmware Initially the MCU of the device has to be flashed via a direct USB connection. Further updates can be performed directly over the air (OTA).
-For initial installation, use content of `AI-on-the-edge-device__manual-setup__{Board Type}__*.zip`.
-NOTE: OTA updates will be performed with `AI-on-the-edge-device__update__{Board Type}__*.zip` package. +For initial installation, use content of `AI-on-the-edge-device__manual-setup__{board type}__*.zip`.
+NOTE: OTA updates will be performed with `AI-on-the-edge-device__update__{board type}__*.zip` package. IMPORTANT: Make sure to use correct firmware package for your board type. @@ -81,9 +89,9 @@ See [documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installa Note: Installation using web installer is not supported by this forked repo. ### 4. Install SD Card Content -The SD card can be setup using the device's local WLAN hotspot after the MCU firmware got successfully installed (`AI-on-the-edge-device__remote-setup__*.zip`). See the +The SD card can be setup using the device's local WLAN hotspot after the MCU firmware got successfully installed (`AI-on-the-edge-device__remote-setup__{board type}__*.zip`). See the [documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#remote-setup-using-the-built-in-access-point) for details. For this to work, the SD card must be FAT formated (which is the default on a new SD card).
-Alternatively the SD card still can be setup manually without using hotspot, see the [documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#3-sd-card) for details (`AI-on-the-edge-device__manual-setup__*.zip`). +Alternatively the SD card still can be setup manually without using hotspot, see the [documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#3-sd-card) for details (`AI-on-the-edge-device__manual-setup__{board type}__*.zip`). ⚠️ Do not use github source files in any case, use only release related zip package. Otherwise functionality cannot be fully guaranteed! diff --git a/code/.gitignore b/code/.gitignore index 463a19e9f..3f0dc8118 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -7,10 +7,5 @@ version.cpp dependencies.lock sdkconfig.esp32cam -sdkconfig.esp32cam-debug -sdkconfig.esp32cam-himem -sdkconfig.esp32cam-task-analysis -sdkconfig.esp32cam-localbuild sdkconfig.xiao-esp32s3-sense -sdkconfig.xiao-esp32s3-sense-debug -sdkconfig.xiao-esp32s3-sense-task-analysis +sdkconfig.freenove-esp32s3-n16r8 diff --git a/code/include/defines.h b/code/include/defines.h index 2e55f81ca..9f9ffde61 100644 --- a/code/include/defines.h +++ b/code/include/defines.h @@ -324,7 +324,7 @@ CONFIG_WPA_11R_SUPPORT=n #elif ENV_BOARD_TYPE == 3 #define BOARD_FREENOVE_ESP32S3 -#define BOARD_TYPE_NAME "Freenove-ESP32S3" // Keep Board type equal to main board environment name. +#define BOARD_TYPE_NAME "Freenove-ESP32S3-N16R8"// Keep Board type equal to main board environment name. // This is used for OTA update package verification (converted to lower case) #else #error "Board type (ENV_BOARD_TYPE) not defined" diff --git a/code/platformio.ini b/code/platformio.ini index d43a2d050..40ca569b0 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -92,67 +92,6 @@ build_flags = -D ENV_BOARD_TYPE=1 -D ENV_CAMERA_MODEL=1 -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for task analysis (PR #1751) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:esp32cam-task-analysis] -extends = env:esp32cam -; sdkconfig.esp32cam-task-analysis.defaults override some sdkconfig.defaults -; and enable debug analysis options -build_flags = - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=1 - -D ENV_CAMERA_MODEL=1 - ; ### Debug options : - -D TASK_ANALYSIS_ON - ;-D DEBUG_DETAIL_ON - ;please use only one HEAP tracing at time. - ;-D HEAP_TRACING_MAIN_WIFI - ;-D HEAP_TRACING_MAIN_START - ;-D HEAP_TRACING_CLASS_FLOW_CNN_GENERAL_DO_ALING_AND_CUT - - -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for detailed and deep debugging -; (default debugging is already possible with default environment) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:esp32cam-debug] -extends = env:esp32cam -; sdkconfig.esp32cam-debug.defaults override some sdkconfig.defaults -; and enable debug options and clangtidy -build_flags = - ; ### clangtidy build flags: - ${flags:clangtidy.build_flags} - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=1 - -D ENV_CAMERA_MODEL=1 - ; ### Debug options : - -D DEBUG_DETAIL_ON - ;-D DEBUG_DISABLE_BROWNOUT_DETECTOR - ;-D DEBUG_ENABLE_PERFMON - ;-D DEBUG_HIMEM_MEMORY_CHECK -lib_ldf_mode = deep+ - - -; +++++++++++++++++++++++++++++++++++++++++++ -; Enable HIMEM support (8 MB SPIRAM boards) -; !!! RAM usage in HIMEM is not supported by firmware up to now !!! -; https://github.com/espressif/esp-idf/blob/master/examples/system/himem/README.md -; +++++++++++++++++++++++++++++++++++++++++++ -[env:esp32cam-himem] -extends = env:esp32cam -; sdkconfig.esp32cam-dev-himem.defaults override some sdkconfig.defaults -build_flags = - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=1 - -D ENV_CAMERA_MODEL=1 - ; ### Debug options : - ;-D DEBUG_HIMEM_MEMORY_CHECK - - ; ############################################################################# ; Board @@ -199,56 +138,12 @@ build_flags = -D ENV_BOARD_TYPE=2 -D ENV_CAMERA_MODEL=2 -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for task analysis (PR #1751) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:xiao-esp32s3-sense-task-analysis] -extends = env:xiao-esp32s3-sense -; sdkconfig.xiao-esp32s3-sense-task-analysis.defaults override some sdkconfig.defaults -; and enable debug analysis options -build_flags = - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=2 - -D ENV_CAMERA_MODEL=2 - ; ### Debug options : - -D TASK_ANALYSIS_ON - ;-D DEBUG_DETAIL_ON - ;please use only one HEAP tracing at time. - ;-D HEAP_TRACING_MAIN_WIFI - ;-D HEAP_TRACING_MAIN_START - ;-D HEAP_TRACING_CLASS_FLOW_CNN_GENERAL_DO_ALING_AND_CUT - - -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for detailed and deep debugging -; (default debugging is already possible with default environment) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:xiao-esp32s3-sense-debug] -extends = env:xiao-esp32s3-sense -; sdkconfig.xiao-esp32s3-sense-debug.defaults override some sdkconfig.defaults -; and enable debug options and clangtidy -build_flags = - ; ### clangtidy build flags: - ${flags:clangtidy.build_flags} - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=2 - -D ENV_CAMERA_MODEL=2 - ; ### Debug options : - -D DEBUG_DETAIL_ON - ;-D DEBUG_DISABLE_BROWNOUT_DETECTOR - ;-D DEBUG_ENABLE_PERFMON - ;-D DEBUG_HIMEM_MEMORY_CHECK -lib_ldf_mode = deep+ - - ; ############################################################################# ; Board -; FREENOVE ESP32S3-WROOM-1-N16R8 (and compatible) +; Freenove ESP32S3-WROOM-1-N16R8 (Freenove pin compatible clones) ; ############################################################################# -[env:freenove-esp32s3] +[env:freenove-esp32s3-n16r8] extends = common:esp32-idf board = 4d_systems_esp32s3_gen4_r8n16 framework = espidf @@ -276,8 +171,8 @@ monitor_filters = default, esp32_exception_decoder ; Include parameter tooltips to HTML parameter config file ; and hash to HTML files (caching) ; +++++++++++++++++++++++++++++++++++++++++++ -[env:freenove-esp32s3-localbuild] -extends = env:freenove-esp32s3 +[env:freenove-esp32s3-n16r8-localbuild] +extends = env:freenove-esp32s3-n16r8 extra_scripts = post:scripts/localbuild.py # Add parameter tooltips to HTML page # and hashes to all cached HTML files build_flags = @@ -288,46 +183,3 @@ build_flags = ; ### (see 'include/defines.h' for definitions) -D ENV_BOARD_TYPE=3 -D ENV_CAMERA_MODEL=3 - -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for task analysis (PR #1751) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:freenove-esp32s3-task-analysis] -extends = env:freenove-esp32s3 -; sdkconfig.freenove-esp32s3-task-analysis.defaults override some sdkconfig.defaults -; and enable debug analysis options -build_flags = - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=3 - -D ENV_CAMERA_MODEL=3 - ; ### Debug options : - -D TASK_ANALYSIS_ON - ;-D DEBUG_DETAIL_ON - ;please use only one HEAP tracing at time. - ;-D HEAP_TRACING_MAIN_WIFI - ;-D HEAP_TRACING_MAIN_START - ;-D HEAP_TRACING_CLASS_FLOW_CNN_GENERAL_DO_ALING_AND_CUT - - -; +++++++++++++++++++++++++++++++++++++++++++ -; Use this environment for detailed and deep debugging -; (default debugging is already possible with default environment) -; +++++++++++++++++++++++++++++++++++++++++++ -[env:freenove-esp32s3-debug] -extends = env:freenove-esp32s3 -; sdkconfig.freenove-esp32s3-debug.defaults override some sdkconfig.defaults -; and enable debug options and clangtidy -build_flags = - ; ### clangtidy build flags: - ${flags:clangtidy.build_flags} - ; ### Hardware: Define board type + camera model - ; ### (see 'include/defines.h' for definitions) - -D ENV_BOARD_TYPE=3 - -D ENV_CAMERA_MODEL=3 - ; ### Debug options : - -D DEBUG_DETAIL_ON - ;-D DEBUG_DISABLE_BROWNOUT_DETECTOR - ;-D DEBUG_ENABLE_PERFMON - ;-D DEBUG_HIMEM_MEMORY_CHECK -lib_ldf_mode = deep+ diff --git a/code/sdkconfig.esp32cam-debug.defaults b/code/sdkconfig.esp32cam-debug.defaults deleted file mode 100644 index b7fe751c2..000000000 --- a/code/sdkconfig.esp32cam-debug.defaults +++ /dev/null @@ -1,33 +0,0 @@ -# -# Bootloader config -# -CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y -CONFIG_BOOTLOADER_LOG_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y -CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=n - - -# -# LWIP -# -CONFIG_LWIP_ESP_LWIP_ASSERT=y - - -# -# Hardware Abstraction Layer (HAL) and Low Level (LL) -# -CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y - - -# -# Log output -# -CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y - - -# -# Common ESP-related -# -CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y diff --git a/code/sdkconfig.esp32cam-himem.defaults b/code/sdkconfig.esp32cam-himem.defaults deleted file mode 100644 index a08ce236e..000000000 --- a/code/sdkconfig.esp32cam-himem.defaults +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_SPIRAM_BANKSWITCH_ENABLE=y -CONFIG_SPIRAM_BANKSWITCH_RESERVE=4 diff --git a/code/sdkconfig.esp32cam-task-analysis.defaults b/code/sdkconfig.esp32cam-task-analysis.defaults deleted file mode 100644 index ceac8ef38..000000000 --- a/code/sdkconfig.esp32cam-task-analysis.defaults +++ /dev/null @@ -1,15 +0,0 @@ -# -# FreeRTOS Kernel -# -CONFIG_FREERTOS_USE_TRACE_FACILITY=1 -CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y -CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y - - -# -# Heap memory debugging -# -CONFIG_HEAP_TRACING_STANDALONE=y -# CONFIG_HEAP_POISONING_LIGHT=y -# CONFIG_HEAP_TASK_TRACKING=y -# CONFIG_HEAP_POISONING_COMPREHENSIVE=y diff --git a/code/sdkconfig.freenove-esp32s3-debug.defaults b/code/sdkconfig.freenove-esp32s3-debug.defaults deleted file mode 100644 index b7fe751c2..000000000 --- a/code/sdkconfig.freenove-esp32s3-debug.defaults +++ /dev/null @@ -1,33 +0,0 @@ -# -# Bootloader config -# -CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y -CONFIG_BOOTLOADER_LOG_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y -CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=n - - -# -# LWIP -# -CONFIG_LWIP_ESP_LWIP_ASSERT=y - - -# -# Hardware Abstraction Layer (HAL) and Low Level (LL) -# -CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y - - -# -# Log output -# -CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y - - -# -# Common ESP-related -# -CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y diff --git a/code/sdkconfig.freenove-esp32s3.defaults b/code/sdkconfig.freenove-esp32s3-n16r8.defaults similarity index 100% rename from code/sdkconfig.freenove-esp32s3.defaults rename to code/sdkconfig.freenove-esp32s3-n16r8.defaults diff --git a/code/sdkconfig.freenove-esp32s3-task-analysis.defaults b/code/sdkconfig.freenove-esp32s3-task-analysis.defaults deleted file mode 100644 index 38463b99f..000000000 --- a/code/sdkconfig.freenove-esp32s3-task-analysis.defaults +++ /dev/null @@ -1,16 +0,0 @@ -# -# FreeRTOS Kernel -# -CONFIG_FREERTOS_USE_TRACE_FACILITY=1 -CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y -CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y - - -# -# Heap memory debugging -# -CONFIG_HEAP_TRACING_STANDALONE=y -# CONFIG_HEAP_POISONING_LIGHT=y -# CONFIG_HEAP_TASK_TRACKING=y -# CONFIG_HEAP_POISONING_COMPREHENSIVE=y - diff --git a/code/sdkconfig.xiao-esp32s3-sense-debug.defaults b/code/sdkconfig.xiao-esp32s3-sense-debug.defaults deleted file mode 100644 index b7fe751c2..000000000 --- a/code/sdkconfig.xiao-esp32s3-sense-debug.defaults +++ /dev/null @@ -1,33 +0,0 @@ -# -# Bootloader config -# -CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y -CONFIG_BOOTLOADER_LOG_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y -CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 -CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=n - - -# -# LWIP -# -CONFIG_LWIP_ESP_LWIP_ASSERT=y - - -# -# Hardware Abstraction Layer (HAL) and Low Level (LL) -# -CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y - - -# -# Log output -# -CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y - - -# -# Common ESP-related -# -CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y diff --git a/code/sdkconfig.xiao-esp32s3-sense-task-analysis.defaults b/code/sdkconfig.xiao-esp32s3-sense-task-analysis.defaults deleted file mode 100644 index 38463b99f..000000000 --- a/code/sdkconfig.xiao-esp32s3-sense-task-analysis.defaults +++ /dev/null @@ -1,16 +0,0 @@ -# -# FreeRTOS Kernel -# -CONFIG_FREERTOS_USE_TRACE_FACILITY=1 -CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y -CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y - - -# -# Heap memory debugging -# -CONFIG_HEAP_TRACING_STANDALONE=y -# CONFIG_HEAP_POISONING_LIGHT=y -# CONFIG_HEAP_TASK_TRACKING=y -# CONFIG_HEAP_POISONING_COMPREHENSIVE=y -