52浏览
查看: 52|回复: 10

[K10教程] 【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车

[复制链接]
【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好


【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

驴友花雕  高级技神
 楼主|

发表于 前天 10:44

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

3630 无刷减速电机语音识别控制双轮差速小车使用的底板、电机轮子、锂电池与扩展板

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图4

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图5

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图3





回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 前天 11:39

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

本帖最后由 驴友花雕 于 2026-7-9 18:53 编辑

小车动力电池的二个方案(7.4V)与扩展板(6-12V)

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图4

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图3



【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 前天 18:54

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 10:26

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

主打:人工智能模块

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

语音识别相关说明

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 10:28

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

辅助:屏幕显示相关积木

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2

接脚 IO 扩展模块

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

LED控制模块

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:33

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

【花雕动手做】行空板 K10 系列实验之 3630 无刷减速电机语音识别控制双轮差速小车

实验开源代码

  1. // 引入离线语音识别库asr.h,实现语音唤醒、拼音口令识别、持续收音监听
  2. #include "asr.h"
  3. // 行空板K10底层驱动库,提供屏幕画布、引脚配置pinMode、IO电平输出等硬件API
  4. #include "unihiker_k10.h"
  5. // ==================== 全局硬件对象实例化 ====================
  6. UNIHIKER_K10 k10;        // 行空板主控对象,统一管理LCD屏幕、板载GPIO、系统总线
  7. ASR          asr;         // 离线语音识别模块实例,处理麦克风收音、人声解析
  8. uint8_t      screen_dir=2; // 屏幕旋转参数:2 = 屏幕倒置显示
  9. // ==================================================================
  10. // setup() 上电初始化函数,设备开机/重启仅执行一次
  11. // 功能:配置引脚输出模式、初始化主板/语音模块/屏幕、设置上电默认刹车电平、注册5条语音指令
  12. // ==================================================================
  13. void setup() {
  14.         // 板载物理引脚P0配置为数字输出,用于控制电机方向信号
  15.         pinMode(P0, OUTPUT);
  16.         // 初始化行空板全部底层硬件:串口、I2C、屏幕、板载IO资源
  17.         k10.begin();
  18.         // 板载物理引脚P1配置为数字输出,用于差速转向控制
  19.         pinMode(P1, OUTPUT);
  20.         // 初始化离线语音识别模块三大参数
  21.         // CONTINUOUS:持续收音模式,麦克风不间断监听环境人声
  22.         // CN_MODE:中文识别模式,仅识别拼音语音指令
  23.         // 12000:收音灵敏度,数值越大抗噪音、防误唤醒能力越强
  24.         asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  25.         // 循环阻塞等待语音模块加载完成
  26.         // _asrState == 0 代表语音模型未就绪,每100ms检测一次,避免未初始化调用报错
  27.         while(asr._asrState == 0){delay(100);}
  28.         // 根据screen_dir参数初始化LCD显示屏
  29.         k10.initScreen(screen_dir);
  30.         // 创建屏幕绘图画布缓存,所有文字先存入缓存再统一刷新,减少屏幕闪烁
  31.         k10.creatCanvas();
  32.         // 上电默认拉高电机方向引脚,小车初始刹车静止,防止上电误冲
  33.         digitalWrite(P0, HIGH);    // 板载P0高电平
  34.         digital_write(eP15, HIGH);  // 扩展IO引脚eP15高电平
  35.         // 批量注册5条离线语音拼音指令,离线模块仅识别提前录入的口令
  36.         asr.addASRCommand(0+1, "qi dong");   // ID=1 语音口令:启动(前进)
  37.         asr.addASRCommand(1+1, "ting che");   // ID=2 语音口令:停车
  38.         asr.addASRCommand(2+1, "gao su");    // ID=3 语音口令:高速
  39.         asr.addASRCommand(3+1, "you zhuan"); // ID=4 语音口令:右转
  40.         asr.addASRCommand(4+1, "zuo zhuan"); // ID=5 语音口令:左转
  41. }
  42. // ==================================================================
  43. // loop() 主循环函数,初始化完成后无限循环运行
  44. // 功能:实时检测语音唤醒、识别语音口令,输出多路IO电平控制两轮差速小车,屏幕同步打印运行状态
  45. // ==================================================================
  46. void loop() {
  47.         // 判断是否识别到唤醒固定词【你好小新】
  48.         if (asr.isWakeUp()) {
  49.                 // 唤醒成功:画布第6行输出红色提示文字
  50.                 k10.canvas->canvasText("已唤醒行空板小车.......", 6, 0xFF0000);
  51.                 // 将画布缓存内容刷新到实体LCD屏幕
  52.                 k10.canvas->updateCanvas();
  53.         }
  54.         else {
  55.                 // 未唤醒待机:第4行蓝色文字提示唤醒口令
  56.                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
  57.                 k10.canvas->updateCanvas();
  58.         }
  59.         // ---------------- 语音指令1:qi dong 小车启动直行 ----------------
  60.         if (asr.isDetectCmdID(0+1)) {
  61.                 // P0、eP15同时拉低,左右电机正向驱动;P1拉低锁定直行差速模式
  62.                 digitalWrite(P0, LOW);
  63.                 digital_write(eP15, LOW);
  64.                 digitalWrite(P1, LOW);
  65.                 // 居中24号黑色大字显示状态
  66.                 // 参数:X坐标,Y坐标,颜色,字体,字号,自动换行
  67.                 k10.canvas->canvasText("K10 小车启动", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  68.                 k10.canvas->updateCanvas();
  69.         }
  70.         // ---------------- 语音指令2:ting che 小车刹车停止 ----------------
  71.         if (asr.isDetectCmdID(1+1)) {
  72.                 // 左右电机方向引脚全部拉高,电机无驱动压差,立即锁死静止
  73.                 digitalWrite(P0, HIGH);
  74.                 digital_write(eP15, HIGH);
  75.                 k10.canvas->canvasText("K10 小车停止", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  76.                 k10.canvas->updateCanvas();
  77.         }
  78.         // ---------------- 语音指令3:gao su 开启高速档位 ----------------
  79.         if (asr.isDetectCmdID(2+1)) {
  80.                 // eP2、eP13为PWM调速控制引脚,拉低后占空比拉满,电机全速运转
  81.                 digital_write(eP2, LOW);
  82.                 digital_write(eP13, LOW);
  83.                 k10.canvas->canvasText("K10 小车高速", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  84.                 k10.canvas->updateCanvas();
  85.         }
  86.         // ---------------- 语音指令4:you zhuan 原地右转 ----------------
  87.         if (asr.isDetectCmdID(3+1)) {
  88.                 // P1、eP14拉高,左右电机反向差速,车身原地持续右转
  89.                 digitalWrite(P1, HIGH);
  90.                 digital_write(eP14, HIGH);
  91.                 k10.canvas->canvasText("K10 小车右转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  92.                 k10.canvas->updateCanvas();
  93.         }
  94.         // ---------------- 语音指令5:zuo zhuan 原地左转 ----------------
  95.         if (asr.isDetectCmdID(4+1)) {
  96.                 // P1、eP14拉低,左右电机反向差速,车身原地持续左转
  97.                 digitalWrite(P1, LOW);
  98.                 digital_write(eP14, LOW);
  99.                 k10.canvas->canvasText("K10小车左转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  100.                 k10.canvas->updateCanvas();
  101.         }
  102.         // 清空画布第6行及下方全部文字,清除上一轮状态,避免文字重叠残影
  103.         k10.canvas->canvasClear(6);
  104. }
复制代码




回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 18:41

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

# 代码解读

## 一、项目整体功能

硬件搭配:行空板 K10 + 离线 ASR 语音模块 + L298N 直流电机驱动 + 两轮差速小车

1. 固定唤醒词:**你好小新**;
2. 5 条语音控制口令:启动、停车、高速、右转、左转;
3. 通过板载引脚 P0/P1、扩展 IO eP2/eP13/eP14/eP15 输出高低电平,控制电机转向与全速档位;
4. LCD 屏幕 24 号大字实时显示小车当前运行状态。

## 二、头文件与全局对象解析

  1. #include "asr.h"
  2. #include "unihiker_k10.h"
复制代码


1. `asr.h`:离线语音识别库,实现持续收音、唤醒检测、自定义拼音指令识别;
2. `unihiker_k10.h`:行空板底层核心库,提供屏幕画布、引脚模式配置、IO 电平输出函数。

  1. UNIHIKER_K10 k10;
  2. ASR          asr;
  3. uint8_t      screen_dir=2;
复制代码


- `k10`:行空板主控对象,管理屏幕、板载 GPIO、底层硬件初始化;
- `asr`:语音识别实例,处理麦克风收音与人声解析;
- `screen_dir=2`:设置屏幕倒置显示。

## 三、setup () 上电初始化(仅开机执行一次)

1. `pinMode(P0, OUTPUT); pinMode(P1, OUTPUT);`
把板载 P0、P1 设置为数字输出引脚,用来输出高低电平控制电机驱动。
2. `k10.begin();`
初始化行空板全部硬件、I2C / 串口总线、屏幕外设资源。
3. 语音模块初始化

  1. asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  2. while(asr._asrState == 0){delay(100);}
复制代码


- `CONTINUOUS`:不间断持续收音;
- `CN_MODE`:中文识别模式,只识别拼音口令;
- `12000`:抗噪灵敏度,数值越大越不容易误唤醒;
循环等待语音模型加载完毕,模块就绪才往下运行。

4. 屏幕初始化

  1. k10.initScreen(screen_dir);
  2. k10.creatCanvas();
复制代码


按照倒置参数点亮屏幕,创建画布缓存,文字先存入缓存再统一刷新,减少屏幕闪烁。
5. 上电安全默认电平

  1. digitalWrite(P0, HIGH);
  2. digital_write(eP15, HIGH);
复制代码


电机方向引脚上电默认高电平,小车初始刹车静止,避免开机窜动。
6. 注册语音指令

  1. asr.addASRCommand(0+1, "qi dong");  // ID1 启动
  2. asr.addASRCommand(1+1, "ting che"); // ID2 停车
  3. asr.addASRCommand(2+1, "gao su");   // ID3 高速
  4. asr.addASRCommand(3+1, "you zhuan");// ID4 右转
  5. asr.addASRCommand(4+1, "zuo zhuan");//ID5 左转
复制代码


提前录入 5 条拼音口令,语音模块仅能识别预存指令。


## 四、loop () 无限主循环,实时监听语音

### 1. 唤醒状态判断

`asr.isWakeUp()` 检测是否识别唤醒词「你好小新」:

- 唤醒成功:屏幕第 6 行红色文字提示 “已唤醒行空板小车”;
- 未唤醒待机:屏幕第 4 行蓝色文字提示唤醒口令;
`updateCanvas()` 将画布缓存文字一次性刷新到屏幕。

### 2. 各语音指令硬件逻辑

#### 1)qi dong 启动(直线前进)

  1. digitalWrite(P0, LOW);
  2. digital_write(eP15, LOW);
  3. digitalWrite(P1, LOW);
复制代码


P0 控制左电机前进、eP15 控制右电机前进,P1 拉低锁定直行模式,两轮同向正转,小车直线向前。

#### 2)ting che 停车

  1. digitalWrite(P0, HIGH);
  2. digital_write(eP15, HIGH);
复制代码


左右电机方向引脚全部拉高,电机无驱动压差,立刻刹车锁死静止。

#### 3)gao su 高速档位

  1. digital_write(eP2, LOW);
  2. digital_write(eP13, LOW);
复制代码


eP2、eP13 是 PWM 调速引脚,拉低后输出满占空比,电机切换全速高速。

#### 4)you zhuan 原地右转

  1. digitalWrite(P1, HIGH);
  2. digital_write(eP14, HIGH);
复制代码


P1、eP14 拉高,左右电机反向差速,小车持续原地右转。

#### 5)zuo zhuan 原地左转

  1. digitalWrite(P1, LOW);
  2. digital_write(eP14, LOW);
复制代码


P1、eP14 拉低,左右电机反向差速,小车持续原地左转。

### 3. 屏幕清理

  1. k10.canvas->canvasClear(6);
复制代码

清空画布第 6 行及下方所有文字,清除上一轮状态,防止新旧文字重叠残影。


## 五、引脚功能总表

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1


## 六、运动动作对照表

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2


## 七、完整运行流程

1. 上电配置 P0/P1 为输出引脚,初始化行空板全部硬件;
2. 启动离线语音识别,循环等待语音模型加载完成;
3. 初始化倒置 LCD 屏幕、创建绘图画布;
4. 电机方向引脚默认拉高,上电小车保持刹车静止;
5. 注册 5 条语音拼音控制指令;
6. 麦克风不间断监听唤醒词 “你好小新”;
7. 唤醒后说出对应口令,多路 IO 输出对应电平驱动电机,屏幕同步显示车辆状态;
8. 循环末尾自动清空屏幕文字,持续等待下一条语音指令。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 18:46

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

Mind+图形编程

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1
【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 18:48

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

实验场景图与视频记录

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图2

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 18:52

【花雕动手做】行空板 K10 之3630无刷电机语音双轮小车

【花雕动手做】行空板 K10 之 3630 无刷电机语音双轮小车图1


【【花雕动手做】行空板 K10 系列实验之 3630 无刷减速电机语音识别控制双轮差速小车 #厉害了我的车 #行空板K10 #DIY动手做  #人工智能机器人】

https://www.bilibili.com/video/BV1bgNn6RErx/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail