蓝牙手柄遥控虫虫机器人

2015-07-213.7万
精华项目
AI 快速预览详细 收起
本教程介绍了如何使用编程手柄和蓝牙模块来控制6足虫虫机器人。首先列出了所需的硬件清单,包括BLE LINK蓝牙4.0通讯模块、可编程游戏手柄和虫虫机器人六足版。接着详细说明了蓝牙模块的调试过程,包括波特率设置和主从机模式配置。然后讲解了手柄程序的改写方法,以及如何通过串口数据传输实现对虫虫机器人的控制。最后,提供了最终调试和成品展示的步骤。
蓝牙手柄遥控虫虫机器人
6足虫虫作为虫虫界的战神,没有使用蓝牙来驾驭它未免有写遗憾。下面是我制作的用编程手柄配合蓝牙模块完成对6足虫虫的控制教程,快来体验一把真正的战神归来!
蓝牙手柄遥控虫虫机器人图6

实例视频
Step1:所需硬件

Step2:调试蓝牙模块
通过串口指令来配置蓝牙模块
通过Arduino IDE自带的串口监视器来完成蓝牙配置。具体方法如下:
11.打开Arduino IDE
2.在菜单-》工具-》串口中选择正确的设备
3.开启串口监视器 (点击窗口的右上角的按键)
4.右下角两个下拉菜单中选择"No line ending"(没有结束符)115200 波特
5.在输入框中输入"+++",并点击发送
6.如果收到“Enter AT Mode”,就证明已经进入AT指令模式.

蓝牙手柄遥控虫虫机器人图1

将虫虫机器人上的Bluno Beetle设置为从机,设置波特率为115200方法如下:
5. 右下角两个下拉菜单中选择"Both NL & CR"115200 波特
6. 在输入框中输入AT指令,并点击发送键。输入AT+UART=115200来设置波特率
7. 如果BLE配置成功,界面将会返回"OK"
8. 如果收到“ERROR CMD”,可以再发一遍。发送多次后如果还是“ERROR CMD”,你需要检查一下指令发送是否正确。


输入AT+UART=115200来设置波特率
蓝牙手柄遥控虫虫机器人图2


输入AT+ROLE=ROLE_PERIPHERAL将蓝牙模组设置为从机
蓝牙手柄遥控虫虫机器人图3

给模块供电查看两块蓝牙能否正常连接(主从机的link灯都亮)一主一从成对正常使用时灯不会灭。如主机和从机距离太远而断线,则主机和从机的灯
使用同样的方法BLE LINK 蓝牙4.0通讯模块设置为主机(在AT指令模式下输入AT+ROLE=ROLE_CENTRAL),设置波特率为115200一直闪,如果它们距离再靠近,则又会找在一起而自动连上。主机会记忆它配好的从机,一上电给主机就会找它记忆的从机地址。




STEP3调试手柄
将蓝牙模块安装在可编程手柄主板xbee插槽上,使用手柄资料库给出的按键测试程序查看手柄按键是否可以正常触发。


蓝牙手柄遥控虫虫机器人图8


蓝牙手柄遥控虫虫机器人图7

改写手柄的程序如下:
  1. int buttonState[17];
  2. int joystick[4];
  3. int AnalogButton[2];
  4. void setup()
  5. {
  6.   Serial.begin(115200);  //Init the Serial baudrate
  7.   Serial1.begin(115200);//初始化串口1的波特率为115200
  8.   InitIO();             // Initialize the inputs/outputs and the buffers
  9. }
  10. void InitIO(){
  11.   for(int i = 0; i < 17; i++) pinMode(i, INPUT);
  12. }
  13. void loop()
  14. {
  15.   DataUpdate();  //read the buttons and the joysticks data
  16.   printData();   //print the datas and states
  17.   delay(720);   //通过计算得到的小虫电机运作一套动作的时间
  18. }
  19. void DataUpdate(){
  20.   
  21.   for(int i = 3; i < 17; i++)  buttonState = digitalRead(i);
  22.   buttonState[0] = analogRead(0);
  23.   buttonState[1] = analogRead(1);
  24.   for(int i = 0; i < 4; i++)  joystick = analogRead(i);
  25.   for(int i = 4; i < 6; i++)  AnalogButton[i-4] = analogRead(i);
  26.   
  27. }
  28. String Buttons[17] = {
  29.   "J2","J1","NULL","S2","S1","UP","LEFT","DOWN","RIGHT","1","4","2","3","RZ1","RZ2","LZ1","LZ2"};
  30.   // Buttons Nmes
  31. void printData(){
  32.   
  33.   for(int i = 3; i < 17; i++)  if(buttonState == 0)  Serial1.print(i),Serial.print(i);//为了简化运算没有输出手柄摇杆的模拟量8。
  34. }
