金轮法王 发表于 2015-7-21 18:12:39

蓝牙手柄遥控虫虫机器人

蓝牙手柄遥控虫虫机器人6足虫虫作为虫虫界的战神,没有使用蓝牙来驾驭它未免有写遗憾。下面是我制作的用编程手柄配合蓝牙模块完成对6足虫虫的控制教程,快来体验一把真正的战神归来!

实例视频https://v.youku.com/v_show/id_XMTI5MDcxMTAxNg==.html:Step1:所需硬件
[*]1*BLE LINK 蓝牙4.0通讯模块
[*]1*可编程游戏手柄/无线遥控手柄 V2.2
[*]1*虫虫机器人六足版 兼容蓝牙4.0
[*]1*Mini usb电缆

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


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

输入AT+UART=115200来设置波特率

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



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






改写手柄的程序如下:int buttonState;
int joystick;
int AnalogButton;
void setup()
{
Serial.begin(115200);//Init the Serial baudrate
Serial1.begin(115200);//初始化串口1的波特率为115200
InitIO();             // Initialize the inputs/outputs and the buffers
}
void InitIO(){
for(int i = 0; i < 17; i++) pinMode(i, INPUT);
}
void loop()
{
DataUpdate();//read the buttons and the joysticks data
printData();   //print the datas and states
delay(720);   //通过计算得到的小虫电机运作一套动作的时间
}
void DataUpdate(){

for(int i = 3; i < 17; i++)buttonState = digitalRead(i);
buttonState = analogRead(0);
buttonState = analogRead(1);
for(int i = 0; i < 4; i++)joystick = analogRead(i);
for(int i = 4; i < 6; i++)AnalogButton = analogRead(i);

}
String Buttons = {
"J2","J1","NULL","S2","S1","UP","LEFT","DOWN","RIGHT","1","4","2","3","RZ1","RZ2","LZ1","LZ2"};
// Buttons Nmes
void printData(){

for(int i = 3; i < 17; i++)if(buttonState == 0)Serial1.print(i),Serial.print(i);//为了简化运算没有输出手柄摇杆的模拟量8。
}

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


可知蓝牙手柄与小虫上的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完成马上接通电源试试自己的手柄遥控小虫吧!改写自己小虫的代码让他的行走更加个性。成品展示




附页:

hnyzcj 发表于 2015-7-25 17:23:43

你们在哪里喝酒吗?

hnyzcj 发表于 2015-7-21 21:48:15

这个厉害了。哈哈

hnyzcj 发表于 2015-7-21 21:54:37

这个虫子貌似很屌。

hnyzcj 发表于 2015-7-21 21:56:25

虫子的腿是 3D打印的

Juice 发表于 2015-7-22 14:29:29

感觉手柄操作互动性更强了呢~~
手动和自动模式可以自由切换么?~

苦海 发表于 2015-7-22 15:56:20

真*雕虫小技
:lol

Jane 发表于 2015-7-23 10:39:44

玩虫虫于股掌之中呀~

heinau 发表于 2015-7-23 11:27:28

第一次看到有人用手柄来控制虫虫,效果拔群哈哈哈

luna 发表于 2015-7-23 17:59:10

我们的小吧台出镜率好高啊

free 发表于 2015-7-24 18:02:57

挺不错的,赞一个

hnyzcj 发表于 2015-7-25 17:23:31

门口那个吧台吗?

丄帝De咗臂 发表于 2015-7-25 21:14:45

好棒

dbc0301 发表于 2015-8-1 22:58:03

看起来很厉害的样子:)

波蜀黍 发表于 2015-12-20 19:57:30

请问手机App可以控制么

Geemi 发表于 2015-12-30 16:09:14

这个可以有…………

nielinjie 发表于 2016-5-23 17:17:11

虫虫的脚脚哪里可以搞到。
官方套装里面的铁丝脚简直战五渣。各种站不稳。各种走不动。

条八 发表于 2016-5-30 19:36:16

确定这个程序没问题吗?

-stark 发表于 2016-8-31 13:55:06

这个程序好像有点小问题,蓝牙模块并不能收到手柄的完整信息,这样改一下会好一点

void loop()
{
DataUpdate();//read the buttons and the joysticks data
//printData();   //print the datas and states
if(buttonState==0)//手柄按UP,buttonState=0
Serial1.write(1);
else if(buttonState==0)
Serial1.write(2);
delay(100);
}

DFSkangKjBr 发表于 2019-9-3 14:16:06

学习中,希望自己能成功做出一个来!谢谢分享!

DFSkangKjBr 发表于 2019-9-3 14:18:36

学习中,希望自己能成功做出一个来!谢谢分享!
页: [1] 2
查看完整版本: 蓝牙手柄遥控虫虫机器人