怎么实现两个单片机与蓝牙模块通信之间的通信,利用两个蓝牙来实现

查看: 28659|回复: 33
arduino间通过蓝牙模块建立通讯
本帖最后由 弘毅 于
22:35 编辑
& && &网上有很多单片机接蓝牙模块连接手机和电脑的教程。这里我做个非主流一点点的= =,就是两块arduino之间的蓝牙通信。因为发现网上貌似没有太具体的教程(反正我做的时候没找到)。我就来发一贴交流下自己的经验。
& & arduino用的是2块mango板子。蓝牙模块用到是open jumper的。。= =我知道很贵,是白富美学姐给我的 。。
未命名.jpg (16.56 KB, 下载次数: 54)
OJ的蓝牙模块
21:11 上传
PS:这里提醒下新手= =虽然这个模块的插针插在arduino上的TX RD上刚刚好合适,不过千万不能用IO口一个一个给高一个给低模拟VCC和GND哦!!不然模块工作会很不正常。。。好吧只是提醒,我知道只有我这个傻 X&&会烦这样的错误。
首先,我们先把一个蓝牙模块设置成主机,一个设置成从机。
首先是主机的设置。
[pre lang=&arduino& line=&1&]
/*用于蓝牙模块的主机的设置,配置方法很多,这里只使用从arduino对模块设置AT指令的方法(= =嗯我知道我非主流)。
即把程序导入arduino后将USB和电脑!断开!。
连接模块,再连接USB(确保电脑中未开启arduino IDE或相关串口软件!!),就可以完成AT设置。之后断开模块的电源(不断会导致程序写入arduino发生错误。),连接USB导入相关程序(测试程序在2楼)即可。
Ps:一定要断开保证有关串口的软件保持关闭才能完成设置,否则系统会把写入信息写到电脑上而不是蓝牙模块里。*/
#define AT 2
#define LED 13
void setup()
&&pinMode(LED,OUTPUT);&&
&&pinMode(AT,OUTPUT);&&
&&digitalWrite(AT,HIGH); //AT的电平给高,用于输入AT指令
&&Serial.begin(9600);//这里应该和你的模块通信波特率一致
&&delay(100);
&&Serial.println(&AT&);
&&delay(100);
&&Serial.println(&AT+NAME=ICAT-BT01&);//命名模块名
&&delay(100);
&&Serial.println(&AT+ROLE=1&);//设置主从模式:0从机,1主机
&&delay(100);
&&Serial.println(&AT+PSWD=0000&);//设置配对密码,如1234
&&delay(100);
&&Serial.println(&AT+UART=&);//设置波特率9600,停止位1,校验位无
&&delay(100);
&&Serial.println(&AT+RMAAD&);//清空配对列表
&&delay(100);
&&Serial.println(&AT+BIND=146&);//设定从机的地址,保持格式一致。
&&delay(100);
&&Serial.println(&AT+CMODE=0&);//开启自动连接
&&delay(100);
void loop()
&&digitalWrite(LED, HIGH);& & /*只用于证明程序导入arduino成功,和设置蓝牙模块无关*/
&&delay(500);
&&digitalWrite(LED, LOW);
&&delay(500);
从机的设置代码:
[pre lang=&arduino& line=&1&]/*和主机设置差不多,不过不用给定从机的地址和开启自动连接。设置方法同主机,要保持电脑的串口软件关闭*/
#define AT 2
#define LED 13
void setup()
&&pinMode(LED,OUTPUT);&&
&&pinMode(AT,OUTPUT);&&
&&digitalWrite(AT,HIGH); //AT的电平给高,用于输入AT指令
&&Serial.begin(9600);//这里应该和你的模块通信波特率一致
&&delay(100);
&&Serial.println(&AT&);
&&delay(100);
&&Serial.println(&AT+NAME=ICAT-BT02&);//命名模块名
&&delay(100);
&&Serial.println(&AT+ROLE=0&);//设置主从模式:0从机,1主机
&&delay(100);
&&Serial.println(&AT+PSWD=0000&);//设置配对密码,如1234
&&delay(100);
&&Serial.println(&AT+UART=&);//设置波特率9600,停止位1,校验位无
&&delay(100);
&&Serial.println(&AT+RMAAD&);//清空配对列表
void loop()
&&digitalWrite(LED, HIGH);
&&delay(500);
&&digitalWrite(LED, LOW);
&&delay(500);
再次声明,对蓝牙模块的AT设置可以有很多种方法,这里只说明了用arduino设置的方法。注意USB和IDE的关闭。
再次PS:不关闭IDE和串口软件会导致设置无法输入模块里哦!(好吧= =其实我也不确定,只不过关掉了安心)
二楼上测试连接模块的程序= =求不插!
本帖最后由 弘毅 于
22:44 编辑
实验过程:让主机每300ms通过通过串口向从机发送一个信号。从机接到信号后用13 口的led做出反应。程序导入同正常导入一样(导入前请断开模块的电源!!)。不过通信过程最好关闭串口软件,包括arduino IDE。
主机程序:
[pre lang=&arduino& line=&1&]setup()
&&Serial.begin(9600);//设定波特率为9600
void loop()
&&delay(300);& &&&
&&Serial.print('0');//通过串口发送一个’0’字符
&&delay(300);
&&Serial.print('1');
从机程序:
void setup()
&&pinMode(13,OUTPUT);
&&Serial.begin(9600);
void loop()
&&char cd=Serial.read(); //从串口读取一个字符
&&if(cd=='1')
& & digitalWrite(13,HIGH);
&&if(cd=='0')
& & digitalWrite(13,LOW);
& & delay(100);
上效果图,不过看不出效果= =
未命x名.jpg (115.86 KB, 下载次数: 100)
21:33 上传
不错。赞一个。沙发是我的。
好教程,地板是我的。楼主的研究精神非常值得赞赏,我也想过给蓝牙用arduino pin脚直插供电的可能,不过没有实践。请问楼主,有没有用蓝牙下载过arduino程序,除了设置波特率为115200,还有什么讲究吗,我一次都没有成功过。(不管怎么按Reset键
seuabb 发表于
好教程,地板是我的。楼主的研究精神非常值得赞赏,我也想过给蓝牙用arduino pin脚直插供电的可能,不过没有 ...
没试过,因为的我电脑蓝牙有问题,也没安装网上那些教程里的配对软件。我记得论坛里不是有个教程贴吗?你去哪里问问那个楼主??
·················
怎么得到从机arduino 从机的地址呢? 求指教~
nierixin 发表于
怎么得到从机arduino 从机的地址呢? 求指教~
好久没上这个论坛了。我当时的方法是用AT指令设置他为从机后用我的手机连接他。手机可以看到设备的mac地址
教程很详细,学习啦
下载了代码到ARDUINO里还不知道什么方法设置蓝牙,有谁知道,能详细的说下,谢谢!!
Powered by51单片机,蓝牙模块,手机之间怎么实现通讯_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:126,715贴子:
51单片机,蓝牙模块,手机之间怎么实现通讯收藏
有木有大神给一小小部分代码,我想用蓝牙控制单片机上的一个led的亮灭,是不是通过串口中断实现的,不解啊
单片机培训,达内单片机,历时15年,总监级讲师亲授,8师辅导1学员,40W学员见证!达内单片机与ARM公司联合教学.毕业获ARM公司颁发的嵌入式工程师国际认证证书.
用串口中断,手机上下一个蓝牙串口助手
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或21ic官方微信-->
后使用快捷导航没有帐号?
查看: 1874|回复: 9
如何用IO口模拟I2C来实现两个STC单片机之间的通讯,求C语言写法
&&未结帖(20)
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
由于串口做了其他用处,所以想到用IO口模拟I2C通讯的方式来实现两个STC系列的单片机之间的通讯,STC官方下载的例程都是汇编的,想用C语言的,主机的之前用过,主要是从机的,求各位大侠能够指教
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
只是不用模拟I2C总线,就2根独立方向的脉冲通讯就可以了。速度可以做的很高的。我以前做的就一根IO加GND实现1M左右的通讯。 一根线也可以实现双向通讯,还带通讯仲裁。
主题帖子积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
智能卡就是一根线
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
我有&&嘿嘿
主题帖子积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
IO模拟I2C,从机很容易丢数据
因为SCK需要一直检测,如果MCU错过了,就丢一大串了
善待今天就是对未来最好的策划。
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
能发给我参考一下吗?QQ:
主题帖子积分
技术总监, 积分 39947, 距离下一级还需 10053 积分
技术总监, 积分 39947, 距离下一级还需 10053 积分
主题帖子积分
专家等级:结帖率:3%
主题帖子积分
技术总监, 积分 39947, 距离下一级还需 10053 积分
技术总监, 积分 39947, 距离下一级还需 10053 积分
从机难模拟
模拟UART还方便些
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
主题帖子积分
资深技术员, 积分 336, 距离下一级还需 164 积分
资深技术员, 积分 336, 距离下一级还需 164 积分
主题帖子积分
专家等级:结帖率:57%
主题帖子积分
资深技术员, 积分 336, 距离下一级还需 164 积分
资深技术员, 积分 336, 距离下一级还需 164 积分
现在的MCU基本都有带IIC啊,锦锐MCU带IIC,带UART,带12位的ADC,带PWM,带IAP/ISP,带LCD/LED驱动,带4-20个触摸按键,欢迎了解
锦锐科技MCU原厂-带触摸按键/LCD/LED驱动的MCU
销售工程师:陈辉 QQ:
技术新星奖章
人才类勋章
时间类勋章
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
荣誉元老奖章
等级类勋章
技术领袖奖章
人才类勋章
热门推荐 /2两个单片机之间的通信 - 无线通信技术专区 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
两个单片机之间的通信
11:44:17  
实现了电脑与单片机之间的蓝牙通信和手机与单片机之间的蓝牙通信,我想实现两个单片机之间的蓝牙通信,
void setup() {
&&// put your setup code here, to run once:
Serial.begin(9600);
void loop() {
&&// put your main code here, to run repeatedly:
Serial.print(&Hello&);
Serial.println(&GeGe Xiang&);
delay(100);
void setup() {
&&// put your setup code here, to run once:
Serial.begin(9600);
void loop() {
&&// put your main code here, to run repeatedly:
val=Serial.read();
if(val!=-1)
& & Serial.print(val);
我想通过串口观察我的实验对否?但不知道如何观测,如何打开我想要的端口监视器,而且连个端口如何同时打开?我知道穿楼肯定不是下载程序的端口。
22:26:35  
两个单片机之间通信需要用到RS232哦&&
12:54:46  
分别与电脑连接,然后用串口调试助手进行调试。
16:27:23  
两个单片机之间通信需要用到RS232哦
蓝牙转串口不行么
16:28:16  
分别与电脑连接,然后用串口调试助手进行调试。
不能同时用串口助手吗?
20:38:56  
蓝牙转串口不行么
17:00:46  
你现在的问题是通信不上还是什么?
23:25:25  
串口应该是TTL电平的 楼主可以变成RS232电平连接到电脑进行监测
17:02:05  
已经解决。。。在同时监测蓝牙之间的串口通信时。。。主模块最好用作接收端。。。。具体什么原因我也不清楚了& &希望接下来的爱好者调试的时候可以借鉴
除了亲人欢聚的喜悦
让人头痛的就是来自亲朋好友的过度关怀
“做什么工作啊?”
“工资多少啊?”
“有没有女朋友?”
“什么时候结婚?”
“买房了吗?”
面对让人崩溃的问题,如何自救呢?快来支支招吧!
Powered by}

我要回帖

更多关于 单片机串口通信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信