四博 AI-S3 双目交互终端方案:ESP32-S3 + VB6824 + 双屏动画 + 四路触控 + 姿态感应实现

四博 AI-S3 双目交互终端方案:ESP32-S3 + VB6824 + 双屏动画 + 四路触控 + 姿态感应实现

1. 方案概述

四博 AI-S3 双目是一套基于 ESP32-S3 + VB6824 + 双目光屏 + 触控交互 + 姿态传感器 + 震动马达 的 AI 情感交互硬件方案。它既可以作为 AI 桌面宠物、AI 陪伴机器人,也可以作为 AI 语音助手、AI 学习陪伴终端、品牌定制交互模组使用。

根据四博 AI 开发宝典,AI-S3 双目方案支持两块显示屏、主板、外壳等完整硬件组合,主板内置小智智能体,支持 2.4G Wi-Fi 上网,同时可扩展 4G 模组,并支持 0.71 寸和 1.28 寸屏幕。 四博资料中也明确提到,AI-S3 双目双屏采用 ESP32S3R8 + 16M Flash + VB6824,内置小智 AI 语音大模型,可选小智、豆包、ChatGPT 等主流大模型,支持全开源和二次开发。

本方案重点不是简单做两个屏幕显示"眼睛",而是构建一套完整的交互系统:

复制代码

ESP32-S3 主控

  • 双目光屏

  • 四路触控感应

  • 震动马达

  • 三轴姿态传感器

  • VB6824 语音唤醒 / AEC / 离线命令

  • Wi-Fi / BLE 配网

  • 云端 AI 大模型

  • 四博小助手小程序

= 四博 AI-S3 双目交互终端


2. 硬件方案设计

2.1 推荐硬件配置

复制代码

主控:ESP32-S3R8 / ESPS3-32 N16R8

Flash:16MB

PSRAM:8MB

语音芯片:VB6824

显示:0.71 寸双目屏 / 1.28 寸双目屏

触控:4 路触摸感应

震动:ERM / LRA 震动马达

姿态:三轴加速度计 / 六轴 IMU 可选

音频:麦克风 + 喇叭 + 功放

联网:2.4G Wi-Fi + BLE

配置:四博小助手小程序

AI:小智 / 豆包 / ChatGPT / 私有化大模型

四博 AI 开发宝典中说明,1.28 寸屏幕分辨率为 240×240 ,0.71 寸屏幕分辨率为 160×160。 四博模组选型手册中,ESPS3-32 系列包含 N4、N8、N8R2、N16R2、N16R8 等型号,芯片覆盖 ESP32-S3 / S3R2 / S3R8,并兼容 ESP32-S3-WROOM-1 系列模组。


3. 系统架构

复制代码

┌────────────────────────────────────┐

│ 应用层 │

│ AI对话 / 眼神动画 / 情绪状态 / 游戏 │

├────────────────────────────────────┤

│ 交互层 │

│ 触摸 / 姿态 / 震动 / 语音唤醒 │

├────────────────────────────────────┤

│ 服务层 │

│ Eye Engine / Touch / IMU / Haptic │

│ Audio / AI WebSocket / OTA / NVS │

├────────────────────────────────────┤

│ 驱动层 │

│ LCD / I2C / GPIO / UART / I2S │

├────────────────────────────────────┤

│ 硬件层 │

│ ESP32-S3 / VB6824 / 双屏 / 传感器 │

└────────────────────────────────────┘

四博 AI 硬件选型资料中提到,ESP32-C2/C3/S3 + VB6824 语音方案已经成熟应用于电子吧唧、S3 双目、S3 拍学机、地球仪、拍拍灯等场景;VB6824 可完成音频编解码、AEC、语音唤醒和改唤醒词,让主控芯片专注通信及 UI。


4. 工程目录建议

复制代码

sibo_ai_eye_s3/

├── main/

│ ├── app_main.c

│ ├── board_config.h

