“开源电驱机器小车CUBE/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
调试过程
拼装过程
 
(未显示5个用户的106个中间版本)
第1行: 第1行:
{| style="width: 800px;"
+
{| style="width: 1000px;"
 
|-
 
|-
 
|
 
|
 
==概述==
 
==概述==
 
*项目名称:开源电驱机器小车CUBE
 
*项目名称:开源电驱机器小车CUBE
*目的:通过Microduino Joypad来控制Cube机器人小车
+
*目的:做一个Cube机器人小车
*难度:高级
+
**可以使用Joypad遥控
*耗时:3小时
+
**也可以支持蓝牙APP遥控
*制作者:Microduino Studio-YLB
+
*难度:中级
 +
*耗时:2小时
 +
*制作者:@老潘
  
 
==材料清单==
 
==材料清单==
*Microduino设备
+
{| border="0" cellpadding="10" width="100%"
 +
|-
 +
|width="33%" valign="top" align="left"|
 +
 
 +
===模块清单 (Joypad模式)===
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
第17行: 第23行:
 
|[[Microduino-Core/zh]]||2||核心模块
 
|[[Microduino-Core/zh]]||2||核心模块
 
|-
 
|-
|[[Microduino-USBTTL/zh]]||1||下载程序模块
+
|[[Microduino-USBTTL/zh]]||1||下载模块
 
|-
 
|-
|[[Microduino-Module nRF/zh]]||2||无线通讯模块
+
|[[Microduino-Module nRF/zh]]||2||通讯模块
 
|-
 
|-
|[[Microduino-Shield Joypad/zh]]||1||遥控模块
+
|[[Microduino-Module TFT/zh]]||1||显示模块
 
|-
 
|-
|[[Microduino-Module TFT/zh]]||1||显示模块
+
|[[Microduino-Shield Joypad/zh]]||1||遥控底板
 
|-
 
|-
|[[Microduino-Shield Robot/zh]]||1||驱动底板模块
+
|[[Microduino-Shield Robot/zh]]||1||驱动底板
 
|}
 
|}
*其他设备
+
 
 +
|width="33%" valign="top" align="left"|
 +
 
 +
===模块清单 (蓝牙模式)===
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
 
|模块||数量||功能
 
|模块||数量||功能
 +
|-
 +
|[[Microduino-Core/zh]]||1||核心模块
 +
|-
 +
|[[Microduino-USBTTL/zh]]||1||下载模块
 +
|-
 +
|[[Microduino-Module BLE/zh]]||1||通讯模块
 +
|-
 +
|[[Microduino-Shield Robot/zh]]||1||驱动底板
 +
|}
 +
 +
|width="33%" valign="top" align="left"|
 +
 +
===其他材料===
 +
{|class="wikitable"
 +
|-
 +
|部件||数量||功能
 
|-
 
|-
 
|机器小车机架||1||车体
 
|机器小车机架||1||车体
 
|-
 
|-
|螺丝||18||固定
+
|螺丝||8||固定
 
|-
 
|-
 
|螺母||8||固定
 
|螺母||8||固定
第40行: 第65行:
 
|Micro-USB数据线||1||下载程序
 
|Micro-USB数据线||1||下载程序
 
|-
 
|-
|车轮||1||车体
+
|47mm车轮+电机固定座||2||车轮
 
|-
 
|-
|电机||1||驱动车轮
+
|N20直流减速电机||2||驱动车轮
 
|-
 
|-
|电池||1||供电
+
|3.7v锂电池||1||供电
 +
|}
 
|}
 
|}
  
【此处配图要更新,robot底板】
+
[[File:Cube Robot Material List.jpg||1000px|center]]
[[File:Boxz物料.jpg||1000px|center]]
 
  
 
==实验原理==
 
==实验原理==
第63行: 第88行:
 
**采用[[Microduino-Core/zh]]作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
 
**采用[[Microduino-Core/zh]]作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
 
