找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9701|回复: 12
收起左侧

单片机DHT11无线温湿度多点采集系统实战项目所有资料下载

  [复制链接]
ID:218519 发表于 2017-7-22 18:34 | 显示全部楼层 |阅读模式
无线温湿度多点采集系统具有实时在线监测、多点采集、集中显示、系统布线简单等特点,特别适用于复杂地形条件、高腐蚀性、建筑群、爆炸等场合,或者被采集对象是运动、旋转等情况。
本项目充分利用无线数据传输的优势,将温湿度采集和无线通讯相结合,具有一定的使用价值,同时,也很容易在此系统上扩展更多功能。
内包含详细资料和应用软件!工程都已编译无误!连接图等重要信息都有
0.png
0.png
项目实战五
无线温湿度多点采集系统
艾克姆科技
STC单片机项目实战

修订历史记录
RevisionRecords

日期

Date
版本

Version
编制

Written By
审核

Checked By
批准

Approved By
说明

Explanation

2017.9.20

A

康工

飞宇


初建













目录
1. 系统概述........................................................................ 4
2. 开发需求........................................................................ 4
2.1. 软件需求..................................................................... 4
2.2. 硬件需求..................................................................... 4
3. 系统组成结构................................................................ 4
3.1. 设备描述.................................................................... 5
3.2. 系统容量.................................................................... 5
3.3. 系统主要功能............................................................ 6
4. 通讯协议...................................................................... 6
4.1. 设备编码................................................................... 6
4.2. 报文格式................................................................... 6
5. 实验步骤...................................................................... 7
5.1. 程序下载................................................................... 7
5.1.1. 接收基站程序下载..................................................7
5.1.2. 检测节点程序下载..................................................7
5.2. 设备连接................................................................... 8
5.2.1. 接收基站和计算机之间的连接.............................. 8
5.2.2. DHT11 温湿度传感器连接到检测节点................... 8
6. 软件操作..................................................................... 9
6.1. 启动系统.................................................................. 9
6.2. 观察检测节点的温湿度值和温湿度曲线................. 9
7. 技术支持.................................................................... 10


1.  系统概述

无线温湿度多点采集系统具有实时在线监测、多点采集、集中显示、系统布线简单等特 点,特别适用于复杂地形条件、高腐蚀性、建筑群、爆炸等场合,或者被采集对象是运动、 旋转等情况。
本项目充分利用无线数据传输的优势,将温湿度采集和无线通讯相结合,具有一定的使 用价值,同时,也很容易在此系统上扩展更多功能。

               系统以 2.4GHz 为通讯网络,可选择使用近距离(约 200 米)或远距离(约 1500 米)无线模 块,配置灵活。

               系统采用计算机作为显示设备,实时显示各个节点采集的信息,方便统一管理。

               检测节点和基站均采用 IAP15W4K58S4(或 IAP15W4K61S4 或 STC15W4K56S4)单片 机为控制核心。节点外接温湿度传感器 DHT11,每 300 毫秒采集一次温湿度值,并通 过无线的方式发送给基站。基站接收到节点的信息后,通过串口将此信息发送给计算机, 由计算机完成温湿度值的显示。



2.              开发需求

2.1. 软件需求

               Windows XP 或 Windows 7 32/64 或 WIN8 系统。
               keil uv4 for 51。
               stc-isp-15xx-v6.85P。

2.2. 硬件需求

表一:硬件需求

设备
数量
计算机
1 台
进取者 STC 开发板
5 块(最少 2 块)
DHT11 温湿度传感器
4 个(最少 1 块)
NRF24L01 无线模块
最少 2 个
UBS MINI 数据线
最少 1 根
连接线材
若干


3.              系统组成结构

无线温湿度多点采集系统由无线检测节点(搭配 DHT11 温湿度传感器)、接收基站、温 度监测工作站(计算机显示)三部分组成。系统的结构示意图如下:

1.009.jpg


图 1:无线温湿度多点采集系统结构图


3.1. 设备描述

               温湿度监测工作站:由计算机和显示器组成,用于集中显示显示采集现场的温湿度值, 便于统一观察、管理。

              接收基站:接收各个检测节点无线发送的温湿度数据,整理后上传给温度监测工作站。              
              检测节点:读取 DHT11 温湿度传感器传感器数据,处理后通过无线的方式发送给接收 基站。
              温湿度传感器:采用 DHT11 温湿度传感器,用于采集现场温湿度数据。