│ ├── app_event.h

│ ├── app_event.c

│ ├── eye_engine.c

│ ├── eye_engine.h

│ ├── eye_assets.h

│ ├── dual_lcd.c

│ ├── dual_lcd.h

│ ├── touch_manager.c

│ ├── touch_manager.h

│ ├── imu_manager.c

│ ├── imu_manager.h

│ ├── haptic_motor.c

│ ├── haptic_motor.h

│ ├── vb6824_voice.c

│ ├── vb6824_voice.h

│ ├── ai_ws_client.c

│ ├── ai_ws_client.h

│ ├── app_config_sync.c

│ ├── app_config_sync.h

│ └── ota_manager.c

├── components/

│ ├── lcd_driver/

│ ├── qmi8658_driver/

│ ├── cst_touch/

│ ├── audio_player/

│ └── json_helper/

├── partitions.csv

├── sdkconfig.defaults

└── CMakeLists.txt


5. board_config.h

复制代码

#pragma once

#include "driver/gpio.h"

#include "driver/uart.h"

#define PRODUCT_NAME "SIBO_AI_S3_EYE"

#define DEVICE_ID "SIBO_EYE_001122334455"

/* Screen Type */

#define SCREEN_TYPE_071 0

#define SCREEN_TYPE_128 1

#define CONFIG_EYE_SCREEN_TYPE SCREEN_TYPE_128

#if CONFIG_EYE_SCREEN_TYPE == SCREEN_TYPE_128

#define EYE_LCD_WIDTH 240

#define EYE_LCD_HEIGHT 240

#else

#define EYE_LCD_WIDTH 160

#define EYE_LCD_HEIGHT 160

#endif

/* Left Eye LCD */

#define LCD_L_CS GPIO_NUM_10

#define LCD_L_DC GPIO_NUM_11

#define LCD_L_RST GPIO_NUM_12

#define LCD_L_BL GPIO_NUM_13

/* Right Eye LCD */

#define LCD_R_CS GPIO_NUM_14

#define LCD_R_DC GPIO_NUM_15

#define LCD_R_RST GPIO_NUM_16

#define LCD_R_BL GPIO_NUM_17

/* SPI */

#define LCD_SPI_MOSI GPIO_NUM_6

#define LCD_SPI_SCLK GPIO_NUM_7

#define LCD_SPI_HOST_ID SPI2_HOST

/* Touch */

#define TOUCH_1_GPIO GPIO_NUM_1

#define TOUCH_2_GPIO GPIO_NUM_2

#define TOUCH_3_GPIO GPIO_NUM_3

#define TOUCH_4_GPIO GPIO_NUM_4

/* Haptic Motor */

#define MOTOR_PWM_GPIO GPIO_NUM_5

#define MOTOR_PWM_FREQ 2000

#define MOTOR_PWM_TIMER LEDC_TIMER_0

#define MOTOR_PWM_CHANNEL LEDC_CHANNEL_0

/* IMU I2C */

#define IMU_I2C_SDA GPIO_NUM_8

#define IMU_I2C_SCL GPIO_NUM_9

#define IMU_I2C_PORT I2C_NUM_0

/* VB6824 UART */

#define VB6824_UART_NUM UART_NUM_1

#define VB6824_UART_TX GPIO_NUM_18

#define VB6824_UART_RX GPIO_NUM_19

#define VB6824_BAUD 115200

/* AI Server */

#define AI_WS_URL "wss://ai.example.com/sibo/eye/ws"


6. 事件系统设计

AI 双目不能简单写成 UI 循环。语音、触控、姿态、AI 返回、震动反馈都应该通过事件分发。

复制代码

