实验11 无线采集温度传感器

上传人:无*** 文档编号:158208345 上传时间:2022-10-03 格式:DOC 页数:19 大小:1.83MB
收藏 版权申诉 举报 下载
实验11 无线采集温度传感器_第1页
第1页 / 共19页
实验11 无线采集温度传感器_第2页
第2页 / 共19页
实验11 无线采集温度传感器_第3页
第3页 / 共19页
资源描述:

《实验11 无线采集温度传感器》由会员分享,可在线阅读,更多相关《实验11 无线采集温度传感器(19页珍藏版)》请在装配图网上搜索。

1、 ZigBee实验十一无线采集温度11.1 实验简介对于温度传感器,主要原理就是将温度转化成为模拟量,再通过ADC将模拟信号转换成数字信号。对于CC2530芯片内部已经集成了ADC,该ADC 支持多达14 位的模拟数字转换,具有多达12 位的ENOB(有效数字位)。它包括一个模拟多路转换器,具有多达8 个各自可配置的通道;以及一个参考电压发生器。转换结果通过DMA 写入存储器。还具有若干运行模式。同时CC2530内部也集成了一温度传感器,可以通过配置寄存器,将温度传感器作为ADC的输入,这样CC2530就可以方便的使用温度传感器。在基础实验中,也用过了温度传感器,本实验主要是居于TI的协议栈进

2、行的无线采集实验目的11.2 训练目的 12.2.1 通过本实验了解Z-STACK协议栈中的ADC采集的使用及相关寄存器的配置。11.3实验设备11.3.1 硬件:(1) ZIGBEE 调试底板2个:可调电阻ZigBee_DEBUG指示灯红外发射ZigBee复位ZigBee按键拨码开关节点按键复位传感器接口1J-LINK接口传感器接口3传感器接口2电源开关电源图11-1 ZIGBEE调试底板(2) UART转接板与转接线各1个:UART转接线转接串口输入,连接到ZIGBEE调试底板转接串口输出,连接到电脑串口图11-2 UART转接板与转接线(3) ZIGBEE仿真器1个;10PIN下载接口电

3、源(上)和状态指示灯USB接口图11-3 ZIGBEE仿真器(4) ZIGBEE模块2个;图11-4 ZIGBEE模块(5) 电源2个图11-5 电源(6) 串口延长线1根图11-6 串口延长线(7) 硬件连接图连接电脑串口ZigBee调试底板与串口转接板连接电源连接电脑USBZIGBEE DeBug连接口图11-7 硬件连接11.3.2 软件(1) IAR Embedded Workbench for MCS-51 7.51A集成开发环境;(2) TI Z-STACK;(3) 仿真器驱动;(4) 串口调试助手。实验知识11.4 11.4.1 ADC输入除了输入引脚AIN0-AIN7,片上温度

4、传感器的输出也可以选择作为ADC 的输入,用于温度测量。可通过配置寄存器TR0.ADCTM 和ATEST.ATESTCTRL去实现。 11.4.2 片内温度传感器的温度计算方法在CC2530的用户手册中没找到相关的温度计算方法,而在CC2430用户手册用,可以得到以下一个表格:在TI提供的官方例程中“SimpleSensorEB-Pro”中,得到这样的一段话:value ranges from 0 to 0x8000 indicating 0V and 1.25VVOLTAGE_AT_TEMP_ZERO = 0.743 V = 19477TEMP_COEFFICIENT = 0.0024 V/

5、C = 62.9 /CThese parameters are typical values and need to be calibratedSee the datasheet for the appropriate chip for more detailsalso, the math below may not be very accurate可以知道以上的确实为CC2530的内部温度传感器的电压与温度的关系,从而可以得到计算温度的方法。实验步骤11.511.5.1 在开始本实验的仿真前,参看配套源资料中“关于节点板串口使用的统一说明”,先按照本说明去配置好串口,波特率38400,以便往

6、下实验能正常使用串口。图11-8 节点板串口使用的统一说明11.5.2 启动IAR Embedded Workbench,打开对应配套实验源码中“路由器”的SampleApp.eww工程:图11-9 工程文件图11-10 打开工程界面11.5.3 编译链接程序代码Make,这一步可以省略,因为进行DeBug前,IAR软件会先编译再下载代码到目标板上去仿真,但对于编译检查错误,这一步也很有必要。如果正确编译后文件右侧的红星会消失。在Make之前,最好Clean一下,如下图所示:图11-11 编译链接代码文件红色星星编译后变没有了编译后生成图11-12 编译前后对比如果正确建立工程并正确配置了工程

7、,则此时编译是无错误的,编译无错误如图 图11-13 编译链接无错误图11-14 编译连接有错误11.5.4 按照前面“实验设备”小节中的“硬件连接图”连接好硬件并打开电源,点击DEBUG按钮或者”Project-Debug”或者快捷键“Ctrl + D”进行程序下载并Debug。如有出错,请检查硬件连接或拔掉仿真器USB再重接图11-15 Debug 调试图11-16 程序正在下载到目标板11.5.5 正确进入DeBug界面,如下图:图11-17 仿真调试界面11.5.6 通过以上步骤已将路由器程序下载到节点,此时的节点叫“路由器”。卸下仿真器与“路由器”的连接线,使得“路由器”为一个单独的