3.2. 系统容量

系统基于无线通讯,采用多点对点的星型网络通讯,单个接收基站可最大管理 255 个检 测节点(考虑到无线传输距离、覆盖范围和通讯效率的因素,单个接收基站不建议配置太多 的检测节点)。本系统为演示方便,单个接收基站下面配置了 4 个检测节点,定义设备如下:

               温湿度监测工作站:一台计算机和一台显示器。
           接收基站:1 台。
               检测节点:4 台,每个节点外接一个 DHT11 温湿度传感器。


3.3. 系统主要功能

               显示功能:在计算机终端和图形设备上以文字、图形等形式显示各个检测节点采集的温 湿度值。

               数据通讯功能:温湿度监测工作站和接收基站之间通过 UART 进行数据传输。

               温湿度超标预警功能:当检测节点检测到温湿度值超标预警值,立即上报信息,温湿度 监测工作站接收到此信息后进行报警提示。注:该功能暂未实现。

               故障诊断功能:在工作站的软件界面上能实时反映检测节点的工作状态,自动诊断其是 否在线并能进行报警提示。



4.              通讯协议

4.1. 设备编码
网络中的设备需要有一个标识自身身份的地址(编码)才能相互之间通讯,本系统中, 设备编码如下:

               温湿度监测工作站:地址固定为 E5(16 进制)。在本系统中,温湿度监测工作站指的是 计算机。

               接收基站:地址为 1。
               检测节点:地址为 1~4(10 进制,可以根据自己的需要进行修改,注意,演示软件中可 检测的测控基站地址是:1~4,也就是说,使用本系统进行演示,4 个检测节点的地址 必须设置为 1~4,并且,地址不能重复)。


4.2. 报文格式



目 的 地 址 帧头

(DA)
表二:接收基站和工作站之间铜须的报文格式
源 地 址

数据长度(IL)              流水号(SN)              数据 data              校验(FCS) (SA)


表三:报文解释
内容

长             度 (byte)

备注
帧头
2
标志一个数据帧的开始,固定为 55 AA。
目的地址
1
数据包到达地址。工作站(计算机)地址固定为:E5(16 进制)。
源地址
1
数据包发出设备的地址。
数据长度
1
数据的总字节数。本演示系统中固定为 16 个字节。每个检测节



点 4 个字节,4 个检测节点一共 16 字节
数据
16
4 个检测节点上报的温湿度数值。详见表 4。
校验
1
异或校验。注:该校验位为预留字节,不进行检验是为了调试方便,需要使用此校验的可以自行加上。


表四:数据

检测节点 1数据
检测节点 1数据
检测节点 1数据
检测节点 1数据
4 个字节
4 个字节
4 个字节
4 个字节
字节 1:温度高字节
字节 2:温度低字节字节 3:湿度高字节字节 4:湿度低字节
字节 1:温度高字节
字节 2:温度低字节字节 3:湿度高字节字节 4:湿度低字节
字节 1:温度高字节
字节 2:温度低字节字节 3:湿度高字节字节 4:湿度低字节
字节 1:温度高字节
字节 2:温度低字节字节 3:湿度高字节字节 4:湿度低字节

5.              实验步骤

5.1. 程序下载

5.1.1. 接收基站程序下载

拷贝“…高级项目实战例程 项目实战 5-无线温湿度多点采集系统”目录下的接收基 站工程文件夹“Station”到合适的目录,如 D 盘。

注:为什么要拷贝出来? 原因主要有两点:
               拷贝出来可以随意修改,修改错了,可以再次拷贝而不用重新去网盘下载。
               资料中的工程目录包含中文且目录很深,开发软件时,强烈建议工程文件不要包含中 文目录,且工程路径不要过深。

打开 Keil uVision4,点击“Project”→“Open Project”打开“…StationProject”目录 下的工程“Station.uvproj”。编译工程,下载程序。

5.1.2. 检测节点程序下载

拷贝“…高级项目实战例程 项目实战 5-无线温湿度多点采集系统”目录下的接收基 站工程文件夹“Nod”到合适的目录,如 D 盘。
打开 Keil uVision4,点击“Project”→“Open Project”打开“…NodProject”目录下的 工程“nod.uvproj”。
打开“config.h”文件,配置检测节点地址,如下图所示,注意,在本演示系统中,检 测节点的地址只能配置为 1~4,且不能重复,否则,检测软件无法显示。

1.016.jpg
图 2:检测节点地址设置 地址修改好后,编译程序并将程序下载到检测节点。


