做网站网站条件,网站上传的视频播放卡,邢台立享网络,彩票网站开发搭建实验1 基于ZStack光敏传感器实验
1.实验目的
我们通过上位机发指令给协调器#xff0c;协调器把串口接收到的指令通过Zigbee协议无线发送给带有光敏传感器的终端节点#xff0c;获取到数据以后把数据返回给上位机#xff0c;实现无线获取数据的目的。
2.实验设备
硬件协调器把串口接收到的指令通过Zigbee协议无线发送给带有光敏传感器的终端节点获取到数据以后把数据返回给上位机实现无线获取数据的目的。
2.实验设备
硬件ZigBee节点二个CC Debugger仿真器一套
软件IAR Embedded WorkBench,ZStack协议栈Keil开发软件 3.实验原理
3.1 光敏传感器介绍
首先我们的光敏传感器用到的是光敏电阻光敏电阻器是一种对光敏感的元件它的电阻值能随着外界光照强弱明暗变化而变化即光敏电阻器是利用半导体光电导效应制成的一种特殊电阻器对光线十分敏感。它在无光照射时呈高阻状态当有光照射时其电阻值迅速减小。
3.2 光敏传感器的电路图
光敏传感器的电路如图3.1所示。 一般情况下光敏电阻的暗电阻为1M~~2MΩ亮电阻为1K~~15KΩ则可以根据D3处的电压分为两种情况:暗电阻没有光照与亮电阻有光照
暗电阻下3.3V * 10K/ ( 2000 K 10K) 0.016V
亮电阻下3.3V * 10K/ ( 15 K 10K) 1.3V
我们这里使用的STM32的PA4是12位ADC根据上面的计算结果我们可以算出亮电阻下的ADC值为1.3*1024 /3.3 1613 则我们可以通过采集ADC1的值作为临界值当ADC1的值大于1613时表明有光小于1613则无光。
3.3 Modbus数据格式举例
详细的描述请参考官方资料配套光盘\附件\ModBus协议
下面举一个例子
发送指令02 03 00 2C 00 01 45 f0
02 表示设备地址
03 功能码表示读取数据
00 2C读取开始的地址
00 01表示读取多少个寄存器1个寄存器有2个字节
45 f0: 由前面数据通过CRC-16计数得来的校验码 返回数据02 03 02 00 00 FC 44
02 表示从地址为02的设备返回
03 表示返回的数据是读取
02 表示2个有效字节
00 00 就是2个有效字节
FC 44 :由前面数据通过CRC-16计数得来的校验码
3.3 光敏传感器数据获取设想
我们通过上位机发指令给协调器协调器把串口接收到的指令通过Zigbee协议无线发送给带有光敏传感器的终端节点获取到数据以后把数据返回给上位机实现无线获取数据的目的。
3.3 获取光敏传感器数据大概流程
第一步上位机电脑通过串口发送获取光敏传感器数据的指令给协调器。
第二步协调器由串口接收到指令以后通过Zigbee协议无线把指令发送给终端节点。
第三步终端节点接收到指令以后通过串口把指令发给终端节点上面的STM32芯片。
第四步STM32芯片串口接收到指令以后作出响应然后把带有光敏传感器数值的数据通过串口返回给终端节点上面的CC2530芯片。
第五步终端节点CC2530芯片串口接收到光敏传感器数据以后通过Zigbee协议无线把数据发送给协调器CC2530芯片。
第六步协调器CC2530芯片无线接收到光敏传感器数据以后通过串口把数据返回给上位机。 4.实验步骤
4.1 编写实验源代码及下载代码
第一步 将光敏传感器安装在节点上打开Keil集成开发环境打开配套光盘\源代码\Zigbee无线传感网原理与应用\实验8 基于ZStack光敏传感器实验-V20170222\STM32固 件库V3.5移植--实验8 光敏传感器实验\RVMDK的Test.uvproj工程文件。
实验中找到源代码编译发现报错后后来查阅资料后发现是因为C51中没有ARM环境于是将ARM所在的内容复制到C51中重新编译程序编译成功了。 第二步点击左上角的Rebuild按键
编译整个工程将生成Test.hex可执行文件该可执行文件自动保存在路径下源代码\传感器原理及应用\实验8 光敏传感器实验-V20170222\STM32固件库V3.5移植--实验8 光敏传感器实验\RVMDK\Output目录下。(注意请根据该目录下 Test.hex文件的生成时间判断该文件是否是自己刚刚编译完成的。)
实验中找到了该文件路径所在的位置并成功编译和运行了文件。
第三步把J-LINK与节点、电脑连接点击左上角的【LOAD】
将程序下载到节点板使用配套的串口线将计算机串口与节点的DB9串口接头相连如图4.1所示注意将节点右下角上的白色三位拨打开关拨至左边给节点重新上电打开配套光盘\第三方应用软件\串口调试及CRC软件\串口调试工具.exe程序打开正确的端口进行9600-8-N-1设置打开串口,就可以与芯片进行数据交互。 连接好的图如下 注意要连接好下载器再进行下载并且确保三位开关已经拨到最左边。这里是实验成功的关键。 进行下载 第四步配置节点地址,如下图。
发送FF 30 00 08 00 01
返回FF 30 00 08 00 01 第五步获取传感器数据
发送08 03 00 2A 00 01 a5 5b
返回08 03 02 0E 72 E0 00 其中0E 72就是采集光敏传感器的AD值不同光照条件下这个值会相应不同。如图4.3. 第六步解压缩配套光盘\源代码\Zigbee无线传感网原理与应用下的实验8 基于ZStack光敏传感器实验-V20170222文件到电脑磁盘第一级目录建议放在桌面因为我们的配套光盘目录比较深如果直接在配套光盘打开Zigbee工程文件的话会出现图4.4所示报错等原因而打不开工程。 后来找到了文件路径解决了这个问题。 第六步在电脑桌面打开刚解压以后的文件实验8 基于ZStack光敏传感器实验-V20170222\ZStack-CC2530-2.5.0\Projects\zstack\Samples\GenericAppV2.3\CC2530DB下的IAR工程文件“GenericApp.eww”。如图4.5 第七步实验的协调器与终端采用默认的PANID 0xFF11同一个地方多人实验最好设置自己独立一个PANID0~FFFF与他人不同所以实验时候是随便设置的这个不是很影响在编译下载协调器程序和终端节点程序前修改PANID和信道方法如图4.6所示。简单点说就是每次打开IAR工程时候先修改自己的PANID号然后再分别选择协调器、路由器、终端相应的工程然后分别编译下载就可以即协调器、路由器、终端的PANID是相同的我们只要一开始打开IAR工程修改即可。 修改第58行的ID值 第八步 选择不同项目进行编译下载首先选择协调器的项目如图4.7所示 第九步 点击上边工具栏project-Rebuild All编译整个工程将生成GenericApp.hex可执行文件该可执行文件自动保存在 实验8 基于ZStack光敏传感器实验-V20170222\ZStack-CC2530-2.5.0\Projects\zstack\Samples\GenericAppV2.3\CC2530DB\CoordinatorEB\Exe目录下。(注意请根据该目录下GenericApp.hex文件的生成时间判断该文件是否是自己刚刚编译完成的。)编译成功则下边信息栏会提示0错误。如图4.8所示。 第十步使用CCDebugger仿真器将电脑与协调器节点下载接口相连。注意观察CCDebugger仿真器的灯是否变绿如果是红色则按仿真器的复位键让仿真器灯变绿如图4.9所示。 第十一步 点击工具栏的下载按钮将程序下载到CC2530上然后点击
如图4.10所示。 图4.10 下载程序
第十二步 在IAR里面选择“EndDeviceEB”工程如图4.11。重复第九步到第十一步的步骤下载“EndDeviceEB”工程代码到节点。 图4.11
第十三步把节点的三档开关拨打到中间如图4.12 图4.12 第十四步重新打开或按Reset复位节点底板。用公母直连串口线将协调器节点的串口与电脑的的9针COM口相连协调器的开关S1拨打到右边让DB9和CC2530相连。如图4.13所示。 图4.13 第十五步打开串口调试助手串口参数9600-8-N-1如图4.14
发送08 03 00 2A 00 01 a5 5b
返回08 03 02 0A C1 A3 75其中0A C1就是采集光敏传感器的AD值不同光照条件下这个值会相应不同。如图4.14. 4.2 源码分析
第一步在GenericAPP.c里面
协调器接收到上位机发送的指令HalUARTRead(0,From_Pc_Cmd,Rx_Count);如图4.15 图4.15
第二步在GenericAPP.c里面
协调器把接收到的指令通过Zigbee无线发送给终端节点
GenericApp_SendTheMessage(From_Pc_Cmd, Rx_Count);如图4.15
第三步在“Enddevice.c”里终端节点接收到指令以后把指令通过串口发送给STM32芯片如图4.16
图4.16 第四步STM32芯片串口接收到数据以后处理指令然后通过串口把带有光敏传感器数值的数据返回给终端节点。 第五步在“Enddevice.c”里终端节点通过串口接收到数据以后通过无线把数据发送给协调器。如图4.17.
图4.17 第六步在GenericAPP.c里面协调器接收到无线数据并把数据通过串口发送给上位机。如图4.18 图4.18 5.实验结果
这次实验在小组成员的合作下顺利完成了。 6.实验总结
首先在对所学的理论课而言实验给了我们一个很好的把理论应用到实践的平台让我们能够很好的把书本知识转化到实际能力提高了对于理论知识的理解认识和掌握。 其次对于个人能力而言实验很好的解决了我们实践能力不足且得不到很好锻炼机会的矛盾通过实验提高了自身的实践能力和思考能力并且能够通过实验很好解决自己对于理论的学习中存在的一些知识盲点。 对于团队协作与待人处事方面实验让我们懂得了团队协作的重要性教导我们以谦虚严谨的态度对待生活中的人与事以认真负责的态度对待队友通过实验的积极的讨论理性的争辩可以让我们更加接近真理。 实验中应注意的有几点。 一是一定要先弄清楚原理。 这样在做实验才能做到心中有数从而把实验做好做细。一开始实验比较简单可能会不注重此方面但当实验到后期需要思考和理解的东西增多个人能力拓展的方面占一定比重时如果还是没有很好的做好预习和远离学习工作那么实验大部分会做的很不尽人意。 二是在养成习惯方面。 一定要真正的做好实验前的准备工作把预习报告真正的学习研究过并进行初步的实验数据的估计和实验步骤的演练这样才能在真正实验中手到擒来做到了然于心。 不过说实话在做试验之前我以为不会难做就像以前做的实验一样操作应该不会很难做完实验之后两下子就将实验报告写完直到做完实验后我才知道其实并不容易做要注意其中的很多细节而且要真正的领悟其中的道理而不是无脑跟着视频操作这样我们不会有真正的收获的。它真的不像我想象中的那么简单天真的以为自己把平时的理论课学好就可以很顺利的完成实验事实证明我错了。 在实验中我更是受益匪浅。在做实验设计的时候本着实践性创新性可行性和有意义性的原则完成了这个实验。实验本身的原理并不是很复杂但那只针对有过相关学习的同学对于我这样的初学者对于实验原理的掌握本身就是一个挑战。通过翻阅有关书籍和查阅相关的资源加深自己对功能的理解将实验和理论相结合并且在同学和老师的帮助下完成了实验。本次实验给我留下最深刻的是严谨以及求实。努力的弄懂原理还要进行再创造。能做好的事就要把它做到把生活工作学习当成是在雕刻一件艺术品真正把心投入其中最终命运会为你证明你的努力不会白费。 最后感谢老师的辛苦指导和同学的热心帮助 其他实验按需自行下载。