查看“开源电驱机器小车CUBE/zh”的源代码
←
开源电驱机器小车CUBE/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==概述== *项目名称:开源电驱机器小车CUBE *目的:通过Microduino Joypad来控制Cube机器人小车 *难度:高级 *耗时:3小时 *制作者:Microduino Studio-YLB ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板(Joypad) |- |[[Microduino-Core+/zh]]||1||核心板(Robot) |- |[[Microduino-USBTTL/zh]]||1||下载程序 |- |[[Microduino-nRF24/zh]]||2||无线通讯 |- |[[Microduino-Joypad/zh]]||1||遥控 |- |[[Microduino-TFT/zh]]||1||显示 |- |[[Microduino-Motor/zh]]||1||四轴电机驱动 |- |[[Microduino-Robot/zh]]||1||驱动连接底板 |} *其他设备 {|class="wikitable" |- |模块||数量||功能 |- |机器小车机架||1||车体 |- |螺丝||18||固定 |- |螺母||8||固定 |- |Micro-USB数据线||1||下载程序 |- |车轮||1||车体 |- |电机||1||驱动车轮 |- |电池||1||供电 |} [[File:Boxz物料.jpg||1000px|center]] ==实验原理== 机器人小车种类比较多,如循迹,壁障,蓝牙遥控小车,电脑鼠等。但是其行走控制方式基本是一样的,无非就是前后左右四个方向运动。当然结构上会有一定区别,不同功能需要采用不同传感器,本次我们主要使用两轮驱动,通过控制两个轮子的旋转方向,实现前进后退,旋转等功能,当然还要加上万向轮,这样才能保持平衡。 该小车结构简单,主要包括三个方面:车轮、车身、控制系统。 1)车轮采用两个减速电机,扭力大,可PWM调速,控制简单。 2)车身采用木板,大小:8cm*8cm*8cm。 3)整个控制系统包括四个部分: *供电系统 因为Cube小车体积比较小,所以采用锂电池。 *中央处理器 中央处理器是整个小车的核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。采用Microduino-Core作为核心。 *无线通讯 小车采用Microduino-nRF24无线通讯方案,通讯速度响应快,控制范围:空阔地域大约100米。 *电机控制 采用Microduino-Robot直流电机驱动模块,一个模块能够驱动两个电机,同时将中央处理器和直流电机模块连接起来。 ==文档== *百度盘下载 **Joypad代码:[http://pan.baidu.com/s/1o6zVh3O Joypad_RC] 提取码:z6k2 **Cube机器人:[http://pan.baidu.com/s/1c0kG04w Robot_Microduino] 提取码:tjpu *Github下载 **Joypad代码:[https://github.com/wasdpkj/Joypad_RC/tree/master/Joypad_RC Joypad_RC] **Cube 小车代码:[https://github.com/wasdpkj/Robot_Microduino/blob/master/Robot_Microduino/Robot_Microduino.ino Robot_Microduino] ==调试过程== *Cube小车程序 将Microduino Core、Microduino USBTTL堆叠在一起.用数据线将写好的程序通过Microduino USBTTL上传到Microduino Core上。 注意:最好不要将所有模块堆叠在一起之后再上传程序 打开Aroduino IDE,若电脑中没有安装,则参照附录中的安装方法,先安装Aicroduino IDE。点击左上【文件】选项→点击【打开】。 [[File:Cubeopen.png||600px|center]] 浏览到项目程序地址,点击“Robot_Microduino.ino”程序打开 [[File:Cubeopen2.png||600px|center]] 之后点击左上角的"√"进行编译,点击上边栏的工具,确认板卡(Microduino-Core)处理器(Atmega328P@16M,5V)和端口号(COMX)。三项都如图确认无误之后点击"→"按钮下载程序到开发板上 [[File:Cubeselect.png||600px|center]] *Joypad程序 过程与上一步基本相同。 将Microduino Core、Microduino USBTTL堆叠在一起.用数据线将写好的程序通过Microduino USBTTL上传到Microduino Core上。 注意:最好不要将所有模块堆叠在一起之后再上传程序。 【文件】→【打开】 浏览到项目程序地址,点击“Robot_Microduino.ino”程序并打开 之后点击左上角的"√"进行编译,点击上边栏的工具,确认板卡(Microduino-Core)处理器(Atmega328P@16M,5V)和端口号(COMX)。三项都如图确认无误之后点击"→"按钮下载程序到开发板上 ==Cube机器人拼装== *'''Step1''':首先将车子的轮胎和电击用支架和螺丝组合起来,再将轮胎和电机固定在A1上 [[File:Cubestep1.jpg||600px|center]] *'''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搭建==== *'''Step 1''':将Microduino-TFT从Microduino-Joypad面板后面卡进Microduino-Joypad面板上,用尼龙螺丝固定,注意Microduino-TFT安装方向 [[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不会引起冲突,但是别的通信模块有时会造成串口冲突,养成好习惯。 *锂电池正负极别接错了,否则会烧坏电路。 *调试好后,实际运行时不要使用USB供电,电压不足,请使用电池。 ==程序说明== *Joypad部分 def.h中 定义了 <source lang = "cpp"> uint8_t nrf_channal = 70; //0~125 </source> nrf_channal为nrf通信的通道,joypad和Cube小车的代码中都会有该定义 当通道一致时则Joypad可与Cube小车成功连接。 在小车代码中会有如下程序段 <source lang = "cpp"> //nRF============================== SPI.begin(); //初始化SPI总线 radio.begin(); network.begin(/*channel*/ 70 , /*node address*/ this_node); </source> 在data.h中 <source lang = "cpp"> outBuf[0] = Joy1_x; outBuf[1] = Joy1_y; 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> 8位数组outBuf表示Joypad发出的8位数据,0位为右摇杆左右,1为右摇杆上下,2为左摇杆左右,3位左摇杆上下,4~7位对应AUX0~4 在nrf.h中 <source lang = "cpp"> struct send_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> 此处定义的send_a结构体位对应的0位要发送的数据 *小车部分 这四个定义为控制减速电机左轮前进后退与右轮前进后退 <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> ==视频==
该页面使用的模板:
模板:Upload
(
查看源代码
)
返回至
开源电驱机器小车CUBE/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息