复制代码


为小虫上传如下代码(把收到的串口数据都发回去):
void setup()
{    Serial.begin(115200);               //initial the Serial} void loop()
{   
if(Serial.available())   
{        
Serial.write(Serial.read());    //send what has been received   
}
}


蓝牙手柄遥控虫虫机器人图4

可知蓝牙手柄与小虫上的Bluno beetle可以正常连接。



Step3:调试小虫
将小虫原程序中的蔽障部分删去加入蓝牙控制代码
void loop()
{        
if (Serial.available() > 0) {// 只在收到数据时发送数据        
incoming = Serial.read();  // 读取传入的字节
                //Serial.println(incoming, DEC); // 指示你收到的数据

if(incoming== 53)                    //前进
forward();
else if(incoming== 55)              //后退
reverse();
else if(incoming== 54)              //左转
leftTurn();
else if(incoming== 56)             //右转
rightTurn();
        }
else {
  stay();                             //停止
        }
}

完整代码见附件
Step4最终调试
接通电源看看小虫子能不能根据你下的指令做出相应的动作。进行外形上的微调让小虫子指令完成更加准确。


Step5完成
马上接通电源试试自己的手柄遥控小虫吧!改写自己小虫的代码让他的行走更加个性。
成品展示





附页:

6W4A8724.JPG (706.1 KB, 下载次数: 5838)

蓝牙手柄遥控虫虫机器人 · DFRobot_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(23)
xrz
xrz
有腿的3D建模吗
DFS1w2cb8o8
DFS1w2cb8o8
厉害厉害
DFSkangKjBr
DFSkangKjBr
学习学习,谢谢分享。
DFSkangKjBr
DFSkangKjBr
学习中,希望自己能成功做出一个来!谢谢分享!
DFSkangKjBr
DFSkangKjBr
学习中,希望自己能成功做出一个来!谢谢分享!
-stark
-stark
这个程序好像有点小问题,蓝牙模块并不能收到手柄的完整信息,这样改一下会好一点
void loop()
{
DataUpdate(); //read the buttons and the joysticks data
//printData(); //print the datas and states
if(buttonState[5]==0)//手柄按UP,buttonState[5]=0
Serial1.write(1);
else if(buttonState[7]==0)
Serial1.write(2);
delay(100);
}
条八
条八
确定这个程序没问题吗?
nielinjie
nielinjie
虫虫的脚脚哪里可以搞到。
官方套装里面的铁丝脚简直战五渣。各种站不稳。各种走不动。
qq913622228180
qq913622228180
这个可以有…………
波蜀黍
波蜀黍
请问手机App可以控制么
dbc0301
dbc0301
看起来很厉害的样子:)
丄帝De咗臂
丄帝De咗臂
好棒
hnyzcj
hnyzcj
你们在哪里喝酒吗?
hnyzcj
hnyzcj
门口那个吧台吗?
free
free
挺不错的,赞一个
luna
luna
我们的小吧台出镜率好高啊
heinau
heinau
第一次看到有人用手柄来控制虫虫,效果拔群哈哈哈
Jane
Jane
玩虫虫于股掌之中呀~
苦海
苦海
真*雕虫小技
:lol
Juice
Juice
感觉手柄操作互动性更强了呢~~
手动和自动模式可以自由切换么?~