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

http://www.geek-workshop.com/thread-3035-1-1.html

网上有很多单片机接蓝牙模块连接手机和电脑的教程。这里我做个非主流一点点的= =,就是两块arduino之间的蓝牙通信。因为发现网上貌似没有太具体的教程(反正我做的时候没找到)。我就来发一贴交流下自己的经验。
    arduino用的是2块mango板子。蓝牙模块用到是open jumper的。。= =我知道很贵,是白富美学姐给我的<img class="s" src="http://imgstore01.cdn.sogou.com/app/a/100520032/e144" smilieid="soso_e144" border="0" alt="" /> 。。
arduino间通过蓝牙模块建立通讯_第1张图片
   
PS:这里提醒下新手= =虽然这个模块的插针插在arduino上的TX RD上刚刚好合适,不过千万不能用IO口一个一个给高一个给低模拟VCC和GND哦!!不然模块工作会很不正常。。。好吧只是提醒,我知道只有我这个傻 X  会烦这样的错误。


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

首先是主机的设置。
ARDUINO 代码 复制打印
              
              
              
              
  1. /*用于蓝牙模块的主机的设置,配置方法很多,这里只使用从arduino对模块设置AT指令的方法(= =嗯我知道我非主流)。
  2.  
  3. 即把程序导入arduino后将USB和电脑!断开!。
  4. 连接模块,再连接USB(确保电脑中未开启arduino IDE或相关串口软件!!),就可以完成AT设置。之后断开模块的电源(不断会导致程序写入arduino发生错误。),连接USB导入相关程序(测试程序在2楼)即可。
  5.  
  6. Ps:一定要断开保证有关串口的软件保持关闭才能完成设置,否则系统会把写入信息写到电脑上而不是蓝牙模块里。*/
  7.  
  8.  
  9. #define AT 2
  10. #define LED 13
  11. void setup ( )
  12. {
  13.    pinMode (LED, OUTPUT );  
  14.    pinMode (AT, OUTPUT );  
  15.    digitalWrite (AT, HIGH ); //AT的电平给高,用于输入AT指令
  16.    Serial. begin ( 9600 ); //这里应该和你的模块通信波特率一致
  17.    delay ( 100 );
  18.    Serial. println ( "AT" );
  19.    delay ( 100 );
  20.    Serial. println ( "AT+NAME=ICAT-BT01" ); //命名模块名
  21.    delay ( 100 );
  22.    Serial. println ( "AT+ROLE=1" ); //设置主从模式:0从机,1主机
  23.    delay ( 100 );
  24.    Serial. println ( "AT+PSWD=0000" ); //设置配对密码,如1234
  25.    delay ( 100 );
  26.    Serial. println ( "AT+UART=9600,0,0" ); //设置波特率9600,停止位1,校验位无
  27.    delay ( 100 );
  28.    Serial. println ( "AT+RMAAD" ); //清空配对列表
  29.    delay ( 100 );
  30.    Serial. println ( "AT+BIND=0012,08,060146" ); //设定从机的地址,保持格式一致。
  31.    delay ( 100 );
  32.    Serial. println ( "AT+CMODE=0" ); //开启自动连接
  33.    delay ( 100 );
  34. }
  35. void loop ( )
  36. {
  37.    digitalWrite (LED, HIGH );    /*只用于证明程序导入arduino成功,和设置蓝牙模块无关*/
  38.    delay ( 500 );
  39.    digitalWrite (LED, LOW );
  40.    delay ( 500 );
  41. }




从机的设置代码:

ARDUINO 代码 复制打印
              
              
              
              
  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和串口软件会导致设置无法输入模块里哦!(好吧= =其实我也不确定,只不过关掉了安心)

二楼上测试连接模块的程序= =求不插!
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友
收藏收藏7 支持支持0 反对0
 
回复

举报

   
7。
arduino间通过蓝牙模块建立通讯_第2张图片

3

主题

2

好友

177

积分

注册会员

Rank: 2

  • 发消息
沙发
发表于 2012-12-29 21:34:38 | 只看该作者
本帖最后由 弘毅 于 2012-12-29 22:44 编辑

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

主机程序:

ARDUINO 代码 复制打印
              
              
              
              
  1. setup ( )
  2. {
  3.    Serial. begin ( 9600 ); //设定波特率为9600
  4. }
  5.  
  6. void loop ( )
  7. {
  8.    delay ( 300 );     
  9.    Serial. print ( '0' ); //通过串口发送一个’0’字符
  10.    delay ( 300 );
  11.    Serial. print ( '1' );
  12. }
  13.  
  14.  
  15. 从机程序:
  16. void setup ( )
  17. {
  18.    pinMode ( 13, OUTPUT );
  19.    Serial. begin ( 9600 );
  20. }
  21.  
  22. void loop ( )
  23. {
  24.    char cd= Serial. read ( ); //从串口读取一个字符
  25.    if (cd== '1' )
  26.     digitalWrite ( 13, HIGH );
  27.    if (cd== '0' )
  28.     digitalWrite ( 13, LOW );
  29.     delay ( 100 );
  30. }


上效果图,不过看不出效果= =
2012-12-29 21:33 上传
下载附件 (115.86 KB)
效果图- -

你可能感兴趣的:(arduino间通过蓝牙模块建立通讯)