四博 AI 机械臂台灯智能音箱方案:让台灯具备视觉、语音、动作和学习陪伴能力
传统台灯只负责照明,传统音箱只负责播放,普通摄像头只负责观看。
但在 AI 硬件时代,桌面设备可以有新的形态:它既能听懂用户说话,又能通过摄像头观察环境;既能播放语音,又能控制机械臂和灯光;既能看窗外天气,也能辅助孩子学习陪伴。
四博 AI 机械臂台灯智能音箱方案,就是把AI 音箱、视觉识别、机械臂台灯、学习陪伴和智能家居入口组合成一个桌面 AI 终端。
它可以理解为:
四博 AI 机械臂台灯智能音箱 = ESP32-S3 AI 主控 + 摄像头视觉感知 + 麦克风语音采集 + 喇叭 TTS 播放 + 机械臂灯头控制 + 冷暖光 PWM 调光 + 屏幕 / 双目屏显示 + 学习陪伴智能体 + MCP 工具调用 + OTA 在线升级它不是普通台灯,也不是普通 AI 音箱,而是一个能“看、听、说、动、照明、陪伴、提醒、控制”的桌面 AI 设备。
一、产品定位:台灯从照明工具升级为桌面 AI 入口
四博 AI 机械臂台灯智能音箱,可以定位为:
AI 智能音箱 + 机械臂台灯 + 桌面视觉感知设备 + 学习陪伴终端 + 智能家居控制入口核心应用场景包括:
1. 看窗外天气 摄像头转向窗外,识别晴天、阴天、雨天、夜晚、光照强弱。 2. 看周边环境 判断桌面是否过暗、书本是否在视野内、用户是否在座位附近。 3. 学习陪伴 支持语音问答、英语跟读、古诗背诵、口算训练、学习计时、休息提醒。 4. 自动调光 根据环境亮度、学习状态和用户指令,自动调节亮度和色温。 5. 机械臂动作 灯头可转向书本、用户、窗户或指定方向。 6. AI 语音互动 支持小智、豆包、ChatGPT 或客户自有大模型服务。 7. 智能家居控制 通过 MCP / MQTT / HTTP 控制灯具、窗帘、空调、插座等设备。 8. OTA 在线升级 支持固件、动作参数、提示音、UI 资源、MCP 工具列表在线更新。这类产品的关键,不是把“台灯 + 音箱 + 摄像头”简单堆叠,而是通过 AI 把视觉、语音、灯光、机械动作和学习陪伴连接起来。
二、系统架构:端侧负责感知和执行,云端负责理解和生成
整体架构可以设计为:
用户语音 / 桌面环境 / 窗外画面 ↓ 麦克风 + 摄像头 + 环境传感器 ↓ ESP32-S3 AI 主控 ↓ 音频采集 / 图像采集 / 机械臂控制 / 灯光控制 / 屏幕显示 ↓ Wi-Fi / BLE / 4G 可选 ↓ ASR / LLM / TTS / 视觉理解 / MCP 工具调用 ↓ 语音回复 / 灯光调节 / 机械臂动作 / 学习陪伴 / 家居控制端侧 ESP32-S3 主要负责:
1. 麦克风音频采集 2. 喇叭 TTS 播放 3. 摄像头图像采集 4. 机械臂舵机控制 5. 台灯亮度和色温控制 6. 屏幕状态显示 7. Wi-Fi / BLE 配网联网 8. WebSocket / MQTT / HTTP 通信 9. MCP 工具调用执行 10. OTA 在线升级云端主要负责:
1. ASR 语音识别 2. LLM 大模型理解 3. TTS 语音合成 4. 图像识别和视觉理解 5. 天气与环境分析 6. 学习陪伴智能体 7. 知识库问答 8. MCP 工具调度三、推荐硬件配置
推荐采用 ESP32-S3R8 或 ESPS3-32-N16R8 作为主控,兼顾音频、摄像头、屏幕、舵机和联网能力。
| 模块 | 推荐配置 |
|---|---|
| 主控 | ESP32-S3R8 / ESPS3-32-N16R8 |
| 存储 | 16MB Flash + 8MB PSRAM |
| 摄像头 | OV2640 / GC2145 / DVP 摄像头 |
| 音频输入 | I2S 数字麦克风 / 双麦阵列 |
| 音频输出 | I2S Codec + Class-D 功放 |
| 喇叭 | 4Ω 3W |
| 显示 | 1.54 寸 / 2.0 寸 LCD,或双目屏 |
| 机械臂 | 2~4 自由度舵机结构 |
| 灯光 | 冷暖双色 LED,PWM 调光 |
| 传感器 | 环境光、人体感应、温湿度、三轴姿态可选 |
| 网络 | Wi-Fi + BLE,4G 可扩展 |
| 供电 | Type-C / 适配器供电,电池可选 |
| 升级 | HTTPS OTA / 在线烧录平台 |
硬件连接可以理解为:
┌──────────────────────┐ │ ESP32-S3R8 │ │ Wi-Fi / BLE / AI控制 │ └───────────┬──────────┘ │ ┌──────────┬──────────┬──────┼──────┬──────────┬──────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 摄像头 麦克风 喇叭 LCD屏 舵机组 冷暖光LED 传感器 DVP/I2C I2S I2S SPI PWM PWM I2C/ADC四、软件工程结构
推荐工程目录如下:
doit_ai_arm_lamp_speaker/ ├── main/ │ ├── app_main.c │ ├── board_config.h │ ├── wifi_manager.c │ ├── audio_capture.c │ ├── audio_player.c │ ├── camera_service.c │ ├── vision_service.c │ ├── arm_servo.c │ ├── lamp_light.c │ ├── sensor_service.c │ ├── study_assistant.c │ ├── ai_ws_client.c │ ├── mcp_service.c │ ├── lcd_ui.c │ └── ota_service.c ├── components/ │ ├── camera_driver/ │ ├── lcd_driver/ │ ├── codec/ │ ├── servo_driver/ │ └── audio_afe/ ├── partitions_ota.csv └── sdkconfig.defaults系统状态机可以这样定义:
typedef enum { SYS_STATE_BOOT = 0, SYS_STATE_WIFI_CONFIG, SYS_STATE_IDLE, SYS_STATE_LISTENING, SYS_STATE_THINKING, SYS_STATE_SPEAKING, SYS_STATE_VISION_ANALYZE, SYS_STATE_ARM_MOVING, SYS_STATE_STUDY_MODE, SYS_STATE_SLEEP_MODE, SYS_STATE_OTA, SYS_STATE_ERROR } system_state_t; static volatile system_state_t g_sys_state = SYS_STATE_BOOT;五、主程序框架
app_main.c可以按模块化方式组织:
#include "esp_log.h" #include "nvs_flash.h" #include "esp_event.h" #include "esp_netif.h" #include "wifi_manager.h" #include "audio_capture.h" #include "audio_player.h" #include "camera_service.h" #include "vision_service.h" #include "arm_servo.h" #include "lamp_light.h" #include "sensor_service.h" #include "study_assistant.h" #include "ai_ws_client.h" #include "mcp_service.h" #include "lcd_ui.h" #include "ota_service.h" static const char *TAG = "AI_ARM_LAMP"; void app_main(void) { ESP_LOGI(TAG, "四博 AI 机械臂台灯启动中"); ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); lcd_ui_init(); lcd_ui_show_status("系统启动中"); wifi_manager_init(); audio_capture_init(); audio_player_init(); camera_service_init(); vision_service_init(); arm_servo_init(); lamp_light_init(); sensor_service_init(); study_assistant_init(); ai_ws_client_init(); mcp_service_init(); ota_service_init(); wifi_manager_start(); xTaskCreatePinnedToCore(audio_capture_task, "audio_capture", 8192, NULL, 5, NULL, 0); xTaskCreatePinnedToCore(ai_ws_client_task, "ai_ws_client", 10240, NULL, 6, NULL, 1); xTaskCreatePinnedToCore(camera_service_task, "camera_service", 8192, NULL, 4, NULL, 1); xTaskCreatePinnedToCore(vision_service_task, "vision_service", 8192, NULL, 4, NULL, 1); xTaskCreatePinnedToCore(sensor_service_task, "sensor_service", 4096, NULL, 3, NULL, 0); arm_servo_home(); lamp_set_brightness_color_temp(60, 4000); g_sys_state = SYS_STATE_IDLE; lcd_ui_show_status("AI台灯已就绪"); }六、视觉功能:看窗外天气、看周边环境、辅助学习陪伴
视觉能力是机械臂台灯区别于普通音箱的关键。
可以定义三类视觉任务:
1. 窗外天气识别 判断晴天、阴天、雨天、夜晚、光照强弱。 2. 周边环境识别 判断桌面是否过暗、用户是否在座位、书本是否在灯光范围内。 3. 学习陪伴识别 拍摄书桌或作业区域,用于学习提醒、内容讲解和环境优化。摄像头初始化示例:
#include "esp_camera.h" #include "board_config.h" esp_err_t camera_service_init(void) { camera_config_t config = { .pin_xclk = PIN_CAM_XCLK, .pin_pclk = PIN_CAM_PCLK, .pin_vsync = PIN_CAM_VSYNC, .pin_href = PIN_CAM_HREF, .pin_sscb_sda = PIN_CAM_SIOD, .pin_sscb_scl = PIN_CAM_SIOC, .pin_d0 = PIN_CAM_D0, .pin_d1 = PIN_CAM_D1, .pin_d2 = PIN_CAM_D2, .pin_d3 = PIN_CAM_D3, .pin_d4 = PIN_CAM_D4, .pin_d5 = PIN_CAM_D5, .pin_d6 = PIN_CAM_D6, .pin_d7 = PIN_CAM_D7, .pin_pwdn = -1, .pin_reset = -1, .xclk_freq_hz = 20000000, .pixel_format = PIXFORMAT_JPEG, .frame_size = FRAMESIZE_QVGA, .jpeg_quality = 12, .fb_count = 2, .grab_mode = CAMERA_GRAB_LATEST, }; return esp_camera_init(&config); }拍照并上传视觉分析:
esp_err_t vision_capture_and_upload(const char *task) { camera_fb_t *fb = esp_camera_fb_get(); if (!fb) { lcd_ui_show_status("摄像头采集失败"); return ESP_FAIL; } /* * task: * weather_view 看窗外天气 * desk_view 看桌面环境 * study_help 学习陪伴识别 */ esp_err_t ret = ai_ws_send_image(task, fb->buf, fb->len); esp_camera_fb_return(fb); return ret; }视觉任务调度:
typedef enum { VISION_TASK_NONE = 0, VISION_TASK_WEATHER, VISION_TASK_DESK_ENV, VISION_TASK_STUDY_HELP, VISION_TASK_USER_POSITION } vision_task_t; void vision_run_task(vision_task_t task) { switch (task) { case VISION_TASK_WEATHER: lcd_ui_show_status("正在观察窗外天气"); arm_point_to_window(); vision_capture_and_upload("weather_view"); break; case VISION_TASK_DESK_ENV: lcd_ui_show_status("正在分析桌面环境"); arm_point_to_book(); vision_capture_and_upload("desk_view"); break; case VISION_TASK_STUDY_HELP: lcd_ui_show_status("正在分析学习内容"); arm_point_to_book(); vision_capture_and_upload("study_help"); break; default: break; } }七、机械臂控制:让灯头可以自动转向
机械臂台灯的核心体验是:灯头不是固定的,而是可以根据场景自动调整方向。
推荐自由度设计:
2 自由度:底座左右旋转 + 灯头俯仰 3 自由度:底座旋转 + 大臂俯仰 + 灯头俯仰 4 自由度:底座旋转 + 大臂 + 小臂 + 灯头舵机结构定义:
typedef enum { SERVO_BASE = 0, SERVO_SHOULDER, SERVO_ELBOW, SERVO_HEAD, SERVO_MAX } servo_id_t; typedef struct { gpio_num_t gpio; int min_angle; int max_angle; int current_angle; ledc_channel_t channel; } servo_t;舵机 PWM 角度转换:
#define SERVO_MIN_US 500 #define SERVO_MAX_US 2500 #define SERVO_PERIOD_US 20000 static uint32_t servo_angle_to_duty(int angle) { int pulse_us = SERVO_MIN_US + (SERVO_MAX_US - SERVO_MIN_US) * angle / 180; return (uint32_t)((pulse_us * 65535) / SERVO_PERIOD_US); }设置舵机角度:
void servo_set_angle(servo_id_t id, int angle) { if (id >= SERVO_MAX) { return; } servo_t *s = &g_servos[id]; if (angle < s->min_angle) { angle = s->min_angle; } if (angle > s->max_angle) { angle = s->max_angle; } uint32_t duty = servo_angle_to_duty(angle); ledc_set_duty(LEDC_LOW_SPEED_MODE, s->channel, duty); ledc_update_duty(LEDC_LOW_SPEED_MODE, s->channel); s->current_angle = angle; }常用动作:
void arm_servo_home(void) { servo_set_angle(SERVO_BASE, 90); servo_set_angle(SERVO_SHOULDER, 90); servo_set_angle(SERVO_ELBOW, 90); servo_set_angle(SERVO_HEAD, 90); } void arm_point_to_book(void) { servo_set_angle(SERVO_BASE, 90); servo_set_angle(SERVO_SHOULDER, 70); servo_set_angle(SERVO_ELBOW, 110); servo_set_angle(SERVO_HEAD, 80); } void arm_point_to_window(void) { servo_set_angle(SERVO_BASE, 150); servo_set_angle(SERVO_SHOULDER, 85); servo_set_angle(SERVO_ELBOW, 95); servo_set_angle(SERVO_HEAD, 75); } void arm_sleep_pose(void) { servo_set_angle(SERVO_BASE, 90); servo_set_angle(SERVO_SHOULDER, 130); servo_set_angle(SERVO_ELBOW, 140); servo_set_angle(SERVO_HEAD, 120); }八、智能照明:亮度、色温、自动补光
台灯部分建议支持:
亮度调节:0~100% 色温调节:2700K~6500K 学习模式:高亮中性光 阅读模式:柔和白光 休息模式:低亮暖光 自动模式:根据环境光自动调节灯光配置结构:
typedef struct { int brightness; // 0~100 int color_temp; // 2700~6500 int auto_mode; } lamp_config_t; static lamp_config_t g_lamp = { .brightness = 60, .color_temp = 4000, .auto_mode = 0, };冷暖光 PWM 调节:
void lamp_set_brightness_color_temp(int brightness, int color_temp) { if (brightness < 0) brightness = 0; if (brightness > 100) brightness = 100; if (color_temp < 2700) color_temp = 2700; if (color_temp > 6500) color_temp = 6500; /* * 2700K 偏暖光,6500K 偏冷白光。 */ float ratio = (float)(color_temp - 2700) / (6500 - 2700); int cold_percent = brightness * ratio; int warm_percent = brightness * (1.0f - ratio); uint32_t cold_duty = cold_percent * 4095 / 100; uint32_t warm_duty = warm_percent * 4095 / 100; ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_4, cold_duty); ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_4); ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_5, warm_duty); ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_5); g_lamp.brightness = brightness; g_lamp.color_temp = color_temp; }学习模式、阅读模式、休息模式:
void lamp_mode_study(void) { lamp_set_brightness_color_temp(85, 4500); arm_point_to_book(); lcd_ui_show_status("学习模式已开启"); } void lamp_mode_reading(void) { lamp_set_brightness_color_temp(70, 4000); arm_point_to_book(); lcd_ui_show_status("阅读模式已开启"); } void lamp_mode_rest(void) { lamp_set_brightness_color_temp(25, 3000); arm_sleep_pose(); lcd_ui_show_status("休息模式已开启"); }九、学习陪伴:语音、视觉、灯光和计时形成闭环
学习陪伴不是简单聊天,而是一个完整流程。
用户说:开始学习模式 ↓ 机械臂转向书本区域 ↓ 灯光切换到学习模式 ↓ 摄像头检测桌面环境 ↓ AI 开始学习陪伴 ↓ 每 30 分钟提醒休息 ↓ 发现桌面过暗时自动补光学习会话结构:
typedef struct { int active; int duration_min; int rest_interval_min; int elapsed_sec; } study_session_t; static study_session_t g_study = { .active = 0, .duration_min = 45, .rest_interval_min = 30, .elapsed_sec = 0, };启动学习模式:
void study_assistant_start(int duration_min) { g_study.active = 1; g_study.duration_min = duration_min; g_study.elapsed_sec = 0; lamp_mode_study(); arm_point_to_book(); vision_run_task(VISION_TASK_DESK_ENV); audio_player_play_prompt("study_start.wav"); lcd_ui_show_status("学习陪伴已开启"); }学习提醒任务:
void study_assistant_task(void *arg) { while (1) { if (g_study.active) { g_study.elapsed_sec++; if (g_study.elapsed_sec % (30 * 60) == 0) { audio_player_play_prompt("take_a_break.wav"); lcd_ui_show_status("学习30分钟了,休息一下眼睛"); lamp_set_brightness_color_temp(40, 3500); } if (g_study.elapsed_sec >= g_study.duration_min * 60) { g_study.active = 0; audio_player_play_prompt("study_finish.wav"); lcd_ui_show_status("本次学习完成"); lamp_mode_rest(); } } vTaskDelay(pdMS_TO_TICKS(1000)); } }十、MCP 工具调用:让 AI 真正控制机械臂和灯光
AI 机械臂台灯的关键,是让大模型不只是“回答问题”,而是能调用真实硬件。
用户可以直接说:
看一下窗外天气 帮我把灯调亮一点 进入学习模式 把灯头转向书本 看一下桌面是不是太暗 提醒我学习 30 分钟后休息云端返回 MCP 工具调用:
{ "type": "tool_call", "tool": "lamp.set_mode", "arguments": { "mode": "study" } }工具定义:
typedef enum { MCP_TOOL_LAMP_SET_MODE = 0, MCP_TOOL_LAMP_SET_LIGHT, MCP_TOOL_ARM_MOVE, MCP_TOOL_VISION_CAPTURE, MCP_TOOL_STUDY_TIMER, MCP_TOOL_HOME_CONTROL, MCP_TOOL_UNKNOWN } mcp_tool_id_t; typedef struct { const char *name; mcp_tool_id_t id; } mcp_tool_map_t; static const mcp_tool_map_t g_mcp_tools[] = { {"lamp.set_mode", MCP_TOOL_LAMP_SET_MODE}, {"lamp.set_light", MCP_TOOL_LAMP_SET_LIGHT}, {"arm.move", MCP_TOOL_ARM_MOVE}, {"vision.capture", MCP_TOOL_VISION_CAPTURE}, {"study.timer", MCP_TOOL_STUDY_TIMER}, {"home.device.control", MCP_TOOL_HOME_CONTROL}, };MCP 分发:
void mcp_service_handle(cJSON *root) { cJSON *tool = cJSON_GetObjectItem(root, "tool"); cJSON *args = cJSON_GetObjectItem(root, "arguments"); if (!cJSON_IsString(tool) || !cJSON_IsObject(args)) { return; } switch (mcp_get_tool_id(tool->valuestring)) { case MCP_TOOL_LAMP_SET_MODE: mcp_handle_lamp_set_mode(args); break; case MCP_TOOL_LAMP_SET_LIGHT: mcp_handle_lamp_set_light(args); break; case MCP_TOOL_ARM_MOVE: mcp_handle_arm_move(args); break; case MCP_TOOL_VISION_CAPTURE: mcp_handle_vision_capture(args); break; case MCP_TOOL_STUDY_TIMER: mcp_handle_study_timer(args); break; case MCP_TOOL_HOME_CONTROL: mcp_handle_home_control(args); break; default: lcd_ui_show_status("未知工具调用"); break; } }灯光模式处理:
void mcp_handle_lamp_set_mode(cJSON *args) { cJSON *mode = cJSON_GetObjectItem(args, "mode"); if (!cJSON_IsString(mode)) { return; } if (strcmp(mode->valuestring, "study") == 0) { lamp_mode_study(); } else if (strcmp(mode->valuestring, "reading") == 0) { lamp_mode_reading(); } else if (strcmp(mode->valuestring, "rest") == 0) { lamp_mode_rest(); } }视觉任务处理:
void mcp_handle_vision_capture(cJSON *args) { cJSON *task = cJSON_GetObjectItem(args, "task"); if (!cJSON_IsString(task)) { return; } if (strcmp(task->valuestring, "weather") == 0) { arm_point_to_window(); vision_run_task(VISION_TASK_WEATHER); } else if (strcmp(task->valuestring, "desk") == 0) { arm_point_to_book(); vision_run_task(VISION_TASK_DESK_ENV); } else if (strcmp(task->valuestring, "study") == 0) { arm_point_to_book(); vision_run_task(VISION_TASK_STUDY_HELP); } }十一、WebSocket AI 通信协议
设备上线消息可以这样设计:
{ "type": "hello", "device_id": "doit_ai_arm_lamp_001", "product": "doit_ai_arm_lamp_speaker", "firmware": "1.0.0", "features": { "audio": true, "vision": true, "arm": true, "lamp": true, "study_assistant": true, "weather_view": true, "mcp": true, "ota": true } }AI 消息处理:
static void ai_ws_handle_json(const char *data, int len) { char *buf = calloc(1, len + 1); if (!buf) { return; } memcpy(buf, data, len); cJSON *root = cJSON_Parse(buf); if (!root) { free(buf); return; } cJSON *type = cJSON_GetObjectItem(root, "type"); if (cJSON_IsString(type)) { if (strcmp(type->valuestring, "tts_start") == 0) { audio_player_start(); lcd_ui_show_status("AI正在回答"); } else if (strcmp(type->valuestring, "tts_end") == 0) { audio_player_stop(); lcd_ui_show_status("等待指令"); } else if (strcmp(type->valuestring, "tool_call") == 0) { mcp_service_handle(root); } else if (strcmp(type->valuestring, "vision_result") == 0) { vision_handle_result(root); } } cJSON_Delete(root); free(buf); }十二、OTA:让台灯动作、视觉能力和学习策略持续升级
AI 机械臂台灯量产后,OTA 非常关键。
可升级内容包括:
1. 主控固件 2. 机械臂动作参数 3. 灯光模式参数 4. 视觉识别策略 5. 提示音资源 6. 屏幕 UI 资源 7. MCP 工具列表 8. AI 后端地址 9. 学习陪伴策略OTA 版本文件示例:
{ "project": "doit_ai_arm_lamp_s3", "version": "1.0.3", "chip": "esp32s3", "url": "https://ota.customer.com/arm_lamp_s3_v1.0.3.bin", "asset_url": "https://ota.customer.com/assets/arm_lamp_assets_v3.bin", "md5": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "force": false, "note": "新增视觉天气识别、学习陪伴和机械臂动作优化" }OTA 执行代码:
#include "esp_https_ota.h" #include "esp_http_client.h" void ota_check_update(void) { esp_http_client_config_t http_config = { .url = "https://ota.customer.com/arm_lamp/latest.bin", .timeout_ms = 10000, .keep_alive_enable = true, }; esp_https_ota_config_t ota_config = { .http_config = &http_config, }; lcd_ui_show_status("正在升级,请勿断电"); esp_err_t ret = esp_https_ota(&ota_config); if (ret == ESP_OK) { lcd_ui_show_status("升级成功,正在重启"); esp_restart(); } else { lcd_ui_show_status("升级失败"); } }十三、方案价值总结
四博 AI 机械臂台灯智能音箱方案的核心价值,是把多个原本分散的能力整合成一个桌面 AI 终端。
1. 视觉能力 能看窗外天气、桌面环境和学习状态。 2. 语音能力 能对话、问答、讲解、提醒和陪伴。 3. 照明能力 能调亮度、调色温、根据环境自动补光。 4. 机械臂能力 能转向书本、窗户、用户位置。 5. 学习陪伴 能学习计时、休息提醒、知识讲解和桌面环境检测。 6. 智能家居 能通过 MCP / MQTT / HTTP 控制灯具、窗帘、空调等设备。 7. 二次开发 基于 ESP32-S3 和 ESP-IDF,客户可以快速定制自己的系统。 8. 量产升级 支持 OTA、素材更新、参数更新和客户平台接入。普通台灯只能照明,普通音箱只能播放,普通摄像头只能观看。
四博 AI 机械臂台灯智能音箱要做的是:
能看环境 能听指令 能说答案 能动灯头 能调灯光 能陪学习 能接系统 能持续升级一句话总结:
四博 AI 机械臂台灯不是普通台灯, 也不是普通 AI 音箱, 而是基于 ESP32-S3 打造的视觉感知、机械臂控制、 智能照明和学习陪伴一体化 AI 桌面终端。