关于蓝牙,神马协议,固件版本,蓝牙版本,手机版本……搞得头晕,有那么麻烦吗?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"
|