xbee模块和单片机_利用XBee实现Arduino点对点无线通信
新人来发帖了,望各位大神多多指教。
最近在尝试使用XBee的通信,被各种概念各种绕,稍稍理解一些,做了个小小的试验,也把自己理解的拿出来一起交流。主要是通过XBee来实现两个Arduino之间的点对点通信。试验的功能是通过按键无线控制LED的开关。
XBee是一块由美国DigiInternational公司开发的实现无线传输的模块,采用的是ZigBee无线通信技术,它的原理可以简单理解为单片机与XBee通过串口通信和XBee之间的通信,这样实现单片机之间的信息传递,XBee模块既可以实现点对点的通信即两块XBee之间的通信,也可以实现点对多点的网络通信,即类似于有一个主XBee模块和多个从XBee模块组成的网络。XBee的优点是传输误码率底,耗能低。传输距离相对较短。
XBee的型号有很多种,这次我使用的是1mWS1,就是这货
IMG_1177.JPG (63.87 KB, 下载次数: 9)
2017-4-21 12:19 上传
使用XBee需要使用扩展模块连接到Arduino上,或者使用带有XBee或WiFi Bee插口的Arduino,我选了一块DFRobot的Romeo V2.2和Leonardo V1.2(如图)
IMG_1181.JPG (145.25 KB, 下载次数: 10)
2017-4-21 13:09 上传
需要注意的是,如上面所说,XBee是通过串口通信(即TX,RX口)实现与单片机的通信,同时Arduino与电脑之间的通信也是通过串口,因此如果条件允许,使用带2个串口的板子会容易一些(如我用的Romeo和Leonardo),如果使用只有1个串口的板子(如UNO),那串口会被占用,导致XBee和Arduino之间不能通信,除非你再设置一个软串口,软串口的设置可以参考网站http://mc.dfrobot.com.cn/thread-2685-1-1.html
好了,可以开始做我的无线遥控开关了
首先,给两块板子烧录以下代码,实现2个串口之间的通信[mw_shl_code=applescript,true]
voidsetup()
{
Serial.begin(9600); //初始化usb串口并设置波特率为9600
Serial1.begin(9600); //初始化xbee或WIFI Bee串口并设置波特率为9600
}
void loop()
{
if(Serial1.available()>0)//串口1有数据测发送到串口0
{
Serial.write(Serial1.read());
}
if(Serial.available()>0)//串口0有数据则发送到串口1
{
Serial1.write(Serial.read());
}
}[/mw_shl_code]
然后我们要在XCTU上对XBee进行配置
1.点击搜索
1.png (24.81 KB, 下载次数: 14)
2017-4-21 13:09 上传
2. Next
2.png (20.15 KB, 下载次数: 11)
2017-4-21 13:09 上传
3. 注意选择的波特率,Finish
3.png (24.98 KB, 下载次数: 11)
2017-4-21 13:09 上传
4.然后就可以看到添加的两个模块
4.png (31.51 KB, 下载次数: 10)
2017-4-21 13:09 上传
5.png (185.84 KB, 下载次数: 10)
2017-4-21 13:09 上传
5.单击一个模块可以显示它的详细资料
我们需要先点击Default,把所有项目设为默认值,然后点Write,把默认值写入XBee,之后我们要确认两个XBee的Channel,PA ID相同,这样它们就可以相互通信了,也可以把按键所在的XBee写为主站点,把CE那项改为Coordinator[1],要控制的XBee写为从站点,把CE改为 End Device[0]
6.png (258.27 KB, 下载次数: 8)
2017-4-21 13:09 上传
7.png (250.14 KB, 下载次数: 12)
2017-4-21 13:09 上传
好了,两个XBee配对成功!
可以打开工作间看看两者可不可以通信
8.png (209.64 KB, 下载次数: 9)
2017-4-21 13:09 上传
两个模块都得打开
9.png (29.07 KB, 下载次数: 14)
2017-4-21 13:09 上传
10.png (31.07 KB, 下载次数: 9)
2017-4-21 13:09 上传
11.png (33.73 KB, 下载次数: 9)
2017-4-21 13:09 上传
可以看到两个模块间的“交流”
配置完XBee就差不多了,
把按键插在引脚7上
IMG_1185.JPG (119.75 KB, 下载次数: 11)
2017-4-21 13:09 上传
现在可以把两端代码分别烧录在Romeo和Leonardo上了
[mw_shl_code=applescript,true]
/*此代码实现按键控制LED亮暗同时往串口发送亮暗信号*/
int LED =13; // LED 所在引脚
int BUTTON =7; // 按键所在引脚
int val =0; // 存储 LED 高低电平值
int old_val =0; // val 之前的值
int state =0; // LED 状态,1亮 0暗
void setup(){
pinMode(LED, OUTPUT); // LED 为输出
pinMode(BUTTON, INPUT); // BUTTON 为输入
Serial1.begin(9600); // 此处用串口Serial1通信
}
void loop() {
val = digitalRead(BUTTON); // 读取并存储按键引脚的值
// 按键按下代表输入值为 HIGH
if ((val == HIGH) && (old_val ==LOW)) {
state = 1 - state;
delay(10);
}
old_val = val; // 消抖
if (state == 1) {
digitalWrite(LED, HIGH); // LED 亮
Serial1.write('H');
}
else {
digitalWrite(LED, LOW); // LED 暗
Serial1.write('L');
}
}
************************************************************************************************
/*此代码为接收串口信号值并控制LED亮暗*/
int LED =13; // 设置 LED 引脚
void setup(){
pinMode(LED, OUTPUT); // LED 为输出
Serial1.begin(9600); // 串口Serial1通信
}
void loop(){
// 当串口有收到信号时
if (Serial1.available())
{
char c = Serial1.read(); // 定义串口读数
if (c == 'H')
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
}
}[/mw_shl_code]
好啦,一个无线遥控开关做完了,希望大家多多指正
IMG_1182.JPG (136.08 KB, 下载次数: 12)
2017-4-21 13:09 上传
中间的那两个就是引脚13对应的LED
参考资料
xbee模块和单片机_利用XBee实现Arduino点对点无线通信相关推荐
- xbee模块和单片机_基于XBee进行ZigBee组网
该文章转帖自:http://blog.csdn.net/u012261135/article/details/48594419 文章简单地介绍了XBee模块.应用组合和2种通讯方式,还有XCTU的基本 ...
- xbee模块和单片机_美国DIGI公司的XBee模块无线通讯实验
DFRobot公司出品的XBee适配器驱动就是Arduino Duemilanove控制器的驱动,因为它们都是采用了FIDI USB驱动,如果您已经安装了Arduino Duemilanove控制器的 ...
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...
- 休眠后gpio状态_浅谈Digi XBee模块的休眠模式
浅谈Digi XBee模块的休眠模式 2020-3-25 Digi XBee S2C模块,如果仅连接电源线可以测得,在待机情况下,大约是10.5mA左右的电流,在休眠时的功耗可以低到0.5uA.可以知 ...
- XBee zigbee 使用指南--- XBee模块输入和输出
(http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件) 目录 XBee模块输入和输出 XBee I/O引脚 ...
- XBee模块实现QGC与PX4飞控的组网通信连接
本篇博客介绍如何利用XBee模块实现QGC地面站与飞控的通信 一.问题的提出 正如 上一篇博客 指出,PX4飞控原装数传模块(3DR Radio)只能一对一通信,并不能实现多机组网通信,而XBee模块 ...
- 物联网无人机:无人机应用实例及分析(基于XBee模块)
(http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件) 无人机已经存在了很长一段时间,但是看到正在出现的用 ...
- Arduino开发板连接XBee模块的方法
在本篇文章中,我们将使用Arduino Uno开发板连接一个XBee模块.与Arduino开发板连接的XBee模块将作为一个接收器,它将与其他XBee模块进行无线通信,这些模块使用Explorer B ...
- 全球最小的微型 ZigBee无线模块,认识一下Micro XBee
不但完整支持ZigBee 3.0,还可以同时支持低功耗蓝牙,只有人的指甲片大小,直线通讯距离却可达好几公里,原来不可想像的功能,在Digi的Micro XBee无线模块上可以全部找到. XBee是全球 ...
最新文章
- Centos安装GD库
- Java调用库文件(JNI)(android对此有所改变)
- 分享10个实用的高效办公神器,极大地提高办公效率
- 【十大经典数据挖掘算法】k-means
- wxWidgets 线程示例
- mysql的调试与分析_mysql日志管理分析调试实例_MySQL
- 软件测试度量计算方法有哪些,软件测试度量(三)
- excel实战应用案例100讲(四)-Excel玩转数据:从分析到可视化
- 一周工作60个小时并不值得骄傲,这是个问题!
- 台账软件测试自学,测试情况汇总.docx
- docker: Error response from daemon: driver failed programming external connectivity
- 《Jquery实战》第3版:译者序 Frank Xu Lei
- project不显示里程碑标志_3万台!纽荷兰大方捆打捆机再创全新里程碑
- linux命令vi作用,详解Linux常用命令的用法(二)――――文本编辑器命令vi/vim
- datetimepicker中文不生效_Python reStructuredText 帮助文件中文乱码
- 大数据分析平台如何进行支出跟踪
- 基于javaweb+jsp的员工薪资工资管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
- 当逛书店成为一种怀旧
- ADB自动化线刷升级安卓车机版本
- 2066服务器芯片组,华硕发布三款LGA2066对应工作站主机板