极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 94161|回复: 35

arduino间通过蓝牙模块建立通讯

[复制链接]
发表于 2012-12-29 21:30:23 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2012-12-29 22:35 编辑

      网上有很多单片机接蓝牙模块连接手机和电脑的教程。这里我做个非主流一点点的= =,就是两块arduino之间的蓝牙通信。因为发现网上貌似没有太具体的教程(反正我做的时候没找到)。我就来发一贴交流下自己的经验。
    arduino用的是2块mango板子。蓝牙模块用到是open jumper的。。= =我知道很贵,是白富美学姐给我的{:soso_e144:} 。。

   
PS:这里提醒下新手= =虽然这个模块的插针插在arduino上的TX RD上刚刚好合适,不过千万不能用IO口一个一个给高一个给低模拟VCC和GND哦!!不然模块工作会很不正常。。。好吧只是提醒,我知道只有我这个傻 X  会烦这样的错误。


首先,我们先把一个蓝牙模块设置成主机,一个设置成从机。

首先是主机的设置。

  1. /*用于蓝牙模块的主机的设置,配置方法很多,这里只使用从arduino对模块设置AT指令的方法(= =嗯我知道我非主流)。

  2. 即把程序导入arduino后将USB和电脑!断开!。
  3. 连接模块,再连接USB(确保电脑中未开启arduino IDE或相关串口软件!!),就可以完成AT设置。之后断开模块的电源(不断会导致程序写入arduino发生错误。),连接USB导入相关程序(测试程序在2楼)即可。

  4. Ps:一定要断开保证有关串口的软件保持关闭才能完成设置,否则系统会把写入信息写到电脑上而不是蓝牙模块里。*/


  5. #define AT 2
  6. #define LED 13
  7. void setup()
  8. {
  9.   pinMode(LED,OUTPUT);  
  10.   pinMode(AT,OUTPUT);  
  11.   digitalWrite(AT,HIGH); //AT的电平给高,用于输入AT指令
  12.   Serial.begin(9600);//这里应该和你的模块通信波特率一致
  13.   delay(100);
  14.   Serial.println("AT");
  15.   delay(100);
  16.   Serial.println("AT+NAME=ICAT-BT01");//命名模块名
  17.   delay(100);
  18.   Serial.println("AT+ROLE=1");//设置主从模式:0从机,1主机
  19.   delay(100);
  20.   Serial.println("AT+PSWD=0000");//设置配对密码,如1234
  21.   delay(100);
  22.   Serial.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
  23.   delay(100);
  24.   Serial.println("AT+RMAAD");//清空配对列表
  25.   delay(100);
  26.   Serial.println("AT+BIND=0012,08,060146");//设定从机的地址,保持格式一致。
  27.   delay(100);
  28.   Serial.println("AT+CMODE=0");//开启自动连接
  29.   delay(100);
  30. }
  31. void loop()
  32. {
  33.   digitalWrite(LED, HIGH);    /*只用于证明程序导入arduino成功,和设置蓝牙模块无关*/
  34.   delay(500);
  35.   digitalWrite(LED, LOW);
  36.   delay(500);
  37. }
复制代码




从机的设置代码:

  1. /*和主机设置差不多,不过不用给定从机的地址和开启自动连接。设置方法同主机,要保持电脑的串口软件关闭*/
  2. #define AT 2
  3. #define LED 13
  4. void setup()
  5. {
  6.   pinMode(LED,OUTPUT);  
  7.   pinMode(AT,OUTPUT);  
  8.   digitalWrite(AT,HIGH); //AT的电平给高,用于输入AT指令
  9.   Serial.begin(9600);//这里应该和你的模块通信波特率一致
  10.   delay(100);
  11.   Serial.println("AT");
  12.   delay(100);
  13.   Serial.println("AT+NAME=ICAT-BT02");//命名模块名
  14.   delay(100);
  15.   Serial.println("AT+ROLE=0");//设置主从模式:0从机,1主机
  16.   delay(100);
  17.   Serial.println("AT+PSWD=0000");//设置配对密码,如1234
  18.   delay(100);
  19.   Serial.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
  20.   delay(100);
  21.   Serial.println("AT+RMAAD");//清空配对列表
  22. }
  23. void loop()
  24. {
  25.   digitalWrite(LED, HIGH);
  26.   delay(500);
  27.   digitalWrite(LED, LOW);
  28.   delay(500);
  29. }
复制代码



再次声明,对蓝牙模块的AT设置可以有很多种方法,这里只说明了用arduino设置的方法。注意USB和IDE的关闭。
再次PS:不关闭IDE和串口软件会导致设置无法输入模块里哦!(好吧= =其实我也不确定,只不过关掉了安心)

二楼上测试连接模块的程序= =求不插!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2012-12-29 21:34:38 | 显示全部楼层
本帖最后由 弘毅 于 2012-12-29 22:44 编辑

实验过程:让主机每300ms通过通过串口向从机发送一个信号。从机接到信号后用13 口的led做出反应。程序导入同正常导入一样(导入前请断开模块的电源!!)。不过通信过程最好关闭串口软件,包括arduino IDE。

主机程序:

  1. setup()
  2. {
  3.   Serial.begin(9600);//设定波特率为9600
  4. }

  5. void loop()
  6. {
  7.   delay(300);     
  8.   Serial.print('0');//通过串口发送一个’0’字符
  9.   delay(300);
  10.   Serial.print('1');
  11. }


  12. 从机程序:
  13. void setup()
  14. {
  15.   pinMode(13,OUTPUT);
  16.   Serial.begin(9600);
  17. }

  18. void loop()
  19. {
  20.   char cd=Serial.read(); //从串口读取一个字符
  21.   if(cd=='1')
  22.     digitalWrite(13,HIGH);
  23.   if(cd=='0')
  24.     digitalWrite(13,LOW);
  25.     delay(100);
  26. }
复制代码


上效果图,不过看不出效果= =



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-12-30 15:34:08 | 显示全部楼层
{:soso_e104:}不错。赞一个。沙发是我的。
回复 支持 反对

使用道具 举报

发表于 2012-12-31 14:23:25 | 显示全部楼层
好教程,地板是我的。楼主的研究精神非常值得赞赏,我也想过给蓝牙用arduino pin脚直插供电的可能,不过没有实践。请问楼主,有没有用蓝牙下载过arduino程序,除了设置波特率为115200,还有什么讲究吗,我一次都没有成功过。(不管怎么按Reset键
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-1 16:43:54 | 显示全部楼层
seuabb 发表于 2012-12-31 14:23
好教程,地板是我的。楼主的研究精神非常值得赞赏,我也想过给蓝牙用arduino pin脚直插供电的可能,不过没有 ...

没试过,因为的我电脑蓝牙有问题,也没安装网上那些教程里的配对软件。我记得论坛里不是有个教程贴吗?你去哪里问问那个楼主??
回复 支持 反对

使用道具 举报

发表于 2013-2-20 20:07:12 | 显示全部楼层
·················
回复 支持 反对

使用道具 举报

发表于 2013-7-6 19:07:21 | 显示全部楼层
怎么得到从机arduino 从机的地址呢? 求指教~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-30 22:34:02 | 显示全部楼层
nierixin 发表于 2013-7-6 19:07
怎么得到从机arduino 从机的地址呢? 求指教~

好久没上这个论坛了。我当时的方法是用AT指令设置他为从机后用我的手机连接他。手机可以看到设备的mac地址
回复 支持 反对

使用道具 举报

发表于 2013-9-19 00:31:17 | 显示全部楼层
教程很详细,学习啦
回复 支持 反对

使用道具 举报

发表于 2014-5-17 22:39:10 | 显示全部楼层
下载了代码到ARDUINO里还不知道什么方法设置蓝牙,有谁知道,能详细的说下,谢谢!!
回复 支持 反对

使用道具 举报

发表于 2014-5-29 15:03:25 | 显示全部楼层
504835618 发表于 2014-5-17 22:39
下载了代码到ARDUINO里还不知道什么方法设置蓝牙,有谁知道,能详细的说下,谢谢!!

你可以参考这个链接:http://www.arduino.cn/thread-2961-1-1.html

先把AT设置的程序拷进arduino,再连上蓝牙模块
回复 支持 反对

使用道具 举报

发表于 2014-5-29 22:42:32 | 显示全部楼层
SmallUtopian 发表于 2014-5-29 15:03
你可以参考这个链接:http://www.arduino.cn/thread-2961-1-1.html

先把AT设置的程序拷进arduino,再连 ...

谢谢,基本搞好了
回复 支持 反对

使用道具 举报

发表于 2014-7-1 10:28:22 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

发表于 2014-7-20 11:18:42 | 显示全部楼层
这两蓝牙模块,他自动连接的吗?
回复 支持 反对

使用道具 举报

发表于 2014-7-25 10:21:57 | 显示全部楼层
kanshizhuo 发表于 2014-7-20 11:18
这两蓝牙模块,他自动连接的吗?

如果是蓝牙4.0,可以自动配对
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 18:08 , Processed in 0.046850 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表