touchfree 发表于 2015-3-20 12:36:25

蓝牙扫盲eg.手机蓝牙控制小车实例

关于蓝牙,神马协议,固件版本,蓝牙版本,手机版本……搞得头晕,有那么麻烦吗?SHAKE IT OFF,开始简简单单的蓝牙之旅吧,原来没有那么难!
需要:12345 Ps:转串口工具



1 当然,之前要配置好蓝牙模块的参数,主要就是波特率(这里用的是115200),如果你周围蓝牙模块比较多,最好起个名字,配上密码,对于蓝牙4.0而言,由于无需密码自动配对的问题,我也是无语,只能绑定Mac地址了。(配置方法,指令等,因为蓝牙版本不一而不同,参见产品资料库。)

调试要用到usb转uart,购买链接。

2 调好之后,该把开关拨到Norm位置的别忘了 。用手机蓝牙调试软件(到处都可以下到,注意蓝牙BLE的也就是4.0的不能和2.0的通用哦!)连接自己的蓝牙模块。

3 对了 在第二步之前,上传程序。
<font color="#000000"><font face="微软雅黑" size="2">/*
Bluetooth PWM control
NOTE:set your BT rate 115200    //BT(bluetooth)

Apply the BT on your romeo, using the phone BT as the controler.
Could realize the 4 direction control with key "a" "s" "d" "w"
and Stop with "q" .

https://www.dfrobot.com/
https://mc.dfrobot.com.cn

created on 17 Mar 2015
by Leff Wei @DFRobot
*/
int E1 = 5;   //define M1 enable pin
int E2 = 6;   //define M2 enable pin
int M1 = 4;    //define M1 speed pin
int M2 = 7;    //define M2 speed pin
void stop(void){               //stop
       digitalWrite(E1,LOW);   
       digitalWrite(E2,LOW);      
}

void advance(char a,char b){         //forward
       analogWrite (E1,a);             //PWM speed control
       digitalWrite(M1,HIGH);   
       analogWrite (E2,b);   
       digitalWrite(M2,HIGH);
}
void back_off (char a,char b) {          //back
       analogWrite (E1,a);
       digitalWrite(M1,LOW);   
       analogWrite (E2,b);   
       digitalWrite(M2,LOW);
}
void turn_L (char a,char b) {         //turn left
       analogWrite (E1,a);
       digitalWrite(M1,LOW);   
       analogWrite (E2,b);   
       digitalWrite(M2,HIGH);
}
void turn_R (char a,char b) {         //turn right
       analogWrite (E1,a);
       digitalWrite(M1,HIGH);   
       analogWrite (E2,b);   
       digitalWrite(M2,LOW);
}

void setup(void) {
    int i;
    for(i=4;i<=7;i++)
    pinMode(i, OUTPUT);
    Serial1.begin(115200);   //serial1 baud rate for BT
                           //NOTE:set your BT rate 115200
    Serial.begin(57600);   //serial baud rate for IDE monitor
}

void loop(void) {
   if(Serial1.available()>0){//if received data from phone
   char val = Serial1.read();
   
   Serial.print("The command you input is:"); // display the command
                                                //on your IDE monitor
   Serial.println(val);   
   
   if(val!=-1){
          switch(val){
             case 'w'://forward
                     advance (100,100);   //PWM speed control
                     break;
             case 's'://backward
                     back_off (100,100);
                     break;
             case 'a'://turn left
                     turn_L (100,100);
                     break;      
             case 'd'://turn right
                     turn_R (100,100);
                     break;   
             case 'q'://stop
                     stop();
                     break;
             default : break;   
            }   
          delay(40);
       }
      Serial1.flush();
   }
}</font></font>
4 用手机的蓝牙串口助手,发送wasd q分别可以控制电机了。file:///C:\Users\leffWei\AppData\Local\Temp\SGTpbq\6780\0009EDAF.gif

知识点拨:

1 蓝牙通讯原理
   串口通讯,用Serial1.read()读完后,最好清理一下串口Serial1.flush().

2 自动连接,绑定的问题
   之前的蓝牙模块如2.0的,可以设置密码,配对时用得着,但4.0的BLE就不行了,槽槽:设置密码纯属虚构,设置完了完全没用,怎么连怎么不要密码,希望以后有改进……,如果你的周围一堆BLE模块,最好用蓝牙绑定Mac地址这个功能。灰常适用于:蓝牙小车和蓝牙手柄的连接。

3 通信速率
   这个比较容易忽视,蓝牙通讯的速率,arduino程序编写的串口速率一定要一致。


4 手机app的问题
   蓝牙2.0模块,支持2.0的APP, 其他APP可能无法使用。而谈到BLE,也就是bluno等, 目前仅支持DFRobot出品的APP。另外:你要确定你的手机支持否?
   1 手机系统: IOS 7.0+, Android 4.3+,WIN就只能哭了BLE可以通过普通蓝牙串口调试软甲连接非BLE的蓝牙模块;
   2 Android SDK 兼容性,通俗点讲就是来源,本人红米,之前刷过多个非官方4.3+的系统,测试都没有成功,感觉机子都要刷残了!直到最近小米放出的红米MIU6测试版,竟然成功了。
   另外,推荐两个BT 2.0的APP:上边的可以简单地测试IO收发,下边的可以有多种控制模式(包括键盘、手柄、以及调用手机加速度传感器信息进行手势控制)
   

5 配对码的问题
   可能由于固件的问题(现在最新为1.9.X),有的蓝牙与手机连接时需要配对码,默认为 6个0,不是密码(当然,试试无妨)。


6 电脑蓝牙是否支持?
   由于蓝牙协议的问题(官方解释,不解释),需要用这个蓝牙2.0或这个蓝牙4.0BLE。方可与电脑连接。


& so on—— 经验人士,请跟帖自己的蓝牙经验,和大家分享下吧~


                                    "Ever tried. Ever failed. No matter. Try again. Fail again. Fail better"
                                                             _ Samuel Beckett



Cain 发表于 2015-3-20 13:47:39

好贴顶一个,很实用。蓝牙连接上的各种问题都回答了

heinau 发表于 2015-3-20 16:48:11

顶一发好贴~~
话说这次的帖子里居然没有标志性的逗比表情,我表示好不习惯呀~

hnyzcj 发表于 2015-3-20 22:05:40

赞一个。

touchfree 发表于 2015-3-20 22:56:25

Cain 发表于 2015-3-20 13:47
好贴顶一个,很实用。蓝牙连接上的各种问题都回答了

随着蓝牙不断地更新换代,相信越来越多的bug会接踵而来:lol

touchfree 发表于 2015-3-20 22:58:23

heinau 发表于 2015-3-20 16:48
顶一发好贴~~
话说这次的帖子里居然没有标志性的逗比表情,我表示好不习惯呀~ ...

那时候网络瘫痪,因此……:'(让我哭会……

touchfree 发表于 2015-3-20 22:59:10

hnyzcj 发表于 2015-3-20 22:05
赞一个。

多谢多谢,您是前辈呐~

Youyou 发表于 2015-3-22 21:17:45

牛帖,果断收藏!

大连林海 发表于 2015-3-23 07:21:47

很不错的想法

touchfree 发表于 2015-3-23 09:43:46

Youyou 发表于 2015-3-22 21:17
牛帖,果断收藏!

:lol   (回复竟然有字数限制)
页: [1]
查看完整版本: 蓝牙扫盲eg.手机蓝牙控制小车实例