11800浏览
查看: 11800|回复: 9

[讨论] 蓝牙扫盲eg.手机蓝牙控制小车实例

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

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

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

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

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


3 对了 在第二步之前,上传程序。
  1. <font color="#000000"><font face="微软雅黑" size="2">/*
  2.   Bluetooth PWM control
  3.   NOTE:set your BT rate 115200    //BT(bluetooth)
  4.   
  5.   Apply the BT on your romeo, using the phone BT as the controler.
  6.   Could realize the 4 direction control with key "a" "s" "d" "w"
  7.   and Stop with "q" .
  8.   
  9.   https://www.dfrobot.com/
  10.   https://mc.dfrobot.com.cn
  11.   
  12.   created on 17 Mar 2015
  13.   by Leff Wei @DFRobot
  14. */
  15. int E1 = 5;     //define M1 enable pin
  16. int E2 = 6;     //define M2 enable pin
  17. int M1 = 4;    //define M1 speed pin
  18. int M2 = 7;    //define M2 speed pin
  19. void stop(void){                 //stop
  20.        digitalWrite(E1,LOW);   
  21.        digitalWrite(E2,LOW);      
  22. }  
  23. void advance(char a,char b){           //forward
  24.        analogWrite (E1,a);             //PWM speed control
  25.        digitalWrite(M1,HIGH);   
  26.        analogWrite (E2,b);   
  27.        digitalWrite(M2,HIGH);
  28. }  
  29. void back_off (char a,char b) {          //back
  30.        analogWrite (E1,a);
  31.        digitalWrite(M1,LOW);   
  32.        analogWrite (E2,b);   
  33.        digitalWrite(M2,LOW);
  34. }
  35. void turn_L (char a,char b) {           //turn left
  36.        analogWrite (E1,a);
  37.        digitalWrite(M1,LOW);   
  38.        analogWrite (E2,b);   
  39.        digitalWrite(M2,HIGH);
  40. }
  41. void turn_R (char a,char b) {           //turn right
  42.        analogWrite (E1,a);
  43.        digitalWrite(M1,HIGH);   
  44.        analogWrite (E2,b);   
  45.        digitalWrite(M2,LOW);
  46. }
  47. void setup(void) {
  48.     int i;
  49.     for(i=4;i<=7;i++)
  50.     pinMode(i, OUTPUT);  
  51.     Serial1.begin(115200);   //serial1 baud rate for BT
  52.                              //NOTE:set your BT rate 115200
  53.     Serial.begin(57600);     //serial baud rate for IDE monitor
  54. }
  55. void loop(void) {
  56.    if(Serial1.available()>0){  //if received data from phone
  57.      char val = Serial1.read();
  58.      
  59.      Serial.print("The command you input is:"); // display the command
  60.                                                 //on your IDE monitor
  61.      Serial.println(val);   
  62.      
  63.      if(val!=-1){
  64.           switch(val){
  65.              case 'w'://forward
  66.                      advance (100,100);   //PWM speed control
  67.                      break;
  68.              case 's'://backward
  69.                      back_off (100,100);
  70.                      break;
  71.              case 'a'://turn left
  72.                      turn_L (100,100);
  73.                      break;      
  74.              case 'd'://turn right
  75.                      turn_R (100,100);
  76.                      break;   
  77.              case 'q'://stop
  78.                      stop();
  79.                      break;  
  80.              default : break;     
  81.             }     
  82.           delay(40);
  83.        }
  84.         Serial1.flush();
  85.    }
  86. }</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




两个BT2_0 串口工具APP for Android.zip

1.14 MB, 下载次数: 1825

点击下载

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


多谢多谢,您是前辈呐~
回复

使用道具 举报

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   (回复竟然有字数限制)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail