例说XBee无线模块开发

所需积分/C币:10 2015-08-06 18:36:43 45.61MB PDF
6
收藏 收藏
举报

例说XBee无线模块开发与arduino
序言 20世纪后期人们见证了互联网的诞生。从简单的计算机网络“阿帕网”( Arpanet)发展 到今天的互联网( Internet)。最初,网络是一个学术研究领域,到现在网络几乎连接了每个 人,每个人又通过网络进而连接所有其他人和海量的数据信息。 21世纪已初现无线时代的曙光。手机不再是简单的通信设备,它还是庞大互联网的一部 分。现在我们可以随时随地接入互联网,无论是在办公室工作还是在海边旅游。有些人已经 开始使用智能手机,使用智能手机更多的是为了数据通信而不是语音传输。实际上,你的手 机可能拥有4种或多种天线:一种与太空中的人造卫星连接,用于导航;一种用于3G网络 连接;还有一种用于Wi-Fi连接;再有一种用于蓝牙耳机或其他相似设备的近场通信。 无线数据通信时刻围绕着我们。这些通信包括从发送到高速公路智能信号牌的消息, 到遥远北极区的科学仪器,通过人造卫星上行链路,将科学发现传输到坐落于田园里的实 验室。 电话和耳机之间为什么会采用蓝牙连接呢?因为有线的方法非常麻烦。它笨重而且有 时还很碍事。电子器件很便宜,而连接器却不便宜,因此无线的方式可能更省钱而且更可 靠。实验室里或者个人电脑上乱作一团的连线都会使人烦躁不安。不过,不久的将来它们 都会消失。 相对于有线,通过射频( Radio Frequency,RF)来建立一个连接可能更复杂,但是现在 的智能硬件成本很低,而且现成的软件越来越唾手可得。一个普遍的选择就是迪进国际公司 ( Digi International)封装了的无线模块XBee系列产品。你不需要懂太多它所使用的技术细 节,比如“直接序列扩频编码( Direct Sequence Spread Spectrum Coding,DSSC”或者“正 交相移键控补偿( Offsetα Quadrature Phase Shift Keying, OQPSK)”,因为这些细节都已经由模 块来处理了。 但是你却需要知道如何使用模块和调用模块的接口。关于这一点,那些充满了高度提 炼的专业术语和密码般描述的用户手册恐怕无济于事。况且ⅹBee还使用了旧的AT命令集, 关于这些命令集的信息已经越来越难找到了。从这个角度来说, Jon titus的这本书就显得非 常珍贵了。 学习的方法有很多种。对于我们中的大多数人来说,直接动手实验要比乱翻书有效多 了。Jon正是把这种方祛融入一系列设计好的教你动手做的实验里。本书一开始就要求把器 件放到一起让它们看起来更整洁。最早的实验仿真了一个单向的无线连接:接收器模块的输 出引脚与发送器的输入引脚对应连接上了。看!无线连接耶! 书中的每个实验课程都会逐步地变得更复杂和实用。通过室中传输模拟数据,控制多个 ⅹBee模块,眼其他嵌人式组件连接,比如Δ rduino uno或 aRM mbed板连接ⅹBee模块。当 然,这些都是嵌入式无线网络最基础的部分。 搜索个人局域网。这是一个自组网的通信连接,在运行时网络会发现哪个XBee模块正 在运行。Jon展示了如何做到这一点,并把网络互联到一起。接下来你还会学到如何处理中 断,这是在嵌入式系统领域里非常重要的一个概念。 复杂的实验来了,但是不用怕:Jon会在每个实验里向你展示每一个步骤。丰富的图例 不会让你有任何混淆的机会。不论是通信工具的屏幕截图还是如何连接LED的图示,应有 尽有。 欢迎来到21世纪第二个十年,这是无线数据通信的时代。这本书是你用ⅹBee模块来摆 脱有线连接束缚的必备指南。 Jack ganssle 前言 本书会面向那些不想深入了解无线电工程和复杂通信协议,而又想要学习如何使用迪进 国际公司的热门XBee无线通信模块的读者,比如工程师、产品设计者、企业家、教师、实 验室人员和学生。你可以在几分钟内给一个ⅹBee模块上电,并让它与其他XBee模块通信。 通常,在调试过程中会出现各种各样的问题,因此实验以如何使用迪进国际公司的XCTU 軟件作为起始,ⅹ-CTU软件简化了ⅹBee模块的安装和使用。你将学习如何使用单向通信从 远程模块上发送模拟和数字信息。实验还解释了如何设置独立的模块之间或小型无线网中的 双向通信。 在你学习通信时,你还会学到其他书籍或应用注释里没有解释的一些知识,其中包括: 使用休眠模式,让远程设备立即唤醒,如何使用脉宽调制等。后面的实验介绍了 Arduino Uno和 ARM mbed微控制器(MCU)模块,并提供了在PC机和远程MCU模块之间进行双 向通信的代码。操作指南说明了如何使用 ARM mbed或 Arduino uno。软件实验还展示了在 个小型网络里如何识别未知数量的ⅹBee模块,以及如何获取远程的数字和模拟信息,并 以有用格式呈现。记住,本书不讨论一系列工程问题,相反,它讨论关于XBee模块如何传 输数字和模拟信息、如何理解这些信息、如何配置模块、如何建立模块之间的网络等。然 后,你以在本书中学到的知识为基础,把你的创意应用于产品设计或搭建的项目中。 当我开始研究如何使用ⅹBee模块时,我在迪进网站上下载了技术手册,并且重新查看 了详细说明和设置。我还在论坛和技术支持页面查找了关于如何使用XBee模块的信息。遗 憾的是,技术手册描述了很多命令和操作条件,但是没有解释如何使用那些信息来做有用的 东西。论坛或技术支持网站常常处理一些特殊的问题,比如“我有一个让某东西工作的问 题……”、“我该如何在ⅹBee上连接一个压力传感器?”这种类型的信息只能帮助很少的人去 解决特定的问题。 所以我决定投入ⅹBee的“实验”里来学习模块能做什么,以及如何在没有预备知识的 情况下使用它们。因此,实殓解释了如何使用ⅹBeε模块与其他模块相互通信,同时把怎么 通信的细节保留给每个读者。一些读者可能需要传输来自传感器的模拟信号,另外一些读者 可能需要监控门或窗户上的报警开关。怎样使用模块取决于你,在经过本书的实验之后,你 会知道如何来使用ⅹBe模块。本书的这些实验不涉及 Zig Bee网络协议。如有需要,请查阅 其他相关书籍。 实验使用标准的ⅹBee模块,它易于获取,而且需要的支持组件便宜。你可以在没有任 何电子或编程知识的情况下进行大多数实验,不过有几个实验可能会需要编程经验,比如 BASIC或C。当然,使用数字逻辑或基于面包板搭建电路的经验对这些实验也是很有帮助 的。你必须阅读原理图,在面包板上安插元器件,并做出相应的连接。这在正文里会做详细 的说明。 有些描述可能看来比较基础,不过我觉得它对不熟悉电子学的人更有帮助,而且专家 可以跳过那些基本信息。尽管每个单元可以作为单独的实验,但我还是建议读者从实验1开 始,挨个进行后续实验。 我推荐使用的迪进模块型号是XB24ACI-001,它工作在2.4GHz,是工业、医疗、科学 的频段,不需要许可证,遵循IEEE802154国际标准。你可以从迪进国际或遍及全球的经 销商处直接购买模块。 在某些情况下,我的ⅹBee模块会岀现意外情况,这可能是因为ⅹBee模块的配置有错 误。如果发生这种情况,你可以快速地复位模块到其出厂默认配置使它恢复正常。 ⅹBee模块可以响应68条命令,其中很多我从没有使用过,我怀疑大多数用户也都不会 使用这些命令。一本实验书不可能涵盖每条命令,所以你可以实验你认为合适的那些命令。 因为我在一个小楼房的实验室里工作,所以我没有更改“输出射频功率等级(PL)”的默认出 厂设置。也没有用到相应的7条诊断命令。 在开始实验之前,从迪进国际网站(www.digicom)下载并打印最新的手册“XBee XBee- PRO RF Modules”。我的手册版本是90000982B。这个文档描述了控制命令、命令需 要的参数以及参数的具体含义。 你的装有 Windows操作系统的PC机上必须装有免费的迪进X-CTU软件。该软件能够 让你轻松监控ⅹBee的状态、向XBe模块发送命令、测试与远程XBee模块的通信以及配置 调试解调器设置。迪进把XBee模块的控制部分称为“调制解调器”,不过本书中将其简称为 XBee设备模块。我的模块固件版本是10E6。迪进采用十六进制值表示版本号,你可以通过 XCTU软件来检查版本号。 值得一提的是,我在使用XCTU软件的过程中碰到了一些问题。第一个,在运行 ⅹ-CTU软件之前通过USB数据线把USB转XBee适配器连接到PC机上。当我启动软件时 软件没有识别USB转ⅹBee适配器。第二个,当我用鼠标轨迹球或滚轮在ⅩCTU窗口里上 下移动时,ⅹCTU软件会意外退出。如果这时你已输入了很长的命令包,则它们会丢失。第 三个,你不能在ⅹ-CTU软件里保存信息包,所以要把它们写下来。最后,如果你在X-CTU 的“调制解调器”配置窗口中打开了文本框,使用鼠标轨迹球或滚轮滚动时,文本框里的选 项会上下滚动而不是整个配置窗口上下滚动 下面是实验里的一些特殊信息。 代码下载 可以下载实验中用到的所有代码并自由使用它们,网址如下 http://www.elsevierdirect.com/companion.jsp?isbn=9780123914040 每个实验都有一个文件夹,其中包含了所需的代码或XBee配置信息,命名为“None” 的文件夹表明这个实验没有相应的软件。为了节约时间,每个实验的文件夹里都包含了调制 解调器配置文件,以pro为扩展名,在Ⅹ-CTU软件里可以用它来配置XBee模块的参数。 如果你束手无策或模块不工作了,向ⅹ-CTU软件加载给出的配置文件,并保存到模块中。 我的代码是开源的,我也希望读者能够修改它并与他人共享。代码包含了Excl电子表 格 Packet creator2,它能在某些实验或微控制器代码里帮助你建立十六进制消息或数据 包。你应当购买一台能够计算十六进制值的计算器,德州仪器和卡西欧有几款这样便宜的计 算器。 我会在http://www.elsevierdirect.com/companionjsp?isbn=9780123914040上发表注释、 修改、新代码和其他信息,读者也可以通过 Jontitus@ comcast net直接联系我。我会尽我所能 来回答问题,但是不能保证每个人都回复。在你联系我或在论坛上发表问题之前,请先在互 联网、迪进技术支持页面、 ARM mbed和 Arduino uno的产品支持页面上找一找与XBee相 关的有用信息。 代码风格和错误检查 我尽量保持程序和流程图的简明性,以便没有太多经验的人也能理解它们的操作。你 可以按照自己的需要来随意更改软件。你可以随时把ⅹBee模块的配置恢复为出厂设置,即 使运行了一个包含错误的程序,也不可能损坏你的微控制器。C编译器能捕获语法错误,但 不能捕获逻辑错误;逻辑错误一般发生在你使用了不正确的值,执行了一段错误的操作等情 况下 某些情况下我提供的正常运行代码中缺少像职业程序员那样包含错误探测和执行特定动 作的步骤。 在大多数情况下,错误探测代码会占用工作代码中很大的存储空间。我将在程序的恰当 位置处放置一个“位置标识符”,并包含探测错误的注释。在彻底测试之前绝不要以为你的 代码会正常运行,也绝不要假设不存在错误。我声明自己没有特别专业的编程知识,欢迎提 出宝贵的建议,以帮助大家编辑更好、更高效的代码 我使用垂直对齐代码段和子段的编程风格,这样更容易阅读程序: byte SerialInput( while(serial, available()== 0 X more code here return (Serialread()i 而不是像下面格式的代码: byte SerialInput()f while(Serial available()==0)[ return (Serial read()); 这里很难识别代码段中定义的一对大括号。当然,你可以使用你想要的任意格式。 调试代码 你可以通过在微控制器(MCU)的输出引脚上驱动LED的方法来做一些调试工作。当 MCU运行到某个特定位置时,它可以点亮或熄灭LED,也可以以预设的频率闪烁。你也可 以在你的代码里轻松跟踪变量,并在检査点上输岀消息。 ARM mbed模块提供独立的USB虚 拟串口,它能将调试或测试的信息发送到你的电脑。对于 ARM mbed模块,我使用 Windows 超级终端( Hyper Terminal)来输出这些信息。 Arduino uno模块有一个和主机PC连接的USB端口,但是它和板子上的串口TX和RX引 脚共用,这将引起冲突,除非你在Uno串口引上没有连接任何设备。最新的 Arduino Mega2560 模块和 Digilent chipKIT Uno32樸坎都具有额外的串口,不过我还没有使用过这些模块。 数字逻辑符号 实验中使用的数字信号是以逻辑0或逻辑1来表示的。根据惯例,工程师通常在相应信 号名称的上边采用“上横线”表示逻辑0会触发某些动作,如使能另一个数字设备、触发重 启等。在文档编辑器中,字符上加上横线很不方便,因此在信号名前用前置斜线(/)表示逻 辑0并触发相应的动作。例如,当/ RESET信号转变为逻辑0时,将重启信号所连接的设备。 又如,当输人信号LOAD转变为逻辑1时才能触发载入动作。有些作者在信号名前使用星号 来代替斜线。 电路原理图 实验和附录中的电路原理图都使用了标准的电气符号。有时,当人们画完电路然后转换 为计算机绘图时会发生错误。如图I.la所示,信号都汇集到一点,你可能会疑惑这两条信号 线是相连于这一点还是一条信号线仅仅从另一条信号线上经过。为了避免混乱,实验中的电 路图不使用4点连接。而是釆用如图I.1b所示的3线连接。这样就避免了歧义。 没有连接 a b) 图.1a)本书中,两条独立的线交叉并不是真正的交叉,而是“飞过”的意思,而不是4路信号连接 b)线上的点表明在A点和B点连接了3个信号。为了避免歧义,本书的原理图中只使用3线连接 Arduino uno的间歌性问题 在使用 Arduino uno模块的过程中我遇到了间歇性问题,因为引脚0(RX)和引脚1(TX) 与串口共用了,既用来连接外部串行设备,比如XBee模块,又和主机PC上的USB接口相 连用来下载程序。通常我的 Arduino编译器窗口下边的文本消息窗会显示如下信息: ProblemuploadingtoboardSeehttp://www.arduino.cc/en/guide/ Troubleshootingtfupload for suggestions Binary sketch size: 2284 bytes.etc. Arduino uno的故障处理向导推荐了几个解决办法,包括移除引脚0和引脚1上连接的 任何设备。我觉得这一步很麻烦,因此在下载程序时我使用一个开关来断开引脚0和引脚1 与外部设备的连接。我不知道 Arduino希望实验人员、业余爱好者和其他人怎样重复地接通 和断开引脚0、引脚1与电路之间的连接。 Arduino mega和 Digilent chipKIT Uno32模块提供 了额外的串口引脚,没有和 PC USB接口共用。 有时 arduino uno编译器会“找”不到连接的Uno模块,而报告只找到COM端口。重 新连接Uno模块、按复位按钮或重新启动Uno软件都没有用。 在后边的实验里我还偶然碰到了其他问题,例如,从 Arduino uno模块发送到主机PC 串口监视器窗口中的消息在Uno编程框架里也是可见的。传送到串口监视器里的数据也会传 输到任何已连接的ⅹBee模块。这种“双重连接”意味着ⅹBec模块“看到了”进入到“串 口监视器”里的数据,这些字符串格式的数据可能无意间包含了有效但不必要的命令,或者 这些字节可能会导致ⅹBee模块返回一个错误信息包。在某些情况下,当Uno模块向主机 PC发送信息后,连接到Uno上的XBe模块会出现意想不到的工作方式。那些使用Uno模 块的实验包括了解决这些问题的步骤,不过稍后,重复断开和连接串口线还是变得非常麻 烦。因此,建议像有关实验里描述的那样使用一个开关。 Arduino uno的Web站点上提供关于如何利用其他IO引脚在MCU的代码里而不是在 硬件里实现串行通信的一些信息。这些软件串行通信的限制阻止了XBe6模块在这些实验中 的应用。坦白地说,如果我重新写作,我会放弃 arduino uno而使用提供有多个串口的新控 制板。接下来就是关于新的32位Uno板的一些信息 新32位Uno板 在我完成 Arduino uno实验不久, Digilent和 Microchip Technology就发布了 chipKIT Uno32板,该板与 Arduino uno模块软件和硬件相互兼容。 chipKIT Uno32板具有80MHz 32位处理器(PC32MX320F128H),提供多种类型的ⅣO设备、128KB的 FLASH存储器和 16KB静态存储器。这款MCU包含两个UART,一个用来与主机PC进行USB连接,另外 一个用来连接你自己的设备,比如显示器、ⅹBee模块、微型打印机等。因此你不会再遇到 串口冲突的问题了。PIC32MX320F128HMCU通过Uno32SP连接器(J8)上的SDI2(串行 输入)和SDO2(串行输出)引脚连接到额外的UART2,#2。JP5和JP7上的主从跳线帽能够 让你改变SDO2与SD2引脚上的信号方向。遗憾的是, Digilent Uno32模块的原理图上没有 显示出主机模式和从机模式的差别,它仅仅交换了SPI连接器引脚1和4之间的串行线。引 脚6接地。 我会及时发布一些关于 chipKIT uno32的代码,来展示如何使用SD2和SDO2的 UART。 逻辑电平转换 由于ⅹBee模块运行在3.3V电源供电情况下,因此它不能直接连接到5V的逻辑信号 上。附录包含了如何设计两种逻辑电平转换电路以解决这个问题。如果你使用的是3.3V的 MCU或者像 ARM mbed的MCU板,你不需要进行逻辑电平转换。 器件 附录F里的元件清单列出了实验所需的最少和推荐数量的元器件。这个附录还包含了电 子设备及供应商的信息。 免费软件代码许可 读者在同意 Massachusetts Institute of Technology免费软件许可的条件下有权使用本书中

...展开详情
试读 127P 例说XBee无线模块开发
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
983887446 不错,在这基础上我有完善了一些,效果更好
2018-09-26
回复
chinap2p 的确是全书
2016-08-27
回复
tiantangzai 不错,在这基础上我有完善了一些
2016-05-16
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚积分or赚钱
最新推荐
例说XBee无线模块开发 10积分/C币 立即下载
1/127
例说XBee无线模块开发第1页
例说XBee无线模块开发第2页
例说XBee无线模块开发第3页
例说XBee无线模块开发第4页
例说XBee无线模块开发第5页
例说XBee无线模块开发第6页
例说XBee无线模块开发第7页
例说XBee无线模块开发第8页
例说XBee无线模块开发第9页
例说XBee无线模块开发第10页
例说XBee无线模块开发第11页
例说XBee无线模块开发第12页
例说XBee无线模块开发第13页
例说XBee无线模块开发第14页
例说XBee无线模块开发第15页
例说XBee无线模块开发第16页
例说XBee无线模块开发第17页
例说XBee无线模块开发第18页
例说XBee无线模块开发第19页
例说XBee无线模块开发第20页

试读结束, 可继续阅读

10积分/C币 立即下载 >