9浏览
查看: 9|回复: 8

[K10教程] 【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车

[复制链接]
【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

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

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

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

三驱全向福来轮小车使用的特色底板、TT马达、锂电池、全向福来轮与扩展板

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

知识点:三驱福来轮(三轮全向轮)控制原理

一、福来轮(全向 Omni 轮)基础结构与力学特性
福来轮vs麦克纳姆轮对比
1. 轮子结构
福来轮由主驱动轮毂 + 一圈垂直于主轴的被动小滚轮组成:
电机驱动主轮毂旋转,沿轮毂切线方向输出主动推力;
外圈小滚轮与主轴 90° 垂直,可无阻力被动横向滑动;
单个轮子只能输出单方向主动力,垂直主轴方向完全自由滑动。
2. 和麦克纳姆轮核心区别
麦克纳姆轮:斜 45° 辊子,单轮可同时分解横向 + 纵向分力,最少 4 轮底盘;
福来全向轮:辊子垂直主轴,单轮只有单向主动推力,必须 3 轮呈 120° 三角布局,依靠矢量叠加实现全向移动。

二、三轮标准布局(核心硬件前提)
三个福来轮在圆形底盘上均匀正三角分布,两两夹角严格 120°,每个轮子主轴指向底盘几何中心:

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

三轮120°布局坐标系
1 号轮(前轮):安装角 90°,主轴沿车身 Y 轴正方向;
2 号轮(左后):安装角 210°;
3 号轮(右后):安装角 330°;
每个轮子独立配 1 个直流减速电机 + 驱动芯片,三路 PWM 独立调速、正反转控制。
关键:三个轮子缺一不可,两轮福来轮无法实现全向平移 / 原地自转。

三、底层力学运动原理(矢量叠加核心)
单个福来轮仅能沿自身主轴方向产生推力,垂直主轴方向可自由滑动,无阻力;
三个轮子的推力矢量在 XY 平面叠加,合成车身X 横向、Y 纵向平移速度 + 绕中心旋转角速度;
通过修改三个电机的转速大小、旋转方向(正负速度),改变三个推力矢量,就能合成平面内任意运动:直行、横移、斜走、原地零半径旋转。
运动学速度换算公式(主控代码核心计算)
设车身目标运动:
Vx:车身左右横向速度(右为正)
Vy:车身前后纵向速度(前为正)
ω:车身原地旋转角速度(顺时针为正)
R:底盘中心到任意轮子的距离
三个轮子目标线速度:
plaintext
V1 = Vy + R·ω
V2 = -0.5·Vy - 0.866·Vx + R·ω
V3 = -0.5·Vy + 0.866·Vx + R·ω
计算结果正负号 = 电机转向;数值绝对值 = PWM 调速占空比;
主控收到前进 / 横移 / 转圈指令后,先算出 Vx、Vy、ω,再代入公式算出三路电机转速输出。

四、6 种标准运动电机控制逻辑(对应语音遥控场景)
1. 直线向前(Vy>0,Vx=0,ω=0)
目标:仅纵向向前,无横向偏移、不旋转
计算结果:
V1 = 正转,V2 = 反转,V3 = 反转,三轮速度绝对值相等
1 号轮向前推,2、3 号轮向后抵消横向分力,合力纯向前。
2. 直线向后(Vy<0,Vx=0,ω=0)
全部转向与前进反向:V1 反转,V2、V3 正转,速度大小一致。
3. 车身整体向右横移(Vx>0,Vy=0,ω=0)
V1=0(前轮停机),V2 正转,V3 反转,速度相同;
2、3 轮推力合成纯向右合力,前轮横向自由滑动无阻力。
4. 车身整体向左横移(Vx<0,Vy=0,ω=0)
V1 停机,V2 反转,V3 正转,左右合力向左。
5. 原地顺时针转圈(Vx=0,Vy=0,ω>0)
V1、V2、V3 全部同向正转,速度大小完全相等;
三轮推力形成环绕中心的旋转力偶,无平移分量,原地自转。
6. 斜向行走(Vx、Vy 同时不为 0,ω=0)
三轮按公式分配不同转速,同时产生纵向 + 横向合力,车身斜向直行。
7. 停车
V1=V2=V3=0,三路电机全部断电刹车。