typedef enum {

APP_EVT_NONE = 0,

APP_EVT_WIFI_READY,

APP_EVT_AI_CONNECTED,

APP_EVT_AI_JSON,

APP_EVT_WAKEUP,

APP_EVT_TOUCH_1,

APP_EVT_TOUCH_2,

APP_EVT_TOUCH_3,

APP_EVT_TOUCH_4,

APP_EVT_GESTURE_SHAKE,

APP_EVT_GESTURE_TILT_LEFT,

APP_EVT_GESTURE_TILT_RIGHT,

APP_EVT_GESTURE_PICKUP,

APP_EVT_EYE_IDLE,

APP_EVT_EYE_HAPPY,

APP_EVT_EYE_SLEEPY,

APP_EVT_EYE_ANGRY,

APP_EVT_EYE_THINKING,

APP_EVT_EYE_SPEAKING,

APP_EVT_HAPTIC_SHORT,

APP_EVT_HAPTIC_LONG,

APP_EVT_OTA_NOTIFY,

} app_evt_id_t;

typedef struct {

app_evt_id_t id;

void *data;

size_t len;

} app_evt_t;

复制代码

static QueueHandle_t s_evt_queue;

void app_event_init(void)

{

s_evt_queue = xQueueCreate(32, sizeof(app_evt_t));

}

void app_event_send(app_evt_id_t id, void *data, size_t len)

{

if (!s_evt_queue) {

return;

}

app_evt_t evt = {

.id = id,

.data = data,

.len = len,

};

xQueueSend(s_evt_queue, &evt, pdMS_TO_TICKS(20));

}

QueueHandle_t app_event_queue(void)

{

return s_evt_queue;

}


7. 双目显示引擎

7.1 眼睛状态定义

复制代码

typedef enum {

EYE_STATE_IDLE = 0,

EYE_STATE_BLINK,

EYE_STATE_HAPPY,

EYE_STATE_SLEEPY,

EYE_STATE_ANGRY,

EYE_STATE_THINKING,

EYE_STATE_SPEAKING,

EYE_STATE_LISTENING,

} eye_state_t;

typedef struct {

eye_state_t state;

uint32_t frame_index;

uint32_t last_tick;

bool mirror_mode;

} eye_engine_t;

static eye_engine_t s_eye = {

.state = EYE_STATE_IDLE,

.frame_index = 0,

.mirror_mode = true,

};

7.2 眼睛动画刷新

复制代码

static const uint16_t *eye_get_frame(eye_state_t state, uint32_t index)

{

switch (state) {

case EYE_STATE_IDLE:

return eye_idle_frames[index % EYE_IDLE_FRAME_COUNT];

case EYE_STATE_BLINK:

return eye_blink_frames[index % EYE_BLINK_FRAME_COUNT];

case EYE_STATE_HAPPY:

return eye_happy_frames[index % EYE_HAPPY_FRAME_COUNT];

case EYE_STATE_THINKING:

return eye_thinking_frames[index % EYE_THINKING_FRAME_COUNT];

case EYE_STATE_SPEAKING:

return eye_speaking_frames[index % EYE_SPEAKING_FRAME_COUNT];

default:

return eye_idle_frames[0];

}

}

void eye_engine_set_state(eye_state_t state)

{

s_eye.state = state;

s_eye.frame_index = 0;

s_eye.last_tick = xTaskGetTickCount();

}

void eye_engine_task(void *arg)

{

while (1) {

const uint16_t *frame = eye_get_frame(s_eye.state, s_eye.frame_index);

dual_lcd_draw_left(frame, EYE_LCD_WIDTH, EYE_LCD_HEIGHT);

if (s_eye.mirror_mode) {

dual_lcd_draw_right_mirror(frame, EYE_LCD_WIDTH, EYE_LCD_HEIGHT);

} else {

dual_lcd_draw_right(frame, EYE_LCD_WIDTH, EYE_LCD_HEIGHT);

}

s_eye.frame_index++;

if (s_eye.state == EYE_STATE_IDLE && s_eye.frame_index % 60 == 0) {

eye_engine_set_state(EYE_STATE_BLINK);

}

if (s_eye.state == EYE_STATE_BLINK && s_eye.frame_index >= EYE_BLINK_FRAME_COUNT) {

eye_engine_set_state(EYE_STATE_IDLE);

}

vTaskDelay(pdMS_TO_TICKS(33)); // 约 30 FPS

}

}