8、个体。再将仿真器与另外一个节点按照“硬件连接图”去进行连接。按“实验步骤”从头开始,将“协调器”程序下载到到节点,以得到一个节点为“协调器”,一个节点为“路由器”。图11-18 协调器与路由器11.5.7 此时“协调器”节点与“路由器”节点已经准备好。“协调器”则通过串口连接电脑,打印出收到的数据包。先让“协调器”在DEBUG状态下全速运行,再给“路由器”上电运行(注意:协调器要先于路由器运行,不然两个节点可能建立不了连接。如果“路由器”连接不到“协调器”,那么LED一直闪烁,闪烁周期大概1S)。11.5.8 在配套资料“提高实验”文件夹下找到“超级单片机工具软件.exe”,如果是WIN7系统

9、,右键“以管理员身份运行”,选择电脑对应的端口,设置和程序对应的波特率“38400”,数据位“8”,停止位“1”,校验位“NONE”,然后点击“打开串口”图11-19 超级单片机工具软件图11-20 超级单片机工具软件界面11.5.9 按下“全速运行”按钮进行试验验证,与下文“实验验证”小节内容进行验证本实验结果步出函数步入函数单步运行复位全速运行按钮图11-21 调试功能按钮11.5.10 实验完毕。实验验证11.6 11.6.1 路由器是否每个1秒LED闪烁一下;11.6.2 查看协调器串口(串口调试助手)是否有温度数据上传显示。图11-22 实验结果验证实验部分参考程序解析(完整程序见源

10、程序文件)11.7代码解释:11.7.1 路由器设计uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )afIncomingMSGPacket_t *MSGpkt;if(events&SYS_EVENT_MSG)MSGpkt=(afIncomingMSGPacket_t *)osal_msg_receive(SampleApp_TaskID);while(MSGpkt)switch(MSGpkt-hdr.event) case AF_INCOMING_MSG_CMD:break; case ZDO_STATE_CHANGE:

11、GenericApp_NwkState=(devStates_t)(MSGpkt-hdr.status);if(GenericApp_NwkState=DEV_ROUTER)osal_set_event(SampleApp_TaskID,SEND_DATA_EVENT);break;default:break;osal_msg_deallocate(uint8 *) MSGpkt);MSGpkt=(afIncomingMSGPacket_t *)osal_msg_receive(SampleApp_TaskID);return (events SYS_EVENT_MSG); if(events

12、&SEND_DATA_EVENT)GenericApp_SendTheMessage();osal_start_timerEx(SampleApp_TaskID,SEND_DATA_EVENT,1000);return (eventsSEND_DATA_EVENT);return 0;参考注解:当路由器检测到网络并加入网络后即会发生ZDO_STATE_CHANGE事件,当系统检测到该事件时,启动SEND_DATA_EVENT事件,在SEND_DATA_EVENT事件中每个1000MS进行一次GenericApp_SendTheMessage()函数的调用。void GenericApp_Sen

13、dTheMessage(void) int8 tvalue; uint8 datatemp5; tvalue=readTemp();datatemp0=tvalue/10+0;datatemp1=tvalue%10+0;datatemp2=C; AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc, SAMPLEAPP_FLASH_CLUSTERID, 3, datatemp, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ); HalLedBlink(HAL_LED

14、_1,0,50,500);参考注解:本函数的目的主要是调用readTemp()温度读取函数,将数据进行字符串转换后通过无线电发送出去。int8 readTemp(void) static uint16 reference_voltage; static uint8 bCalibrate=TRUE; uint16 value; int8 temp; ATEST=0x01; TR0|=0x01; ADCIF=0; ADCCON3=(HAL_ADC_REF_115V|HAL_ADC_DEC_256|HAL_ADC_CHN_TEMP); while(!ADCIF);ADCIF=0;value = AD

15、CL 2; /ADCL寄存器低2位无效value |= (UINT16)ADCH) hdr.event ) / Received when a key is pressed / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; / Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Next - if one is ava

16、ilable MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); / return unprocessed events return (events SYS_EVENT_MSG); return 0;参考注解:协调器运行建网后,在等待事件的发生,当检测到AF_INCOMING_MSG_CMD(接收到无线数据)事件后,调用SampleApp_MessageMSGCB( MSGpkt )数据接收处理函数。void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )switch(pkt-clusterId)case SAMPLEAPP_FLASH_CLUSTERID:HalUARTWrite(0,(uint8*)pkt-cmd.Data,3);HalUARTWrite(0,n,1 );/换行break;参考注解:本函数将接收到的数据原封不动的通过串口发送出去。思考题1 修改程序,温度原始十六进制数据上传,并修改上传频率。19

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!