cd ~/openvela_workspace/openvela
python3 -m venv host/feishu_gateway/.venv
host/feishu_gateway/.venv/bin/python -m pip install --upgrade pip
if [ -f host/feishu_gateway/requirements.txt ]; then
host/feishu_gateway/.venv/bin/pip install \
-r host/feishu_gateway/requirements.txt
fi
4. 启动飞书网关
确保 ESP32 已连接到 /dev/ttyUSB0,并且没有其他串口程序占用该设备,然后执行:
cd ~/openvela_workspace/openvela || exit 1
set -a
source "$HOME/.config/vela-feishu-gateway/env"
set +a
PYTHONPATH=host/feishu_gateway \
host/feishu_gateway/.venv/bin/python \
host/feishu_gateway/gateway.py
网关运行期间保持该终端窗口打开。
5. 停止网关
在运行网关的终端中按:
Ctrl+C
飞书网关启动脚本
为了避免每次手动输入,可创建脚本:
cat > "$HOME/start_vela_feishu_gateway.sh" <<'BASH'
#!/usr/bin/env bash
PROJECT="$HOME/openvela_workspace/openvela"
ENV_FILE="$HOME/.config/vela-feishu-gateway/env"
PYTHON="$PROJECT/host/feishu_gateway/.venv/bin/python"
GATEWAY="$PROJECT/host/feishu_gateway/gateway.py"
if [ ! -d "$PROJECT" ]; then
echo "ERROR:工程目录不存在:$PROJECT"
return 1 2>/dev/null || true
fi
if [ ! -f "$ENV_FILE" ]; then
echo "ERROR:环境变量文件不存在:$ENV_FILE"
return 1 2>/dev/null || true
fi
if [ ! -x "$PYTHON" ]; then
echo "ERROR:Python 虚拟环境不存在:$PYTHON"
return 1 2>/dev/null || true
fi
if [ ! -f "$GATEWAY" ]; then
echo "ERROR:飞书网关程序不存在:$GATEWAY"
return 1 2>/dev/null || true
fi
cd "$PROJECT" || return 1 2>/dev/null || true
set -a
source "$ENV_FILE"
set +a
export PYTHONPATH=host/feishu_gateway
exec "$PYTHON" "$GATEWAY"
BASH
chmod +x "$HOME/start_vela_feishu_gateway.sh"
以后直接运行:
bash "$HOME/start_vela_feishu_gateway.sh"
演示问题
环境检测
请检测现在适合学习吗?
遮挡光照传感器后再次发送同一句,可观察环境状态和 RGB 颜色变化。
个性化灯光
新建场景:
我要看电影,帮我调到看电影灯光
暗一点
可以
恢复场景:
使用看电影灯光
实际亮度以 Tool 返回值为准,不预设每次相对调节的固定步长。
屏幕距离保护
记录舒适距离:
记住我现在正常看屏幕的距离
查询基准:
我的屏幕观看距离基准是多少?
检查距离:
我现在是不是离屏幕太近了?
常见问题
1. 串口被占用
检查占用:
sudo fuser -v /dev/ttyUSB0
关闭占用进程:
sudo fuser -k /dev/ttyUSB0
然后重新启动飞书网关。
2. 没有串口权限
临时测试:
sudo chmod 666 /dev/ttyUSB0
长期配置建议将当前用户加入 dialout 组:
sudo usermod -aG dialout "$USER"
重新登录系统后生效。
3. 找不到 Python 模块
确认使用项目虚拟环境,并设置正确的 PYTHONPATH:
cd ~/openvela_workspace/openvela
PYTHONPATH=host/feishu_gateway \
host/feishu_gateway/.venv/bin/python \
host/feishu_gateway/gateway.py
基于openvela AI Agent的智能学习空间感知与自适应控制系统
本项目基于 openvela / Apache NuttX 与经典 ESP32 DevKitC,构建面向学习场景的端云协同 AI Agent。系统通过自然语言理解用户意图,在 ESP32 本地调用真实硬件 Tool,完成环境检测、个性化灯光控制和屏幕距离保护,并可通过飞书机器人远程交互。
核心功能
1. 学习环境检测与 RGB 指示
系统读取光照与 NTC 温度原始信号,根据 Skill 规则判断当前环境是否适合学习,并控制实体 RGB 指示灯:
主要 Tool:
read_environmentset_rgb_indicator主要 Skill:
study-environment-optimizer2. 个性化灯光档案
GPIO32 PWM 小灯支持绝对亮度、相对调节和具名场景记忆。首次使用新场景时,系统进入试用状态;用户可以继续说“亮一点”或“暗一点”,只有明确说“可以”“满意”或“保存吧”后才保存档案。
实际状态流程:
主要 Tool:
control_lamp_brightnessmanage_light_profile主要 Skill:
personalized-light-profile3. 个性化屏幕距离保护
VL53L3CX ToF 传感器通过
/dev/tof0与 uORB 数据通路提供真实距离。用户可以先记录舒适观看距离,后续系统重新采样并判断当前是否过近。主要操作:
calibrate:记录当前舒适距离;check:重新测距并判断是否过近;get:查询已保存基准;reset:删除基准。主要 Tool:
read_distancemanage_screen_distance主要 Skill:
screen-distance-monitor4. 基础知识问答
对于不涉及硬件的普通问题,Agent 直接通过大模型回答,不调用传感器、PWM 或 RGB Tool。例如:
硬件组成
软件环境
esptool.py;picocom或其他串口终端。仓库结构
快速开始
1. 烧录 ESP32 固件
仓库中已提供最终稳定固件:
使用脚本烧录:
也可以直接使用
esptool.py:2. 打开串口并启动 AI Agent
进入 NuttShell 后执行:
出现
vela>提示符后,说明 Agent 已启动。首次配置大模型时执行:
不要在截图、日志或仓库中提交真实 API Key。
飞书网关配置
1. 创建配置目录
2. 创建环境变量文件
编辑:
填写:
保存后设置权限:
3. 首次准备 Python 虚拟环境
仓库已经包含
.venv时可跳过本步骤。需要重新创建时执行:4. 启动飞书网关
确保 ESP32 已连接到
/dev/ttyUSB0,并且没有其他串口程序占用该设备,然后执行:网关运行期间保持该终端窗口打开。
5. 停止网关
在运行网关的终端中按:
飞书网关启动脚本
为了避免每次手动输入,可创建脚本:
以后直接运行:
演示问题
环境检测
遮挡光照传感器后再次发送同一句,可观察环境状态和 RGB 颜色变化。
个性化灯光
新建场景:
恢复场景:
实际亮度以 Tool 返回值为准,不预设每次相对调节的固定步长。
屏幕距离保护
记录舒适距离:
查询基准:
检查距离:
常见问题
1. 串口被占用
检查占用:
关闭占用进程:
然后重新启动飞书网关。
2. 没有串口权限
临时测试:
长期配置建议将当前用户加入
dialout组:重新登录系统后生效。
3. 找不到 Python 模块
确认使用项目虚拟环境,并设置正确的
PYTHONPATH:4. 飞书收不到回复
依次确认:
/dev/ttyUSB0能正常访问;ai_agent;5. 普通问答正常,但硬件不动作
查看网关和 ESP32 日志是否出现对应 Tool:
只有 Tool 返回成功并且硬件实际变化,才视为任务执行成功。
安全说明
以下内容不得提交到公开仓库:
$HOME/.config/vela-feishu-gateway/env;公开仓库只提供:
项目曾经使用过的飞书 Secret 如已在聊天、截图或日志中出现,应在飞书开放平台重新生成。 ##视频说明 我用夸克网盘给你分享了「openvela…感知视频」,点击链接或复制整段内容,打开「夸克网盘APP」即可获取。 /
9bac3Zsd7g:/ 链接:https://pan.quark.cn/s/92af8261354b第三方组件
本项目基于 openvela、Apache NuttX、Mbed TLS、cJSON 和 ST VL53L3CX 软件组件。第三方源代码保留其原始许可证和版权声明;团队原创或实质修改主要集中在 ESP32 平台适配、VL53L3CX NuttX/uORB 通路、硬件 Tool、三项 Skill、本地状态机、TLS 内存优化和飞书消息接入。