五、电子控制完整流程(行空板 / ESP32 语音小车适配)
1. 硬件链路
主控(行空板 K10)→ 三路 PWM 引脚 → L298N/L9110S 电机驱动 → 三路 N20 减速电机 → 福来轮
PWM 占空比:0~255 对应速度大小;
IO 高低电平控制电机 CW 正转 / CCW 反转;
可选:电机 AB 相编码器,采集脉冲做 PID 速度闭环,修正打滑误差。
2. 软件控制流程(语音小车逻辑)
语音识别模块接收口令(前进 / 右横 / 转圈),解析出目标 Vx、Vy、ω;
主控代入三轮运动学公式,计算 V1/V2/V3 三路电机目标速度;
将速度正负转为电机转向,数值转为 PWM 输出;
循环实时刷新三路电机转速,屏幕同步显示运动状态;
喊 “停车” 时三路电机全部置 0 停机。

六、三轮福来轮 vs 四轮麦克纳姆轮优缺点对比

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

七、典型应用场景
创客教育语音遥控小车(你当前行空板语音项目);
小型桌面巡检机器人、绘图机器人;
狭小空间转运轻型物料 AGV;
云台小型全向移动底座。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

八、三轮驱动与四轮驱动全向福来轮配置图
【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图3

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1




回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 20 分钟前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

【花雕动手做】行空板 K10 系列实验之TT 马达三驱动全向福来轮语音识别控制小车

实验开源代码

  1. // 引入离线语音识别库asr.h,实现语音唤醒、拼音口令识别、持续收音监听
  2. #include "asr.h"
  3. // 行空板K10底层驱动库,负责LCD屏幕初始化、画布文字绘制、主板硬件初始化
  4. #include "unihiker_k10.h"
  5. // Microbit三路电机驱动库,适配三轮福来全向轮底盘,独立控制M1/M2/M3三路电机调速换向
  6. #include <Microbit_Motor.h>
  7. // =====================硬件对象实例化=====================
  8. UNIHIKER_K10   k10;        // 行空板主控对象,统一管理屏幕、系统通信总线
  9. ASR            asr;         // 离线语音识别模块实例,处理麦克风收音与人声解析
  10. uint8_t        screen_dir=2; // 屏幕旋转参数:数值2代表屏幕倒置显示
  11. Microbit_Motor motorbit;    // 三路电机驱动实例,对应三轮福来轮底盘:M1、M2、M3三个独立电机
  12. //=====================================================================
  13. // setup() 上电初始化函数,设备开机/重启仅执行1次
  14. // 功能:初始化主板、语音模块、屏幕,批量注册7条三轮福来轮小车语音控制口令
  15. //=====================================================================
  16. void setup() {
  17.         // 初始化行空板全部底层硬件:串口、I2C总线、LCD屏幕、外设IO资源
  18.         k10.begin();
  19.         // 初始化离线语音识别模块三大核心参数
  20.         // CONTINUOUS:持续收音模式,麦克风不间断监听环境人声
  21.         // CN_MODE:中文识别模式,仅识别中文拼音口令
  22.         // 12000:收音灵敏度阈值,数值越大抗环境噪音、误唤醒能力越强
  23.         asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  24.         // 阻塞循环等待语音模块加载语音模型完成
  25.         // _asrState == 0 代表语音模块未就绪,每100ms循环检测一次状态,防止未初始化调用报错
  26.         while(asr._asrState == 0){delay(100);}
  27.         // 根据预设screen_dir参数初始化LCD显示屏
  28.         k10.initScreen(screen_dir);
  29.         // 创建屏幕绘图画布缓冲区,所有文字先写入画布缓存,统一刷新到实体屏幕
  30.         k10.creatCanvas();
  31.         // 批量注册7条离线语音小车控制指令(拼音匹配识别)
  32.         asr.addASRCommand(0+1, "qian jin");   // ID=1 语音口令:前进
  33.         asr.addASRCommand(1+1, "ting che");   // ID=2 语音口令:停车
  34.         asr.addASRCommand(2+1, "hou tui");    // ID=3 语音口令:后退
  35.         asr.addASRCommand(3+1, "you heng");  // ID=4 语音口令:右横移
  36.         asr.addASRCommand(4+1, "zuo heng");   // ID=5 语音口令:左横移
  37.         asr.addASRCommand(5+1, "shun zhuan"); // ID=6 语音口令:顺时针原地转圈
  38.         asr.addASRCommand(6+1, "ni zhuan");   // ID=7 语音口令:逆时针原地转圈
  39. }
  40. //=====================================================================
  41. // loop() 主循环函数,初始化完成后无限循环运行
  42. // 功能:实时检测语音唤醒、识别语音口令,调用三路电机库控制三轮福来全向小车,同步屏幕状态大字
  43. //=====================================================================
  44. void loop() {
  45.         // 语音唤醒判断:检测麦克风是否识别到固定唤醒词【你好小新】
  46.         if (asr.isWakeUp()) {
  47.                 // 唤醒成功:画布第6行输出红色提示文字
  48.                 k10.canvas->canvasText("已唤醒行空板小车.......", 6, 0xFF0000);
  49.                 // 将画布缓存内容刷新输出到LCD实体屏幕
  50.                 k10.canvas->updateCanvas();
  51.         }
  52.         else {
  53.                 // 未唤醒待机状态:第4行输出蓝色文字,提示用户唤醒关键词
  54.                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
  55.                 k10.canvas->updateCanvas();
  56.         }
  57.         // ==========语音指令1:qian jin 小车直线前进(三轮福来轮)==========
  58.         if (asr.isDetectCmdID(0+1)) {
  59.                 // motorRun(电机通道, 转向, 速度)
  60.                 // M2电机顺时针CW、M3电机逆时针CCW,M1不启动;三轮推力矢量合成纯向前合力
  61.                 motorbit.motorRun(M2, CW, 200);
  62.                 motorbit.motorRun(M3, CCW, 200);
  63.                 // 全屏居中24号黑色大字显示小车运行状态
  64.                 // 参数:X坐标、Y坐标、文字颜色、中英文字体、字号、自动换行开关
  65.                 k10.canvas->canvasText("K10 小车前进", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  66.                 k10.canvas->updateCanvas();
  67.         }
  68.         // ==========语音指令2:ting che 小车全部刹车停止==========
  69.         if (asr.isDetectCmdID(1+1)) {
  70.                 // motorStop(ALL):一次性切断M1/M2/M3三路电机输出,电机断电锁死,小车立刻静止
  71.                 motorbit.motorStop(ALL);
  72.                 k10.canvas->canvasText("K10 小车停止", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  73.                 k10.canvas->updateCanvas();
  74.         }
  75.         // ==========语音指令3:hou tui 小车直线后退==========
  76.         if (asr.isDetectCmdID(2+1)) {
  77.                 // M2逆时针CCW、M3顺时针CW,与前进转向完全反向,矢量合成纯向后推力
  78.                 motorbit.motorRun(M2, CCW, 200);
  79.                 motorbit.motorRun(M3, CW, 200);
  80.                 k10.canvas->canvasText("K10 小车后退", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  81.                 k10.canvas->updateCanvas();
  82.         }
  83.         // ==========语音指令4:you heng 小车整体向右横向平移==========
  84.         if (asr.isDetectCmdID(3+1)) {
  85.                 // M1逆时针、M2顺时针、M3逆时针,三轮推力抵消纵向分力,合成向右横向合力
  86.                 motorbit.motorRun(M1, CCW, 200);
  87.                 motorbit.motorRun(M2, CW, 200);
  88.                 motorbit.motorRun(M3, CCW, 200);
  89.                 k10.canvas->canvasText("K10 小车右横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  90.                 k10.canvas->updateCanvas();
  91.         }
  92.         // ==========语音指令5:zuo heng 小车整体向左横向平移==========
  93.         if (asr.isDetectCmdID(4+1)) {
  94.                 // M1顺时针、M2逆时针、M3顺时针,三轮推力抵消纵向分力,合成向左横向合力
  95.                 motorbit.motorRun(M1, CW, 200);
  96.                 motorbit.motorRun(M2, CCW, 200);
  97.                 motorbit.motorRun(M3, CW, 200);
  98.                 k10.canvas->canvasText("K10小车左横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  99.                 k10.canvas->updateCanvas();
  100.         }
  101.         // ==========语音指令6:shun zhuan 小车原地顺时针转圈==========
  102.         if (asr.isDetectCmdID(5+1)) {
  103.                 // M1/M2/M3全部逆时针CCW同步转动,三轮推力形成环绕底盘中心的旋转力偶,无平移分量
  104.                 motorbit.motorRun(M1, CCW, 200);
  105.                 motorbit.motorRun(M2, CCW, 200);
  106.                 motorbit.motorRun(M3, CCW, 200);
  107.                 k10.canvas->canvasText("K10小车顺时针转圈", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  108.                 k10.canvas->updateCanvas();
  109.         }
  110.         // ==========语音指令7:ni zhuan 小车原地逆时针转圈==========
  111.         if (asr.isDetectCmdID(6+1)) {
  112.                 // M1/M2/M3全部顺时针CW同步转动,反向旋转力偶,车身原地逆时针自转
  113.                 motorbit.motorRun(M1, CW, 200);
  114.                 motorbit.motorRun(M2, CW, 200);
  115.                 motorbit.motorRun(M3, CW, 200);
  116.                 k10.canvas->canvasText("K10小车逆时针转圈", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  117.                 k10.canvas->updateCanvas();
  118.         }
  119.         // 清空画布第6行及下方所有文字,清除上一轮运动状态文字,防止新旧文字重叠产生残影
  120.         k10.canvas->canvasClear(6);
  121. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 13 分钟前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

代码解读

一、项目整体功能
本程序硬件搭配:行空板 K10 + 离线 ASR 语音识别模块 + Microbit 三路电机驱动 + 三轮福来全向轮底盘,实现语音全向小车控制。
固定唤醒口令:你好小新;
共 7 组语音动作指令:前进、停车、后退、右横移、左横移、顺时针原地转圈、逆时针原地转圈;
依靠福来轮 90° 被动辊子矢量推力叠加,实现直行、左右横移、双向零半径自转;
LCD 屏幕使用 24 号大号字体实时显示车辆当前运动状态,三路电机统一速度 200(调速范围 0~255)。

二、头文件与硬件对象解析

  1. #include "asr.h"
  2. #include "unihiker_k10.h"
  3. #include <Microbit_Motor.h>
复制代码

asr.h:离线语音识别库,提供持续收音、唤醒检测、自定义拼音指令识别;
unihiker_k10.h:行空板底层驱动,管理 LCD 屏幕、画布文字、主板硬件初始化;
Microbit_Motor.h:三路电机专用驱动库,独立控制 M1/M2/M3 电机,适配三轮福来轮底盘。

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

k10:行空板主控实例,负责屏幕显示、系统总线初始化;
asr:语音识别实例,处理麦克风收音与人声解析;
screen_dir=2:设置屏幕倒置显示;
motorbit:三路电机驱动对象,对应三轮福来轮三个独立驱动电机 M1、M2、M3。

三、setup () 上电初始化(仅开机运行 1 次)

  1. k10.begin();
复制代码

初始化行空板全部底层硬件、I2C / 串口总线、屏幕外设资源。

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

语音模块初始化配置:
CONTINUOUS:持续收音模式,麦克风实时监听环境人声;
CN_MODE:中文识别模式,仅识别中文拼音口令;
12000:收音灵敏度,数值越大抗噪音、防误唤醒能力越强;
循环阻塞等待语音模块加载语音模型,硬件就绪后才执行后续代码。

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

按照倒置参数点亮 LCD 屏幕,创建绘图缓存画布,所有文字先存入缓存,再统一刷新到屏幕,避免频繁刷屏闪烁。

  1. asr.addASRCommand(0+1, "qian jin");   // ID1 前进
  2. asr.addASRCommand(1+1, "ting che");   // ID2 停车
  3. asr.addASRCommand(2+1, "hou tui");    // ID3 后退
  4. asr.addASRCommand(3+1, "you heng");   // ID4 右横移
  5. asr.addASRCommand(4+1, "zuo heng");    // ID5 左横移
  6. asr.addASRCommand(5+1, "shun zhuan"); // ID6 顺时针转圈
  7. asr.addASRCommand(6+1, "ni zhuan");   // ID7 逆时针转圈
复制代码

批量注册 7 条离线语音拼音口令,离线语音模块仅能识别提前录入的指令,无法识别未注册词语。

四、loop () 无限主循环,实时监听语音指令
1. 唤醒状态检测
asr.isWakeUp() 函数判断是否识别唤醒词「你好小新」:
唤醒成功:屏幕第 6 行红色文字提示 “已唤醒行空板小车”;
未唤醒待机:屏幕第 4 行蓝色文字提示唤醒口令;
updateCanvas() 将画布缓存文字一次性刷新输出到实体屏幕。
2. Microbit 电机库核心函数说明
motorRun(通道, 转向, 速度)
通道:M1/M2/M3 单路电机,ALL 代表同时控制全部三路;
转向:CW顺时针,CCW逆时针;
速度区间:0~255,本程序统一使用 200 中高速;
motorStop(ALL):切断三路电机全部输出,电机断电刹车,小车立刻锁死静止。
3. 每条语音指令运动逻辑(三轮福来轮矢量推力原理)
① qian jin 前进

  1. motorbit.motorRun(M2, CW, 200);
  2. motorbit.motorRun(M3, CCW, 200);
复制代码

M1 前轮停机,M2、M3 后轮反向转动,两轮推力矢量叠加,横向分力抵消,合力纯向前,车身直线直行。
② ting che 停车

  1. motorbit.motorStop(ALL);
复制代码

M1/M2/M3 三路电机全部停止输出,三轮无驱动力,小车立刻静止锁死。
③ hou tui 后退

  1. motorbit.motorRun(M2, CCW, 200);
  2. motorbit.motorRun(M3, CW, 200);
复制代码

M2、M3 转向与前进完全反向,矢量合成纯向后推力,车身直线倒退。
④ you heng 右横移

  1. motorbit.motorRun(M1, CCW, 200);
  2. motorbit.motorRun(M2, CW, 200);
  3. motorbit.motorRun(M3, CCW, 200);
复制代码

三轮配合转动,前后纵向推力相互抵消,仅保留向右横向合力,车身整体向右平移。
⑤ zuo heng 左横移

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M2, CCW, 200);
  3. motorbit.motorRun(M3, CW, 200);
复制代码

三轮推力抵消纵向分力,横向合力向左,车身整体向左平移。
⑥ shun zhuan 顺时针原地转圈

  1. motorbit.motorRun(M1, CCW, 200);
  2. motorbit.motorRun(M2, CCW, 200);
  3. motorbit.motorRun(M3, CCW, 200);
复制代码

三轮全部同步逆时针转动,推力形成环绕底盘中心的旋转力偶,无平移分量,原地持续顺时针自转。
⑦ ni zhuan 逆时针原地转圈

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M2, CW, 200);
  3. motorbit.motorRun(M3, CW, 200);
复制代码

三轮全部同步顺时针转动,反向旋转力偶,车身原地逆时针持续自转。
4. 屏幕清理语句

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

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

五、7 种运动模式电机配置对照表

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

六、完整设备运行流程
设备上电,初始化行空板硬件、语音模块,循环等待语音芯片加载语音模型;
初始化倒置 LCD 屏幕、创建绘图画布,录入 7 条小车语音控制拼音指令;
麦克风不间断持续监听唤醒词「你好小新」;
说出唤醒词解锁语音控制权限,屏幕红色文字提示已唤醒;
说出对应语音口令,三路电机按照三轮福来轮矢量差速逻辑运转,屏幕同步大字显示当前运动状态;
循环末尾自动清空屏幕下方文字,持续等待下一条语音指令。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 9 分钟前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

Mind+图形编程

  【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2
【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 6 分钟前

【花雕动手做】行空板 K10 之TT马达三驱全向轮语音小车

实验场景图与视频记录

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图2

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图1

【花雕动手做】行空板 K10 之 TT 马达三驱全向轮语音小车图3
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail