对应的代码包:https://download.csdn.net/download/mchen_6431/11536608

硬件采用:深联智达公司产品: https://tb.am/ronna

ZigBee技术建立在IEEE802.15.4标准之上,ZigBee联盟对网络层协议和API进行了标准化。ZigBee协议栈架构基于OSI七层模型,但只定义了与其应用息息相关的几个层,如下图所示。IEEE 802.15.4标准定义了物理层和MAC子层,ZigBee标准在这个基础之上扩展了网络层(network layer,NWK)和应用层框架,其中包括应用支持子层(application support sub-layer,APS)、ZigBee设备对象(ZigBee device object,ZDO)以及设备商自定义的应用组件。

ZigBee协议栈模型图
ZigBee标准确定了三种设备:ZigBee协调器、ZigBee路由器和ZigBee终端设备。每个网络都必须包括一台ZigBee协调器。协调器的主要功能是为建立和启动网络这一过程设置参数,其中包括选择一个射频信道、唯一的网络标识符以及一系列操作参数。ZigBee路由器作为远程设备之间的中继器来进行通信,能够用来拓展网络的范围。ZigBee终端设备不参与路由选择。
ZigBee所制定的网络层主要负责网络拓扑得搭建和维护,以及设备寻址、路由等,属于通用的网络层功能范畴,应用层负责业务数据流的汇聚、设备发现、服务发现、安全与鉴权等。

  1. 程序下载
    首先给目标节点插上CC Debugger,然后打开TI公司的Flash Programmer程序,如下图所示:

    Flash Programmer打开界面如下图所示;

    点击Flash image的浏览图标,分别选择我们光盘提供的SerialAppCoordinator.hex、SerialApp-route.hex、SerialAppEndDevice.hex文件,Actions选择Erase,program and verify选项,然后点击Perform actions,烧写过程如下所示:

    界面提示Erase OK表明烧写Boot.hex成功。
  2. 程序代码分析
    本实验对应的程序代码见:ZStack-CC2530-2.5.1a\Projects\zstack\Samples\SendTest H&T
    用IAR 8.10软件打开后显示界面如下图:

其中temp_humid.c temp_humid.h为温湿度传感器的驱动文件。
SendTest.c中为温湿度采集程序:
当终端节点加入到网络时,启动温度采集事件

ENSOR_TEMPERATURE_EVT:case ZDO_STATE_CHANGE:SendTest_NwkState = (devStates_t)(MSGpkt->hdr.status);if (SendTest_NwkState == DEV_END_DEVICE) 只在设备为终端节点时,才发送数据{// Start sending "the" message in a regular interval.osal_set_event(SendTest_TaskID, SENSOR_TEMPERATURE_EVT);//启动温度采集}break;

下次系统轮询时,将调用ENSOR_TEMPERATURE_EVT事件,并处理该事件:

    if ( events & SENSOR_TEMPERATURE_EVT ){Temperature_Measure();osal_start_timerEx( SendTest_TaskID, SENSOR_HUMIDITY_EVT, MEASURE_PERIOD );//启动湿度采集return ( events ^ SENSOR_TEMPERATURE_EVT );}

处理该事件中,首先调用Temperature_Measure();采集并发送数据;另外又启动了SENSOR_HUMIDITY_EVT事件进行湿度采集;
下次系统轮询时,将调用SENSOR_HUMIDITY_EVT事件,并处理该事件

  if ( events & SENSOR_HUMIDITY_EVT ){Humidity_Measure();osal_start_timerEx( SendTest_TaskID, SENSOR_TEMPERATURE_EVT, MEASURE_PERIOD );//启动温度采集return ( events ^ SENSOR_HUMIDITY_EVT );}

处理该事件中,首先调用Humidity_Measure ();采集并发送数据;另外又启动了SENSOR_TEMPERATURE_EVT事件进行温度采集;

从上面的表述中可以得知,系统对温湿度分别采样,调用,其中采样时间为MEASURE_PERIOD,3秒钟一次。

在IAR环境中,workspace里面有三种类型的设备设置,请参考:

如图显示的EndDevice设备,这事编译的程序为enddevice节点使用,在workspace里面还可以选择Coordinator,该程序为协调器程序

还可以选择Router,该程序为路由节点程序

一般来说,路由节点只是转发数据,不涉及用户操作。在项目中,可以不对该部分程序进行更改。

协调器在收到终端发送过来的数据时,进行温湿度数据转换,转换程序如下:

static void SendTest_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{switch ( pkt->clusterId ){case SENDTEST_CLUSTERID:// "the" message
#if defined( LCD_SUPPORTED )HalLcdWriteScreen( (char*)pkt->cmd.Data, "rcvd" );
#elif defined( WIN32 )WPRINTSTR( pkt->cmd.Data );
#endifif(pkt->cmd.Data[0]==0x01) {result=(float)(((pkt->cmd.Data[1]<<8)+(pkt->cmd.Data[2]))*0.01-39.67);sprintf(temperature, (char *)"%fC", result);}else if(pkt->cmd.Data[0]==0x02){result=-0.00000028*((pkt->cmd.Data[1]<<8)+(pkt->cmd.Data[2]))*((pkt->cmd.Data[1]<<8)+(pkt->cmd.Data[2]))+0.0405*((pkt->cmd.Data[1]<<8)+(pkt->cmd.Data[2]))-4.0;sprintf(temperature, (char *)"%fH", result);}HalUARTWrite( HAL_UART_PORT_0,(unsigned char*)temperature, (byte)osal_strlen( temperature ) + 1);//将接收到的数打印到串口上break;}
}
  1. 实验现象
    烧完程序的节点上电顺序:先给router节点上电,然后给coordinator节点上电(此时可以看到coordinator节点和router节点黄灯亮),最后给enddevice节点上电(现象是:黄灯和绿灯亮),串口线连接coordinator节点,能从串口观察数据:

    显示当前温度为29摄氏度,湿度为60左右。
    从sht10读到的温湿度传感器数据位1A DE和05 EE类别,程序中做了简单转换,实际上,由于数据转换的原因,小数点2位以后的数据没有实际意义,具体参数请参考SHT10的数据手册。

本实验中SHT10连接的是2530的P0.4和P0.5上。

温度公式:
t是上报的温度数据值,两个字节,高位在前,低位在后
T=-39.67+0.01t,把1A DE带入该公式可得到当前温度值。
湿度公式:
h是上报的湿度数据值,两个字节,高位在前,低位在后
H=-0.00000028
hh+0.0405h-4.0,把05 EE带入该公式可得到当前湿度值。

zigbee组网实验:温湿度采集实验SHT10相关推荐

  1. 基于I2C下的温湿度采集实验

    目录 一.I2C相关了解及介绍 1.基本介绍 2.I2C 物理层 3.I2C 协议层 二.什么是"软件I2C"和"硬件I2C" 1.软件I2C 2.硬件I2C ...

  2. 06_基于树莓派wiringPi的温湿度采集实验

    目的: 通过温湿度的代码编写,熟悉树莓派中的单总线操作流程. 目录 1.基础知识 1.1.DHT11数字温湿度传感器简介 1.2.DHT11单总线通信协议定义 2.功能实现 2.1.原理图 2.2.代 ...

  3. STM32基于I2C温湿度采集

    目录 一.题目要求 二.关于I2C 1.什么IIC 2.IIC的主要特点 3.IIC协议数据传输过程 三.关于DHT20 1.概述 2.引脚参数 四.DHT20温湿度采集 1.程序代码分析 2.实验效 ...

  4. 基于I2C的温度采集实验及实验心得

    文章目录 前言:关于I2C总线协议 1.硬件I2C 2.软件I2C 实验:基于12C的温湿度采集 1.实验准备 2. 程序代码 3.实验结果 总结 前言:关于I2C总线协议 在上次的实验里,我们大致了 ...

  5. 【正点原子MP157连载】第二十七章 DHT11数字温湿度传感器实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. 管道流量采集实验指导书

    管道流量采集实验指导书 项目较大,是我毕业设计的成果之一,完成整个项目需要的时间大概为8小时(1天,非常熟悉MFC编程),24小时(3天,熟悉MFC编程),48小时(6天,较熟悉),2周(只懂得语法) ...

  7. EFR32MG21 zigbee 3.0 OTA 升级实验

    EFR32MG21 zigbee 3.0 OTA 升级实验 参考文档:AN728 https://www.sekorm.com/doc/1607600.html 芯片:EFR32MG21A010F76 ...

  8. UP-MOBNET-Ⅱ型实验箱摄像机视频采集实验

    UP-MOBNET-Ⅱ型实验箱摄像机视频采集实验 文章目录 实验箱型号 实验内容和材料准备 实验环境准备 试验箱烧写linux系统 redHat配置交叉编译环境 V4l2视频采集原理 编写摄像机驱动程 ...

  9. 计算机网络交换机组网及虚拟局域网实验报告,计算机网络实验报告材料(虚拟局域网).doc...

    实用文档 计算机网络技术实验报告 学生学号: 学生姓名: 专业年级: 开课学期: 指导教师: 实验名称 虚拟局域网 二.实验目的 掌握在一台交换机上配置VLAN的方法 2. 掌握跨交换机配置VLAN的 ...

最新文章

  1. nsis帮助文档_使用NSIS打包程序
  2. LightGBM和XGBoost使用scale_pos_weight处理不平衡数据源码分析
  3. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
  4. AspectJ切入点语法详解
  5. linux xp共享文件夹,windows-xp – 从Linux访问Windows共享文件夹?
  6. App设计灵感之十二组精美的旅行App设计案例
  7. asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)...
  8. wp自定义帖子没标签_ofollow标签的作用有重大变化
  9. 使用Hibernate
  10. CentOS下双网卡绑定-bond0
  11. 汽车行业的DMS系统 IT不变应万变
  12. Hybrid App
  13. 计算机说课稿模板小学数学,小学数学优质说课稿模板
  14. FTRL之FM和LR实战(使用稀疏数据进行实战)
  15. 旋转立方体相册HTML+CSS
  16. MPEG-TS封装格式数据
  17. Mose机器翻译Ubuntu18配置和遇到的问题
  18. All One Needs to Know about Metaverse
  19. Clickhouse 基础知识 - 函数
  20. Neos Flow ActionController 返回JSON

热门文章

  1. 【codevs 3287】货车运输
  2. Bugku—come_game
  3. i5 10500与i5 10400F的区别?
  4. MySQL数据库——四大约束(Constraint)
  5. Games101笔记——Lecture6:Rassterization 2(Antialiasing and Z-Buffering)
  6. 20230508在Ubuntu22.04下使用python3批量转换DOCX文档为TXT
  7. Linux环境中安装c编译器并测试
  8. 迁移学习xlm-roberta-base模型应用于分类任务
  9. 51单片机(c语言基础)
  10. 解决java.lang.NoClassDefFoundError错误的一种方案