5.2. 设备连接

5.2.1. 接收基站和计算机之间的连接

接收基站和计算机之间连接很简单,通过一根 MINI USB 数据线连接,按下电源开关即
可。


5.2.2. DHT11 温湿度传感器连接到检测节点



1.017.jpg

图 3:DHT11 温湿度传感器

表五:DHT11 和基站连接

管脚
信号
和基站连接
1
VCC
5V
2
DO
P3.6
3
NC
NC
4
GND
GND



6.              软件操作

6.1. 启动系统

打开“…高级项目实战例程 项目实战 5-无线温湿度多点采集系统”目录下的“无线 温湿度多点采集系统.exe”,启动软件。软件启动后界面如下:

1.019.jpg


图 6:iM-Net 温湿度监控系统软件界面 打开软件后,选择好串口号,串口波特率设置为 9600,点击启动按钮,启动系统。



6.2. 观察检测节点的温湿度值和温湿度曲线

系统正常工作后,即可在软件界面中观察到各个节点的温湿度值和温湿度曲线,如下图 所示。可以通过显示选项选择显示曲线的节点,通过节点的通讯状态指示灯可以观察到各个 节点的通讯状态。


1.020.jpg



图 7:温湿度曲线




单片机源程序如下:
  1. /****************************************Copyright (c)****************************************************
  2. **                                       
  3. **                                      [艾克姆科技]
  4. **                                        IIKMSIK
  5. **--------------File Info---------------------------------------------------------------------------------
  6. ** File name:                        
  7. ** Last modified Date:         
  8. ** Last Version:                  
  9. ** Descriptions:                                                        
  10. **--------------------------------------------------------------------------------------------------------
  11. ** Created by:                        强光手电
  12. ** Created date:                2016-09-17
  13. ** Version:                            1.0
  14. ** Descriptions:                无线温湿度多点采集系统-基站程序                                
  15. **--------------------------------------------------------------------------------------------------------
  16. ** Modified by:                        
  17. ** Modified date:               
  18. ** Version:                                
  19. ** Descriptions:               
  20. **********************************************************************************************************/
  21. /****-----请阅读PDF文档  项目实战5:无线温湿度多点采集系统进行实验--***********/

  22. #include "config.h"
  23. #include "nRF24L01.h"
  24. #include "uart.h"        
  25. #include "timer.h"        

  26. #define  FRAME_HEAD55    0x55
  27. #define  FRAME_HEADAA    0xAA

  28. uint8_t  RxPayload[32];   //无线接收缓存
  29. //uint8_t  TxPayload[32];   //无线发送缓存
  30. uint8_t  RepFlag;

  31. typedef struct Frame_Report
  32. {
  33.   uint8_t   len;
  34.         uint8_t   buf[FRAME_MAX_LEN];  //上报数据缓存

  35. }Frame_ReportInfo;

  36. Frame_ReportInfo FrameReportInfo = {0};

  37. uint8_t ReceBuf[4][4];//存放4个节点的数据
  38. /**************************************
  39. 功能描述:延时函数
  40. 入口参数:uint x ,该值为1时,延时1ms
  41. 返回值:无
  42. ***************************************/
  43. void delay_ms(uint16_t x)
  44. {  
  45.         uint16_t j,i;   
  46.         for(j=0;j<x;j++)   
  47.         {   
  48.                 for(i=0;i<1100;i++);   
  49.         }  
  50. }
  51. /***************************************************************************
  52. * 描  述 : 数据打包
  53. * 入  参 : 无
  54. * 返回值 : 数据长度
  55. **************************************************************************/
  56. static uint8_t ReportFrame(void)
  57. {
  58.         uint8_t i,j;
  59.         
  60.         FrameReportInfo.len = 16;                //数据长度固定为16
  61.         FrameReportInfo.buf[0] = FRAME_HEAD55;
  62.         FrameReportInfo.buf[1] = FRAME_HEADAA;  //帧头
  63.         FrameReportInfo.buf[2] = HOST_ADDR;     //对于基站来说,主机是基站的目的地址。即0xEA
  64.         FrameReportInfo.buf[3] = LOCAL_ADDR;    //本机地址
  65.         FrameReportInfo.buf[4] = FrameReportInfo.len;

  66.   for(i=0; i<4; i++)
  67.   {
  68.                 for(j=0; j<4; j++)FrameReportInfo.buf[5+i*4+j] = ReceBuf[i][j];
  69.   }        
  70.         return FrameReportInfo.len+6;
  71. }
  72. /***************************************************************************
  73. * 描  述 : 发送数据给主机
  74. * 入  参 : 无
  75. * 返回值 : 无
  76. **************************************************************************/
  77. static void SendDatToHost(uint8_t len)
  78. {
  79.         uint8_t i;

  80.         for(i=0; i<len; i++)
  81.         {
  82.     U1SendData(FrameReportInfo.buf[i]);
  83.   }
  84.         delay_ms(5);
  85. }
  86. /***************************************************************************
  87. * 描  述 : 主函数
  88. * 入  参 : 无
  89. * 返回值 : 无
  90. **************************************************************************/
  91. int main()            //主函数
  92. {
  93.   uint8_t i,j;
  94.   uint16_t loop =0;        
  95. /////////////////////////////////////////////////
  96. //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
  97. //      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
  98. //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
  99. //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
  100. /////////////////////////////////////////////////
  101.         P0M1 = 0;        P0M0 = 0;        //设置P0.0~P0.7为准双向口
  102.         P2M1 = 0;        P2M0 = 0;        //设置P2.0~P2.7为准双向口
  103.         P3M1 = 0;        P3M0 = 0;        //设置P3.0~P3.7为准双向口
  104.         P4M1 = 0;        P4M0 = 0;        //设置P4.0~P4.7为准双向口
  105.         P5M1 = 0;        P5M0 = 0;        //设置P5.0~P5.7为准双向口
  106.         
  107.         Uart1_Init();             //初始化串口1
  108.         Timer0Init();             //初始化定时器0,用于定时发送各个节点的温湿度值到计算机
  109.         Init_NRF24L01();                //初始化
  110.         Set_RxMode();                                            //配置nRF24L01为接收模式
  111.         EA = 1;                   //总中断打开
  112.         
  113.   while(1)
  114.   {               
  115.                 if(NRF24L01_RxPacket(RxPayload) == RX_OK)        //如果接收成功
  116.                 {
  117.       if(RxPayload[0] == 0x5A)               
  118.       {
  119.                                 led=~led;//NRF24L01模块状态指示灯翻转
  120.                                 //注意,这里进行了简化,只支持接收4个节点的数据,而且,4个节点的地址必须是1 2 3 4
  121.                                 if((RxPayload[1]>0) && (RxPayload[1]<5))//判断节点地址是否合法
  122.                                 {
  123.                                         for(i=0;i<4;i++)ReceBuf[RxPayload[1]-1][i] = RxPayload[2+i];        
  124.                                 }
  125.                                 RxPayload[0]  = 0;
  126.       }                        
  127. ……………………

  128. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
项目实战5-无线温湿度多点采集系统.zip (5.5 MB, 下载次数: 193)
回复

使用道具 举报

ID:221117 发表于 2017-7-23 09:45 | 显示全部楼层
看着很高大上啊,下来看看,学习中......
回复

使用道具 举报

ID:134271 发表于 2017-8-5 10:39 | 显示全部楼层
能提供上位机VB/VC源程序吗?
回复

使用道具 举报

ID:384025 发表于 2018-11-6 10:40 | 显示全部楼层
很不错的文档!谢谢楼主!
回复

使用道具 举报

ID:137005 发表于 2018-11-22 09:09 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

ID:357107 发表于 2018-11-22 11:24 | 显示全部楼层
能提供上位机VB/VC源程序吗
回复

使用道具 举报

ID:429003 发表于 2018-11-22 12:33 | 显示全部楼层
楼主精神可嘉,不过这个传感器,湿度测量完全是个鸡肋,偏差有点大!
回复

使用道具 举报

ID:357107 发表于 2018-11-22 15:30 | 显示全部楼层
可以改成sht21   
回复

使用道具 举报

ID:417098 发表于 2019-1-4 13:46 | 显示全部楼层
你好  请问有电路板的图吗? 下载的资料包里只有一张照片,刚入门看不懂
回复

使用道具 举报

ID:612332 发表于 2019-9-16 23:11 | 显示全部楼层
有电路 图吗
回复

使用道具 举报

ID:512907 发表于 2019-9-19 22:08 | 显示全部楼层
好不错的
回复

使用道具 举报

ID:601639 发表于 2020-5-11 17:50 | 显示全部楼层
下下来看看效果。
回复

使用道具 举报

ID:704585 发表于 2020-5-15 15:26 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表