diff --git a/examples/esp32-s3-eye/main/Kconfig.projbuild b/examples/esp32-s3-eye/main/Kconfig.projbuild deleted file mode 100644 index 92afa98..0000000 --- a/examples/esp32-s3-eye/main/Kconfig.projbuild +++ /dev/null @@ -1,13 +0,0 @@ -menu "ESP32-S3-EYE Firmware" - choice ESP_SR_LANGUAGE - bool "esp-sr language" - default CN_MODEL - help - Select ESP-SR Language. - - config CN_MODEL - bool "Chinese" - config EN_MODEL - bool "English" - endchoice -endmenu \ No newline at end of file diff --git a/examples/esp32-s3-eye/main/app_main.cpp b/examples/esp32-s3-eye/main/app_main.cpp index 22fc339..51a253c 100755 --- a/examples/esp32-s3-eye/main/app_main.cpp +++ b/examples/esp32-s3-eye/main/app_main.cpp @@ -1,6 +1,6 @@ #include "driver/gpio.h" -#include "app_buttom.hpp" +#include "app_button.hpp" #include "app_camera.hpp" #include "app_lcd.hpp" #include "app_led.hpp" @@ -14,13 +14,13 @@ extern "C" void app_main() QueueHandle_t xQueueFrame_1 = xQueueCreate(2, sizeof(camera_fb_t *)); QueueHandle_t xQueueFrame_2 = xQueueCreate(2, sizeof(camera_fb_t *)); - AppButtom *key = new AppButtom(); + AppButton *key = new AppButton(); AppSpeech *speech = new AppSpeech(); AppCamera *camera = new AppCamera(PIXFORMAT_RGB565, FRAMESIZE_240X240, 2, xQueueFrame_0); AppFace *face = new AppFace(key, speech, xQueueFrame_0, xQueueFrame_1); AppMotion *motion = new AppMotion(key, speech, xQueueFrame_1, xQueueFrame_2); AppLCD *lcd = new AppLCD(key, speech, xQueueFrame_2); - LED *led = new LED(GPIO_NUM_3, key, speech); + AppLED *led = new AppLED(GPIO_NUM_3, key, speech); key->attach(face); key->attach(motion); diff --git a/examples/esp32-s3-eye/main/include/app_buttom.hpp b/examples/esp32-s3-eye/main/include/app_buttom.hpp deleted file mode 100644 index f1de93d..0000000 --- a/examples/esp32-s3-eye/main/include/app_buttom.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include - -#include "__base__.hpp" - -typedef enum -{ - _IDLE = 0, - _MENU, - _PLAY, - _UP, - _DOWN -} _key_name_t; - -typedef struct -{ - _key_name_t key; /**< button index on the channel */ - int min; /**< min voltage in mv corresponding to the button */ - int max; /**< max voltage in mv corresponding to the button */ -} key_config_t; - -class AppButtom : public Subject -{ -public: - std::vector key_configs; - _key_name_t pressed; - - uint8_t menu; - - AppButtom(); - ~AppButtom(); - - void run(); -}; diff --git a/examples/esp32-s3-eye/main/include/app_button.hpp b/examples/esp32-s3-eye/main/include/app_button.hpp new file mode 100644 index 0000000..7334314 --- /dev/null +++ b/examples/esp32-s3-eye/main/include/app_button.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include + +#include "__base__.hpp" + +typedef enum +{ + BUTTON_IDLE = 0, + BUTTON_MENU, + BUTTON_PLAY, + BUTTON_UP, + BUTTON_DOWN +} button_name_t; + +typedef struct +{ + button_name_t key; /**< button index on the channel */ + int min; /**< min voltage in mv corresponding to the button */ + int max; /**< max voltage in mv corresponding to the button */ +} key_config_t; + +class AppButton : public Subject +{ +public: + std::vector key_configs; + button_name_t pressed; + + uint8_t menu; + + AppButton(); + ~AppButton(); + + void run(); +}; diff --git a/examples/esp32-s3-eye/main/include/app_camera.hpp b/examples/esp32-s3-eye/main/include/app_camera.hpp index 2e02fa9..9f1ebaf 100644 --- a/examples/esp32-s3-eye/main/include/app_camera.hpp +++ b/examples/esp32-s3-eye/main/include/app_camera.hpp @@ -2,11 +2,6 @@ #include -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/task.h" -#include "freertos/semphr.h" - #include "esp_camera.h" #include "__base__.hpp" diff --git a/examples/esp32-s3-eye/main/include/app_face.hpp b/examples/esp32-s3-eye/main/include/app_face.hpp index 11bdb8e..eae6433 100644 --- a/examples/esp32-s3-eye/main/include/app_face.hpp +++ b/examples/esp32-s3-eye/main/include/app_face.hpp @@ -1,17 +1,21 @@ #pragma once +#include "sdkconfig.h" + #include "human_face_detect_msr01.hpp" #include "human_face_detect_mnp01.hpp" #include "face_recognition_tool.hpp" -// #if CONFIG_MFN_V1_Q8 -// #include "face_recognition_112_v1_s8.hpp" -// #elif CONFIG_MFN_V1_Q16 +#if CONFIG_MFN_V1 +#if CONFIG_S8 +#include "face_recognition_112_v1_s8.hpp" +#elif CONFIG_S16 #include "face_recognition_112_v1_s16.hpp" -// #endif +#endif +#endif #include "__base__.hpp" #include "app_camera.hpp" -#include "app_buttom.hpp" +#include "app_button.hpp" #include "app_speech.hpp" typedef enum @@ -25,18 +29,20 @@ typedef enum class AppFace : public Observer, public Frame { private: - AppButtom *key; + AppButton *key; AppSpeech *speech; public: HumanFaceDetectMSR01 detector; HumanFaceDetectMNP01 detector2; - // #if CONFIG_MFN_V1_Q8 - // FaceRecognition112V1S8 *recognizer; - // #elif CONFIG_MFN_V1_Q16 +#if CONFIG_MFN_V1 +#if CONFIG_S8 + FaceRecognition112V1S8 *recognizer; +#elif CONFIG_S16 FaceRecognition112V1S16 *recognizer; - // #endif +#endif +#endif face_info_t recognize_result; recognizer_state_t state; @@ -46,11 +52,11 @@ public: uint8_t frame_count; - AppFace(AppButtom *key, - AppSpeech *speech, - QueueHandle_t queue_i = nullptr, - QueueHandle_t queue_o = nullptr, - void (*callback)(camera_fb_t *) = esp_camera_fb_return); + AppFace(AppButton *key, + AppSpeech *speech, + QueueHandle_t queue_i = nullptr, + QueueHandle_t queue_o = nullptr, + void (*callback)(camera_fb_t *) = esp_camera_fb_return); ~AppFace(); void update(); diff --git a/examples/esp32-s3-eye/main/include/app_lcd.hpp b/examples/esp32-s3-eye/main/include/app_lcd.hpp index 6b11a4f..54caa41 100644 --- a/examples/esp32-s3-eye/main/include/app_lcd.hpp +++ b/examples/esp32-s3-eye/main/include/app_lcd.hpp @@ -1,12 +1,10 @@ #pragma once -#include -#include "esp_log.h" #include "screen_driver.h" #include "__base__.hpp" #include "app_camera.hpp" -#include "app_buttom.hpp" +#include "app_button.hpp" #include "app_speech.hpp" #define BOARD_LCD_MOSI 47 @@ -28,7 +26,7 @@ class AppLCD : public Observer, public Frame { private: - AppButtom *key; + AppButton *key; AppSpeech *speech; public: @@ -36,7 +34,7 @@ public: bool switch_on; bool paper_drawn; - AppLCD(AppButtom *key, + AppLCD(AppButton *key, AppSpeech *speech, QueueHandle_t xQueueFrameI = nullptr, QueueHandle_t xQueueFrameO = nullptr, diff --git a/examples/esp32-s3-eye/main/include/app_led.hpp b/examples/esp32-s3-eye/main/include/app_led.hpp index 8167916..4d71666 100644 --- a/examples/esp32-s3-eye/main/include/app_led.hpp +++ b/examples/esp32-s3-eye/main/include/app_led.hpp @@ -5,19 +5,18 @@ #include "freertos/task.h" #include "driver/gpio.h" -#include "app_buttom.hpp" +#include "app_button.hpp" #include "app_speech.hpp" -class LED : public Observer +class AppLED : public Observer { private: const gpio_num_t pin; - AppButtom *key; + AppButton *key; AppSpeech *sr; public: - LED(const gpio_num_t pin, AppButtom *key, AppSpeech *sr); - ~LED(); + AppLED(const gpio_num_t pin, AppButton *key, AppSpeech *sr); void update(); }; diff --git a/examples/esp32-s3-eye/main/include/app_motion.hpp b/examples/esp32-s3-eye/main/include/app_motion.hpp index 93a3909..4aaccae 100644 --- a/examples/esp32-s3-eye/main/include/app_motion.hpp +++ b/examples/esp32-s3-eye/main/include/app_motion.hpp @@ -2,23 +2,23 @@ #include "__base__.hpp" #include "app_camera.hpp" -#include "app_buttom.hpp" +#include "app_button.hpp" #include "app_speech.hpp" class AppMotion : public Observer, public Frame { private: - AppButtom *key; + AppButton *key; AppSpeech *speech; public: bool switch_on; - AppMotion(AppButtom *key, - AppSpeech *speech, - QueueHandle_t queue_i = nullptr, - QueueHandle_t queue_o = nullptr, - void (*callback)(camera_fb_t *) = esp_camera_fb_return); + AppMotion(AppButton *key, + AppSpeech *speech, + QueueHandle_t queue_i = nullptr, + QueueHandle_t queue_o = nullptr, + void (*callback)(camera_fb_t *) = esp_camera_fb_return); void update(); diff --git a/examples/esp32-s3-eye/main/include/app_speech.hpp b/examples/esp32-s3-eye/main/include/app_speech.hpp index 3b6009a..ffdcb0b 100644 --- a/examples/esp32-s3-eye/main/include/app_speech.hpp +++ b/examples/esp32-s3-eye/main/include/app_speech.hpp @@ -1,10 +1,5 @@ #pragma once -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/task.h" -#include "freertos/semphr.h" - #include "esp_afe_sr_iface.h" #include "__base__.hpp" diff --git a/examples/esp32-s3-eye/main/src/app_buttom.cpp b/examples/esp32-s3-eye/main/src/app_button.cpp similarity index 79% rename from examples/esp32-s3-eye/main/src/app_buttom.cpp rename to examples/esp32-s3-eye/main/src/app_button.cpp index 591022b..d838435 100644 --- a/examples/esp32-s3-eye/main/src/app_buttom.cpp +++ b/examples/esp32-s3-eye/main/src/app_button.cpp @@ -1,4 +1,4 @@ -#include "app_buttom.hpp" +#include "app_button.hpp" #include #include @@ -26,16 +26,16 @@ #define PRESS_INTERVAL 500000 -static const char *TAG = "App/Buttom"; +static const char *TAG = "App/Button"; -AppButtom::AppButtom() : key_configs({{_MENU, 2800, 3000}, {_PLAY, 2250, 2450}, {_UP, 300, 500}, {_DOWN, 850, 1050}}), - pressed(_IDLE) +AppButton::AppButton() : key_configs({{BUTTON_MENU, 2800, 3000}, {BUTTON_PLAY, 2250, 2450}, {BUTTON_UP, 300, 500}, {BUTTON_DOWN, 850, 1050}}), + pressed(BUTTON_IDLE) { ESP_ERROR_CHECK(adc1_config_width((adc_bits_width_t)ADC_WIDTH_BIT_DEFAULT)); ESP_ERROR_CHECK(adc1_config_channel_atten(ADC1_EXAMPLE_CHAN0, ADC_EXAMPLE_ATTEN)); } -static void task(AppButtom *self) +static void task(AppButton *self) { int64_t backup_time = esp_timer_get_time(); int64_t last_time = esp_timer_get_time(); @@ -52,10 +52,10 @@ static void task(AppButtom *self) { if (((backup_time - last_time) > PRESS_INTERVAL)) { - ESP_LOGD(TAG, "Key[%d] is pressed", self->pressed); self->pressed = key_config.key; + ESP_LOGI(TAG, "Button[%d] is clicked", self->pressed); - if (self->pressed == _MENU) + if (self->pressed == BUTTON_MENU) { self->menu++; self->menu %= (MENU_MOTION_DETECTION + 1); @@ -64,7 +64,7 @@ static void task(AppButtom *self) last_time = backup_time; self->notify(); - self->pressed = _IDLE; + self->pressed = BUTTON_IDLE; break; } } @@ -73,7 +73,7 @@ static void task(AppButtom *self) } } -void AppButtom::run() +void AppButton::run() { xTaskCreatePinnedToCore((TaskFunction_t)task, TAG, 3 * 1024, this, 5, NULL, 0); } diff --git a/examples/esp32-s3-eye/main/src/app_camera.cpp b/examples/esp32-s3-eye/main/src/app_camera.cpp index 2c7bca9..a2d4714 100644 --- a/examples/esp32-s3-eye/main/src/app_camera.cpp +++ b/examples/esp32-s3-eye/main/src/app_camera.cpp @@ -1,7 +1,5 @@ #include "app_camera.hpp" -#include "assert.h" - #include "esp_log.h" #include "esp_system.h" diff --git a/examples/esp32-s3-eye/main/src/app_face.cpp b/examples/esp32-s3-eye/main/src/app_face.cpp index be44ce4..2ca2953 100644 --- a/examples/esp32-s3-eye/main/src/app_face.cpp +++ b/examples/esp32-s3-eye/main/src/app_face.cpp @@ -52,55 +52,54 @@ static int rgb_printf(camera_fb_t *fb, uint32_t color, const char *format, ...) return len; } -AppFace::AppFace(AppButtom *key, - AppSpeech *speech, - QueueHandle_t queue_i, - QueueHandle_t queue_o, - void (*callback)(camera_fb_t *)) : Frame(queue_i, queue_o, callback), - key(key), - speech(speech), - detector(0.3F, 0.3F, 10, 0.3F), - detector2(0.4F, 0.3F, 10), - state(IDLE), - switch_on(false) -// recognizer( -// #if CONFIG_MFN_V1_Q8 -// new FaceRecognition112V1S8() -// #elif CONFIG_MFN_V1_Q16 -// new FaceRecognition112V1S16() -// #endif -// ) +AppFace::AppFace(AppButton *key, + AppSpeech *speech, + QueueHandle_t queue_i, + QueueHandle_t queue_o, + void (*callback)(camera_fb_t *)) : Frame(queue_i, queue_o, callback), + key(key), + speech(speech), + detector(0.3F, 0.3F, 10, 0.3F), + detector2(0.4F, 0.3F, 10), + state(IDLE), + switch_on(false) { - // this->recognizer = new FaceRecognition112V1S8(); +#if CONFIG_MFN_V1 +#if CONFIG_S8 + this->recognizer = new FaceRecognition112V1S8(); +#elif CONFIG_S16 this->recognizer = new FaceRecognition112V1S16(); +#endif +#endif this->recognizer->set_partition(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "fr"); - int partition_result = this->recognizer->set_ids_from_flash(); + this->recognizer->set_ids_from_flash(); } AppFace::~AppFace() { + delete this->recognizer; } void AppFace::update() { // Parse key - if (this->key->pressed > _IDLE) + if (this->key->pressed > BUTTON_IDLE) { - if (this->key->pressed == _MENU) + if (this->key->pressed == BUTTON_MENU) { this->switch_on = (this->key->menu == MENU_FACE_RECOGNITION) ? true : false; ESP_LOGD(TAG, "%s", this->switch_on ? "ON" : "OFF"); } - else if (this->key->pressed == _PLAY) + else if (this->key->pressed == BUTTON_PLAY) { this->state = RECOGNIZE; } - else if (this->key->pressed == _UP) + else if (this->key->pressed == BUTTON_UP) { this->state = ENROLL; } - else if (this->key->pressed == _DOWN) + else if (this->key->pressed == BUTTON_DOWN) { this->state = DELETE; } @@ -159,7 +158,7 @@ static void task(AppFace *self) { case ENROLL: self->recognizer->enroll_id((uint16_t *)frame->buf, {(int)frame->height, (int)frame->width, 3}, detect_results.front().keypoint, "", true); - ESP_LOGW(TAG, "Enroll ID %d", self->recognizer->get_enrolled_ids().back().id); + ESP_LOGI(TAG, "Enroll ID %d", self->recognizer->get_enrolled_ids().back().id); break; case RECOGNIZE: @@ -169,13 +168,13 @@ static void task(AppFace *self) if (self->recognize_result.id > 0) ESP_LOGI(TAG, "Match ID: %d", self->recognize_result.id); else - ESP_LOGE(TAG, "Match ID: %d", self->recognize_result.id); + ESP_LOGI(TAG, "Match ID: %d", self->recognize_result.id); break; case DELETE: vTaskDelay(10); self->recognizer->delete_id(true); - ESP_LOGE(TAG, "%d IDs left", self->recognizer->get_enrolled_id_num()); + ESP_LOGI(TAG, "%d IDs left", self->recognizer->get_enrolled_id_num()); break; default: diff --git a/examples/esp32-s3-eye/main/src/app_lcd.cpp b/examples/esp32-s3-eye/main/src/app_lcd.cpp index 6d2895c..663efce 100644 --- a/examples/esp32-s3-eye/main/src/app_lcd.cpp +++ b/examples/esp32-s3-eye/main/src/app_lcd.cpp @@ -2,6 +2,7 @@ #include +#include "esp_log.h" #include "esp_camera.h" #include "esp_lcd_panel_io.h" #include "esp_lcd_panel_vendor.h" @@ -13,7 +14,7 @@ static const char TAG[] = "App/LCD"; -AppLCD::AppLCD(AppButtom *key, +AppLCD::AppLCD(AppButton *key, AppSpeech *speech, QueueHandle_t queue_i, QueueHandle_t queue_o, @@ -120,9 +121,9 @@ void AppLCD::draw_color(int color) void AppLCD::update() { - if (this->key->pressed > _IDLE) + if (this->key->pressed > BUTTON_IDLE) { - if (this->key->pressed == _MENU) + if (this->key->pressed == BUTTON_MENU) { this->switch_on = (this->key->menu == MENU_STOP_WORKING) ? false : true; ESP_LOGD(TAG, "%s", this->switch_on ? "ON" : "OFF"); diff --git a/examples/esp32-s3-eye/main/src/app_led.cpp b/examples/esp32-s3-eye/main/src/app_led.cpp index 3df0b8f..d33212b 100644 --- a/examples/esp32-s3-eye/main/src/app_led.cpp +++ b/examples/esp32-s3-eye/main/src/app_led.cpp @@ -19,7 +19,7 @@ typedef enum LED_BLINK_4S = 10, } led_mode_t; -LED::LED(const gpio_num_t pin, AppButtom *key, AppSpeech *sr) : pin(pin), key(key), sr(sr) +AppLED::AppLED(const gpio_num_t pin, AppButton *key, AppSpeech *sr) : pin(pin), key(key), sr(sr) { // initialize GPIO gpio_config_t gpio_conf; @@ -33,14 +33,14 @@ LED::LED(const gpio_num_t pin, AppButtom *key, AppSpeech *sr) : pin(pin), key(ke gpio_set_level(this->pin, 0); } -void LED::update() +void AppLED::update() { led_mode_t mode = LED_ALWAYS_OFF; // parse key if (this->key->pressed) { - mode = LED_BLINK_2S; + mode = LED_BLINK_1S; } // parse speech recognition else if (this->sr->detected) diff --git a/examples/esp32-s3-eye/main/src/app_motion.cpp b/examples/esp32-s3-eye/main/src/app_motion.cpp index bebcfe6..e89078f 100644 --- a/examples/esp32-s3-eye/main/src/app_motion.cpp +++ b/examples/esp32-s3-eye/main/src/app_motion.cpp @@ -1,7 +1,5 @@ #include "app_motion.hpp" -#include "assert.h" - #include "esp_log.h" #include "esp_camera.h" @@ -9,20 +7,20 @@ static const char TAG[] = "App/Motion"; -AppMotion::AppMotion(AppButtom *key, - AppSpeech *speech, - QueueHandle_t queue_i, - QueueHandle_t queue_o, - void (*callback)(camera_fb_t *)) : Frame(queue_i, queue_o, callback), - key(key), - speech(speech), - switch_on(false) {} +AppMotion::AppMotion(AppButton *key, + AppSpeech *speech, + QueueHandle_t queue_i, + QueueHandle_t queue_o, + void (*callback)(camera_fb_t *)) : Frame(queue_i, queue_o, callback), + key(key), + speech(speech), + switch_on(false) {} void AppMotion::update() { - if (this->key->pressed > _IDLE) + if (this->key->pressed > BUTTON_IDLE) { - if (this->key->pressed == _MENU) + if (this->key->pressed == BUTTON_MENU) { this->switch_on = (this->key->menu == MENU_MOTION_DETECTION) ? true : false; ESP_LOGD(TAG, "%s", this->switch_on ? "ON" : "OFF"); diff --git a/examples/esp32-s3-eye/main/src/app_speech.cpp b/examples/esp32-s3-eye/main/src/app_speech.cpp index 4d65558..203389b 100644 --- a/examples/esp32-s3-eye/main/src/app_speech.cpp +++ b/examples/esp32-s3-eye/main/src/app_speech.cpp @@ -162,7 +162,7 @@ static void detect_hander(AppSpeech *self) else { self->notify(); - ESP_LOGD(TAG, "Command: %d", self->command); + ESP_LOGI(TAG, "Command: %d", self->command); #ifndef CONFIG_SR_MN_CN_MULTINET3_CONTINUOUS_RECOGNITION self->afe_handle->enable_wakenet(afe_data); diff --git a/examples/esp32-s3-eye/sdkconfig.defaults b/examples/esp32-s3-eye/sdkconfig.defaults index 6d4de9f..6482a54 100644 --- a/examples/esp32-s3-eye/sdkconfig.defaults +++ b/examples/esp32-s3-eye/sdkconfig.defaults @@ -25,7 +25,8 @@ CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y # Image Relation CONFIG_CAMERA_MODULE_ESP_S3_EYE=y CONFIG_LCD_DRIVER_SCREEN_CONTROLLER_ST7789=y -CONFIG_MFN_V1_Q8=y +CONFIG_MFN_V1=y +CONFIG_S8=y # Speech Relation