新人来发帖了,望各位大神多多指教。

最近在尝试使用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点对点无线通信相关推荐

  1. xbee模块和单片机_基于XBee进行ZigBee组网

    该文章转帖自:http://blog.csdn.net/u012261135/article/details/48594419 文章简单地介绍了XBee模块.应用组合和2种通讯方式,还有XCTU的基本 ...

  2. xbee模块和单片机_美国DIGI公司的XBee模块无线通讯实验

    DFRobot公司出品的XBee适配器驱动就是Arduino Duemilanove控制器的驱动,因为它们都是采用了FIDI USB驱动,如果您已经安装了Arduino Duemilanove控制器的 ...

  3. 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪

    1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...

  4. 休眠后gpio状态_浅谈Digi XBee模块的休眠模式

    浅谈Digi XBee模块的休眠模式 2020-3-25 Digi XBee S2C模块,如果仅连接电源线可以测得,在待机情况下,大约是10.5mA左右的电流,在休眠时的功耗可以低到0.5uA.可以知 ...

  5. XBee zigbee 使用指南--- XBee模块输入和输出

    (http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件) 目录 XBee模块输入和输出 XBee I/O引脚 ...

  6. XBee模块实现QGC与PX4飞控的组网通信连接

    本篇博客介绍如何利用XBee模块实现QGC地面站与飞控的通信 一.问题的提出 正如 上一篇博客 指出,PX4飞控原装数传模块(3DR Radio)只能一对一通信,并不能实现多机组网通信,而XBee模块 ...

  7. 物联网无人机:无人机应用实例及分析(基于XBee模块)

    (http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件) 无人机已经存在了很长一段时间,但是看到正在出现的用 ...

  8. Arduino开发板连接XBee模块的方法

    在本篇文章中,我们将使用Arduino Uno开发板连接一个XBee模块.与Arduino开发板连接的XBee模块将作为一个接收器,它将与其他XBee模块进行无线通信,这些模块使用Explorer B ...

  9. 全球最小的微型 ZigBee无线模块,认识一下Micro XBee

    不但完整支持ZigBee 3.0,还可以同时支持低功耗蓝牙,只有人的指甲片大小,直线通讯距离却可达好几公里,原来不可想像的功能,在Digi的Micro XBee无线模块上可以全部找到. XBee是全球 ...

最新文章

  1. Centos安装GD库
  2. Java调用库文件(JNI)(android对此有所改变)
  3. 分享10个实用的高效办公神器,极大地提高办公效率
  4. 【十大经典数据挖掘算法】k-means
  5. wxWidgets 线程示例
  6. mysql的调试与分析_mysql日志管理分析调试实例_MySQL
  7. 软件测试度量计算方法有哪些,软件测试度量(三)
  8. excel实战应用案例100讲(四)-Excel玩转数据:从分析到可视化
  9. 一周工作60个小时并不值得骄傲,这是个问题!
  10. 台账软件测试自学,测试情况汇总.docx
  11. docker: Error response from daemon: driver failed programming external connectivity
  12. 《Jquery实战》第3版:译者序 Frank Xu Lei
  13. project不显示里程碑标志_3万台!纽荷兰大方捆打捆机再创全新里程碑
  14. linux命令vi作用,详解Linux常用命令的用法(二)――――文本编辑器命令vi/vim
  15. datetimepicker中文不生效_Python reStructuredText 帮助文件中文乱码
  16. 大数据分析平台如何进行支出跟踪
  17. 基于javaweb+jsp的员工薪资工资管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
  18. 当逛书店成为一种怀旧
  19. ADB自动化线刷升级安卓车机版本
  20. 2066服务器芯片组,华硕发布三款LGA2066对应工作站主机板

热门文章

  1. 华为服务器网卡驱动安装文件夹,服务器网卡驱动安装
  2. 转 基于Spark的大数据精准营销中搜狗搜索引擎的用户画像挖掘
  3. Oracle统计信息(二)—— 直方图 Histogram
  4. 万邦亚马逊国际获得AMAZON商品详情 API 返回值说明
  5. 【chineseocr_lite】识别效果
  6. 去除pplive广告
  7. java对外接口 入参实体命名_支付中心接口设计之参数命名
  8. HP-UX培训学习笔记
  9. 硬件电路设计入门之三路二选一模拟开关电路芯片--74HCT4053
  10. 计算机未来对生活的影响英语作文,以未来的生活为话题的英语作文