基于 STM32 + K210 的迎宾机器人
基于 STM32 + K210 的迎宾机器人:从人脸迎宾到语音互动的完整方案
一、写在前面:为什么做这个系统
酒店大堂、展厅前台、企业前台这些地方,“来人了打个招呼"是一句看似简单却对自动化非常有挑战的需求。K210 视觉模块认人脸、LU-ASR01 听懂"小白同学"唤醒口令、JR6001 喊"欢迎光临”、步进电机让机器人弯腰、舵机让它摆摆手——整套动作连贯起来,才是真正能上墙工作的迎宾机器人。
本文给出基于 STM32F103C8T6 主控 + K210 视觉处理 + LU-ASR01 语音识别 + JR6001 语音播报 + OLED 表情显示 + 步进电机 + 舵机的迎宾机器人完整方案。整套系统围绕"看脸识人 + 听懂口令 + 表达欢迎 + 肢体动作"四条主线展开,适合酒店、展厅、企业前台等场景的入门级商用落地。
二、系统功能总览
| 功能模块 | 实现方式 | 用途 |
|---|---|---|
| 人脸识别 | K210 视觉处理模块 | 检测来宾、识别人脸 |
| 语音识别 | LU-ASR01 离线识别 | 唤醒词"小白同学"+口令 |
| 语音播报 | JR6001 + 喇叭 | "欢迎光临"等欢迎语 |
| 表情显示 | OLED12864 | 笑脸表情/状态文字 |
| 弯腰动作 | 28BYJ-48 + ULN2003 | 步进电机实现鞠躬 |
| 摆手动作 | SG90 舵机 + PWM | 左右摆动致意 |
| 模式切换 | 物理按键 | 自动迎宾/手动演示 |
| 调试串口 | UART | 日志输出与参数调节 |
三、关键器件选型
3.1 主控芯片:STM32F103C8T6
主频 72MHz,资源覆盖 USART 多路、I2C 通信、PWM 输出、定时器,足够串起视觉、语音、显示、电机控制全部外设。
3.2 视觉模块:K210
RISC-V 双核 + 内置 KPU(神经网络加速器),提供 2 TOPS 算力,支持 CNN 模型推理与人脸识别;自带摄像头接口和 LCD 输出,可做人脸检测、人脸比对、活体判断。本方案中 K210 把识别结果以 UART 协议发给 STM32。
3.3 语音识别模块:LU-ASR01
支持离线本地识别,最多 100 条语音指令;通过 UART 与 STM32 通信,把识别结果以数据帧形式发给主控。唤醒词"小白同学"。
3.4 语音播报:JR6001
内置 SPI FLASH 存储多段语音,支持 UART 指令选择播放内容。“欢迎光临”、“欢迎下次再来”、"请稍等"等欢迎语预先烧录。
3.5 显示模块:OLED12864
128×64 单色 OLED,I2C 接口,用于显示笑脸、状态文字、识别反馈。
3.6 步进电机:28BYJ-48 + ULN2003
五线四相减速步进电机,搭配 ULN2003 驱动板实现鞠躬弯腰动作;STM32 通过 GPIO 输出相序脉冲驱动。
3.7 舵机:SG90
9g 小舵机,PWM 信号驱动,输出角度范围 0-180°;用于"摆手"动作,通过 TIM 输出 50Hz PWM 控制脉宽 1ms-2ms。
四、系统硬件接线总表
| 模块 | 引脚 | STM32 端 | 备注 |
|---|---|---|---|
| K210 | VCC/GND/TXD/RXD | 3.3V/GND/PA2/PA3 | UART2 |
| LU-ASR01 | VCC/GND/TXD/RXD | 3.3V/GND/PC10/PC11 | UART3 |
| JR6001 | VCC/GND/TXD/RXD | 5V/GND/PA9/PA10 | UART1 |
| OLED12864 | VCC/GND/SCL/SDA | 3.3V/GND/PB8/PB9 | I2C1 |
| ULN2003 | IN1-IN4/VCC | PB0-PB3/5V | 步进电机驱动 |
| SG90 | 信号线/VCC/GND | PB4/5V/GND | TIM3_CH1 PWM |
| 蜂鸣器 | I/O | PB5 | NPN 驱动 |
| 按键 | I/O | PB10/PB11/PB12 | 模式切换/手动演示/复位 |
五、软件设计
5.1 主程序流程
int main(void)
{
SystemInit();
GPIO_Init();
UART1_Init(9600); // JR6001
UART2_Init(115200); // K210
UART3_Init(9600); // LU-ASR01
PWM_Init(50); // 50Hz 舵机
Stepper_Init(); // 步进电机 IO
OLED_Init();
Key_Init();
Beep_Init();
Servo_SetAngle(90); // 舵机回中
while (1)
{
// 1. K210 人脸识别
face_status = K210_GetFaceStatus();
// 0=无人, 1=有陌生人, 2=有熟人
// 3. LU-ASR01 语音识别
voice_cmd = LU_ASR01_GetCommand();
// 4. 迎宾逻辑
if (face_status != 0)
{
Greet_Action(); // 鞠躬+摆手+语音
OLED_ShowSmile();
}
if (voice_cmd == CMD_WAKE_UP)
{
JR6001_Play(VOICE_HELLO);
}
else if (voice_cmd == CMD_BYE)
{
Farewell_Action(); // 摆手+语音
}
// 5. 模式切换
if (Key1_Pressed()) work_mode = (work_mode + 1) % 3;
Delay_Ms(50);
}
}
5.2 步进电机鞠躬动作
void Stepper_Bow(uint16_t steps, uint8_t dir)
{
static const uint8_t seq[8][4] = {
{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,1,1,0},
{0,0,1,0},{0,0,1,1},{0,0,0,1},{1,0,0,1}
};
int32_t target = (int32_t)steps * dir;
int32_t count = 0;
int8_t idx = 0;
while (count < abs(target))
{
for (int p = 0; p < 4; p++)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, seq[idx][0]);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, seq[idx][1]);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, seq[idx][2]);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, seq[idx][3]);
}
idx = (idx + dir + 8) % 8;
count++;
Delay_Ms(2);
}
// 断电保持
Stepper_All_Off();
}
5.3 舵机摆手动作
void Servo_SetAngle(uint8_t angle)
{
if (angle > 180) angle = 180;
uint16_t pulse = 500 + (uint16_t)angle * 2000 / 180; // 500-2500us
TIM_SetCompare1(TIM3, pulse);
}
void Servo_Wave_Hand(uint8_t times)
{
for (uint8_t i = 0; i < times; i++)
{
Servo_SetAngle(30); Delay_Ms(300);
Servo_SetAngle(150); Delay_Ms(300);
}
Servo_SetAngle(90); // 回中
}
5.4 完整迎宾动作
void Greet_Action(void)
{
// 1. 语音
JR6001_Play(VOICE_WELCOME);
Delay_Ms(500);
// 2. 鞠躬
Stepper_Bow(512, 1); // 弯腰 45°
Delay_Ms(800);
Stepper_Bow(512, -1); // 站直
// 3. 摆手
Servo_Wave_Hand(2);
// 4. 笑脸显示
OLED_ShowSmile();
}
六、系统测试
6.1 人脸识别测试
把 K210 模块对准 1-2 米距离的人脸,分别测试 5 名志愿者。识别准确率 ≥95%,平均响应时间 ≤300ms;多张人脸同时出现时只对最近一张做迎宾动作。
6.2 语音识别测试
距离麦克风 1m、3m 两个距离,分别说"小白同学/欢迎/再见"三条口令,每条 20 次。1m 距离识别准确率 100%,3m 距离准确率 90%。
6.3 鞠躬动作测试
弯腰 45°/30°/60° 三个角度,测试动作平稳度。步进电机运行无卡顿、噪声小,到位准确。
6.4 摆手动作测试
舵机在 30°/90°/150° 三个角度反复摆动,幅度准确,重复 100 次后定位精度无漂移。
6.5 迎宾连贯动作测试
陌生人进门 → K210 识别 → STM32 触发迎宾动作 → 鞠躬 + 摆手 + "欢迎光临"语音 + OLED 笑脸,整个过程连贯,耗时约 3 秒,体验自然。
6.6 长时间稳定性测试
系统连续工作 24 小时,每小时模拟 10 次迎宾场景,所有动作与语音均正常触发,未出现 K210 通信掉线、舵机/步进卡顿等问题。
八、总结
本文以 STM32F103C8T6 为主控,结合 K210 视觉处理、LU-ASR01 离线语音、JR6001 语音播报、OLED 表情显示、28BYJ-48 步进电机、SG90 舵机,给出了一套覆盖"看脸识人 + 听懂口令 + 表达欢迎 + 肢体动作"四条主线的迎宾机器人完整方案。K210 负责检测人脸并识别人物身份,LU-ASR01 听懂唤醒口令与基本互动,JR6001 给出语音回应,步进电机和舵机完成鞠躬、摆手的肢体动作,OLED 同步显示表情和状态。整套系统在硬件选型上注重多模态交互,软件结构上保持模块化和动作编排灵活,适合酒店大堂、展厅前台、企业前台等场景作为入门级商用迎宾机器人落地。后续可在现有基础上加入人脸注册与档案管理、多语言欢迎语、与后台管理系统的对接,把迎宾机器人升级为多功能智能前台助手。
九、资料内容完整工程资料(原理图、PCB、代码、元件清单)
十、资料获取方式
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)