8. 双屏驱动封装

复制代码

void dual_lcd_init(void)

{

lcd_bus_init(LCD_SPI_HOST_ID, LCD_SPI_MOSI, LCD_SPI_SCLK);

lcd_panel_init(LCD_L_CS, LCD_L_DC, LCD_L_RST, LCD_L_BL);

lcd_panel_init(LCD_R_CS, LCD_R_DC, LCD_R_RST, LCD_R_BL);

lcd_backlight_set(LCD_L_BL, 80);

lcd_backlight_set(LCD_R_BL, 80);

}

void dual_lcd_draw_left(const uint16_t *rgb565, int w, int h)

{

lcd_panel_draw_bitmap(LCD_L_CS, 0, 0, w, h, rgb565);

}

void dual_lcd_draw_right(const uint16_t *rgb565, int w, int h)

{

lcd_panel_draw_bitmap(LCD_R_CS, 0, 0, w, h, rgb565);

}

void dual_lcd_draw_right_mirror(const uint16_t *rgb565, int w, int h)

{

static uint16_t *mirror_buf = NULL;

if (!mirror_buf) {

mirror_buf = heap_caps_malloc(w * h * sizeof(uint16_t), MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);

}

if (!mirror_buf) {

return;

}

for (int y = 0; y < h; y++) {

for (int x = 0; x < w; x++) {

mirror_buf[y * w + x] = rgb565[y * w + (w - 1 - x)];

}

}

lcd_panel_draw_bitmap(LCD_R_CS, 0, 0, w, h, mirror_buf);

}


9. 四路触控感应

四路触控可以映射为不同交互动作:

复制代码

触控 1:摸头 / 唤醒

触控 2:切换表情

触控 3:确认 / 开始对话

触控 4:返回 / 退出

复制代码

typedef struct {

gpio_num_t gpio;

app_evt_id_t event;

uint32_t last_tick;

bool last_level;

} touch_key_t;

static touch_key_t s_touch_keys[] = {

{TOUCH_1_GPIO, APP_EVT_TOUCH_1, 0, true},

{TOUCH_2_GPIO, APP_EVT_TOUCH_2, 0, true},

{TOUCH_3_GPIO, APP_EVT_TOUCH_3, 0, true},

{TOUCH_4_GPIO, APP_EVT_TOUCH_4, 0, true},

};

void touch_manager_init(void)

{

for (int i = 0; i < 4; i++) {

gpio_config_t io = {

.pin_bit_mask = 1ULL << s_touch_keys[i].gpio,

.mode = GPIO_MODE_INPUT,

.pull_up_en = GPIO_PULLUP_ENABLE,

.pull_down_en = GPIO_PULLDOWN_DISABLE,

.intr_type = GPIO_INTR_DISABLE,

};

gpio_config(&io);

}

}

void touch_manager_task(void *arg)

{

while (1) {

uint32_t now = xTaskGetTickCount();

for (int i = 0; i < 4; i++) {

bool level = gpio_get_level(s_touch_keys[i].gpio);

if (s_touch_keys[i].last_level == true && level == false) {

if (now - s_touch_keys[i].last_tick > pdMS_TO_TICKS(200)) {

app_event_send(s_touch_keys[i].event, NULL, 0);

s_touch_keys[i].last_tick = now;

}

}

s_touch_keys[i].last_level = level;

}

vTaskDelay(pdMS_TO_TICKS(20));

}

}


10. 震动马达反馈

复制代码

void haptic_motor_init(void)

