终于搞定了通过两路蓝牙接收数据

一直想做无线传感器,通过蓝牙来接收数据,无奈因为arduino接收串口数据的一些问题,一直搁到现在。因为学校里给学生开了选修课,所以手边有一些nano和mega可以使用,所以就做了用两个nano加上两个蓝牙模块来发射数据,用mega加两个蓝牙模块来接收数据。因为mega可以同时使用4路串口,所以考虑用mega来作为主控机,用来接收来自传感器的数据,每个传感器加一个nano和蓝牙来无线发射数据。

因为是测试,所以在nano中写了一个简单的发射信号的语句。以下四nano中的程序:

————————————————我是分界线——————————————————————

int i=1;
void setup() { 
  Serial.begin(9600);   }
  void loop(){
         Serial.print(i);
       Serial.print("$");
       delay(50);
       i++;        
    }

————————————————我是分界线——————————————————————

以下是mega中的程序:

——————————————————我是分界线————————————————————————

String comdata = "";
String shuju="";
String shuju2="";
int i;
void setup()
 {
     Serial.begin(9600);
     Serial1.begin(9600);
     Serial2.begin(9600);
 }

void loop()
 {
     while (Serial1.available() > 0) 
     {
         shuju += char(Serial1.read());
         delay(2);
     }
     while (Serial2.available() > 0)
     {
       shuju2 +=char(Serial2.read());
       delay(2);
     }
     if (shuju.length() > 0)
     {
         i=shuju.indexOf("$");
         if(i!=-1){
         comdata=shuju.substring(0,i);
         Serial.print("#1=");       
         Serial.print(comdata);
         Serial.println("$");
         shuju=shuju.substring(i+1,shuju.length());
         comdata = "";
         i=0;
         }
     }
       if (shuju2.length() > 0)
     {
         i=shuju2.indexOf("$");
         if(i!=-1){
         comdata=shuju2.substring(0,i);
         Serial.print("#2=");
          Serial.print(comdata);
          Serial.println("$");
         shuju2=shuju2.substring(i+1,shuju2.length());
         comdata = "";
         i=0;
         }    } }

——————————————我是分界线————————————————————

上篇忘记介绍蓝牙模块的设置了,如果想要利用两路蓝牙来接收数据,那么这两路蓝牙必须设置不同的密码,以下是蓝牙模块的设置方法,可以将蓝牙模块接到串口模块上,然后里哟你串口软件发指令给蓝牙模块,以下设置是针对DFrobot的蓝牙模块的,它上面有开关可以设置接收命令状态。如果不是DFrobot的蓝牙模块,只要将KEY针脚接高电平就是可以接受命令状态。将两个蓝牙模块设置为主,然后设置不同的密码。再将另外两个设置为从,设置对应主蓝牙的密码。以下是具体的命令设置:

在发送栏中输入AT(不分大小写),然后点击发送,可看见模块返回OK,这表示AT指令通讯正常。当AT指令设置完毕后,将2号开关AT Mode拨到2端退出AT命令模式,重新上电后设置才生效。

1.AT指令集如下:

指令响应参数
ATOK





2.模块重启指令:

指令响应参数
AT+RESETOK





3.设置和查询模块连接模式:

当模块无法被适配器、主机连接时,需配置该参数,配置为AT+CMODE=1。

指令响应参数
AT+CMODE=< Param >OKParam:

0 —— 指定蓝牙地址连接模式 (指定蓝牙地址由绑定指令设置)

1 —— 任意蓝牙地址连接模式 (不受绑定指令设置地址的约束)

默认连接模式:0

AT+CMODE?+CMODE: < Param > OK
















 

4.设置和查询模块角色:

当模块无法被适配器、主机搜索到时,需配置该参数,配置为从角色。


模块角色说明:

Slave(从角色) ——被动连接,可以和任意蓝牙适配器配对使用;

Master (主角色)——查询周围从设备,并主动发起连接,从而建立主、从蓝牙设备间的透明数据传输通道。

Slave-Loop(回环角色) ———被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙主设备;

5.设置和查询配对码:

6.设置和查询串口参数:

举例:设置串口波特率:115200,1位停止位,无校验

AT+ UART=115200,0,0\r\n

OK

AT+ UART?

+UART:115200,0,0

OK

注:在应用中,选择1位停止位,无校验。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

douluo998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值