*无线通讯
 
*无线通讯
**采用[[Microduino-Module nRF/zh]]无线通讯方案,通讯速度响应快,控制范围:空阔地域大约50米。
+
**Joypad模式下采用[[Microduino-Module nRF/zh]]无线通讯方案,通讯速度响应快,控制范围:空阔地域大约50米。
 +
**蓝牙模式下采用[[Microduino-Module BLE/zh]]无线通讯方案,配合手机APP直接控制,控制范围:空阔地域大约20米。
 
*电机控制
 
*电机控制
 
**采用[[Microduino-Shield Robot/zh]]上自带的一组直流电机驱动单元,一个单元能够驱动两个电机。
 
**采用[[Microduino-Shield Robot/zh]]上自带的一组直流电机驱动单元,一个单元能够驱动两个电机。
第69行: 第95行:
 
**采用[[Microduino-Shield Robot/zh]]上自带的单节锂电池管理单元,管理充放电功能。
 
**采用[[Microduino-Shield Robot/zh]]上自带的单节锂电池管理单元,管理充放电功能。
  
==文档==
+
==程序下载==
*Github下载
+
*Cube 机器人代码:[https://github.com/Microduino/Robot_Microduino Robot_Microduino]
**Joypad代码:[https://github.com/Microduino/Joypad_RC Joypad_RC]
 
**Cube 机器人代码:[https://github.com/Microduino/Robot_Microduino Robot_Microduino]
 
  
==调试过程==
+
==程序烧写==
*Cube小车程序
+
{{Upload
**将[[Microduino-Core/zh]]、[[Microduino-USBTTL/zh]]堆叠在一起。用数据线连接其中的[[Microduino-USBTTL/zh]]上传程序。
+
|nameA=[[Microduino-Core/zh]]、[[Microduino-USBTTL/zh]]
***注意:最好不要将所有模块堆叠在一起之后再上传程序
+
|nameB=[[Microduino-USBTTL/zh]]
 +
|boardName=Microduino/mCookie-Core(328p)、Atmega328P@16M,5V
 +
|fileName=Robot_Microduino.ino
 +
}}
  
 +
==拼装过程==
  
**打开Arduino IDE for Microduino,环境搭建参考:[[AVR核心:Getting started/zh]]
+
[[File:Cube Robot 1.jpg||1000px|center]]
**确认板卡(Microduino-Core)处理器(Atmega328P@16M,5V)和端口号(COMX)
+
<br>
**打开你所下载的项目中“Robot_Microduino.ino”程序
+
[[File:Cube Robot 2.jpg||1000px|center]]
**[[File:Cubeopen2.png||600px|center]]
+
<br>
**几项都无误后,点击"→"按钮下载程序到开发板上
+
[[File:Cube Robot 3.jpg||1000px|center]]
 +
<br>
 +
[[File:Cube Robot 4.jpg||1000px|center]]
 +
<br>
 +
[[File:Cube Robot 5.jpg||1000px|center]]
 +
<br>
 +
[[File:Cube Robot 6.jpg||1000px|center]]
  
 +
==操作说明==
 +
*如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式
  
*Joypad程序
+
===Joypad遥控指南===
过程与上一步基本相同。在【文件】→【打开】这一步中找到Joypad_RC.ino并选择板卡型号之后下载即可。
+
*搭建过程可参考以下页面:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh Joypad使用指南]
  
==Cube机器人拼装==
+
*Joypad通讯模式配置*
*'''Step1''':首先将车子的轮胎和电击用支架和螺丝组合起来,再将轮胎和电机固定在A1上
+
*模式配置可参考以下页面:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#.E9.80.9A.E8.AE.AF.E6.A8.A1.E5.BC.8F 通讯模式配置]
[[File:Cubestep1.jpg||600px|center]]
+
**当我们使用[[Microduino-Module nRF/zh]]作为通讯模块时,Joypad对应选择nRF模式即可
*'''Step2''':将A2插入A1两边的凹口位置,再将B1接在A1顶部,A3接在A1底部然后用A4进行固定
 
[[File:Cubestep2.jpg||600px|center]]
 
*'''Step3''':将B2和C1分别接在B1的左右边对应位置
 
[[File:Cubestep3.jpg||600px|center]]
 
*'''Step4''':将nRF模块底部接上天线,再与Core进行拼接,之后将其与电池连接,并加在Robot底板上。使用螺丝将底板固定在B1上
 
[[File:Cubestep4.jpg||600px|center]]
 
*'''Step5''':将C2拼接在A1对应位置固定
 
[[File:Cubestep5.jpg||600px|center]]
 
*'''Step6''':将D1接入B2和C1顶部接口部分,再将D2接到B2和C1前方的凹槽部分,完成安装后将天线的贴纸撕下,将天线贴在任意位置
 
[[File:Cubestep6.jpg||600px|center]]
 
  
====Joypad搭建====
+
*Joypad电池使用说明*
*'''Step 1''':将Microduino-TFT从Microduino-Joypad面板后面卡进Microduino-Joypad面板上,用尼龙螺丝固定,注意Microduino-TFT安装方向
+
*特别要注意的是电池使用说明:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#Step-3_.E7.94.B5.E6.B1.A0.E9.80.9A.E7.94.B5 电池使用说明]
[[File:Joypadstep1.jpg|center|600px]]
 
*'''Step 2''':将传感器接线插在Microduino-TFT的接口上
 
[[File:Joypadstep2.jpg|center|600px]]
 
'''注意:接不同的电池需要拨动中间的开关,在图中已有标志。需要先拨开关再接入电池,否则会影响使用。'''
 
[[File:Joypadstep1_1.jpg|center|800px]]
 
*'''Step 3''':首先分别将两个摇杆按键、电池、四个白色按键放入对应位置,之后将连接好天线的nRF模块和Core装到Joypad底板上
 
[[File:Joypadstep3.jpg|center|600px]]
 
*'''Step 4''':将Microduino-TFT传感器接线的另一头接到底板上的相应位置,之后将长版螺丝帽放到四个角的相应位置
 
[[File:Joypadstep4.jpg|center|600px]]
 
*'''Step 5''':将Joypad的表壳和底板使用螺丝和螺丝帽固定好
 
[[File:Joypadstep5.jpg|center|600px]]
 
*'''Step 6''':组装完成后将天线上的贴纸撕下,将天线贴在底板背面的任意位置,至此Joypad组装完毕
 
[[File:Joypadstep6.jpg|center|600px]]
 
  
====Joypad搭建调试====
 
*按键对应
 
在打开Joypad之后的4秒左右时间之内按下Key1(下方最左侧的按键),会进入设置(Config)模式
 
[[File:Step1进入设置.jpg|600px|center|]]
 
*进入设置模式
 
按照图中的颜色,从左至右对应为Key1~Key4
 
[[File:Step1按键对应.jpg|600px|center|]]
 
注意:必须在进入操作界面前进入(4S左右时间)。若未进入则重启进入'''
 
*摇杆校准
 
按动Key3和Key4使光标上下移动,Key1为返回,Key2为确认
 
选择第一项Joystick Config进入摇杆设置模式
 
继续选择Joystick Correct进入摇杆校准模式。
 
进入之后会显示如图中第三张图所示的界面,初始状态为两个十字
 
此时摇动左右摇杆至最上,最下,最左,最右四个极限状态
 
(推荐操作方式:将摇杆摇动一圈)
 
摇动之后会看到十字的四个方向出现圆圈,圆圈扩大到最大状态证明已经是摇杆的极限位置
 
校准之后按Key2确认并返回上一页面
 
[[File:Step2摇杆校准.jpg|600px|center|]]
 
*选择控制模式
 
按Key1回到主界面,选择第二项Protocol Config进入模式选择
 
选择第一项Mode,之后选择nRF24即robot控制模式,按下Key2确认并返回
 
[[File:Step3设置Robot模式.jpg|600px|center|]]
 
*设置通信信道
 
返回二级菜单,选择nRF24 Channel按下Key2确认
 
选择70,它是与Robot_Microduino.ino中nRF24的配置函数设置相对应的
 
[[File:Step4通信通道设置robot.jpg|600px|center|]]
 
至此,Cube小车和遥控器已经组装完成
 
  
==注意问题==
+
===蓝牙遥控指南===
*下载程序时候最好只叠加core(core+)和USBTTL,虽然本次搭建涉及的nRF24不会引起冲突,但是别的通信模块有时会造成串口冲突,养成好习惯。
+
*首先下载蓝牙遥控APP(Android):[[File:mTank.zip]]
*锂电池正负极别接错了,否则会烧坏电路。
+
*确定手机版本号是Android 4.3以上,确定当前蓝牙功能已打开
*调试好后,实际运行时不要使用USB供电,电压不足,请使用电池。
+
*搜索到名为“Microduino”的蓝牙设备进行连接
==程序说明==
+
*接下来就可以通过APP进行遥控了
 +
*详细参考:[[mRobot]]
  
*Joypad部分
+
==代码说明==
def.h中
+
*在“user_def.h”文件是我们的配置文件
定义了
+
*以下代码可以配置nRF模式下通道,需要保证和Joypad遥控器一致
 +
*Joypad的nRF模式通道配置可参考:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#nRF.E6.A8.A1.E5.BC.8F.E9.80.9A.E9.81.93.E9.85.8D.E7.BD.AE nRF模式通道配置]
 
<source lang = "cpp">
 
<source lang = "cpp">
uint8_t nrf_channal = 70; //0~125
+
#define NRF_CHANNEL 70  //nRF通道
 
</source>
 
</source>
nrf_channal为nrf通信的通道,joypad和Cube小车的代码中都会有该定义
+
 
当通道一致时则Joypad可与Cube小车成功连接。
+
 
在小车代码中会有如下程序段
+
*以下代码可以配置油门和转向对应通道
 +
*对应通道说明可参考:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#Step-5_.E9.80.9A.E9.81.93.2F.E6.93.8D.E4.BD.9C.E8.AF.B4.E6.98.8E 通道/操作说明]
 
<source lang = "cpp">
 
<source lang = "cpp">
  //nRF==============================
+
#define CHANNEL_THROTTLE 2 //油门通道
  SPI.begin(); //初始化SPI总线
+
#define CHANNEL_STEERING 1 //转向通道
  radio.begin();
 
  network.begin(/*channel*/ 70 , /*node address*/ this_node);
 
 
</source>
 
</source>
在data.h中
+
 
 +
 
 +
*以下代码可以修正两轮的转速比例
 +
**值得范围是-1到1之间
 +
**设置成-1,是最大转速比反转
 +
**设置成1,是最大转速比正转,
 +
**如果小车不能走直线,应该将较慢的一边轮子的转速比例值降低
 
<source lang = "cpp">
 
<source lang = "cpp">
  outBuf[0] = Joy1_x;
+
#define motor_fixL 1 //速度修正 -1到1之间
  outBuf[1] = Joy1_y;
+
#define motor_fixR 1 //速度修正 -1到1之间
  outBuf[2] = Joy_x;
 
  outBuf[3] = Joy_y;
 
  outBuf[4] = map(AUX[0], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
 
  outBuf[5] = map(AUX[1], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
 
  outBuf[6] = map(AUX[2], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
 
  outBuf[7] = map(AUX[3], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
 
 
</source>
 
</source>
8位数组outBuf表示Joypad发出的8位数据,0位为右摇杆左右,1为右摇杆上下,2为左摇杆左右,3位左摇杆上下,4~7位对应AUX0~4
 
  
在nrf.h中
+
*用LPC来实现Cube小车,开发笔记:[http://wiki.microduino.cn/index.php/LPC%E5%BC%80%E5%8F%91%E7%AC%94%E8%AE%B0-Cube%E5%B0%8F%E8%BD%A6 LPC开发笔记-Cube小车]
<source lang = "cpp">
+
 
struct send_a //发送
+
==疑难解答/FAQ==
{
+
*Q:CUBE小车如何选择Joypad模式和蓝牙模式?
  uint32_t ms;
+
**A:不用手动选择,如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式。
  uint16_t rf_CH0;
+
 
  uint16_t rf_CH1;
+
*Q:CUBE小车支持哪些电池?
  uint16_t rf_CH2;
+
**A:CUBE支持3.7v 1S锂电池。
  uint16_t rf_CH3;
+
 
  uint16_t rf_CH4;
+
*Q:CUBE小车的电机怎么接?
  uint16_t rf_CH5;
+
**A:两个电机分别接在电机接口A.A/A.B上即可。
  uint16_t rf_CH6;
+
 
  uint16_t rf_CH7;
+
*Q:我的手机支持蓝牙遥控吗?
};
+
**A:只要是Android 4.3以上,都可以支持。
</source>
 
此处定义的send_a结构体为对应的9位要发送的数据
 
  
*小车部分
 
这四个定义为控制减速电机左轮前进后退与右轮前进后退
 
<source lang = "cpp">
 
#define motor_pin0A 5  //PWM left
 
#define motor_pin0B 7
 
#define motor_pin1A 6  //PWM
 
#define motor_pin1B 8
 
</source>
 
此处的receive_a对应Joypad程序中的send_a
 
<source lang = "cpp">
 
struct receive_a //接收
 
{
 
  uint32_t ms;
 
  uint16_t rf_CH0;
 
  uint16_t rf_CH1;
 
  uint16_t rf_CH2;
 
  uint16_t rf_CH3;
 
  uint16_t rf_CH4;
 
  uint16_t rf_CH5;
 
  uint16_t rf_CH6;
 
  uint16_t rf_CH7;
 
};
 
</source>
 
选择CH3为左摇杆控制前后,CH0位右摇杆控制左右
 
<source lang = "cpp">
 
_i[0] = map(rec.rf_CH3, 1000, 2000, -MAX_THROTTLE, MAX_THROTTLE); 
 
_i = _turn;
 
_i[0] = map(rec.rf_CH0, 1000, 2000, -MAX_STEERING, MAX_STEERING);
 
</source>
 
  
==视频==
+
|}

2017年8月4日 (五) 01:49的最新版本

概述

  • 项目名称:开源电驱机器小车CUBE
  • 目的:做一个Cube机器人小车
    • 可以使用Joypad遥控
    • 也可以支持蓝牙APP遥控
  • 难度:中级
  • 耗时:2小时
  • 制作者:@老潘

材料清单

模块清单 (Joypad模式)

模块 数量 功能
Microduino-Core/zh 2 核心模块
Microduino-USBTTL/zh 1 下载模块
Microduino-Module nRF/zh 2 通讯模块
Microduino-Module TFT/zh 1 显示模块
Microduino-Shield Joypad/zh 1 遥控底板
Microduino-Shield Robot/zh 1 驱动底板

模块清单 (蓝牙模式)

模块 数量 功能
Microduino-Core/zh 1 核心模块
Microduino-USBTTL/zh 1 下载模块
Microduino-Module BLE/zh 1 通讯模块
Microduino-Shield Robot/zh 1 驱动底板

其他材料

部件 数量 功能
机器小车机架 1 车体
螺丝 8 固定
螺母 8 固定
Micro-USB数据线 1 下载程序
47mm车轮+电机固定座 2 车轮
N20直流减速电机 2 驱动车轮
3.7v锂电池 1 供电
Cube Robot Material List.jpg

实验原理

  • 机器人小车种类比较多,如循迹,壁障,蓝牙遥控小车,电脑鼠等,不同功能需要采用不同传感器。
  • 但是其行走控制方式基本是一样的,无非就是前后左右四个方向运动。
  • 本次我们主要使用两轮驱动的结构,通过控制两个轮子的旋转方向,实现前进后退,旋转等功能,当然还要加上辅助轮,这样才能保持平衡。
  • 该小车结构简单,主要包括三个方面:车轮、车身、控制系统。
    • 1)车轮采用两个减速电机,扭力大,可PWM调速,控制简单。
    • 2)车身采用木板,大小:8cm*8cm*8cm。
    • 3)整个控制系统包括四个部分:
  • 中央处理器
    • 采用Microduino-Core/zh作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
  • 无线通讯
    • Joypad模式下采用Microduino-Module nRF/zh无线通讯方案,通讯速度响应快,控制范围:空阔地域大约50米。
    • 蓝牙模式下采用Microduino-Module BLE/zh无线通讯方案,配合手机APP直接控制,控制范围:空阔地域大约20米。
  • 电机控制
  • 供电系统

程序下载

程序烧写

    • 用数据线连接其中的Microduino-USBTTL/zh准备上传程序
    • 注意:最好不要将所有模块堆叠在一起之后再上传程序
  • 打开Arduino IDE for Microduino,环境,(搭建参考:AVR核心:Getting started/zh
  • 点击【工具】,确认开发板/处理器(Microduino/mCookie-Core(328p)、Atmega328P@16M,5V)选择无误,并选中对应端口号(COMX)
  • 点击【文件】->【打开】,浏览到项目程序地址,点击“Robot_Microduino.ino”程序打开
  • 几项都无误后,点击"→"按钮下载程序到开发板上

拼装过程

Cube Robot 1.jpg


Cube Robot 2.jpg


Cube Robot 3.jpg


Cube Robot 4.jpg


Cube Robot 5.jpg


Cube Robot 6.jpg

操作说明

  • 如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式

Joypad遥控指南


蓝牙遥控指南

  • 首先下载蓝牙遥控APP(Android):文件:MTank.zip
  • 确定手机版本号是Android 4.3以上,确定当前蓝牙功能已打开
  • 搜索到名为“Microduino”的蓝牙设备进行连接
  • 接下来就可以通过APP进行遥控了
  • 详细参考:mRobot

代码说明

  • 在“user_def.h”文件是我们的配置文件
  • 以下代码可以配置nRF模式下通道,需要保证和Joypad遥控器一致
  • Joypad的nRF模式通道配置可参考:nRF模式通道配置
#define NRF_CHANNEL 70  //nRF通道


  • 以下代码可以配置油门和转向对应通道
  • 对应通道说明可参考:通道/操作说明
#define CHANNEL_THROTTLE  2 //油门通道
#define CHANNEL_STEERING  1 //转向通道


  • 以下代码可以修正两轮的转速比例
    • 值得范围是-1到1之间
    • 设置成-1,是最大转速比反转
    • 设置成1,是最大转速比正转,
    • 如果小车不能走直线,应该将较慢的一边轮子的转速比例值降低
#define motor_fixL 1  //速度修正 -1到1之间
#define motor_fixR 1  //速度修正 -1到1之间

疑难解答/FAQ

  • Q:CUBE小车如何选择Joypad模式和蓝牙模式?
    • A:不用手动选择,如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式。
  • Q:CUBE小车支持哪些电池?
    • A:CUBE支持3.7v 1S锂电池。
  • Q:CUBE小车的电机怎么接?
    • A:两个电机分别接在电机接口A.A/A.B上即可。
  • Q:我的手机支持蓝牙遥控吗?
    • A:只要是Android 4.3以上,都可以支持。