{

ledc_timer_config_t timer_conf = {

.speed_mode = LEDC_LOW_SPEED_MODE,

.timer_num = MOTOR_PWM_TIMER,

.duty_resolution = LEDC_TIMER_10_BIT,

.freq_hz = MOTOR_PWM_FREQ,

.clk_cfg = LEDC_AUTO_CLK,

};

ledc_timer_config(&timer_conf);

ledc_channel_config_t ch_conf = {

.gpio_num = MOTOR_PWM_GPIO,

.speed_mode = LEDC_LOW_SPEED_MODE,

.channel = MOTOR_PWM_CHANNEL,

.timer_sel = MOTOR_PWM_TIMER,

.duty = 0,

.hpoint = 0,

};

ledc_channel_config(&ch_conf);

}

static void haptic_set_duty(uint32_t duty)

{

ledc_set_duty(LEDC_LOW_SPEED_MODE, MOTOR_PWM_CHANNEL, duty);

ledc_update_duty(LEDC_LOW_SPEED_MODE, MOTOR_PWM_CHANNEL);

}

void haptic_short(void)

{

haptic_set_duty(700);

vTaskDelay(pdMS_TO_TICKS(60));

haptic_set_duty(0);

}

void haptic_long(void)

{

haptic_set_duty(850);

vTaskDelay(pdMS_TO_TICKS(180));

haptic_set_duty(0);

}


11. 三轴姿态传感器

姿态传感器可以用于"拿起唤醒""左右摇头切换表情""摇一摇进入随机对话"。

复制代码

typedef struct {

float ax;

float ay;

float az;

} imu_accel_t;

static bool imu_detect_shake(imu_accel_t *a)

{

float energy = a->ax * a->ax + a->ay * a->ay + a->az * a->az;

return energy > 4.0f;

}

static bool imu_detect_tilt_left(imu_accel_t *a)

{

return a->ax < -0.55f;

}

static bool imu_detect_tilt_right(imu_accel_t *a)

{

return a->ax > 0.55f;

}

void imu_manager_task(void *arg)

{

imu_accel_t acc;

uint32_t last_event_tick = 0;

while (1) {

if (imu_read_accel(&acc) == ESP_OK) {

uint32_t now = xTaskGetTickCount();

if (now - last_event_tick > pdMS_TO_TICKS(500)) {

if (imu_detect_shake(&acc)) {

app_event_send(APP_EVT_GESTURE_SHAKE, NULL, 0);

last_event_tick = now;

} else if (imu_detect_tilt_left(&acc)) {

app_event_send(APP_EVT_GESTURE_TILT_LEFT, NULL, 0);

last_event_tick = now;

} else if (imu_detect_tilt_right(&acc)) {

app_event_send(APP_EVT_GESTURE_TILT_RIGHT, NULL, 0);

last_event_tick = now;

}

}

}

vTaskDelay(pdMS_TO_TICKS(50));

}

}


12. VB6824 语音事件接入

复制代码

typedef enum {

VB_CMD_WAKEUP = 0x01,

VB_CMD_CHAT = 0x02,

VB_CMD_STOP = 0x03,

VB_CMD_NEXT_EMOTION = 0x04,

VB_CMD_SLEEP = 0x05,

} vb_cmd_t;

static void vb_dispatch_cmd(uint8_t cmd)

{

switch (cmd) {

case VB_CMD_WAKEUP:

app_event_send(APP_EVT_WAKEUP, NULL, 0);

break;

case VB_CMD_CHAT:

app_event_send(APP_EVT_EYE_LISTENING, NULL, 0);

ai_ws_send_chat("用户发起语音对话");

break;

case VB_CMD_STOP:

app_event_send(APP_EVT_EYE_IDLE, NULL, 0);

break;

case VB_CMD_NEXT_EMOTION:

app_event_send(APP_EVT_EYE_HAPPY, NULL, 0);

break;

case VB_CMD_SLEEP:

app_event_send(APP_EVT_EYE_SLEEPY, NULL, 0);

break;

default:

break;

}

}


13. AI 协议设计

四博小助手小程序能力可以用于配置克隆音色、知识库、大模型、MCP 工具和素材更新。四博 AI 资料中提到,配合"四博小助手"小程序,可实现 AI 对话、声音克隆、知识库接入、MCP 扩展能力以及素材与固件在线更新。

设备上线 JSON:

复制代码

{

"type": "hello",

"device_id": "SIBO_EYE_001122334455",

"product": "SIBO_AI_S3_EYE",

"screen": "1.28_dual",

"capability": {

"dual_eye": true,

"touch_keys": 4,

"haptic": true,

"imu": true,

"voice_clone": true,

"knowledge_base": true,

"mcp": true

}

}

AI 对话请求:

复制代码

{

"type": "chat",

"session_id": "eye_session_0001",

"text": "给我讲一个关于太空的小故事",

"emotion": "happy",

"tts": true

}

AI 返回:

复制代码

{

"type": "ai_result",

"text": "从前有一颗小星星,它每天都在银河里旅行......",

"tts_url": "https://cdn.example.com/tts/eye_001.mp3",

"emotion": "happy",

"haptic": "short"

}


14. WebSocket 解析与表情联动

复制代码

void ai_parse_json(const char *json)

{

cJSON *root = cJSON_Parse(json);

if (!root) {

return;

}

cJSON *type = cJSON_GetObjectItem(root, "type");

if (cJSON_IsString(type) &&

strcmp(type->valuestring, "ai_result") == 0) {

cJSON *text = cJSON_GetObjectItem(root, "text");

cJSON *tts = cJSON_GetObjectItem(root, "tts_url");

cJSON *emotion = cJSON_GetObjectItem(root, "emotion");

cJSON *haptic = cJSON_GetObjectItem(root, "haptic");

if (cJSON_IsString(text)) {

ui_show_subtitle(text->valuestring);

}

if (cJSON_IsString(emotion)) {

if (strcmp(emotion->valuestring, "happy") == 0) {

eye_engine_set_state(EYE_STATE_HAPPY);

} else if (strcmp(emotion->valuestring, "thinking") == 0) {

eye_engine_set_state(EYE_STATE_THINKING);

} else {

eye_engine_set_state(EYE_STATE_IDLE);

}

}

if (cJSON_IsString(tts)) {

eye_engine_set_state(EYE_STATE_SPEAKING);

audio_player_play_url(tts->valuestring);

}

if (cJSON_IsString(haptic)) {

if (strcmp(haptic->valuestring, "short") == 0) {

app_event_send(APP_EVT_HAPTIC_SHORT, NULL, 0);

} else if (strcmp(haptic->valuestring, "long") == 0) {

app_event_send(APP_EVT_HAPTIC_LONG, NULL, 0);

}

}

}

cJSON_Delete(root);

}


15. 应用事件分发

复制代码

static void app_handle_event(app_evt_t *evt)

{

switch (evt->id) {

case APP_EVT_WAKEUP:

eye_engine_set_state(EYE_STATE_LISTENING);

haptic_short();

ui_show_subtitle("我在,请说");

break;

case APP_EVT_TOUCH_1:

eye_engine_set_state(EYE_STATE_HAPPY);

haptic_short();

break;

case APP_EVT_TOUCH_2:

eye_engine_set_state(EYE_STATE_THINKING);

ai_ws_send_chat("请随机给我一个有趣的问题");

break;

case APP_EVT_TOUCH_3:

eye_engine_set_state(EYE_STATE_LISTENING);

ai_ws_send_chat("用户开始语音对话");

break;

case APP_EVT_TOUCH_4:

eye_engine_set_state(EYE_STATE_IDLE);

ui_show_subtitle("已返回");

break;

case APP_EVT_GESTURE_SHAKE:

eye_engine_set_state(EYE_STATE_HAPPY);

ai_ws_send_chat("我摇了摇你,给我一个惊喜互动");

haptic_long();

break;

case APP_EVT_GESTURE_TILT_LEFT:

eye_engine_set_state(EYE_STATE_SLEEPY);

break;

case APP_EVT_GESTURE_TILT_RIGHT:

eye_engine_set_state(EYE_STATE_HAPPY);

break;

case APP_EVT_AI_JSON:

ai_parse_json((const char *)evt->data);

free(evt->data);

break;

case APP_EVT_HAPTIC_SHORT:

haptic_short();

break;

case APP_EVT_HAPTIC_LONG:

haptic_long();

break;

default:

break;

}

}


16. app_main.c

复制代码

void app_main(void)

{

nvs_flash_init();

app_event_init();

dual_lcd_init();

touch_manager_init();

haptic_motor_init();

imu_manager_init();

vb6824_voice_init();

ai_ws_client_init();

eye_engine_set_state(EYE_STATE_IDLE);

xTaskCreate(eye_engine_task, "eye_engine", 8192, NULL, 6, NULL);

xTaskCreate(touch_manager_task, "touch", 4096, NULL, 5, NULL);

xTaskCreate(imu_manager_task, "imu", 4096, NULL, 5, NULL);

xTaskCreate(vb6824_voice_task, "vb6824", 4096, NULL, 7, NULL);

xTaskCreate(app_dispatch_task, "app_dispatch", 8192, NULL, 8, NULL);

wifi_manager_start();

ai_ws_client_start();

ui_show_subtitle("四博 AI-S3 双目启动完成");

}


17. sdkconfig.defaults

复制代码

CONFIG_IDF_TARGET="esp32s3"

CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y

CONFIG_SPIRAM=y

CONFIG_SPIRAM_USE_MALLOC=y

CONFIG_SPIRAM_SPEED_80M=y

CONFIG_FREERTOS_HZ=1000

CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192

CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10

CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32

CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384

CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096

CONFIG_BT_ENABLED=y

CONFIG_BT_NIMBLE_ENABLED=y


18. 总结

四博 AI-S3 双目方案的核心价值在于:

复制代码

双目光屏:负责情绪表达

四路触控:负责主动交互

震动马达:负责触觉反馈

三轴传感器:负责姿态感应

VB6824:负责唤醒、AEC、离线命令

ESP32-S3:负责 UI、网络、AI 协议和调度

四博小助手:负责配网、语音克隆、知识库、MCP 和 OTA

这套方案适合 AI 桌面宠物、AI 陪伴机器人、AI 学习助手、AI 玩具、品牌 IP 互动终端和 B 端定制硬件。

相关推荐
byte轻骑兵5 小时前
【HID】规范精讲[7]: 蓝牙HID底层核心——基带与LMP依赖深度解析
网络·人工智能·人机交互·蓝牙·键盘·hid
直奔標竿5 小时前
Java开发者AI转型第二十课!Spring AI MCP 双向实战:客户端与服务端手把手落地
java·开发语言·人工智能·spring boot·后端·spring
ting94520005 小时前
微软 VibeVoice 万字深度解析:从原理、架构、部署到行业落地,重新定义长音频 AI
人工智能·架构·音视频
沪漂阿龙5 小时前
OpenAI Agents SDK 完全指南:从“只会动嘴”到“真正干活”的AI
人工智能
QuestLab5 小时前
【第27期】2026年4月30日 AI日报
人工智能·microsoft
十铭忘5 小时前
Controlnet的理解1——引言和相关工作
人工智能
小仙女的小稀罕5 小时前
财经专业老师开展讲座适用的权威理财产品分析工具
人工智能·自然语言处理
wayz115 小时前
Day 17 编程实战:MLP神经网络金融预测
人工智能·神经网络·金融
烟雨江南7855 小时前
精度与速度的终极博弈:语音识别本地部署中的 INT8 量化与 TensorRT 插件级加速全流程
人工智能·语音识别