模块板卡:基于ESP8266数据传输器+DHT11加速度传感器的联网数据采集器解决方案
原标题:联网数据采集器
应用领域:测试设备
方案类型:模块板卡
主要芯片:Freescale;NXP;Qualcomm;TI;其他;
方案概述
1.产品功能描述:
传感器:DHT11, 加速度传感器,实现温湿度和加速度数据采集功能;
数据传输器:ESP8266实现数据传输功能;
数据查看:Android和iOS数据查看,设定阈值,报警处理
2.产品应用范围
此方案架构稳定,功能全面,适用于智能家居,工业物联网,远程数据采集器等行业应用
3.产品特点优势总结
3.1 性能稳定,已经广泛应用在上述各个行业中,其中ESP芯片为工业级芯片,温度范围-40摄氏度~85摄氏度;
3.2 性价比高:整个产品BOM成本低,性能稳定,性价比高;
3.3 功能丰富:支持离线数据记录,心跳包,数据重连,超阈值报警等多种功能;
【ESP8266】
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个外围元器件
超宽工作温度范围:-40°C 至 +125°C
ESP8285 - ESP8266 内封 8 Mbit Flash
ESP8266
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个外围元器件
超宽工作温度范围:-40°C 至 +125°C
ESP8285 - ESP8266 内封 8 Mbit Flash
32 位 Tensilica 处理器
ESP8266EX 内置超低功耗 Tensilica L106 32 位 RISC 处理器,CPU 时钟速度最高可达 160 MHz,支持实时操作系统 (RTOS) 和 Wi-Fi 协议栈,可将高达 80% 的处理能力留给应用编程和开发。
低功耗
ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了超低功耗。ESP8266EX 具有的省电模式适用于各种低功耗应用场景。
高度集成
ESP8266EX 集成了 32 位 Tensilica 处理器、标准数字外设接口、天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块等,仅需很少的外围电路,可将所占 PCB 空间降到最低。
性能稳定
ESP8266EX 的工作温度范围大,且能够保持稳定的性能,能适应各种操作环境。
模组乐鑫的模组产品集成了自主研发的系统级芯片,因此具备强大的 Wi-Fi 和蓝牙功能,以及出色的射频性能。
双核 Wi-Fi & BT/BLE 模组
特性
两个可以单独控制的 CPU 内核,时钟频率可调,范围从 80 MHz 到 240 MHz
+19.5 dBm 天线端输出功率,确保良好的覆盖范围
传统蓝牙支持 L2CAP,SDP,GAP,SMP,AVDTP,AVCTP,A2DP (SNK) 和 AVRCP (CT) 协议
低功耗蓝牙 (BLE) 支持 L2CAP, GAP, GATT, SMP, 和 GATT 之上的 BluFi, SPP-like 协议等
低功耗蓝牙连接智能手机,发送低功耗信标,方便检测
睡眠电流小于 5 μA,适用于电池供电的可穿戴电子设备
集成 4 MB flash
外设包括电容式触摸传感器,霍尔传感器,低噪声放大器,SD 卡接口,以太网,高速 SPI,UART,I2S 和 I2C
通过 RF 认证以及软件协议认证
【DHT11】
DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。
产品概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。
应用领域
暖通空调 测试及检测设备
汽车 数据记录器
消费品 自动控制
气象站 家电
湿度调节器 医疗
除湿器
特性
相对湿度和温度测量
全部校准,数字输出
卓越的长期稳定性
无需额外部件
超长的信号传输距离
超低能耗
4引脚安装
完全互换
接线图
具体示例
DHT11与单片机的接线图
电气特性
VCC=5V,T = 25℃,除非特殊标注
参数 | 条件 | min | typ | max | 单位 |
供电 | DC | 3 | 5 | 5.5 | V |
供电电流 | 测量 | 0.5 | 2.5 | mA | |
平均 | 0.2 | 1 | mA | ||
待机 | 100 | 150 | uA | ||
采样周期 | 秒 | 1 | 次 |
引脚说明
pin | 名称 | 注释 |
1 | VDD | 供电 3-5.5VDC |
2 | DATA | 串行数据,单总线 |
3 | NC | 空脚,请悬空 |
4 | GND | 接地,电源负极 |
封装信息
详细参数
参数 | 条件 | Min | Typ | Max | 单位 | ||
湿度 | |||||||
分辨率 | 1 | 1 | 1 | %RH | |||
8 | Bit | ||||||
重复性 | ±1 | %RH | |||||
精度 | 25℃ | ±4 | %RH | ||||
0-50℃ | ±5 | %RH | |||||
互换性 | 可完全互换 | ||||||
量程范围 | 0℃ | 30 | 90 | %RH | |||
25℃ | 20 | 90 | %RH | ||||
50℃ | 20 | 80 | %RH | ||||
响应时间 | 1/e(63%)25℃,1m/s 空气 | 6 | 10 | 15 | S | ||
迟滞 | ±1 | %RH | |||||
长期稳定性 | 典型值 | ±1 | %RH/yr | ||||
温度 | |||||||
分辨率 | 1 | 1 | 1 | ℃ | |||
8 | 8 | 8 | Bit | ||||
重复性 | ±1 | ℃ | |||||
精度 | ±1 | ±2 | ℃ | ||||
量程范围 | 0 | 50 | ℃ | ||||
响应时间 | 1/e(63%) | 6 | 30 | S |
应用信息
工作与贮存条件
超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条件后,传感器会缓慢地向校准状态恢复。在非正常工作条件下长时间使用会加速产品的老化过程。
暴露在化学物质中电阻式湿度传感器的感应层会受到化学蒸汽的干扰,化学物质在感应层中的扩散可能导致测量值漂移和灵敏度下降。在一个纯净的环境中,污染物质会缓慢地释放出去。下文所述的恢复处理将加速实现这一过程。高浓度的化学污染会导致传感器感应层的彻底损坏。
恢复处理
置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。在50-60℃和< 10%RH的湿度条件下保持2 小时(烘干);随后在20-30℃和>70%RH的湿度条件下保持 5小时以上。
温度影响
气体的相对湿度,在很大程度上依赖于温度。因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。为降低热传导,DHT11与印刷电路板其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。
光线
长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。
配线注意事项
DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。焊接信息手动焊接,在最高260℃的温度条件下接触时间须少于10秒。
注意事项
(1)避免结露情况下使用。
(2)长期保存条件:温度10-40℃,湿度60%以下
实例程序
//****************************************************************//
// DHT11使用范例
//单片机 : AT89S52 或 STC89C52RC
// 功能 :串口发送温湿度数据 波特率 9600
//硬件连接: P2.0口为通讯口连接DHT11,DHT11的电源和地连接单片机的电源和地,单片机串口加MAX232连接电脑
#include
#include
//
typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */
typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */
typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */
typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */
typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */
typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */
typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
//
#define uchar unsigned char
#define uint unsigned int
#define Data_0_time 4
//--------------- --------------------//
//----------------IO口定义区--------------------//
//-------------- --------------------------//
sbit P2_0 = P2^0 ;//DATA
sbit P2_1 = P2^1 ;
sbit P2_2 = P2^2 ;
sbit P2_3 = P2^3 ;
//--------- ------------------------------------//
//----------------定义区--------------------//
//--------------------- -----------------------//
U8 U8FLAG,k;
U8 U8count,U8temp;
U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8 U8comdata;
U8 outdata[5]; //定义发送的字节数
U8 indata[5];
U8 count, count_r=0;
U8 str[5]={"RS232"};
U16 U16temp1,U16temp2;
SendData(U8 *a)
{
outdata[0] = a[0];
outdata[1] = a[1];
outdata[2] = a[2];
outdata[3] = a[3];
outdata[4] = a[4];
count = 1;
SBUF=outdata[0];
}
void Delay(U16 j)
{ U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delay_10us(void)
{
U8 i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void COM(void)
{
U8 i;
for(i=0;i<8;i++)
{
U8FLAG=2;
//----------------------
P2_1=0 ; //T
P2_1=1 ; //T
//----------------------
while((!P2_0)&&U8FLAG++);
Delay_10us();
Delay_10us();
// Delay_10us();
U8temp=0;
if(P2_0)U8temp=1;
U8FLAG=2;
while((P2_0)&&U8FLAG++);
//----------------------
P2_1=0 ; //T
P2_1=1 ; //T
//----------------------
//超时则跳出for循环
if(U8FLAG==1)break;
//判断数据位是0还是1
// 如果高电平高过预定0高电平值则数据位为 1
U8comdata<<=1;
U8comdata|=U8temp; //0
}//rof
}
//------------ --------------------
//-----湿度读取子程序 ------------
//---------------------- ----------
//----以下变量均为全局变量--------
//----温度高8位== U8T_data_H------
//----温度低8位== U8T_data_L------
//----湿度高8位== U8RH_data_H-----
//----湿度低8位== U8RH_data_L-----
//----校验 8位 == U8checkdata-----
//----调用相关子程序如下----------
//---- Delay();, Delay_10us();COM();
//--------------------- -----------
void RH(void)
{
//主机拉低18ms
P2_0=0;
Delay(180);
P2_0=1;
//总线由上拉电阻拉高 主机延时20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入 判断从机响应信号
P2_0=1;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!P2_0) //T !
{
U8FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!P2_0)&&U8FLAG++);
U8FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((P2_0)&&U8FLAG++);
//数据接收状态
COM();
U8RH_data_H_temp=U8comdata;
COM();
U8RH_data_L_temp=U8comdata;
COM();
U8T_data_H_temp=U8comdata;
COM();
U8T_data_L_temp=U8comdata;
COM();
U8checkdata_temp=U8comdata;
P2_0=1;
//数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}//fi
}//fi
}
//---------------------------------------
//main()功能描述: AT89C51 11.0592MHz 串口发
//送温湿度数据,波特率 9600
//----------------------------------------------
void main()
{
U8 i,j;
//uchar str[6]={"RS232"};
/* 系统初始化 */
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 253; // 设置初值
TL1 = 253;
TR1 = 1; // 开始计时
SCON = 0x50; //工作方式1,波特率9600bps,允许接收
ES = 1;
EA = 1; // 打开所以中断
TI = 0;
RI = 0;
SendData(str) ; //发送到串口
Delay(1); //延时100US(12M晶振)
while(1)
{
//------------------------
//调用温湿度读取子程序
RH();
//串口显示程序
//--------------------------
str[0]=U8RH_data_H;
str[1]=U8RH_data_L;
str[2]=U8T_data_H;
str[3]=U8T_data_L;
str[4]=U8checkdata;
SendData(str) ; //发送到串口
//读取模块数据周期不易小于 2S
Delay(20000);
}//elihw
}// main
void RSINTR() interrupt 4 using 2
{
U8 InPut3;
if(TI==1) //发送中断
{
TI=0;
if(count!=5) //发送完5位数据
{
SBUF= outdata[count];
count++;
}
}
if(RI==1) //接收中断
{
InPut3=SBUF;
indata[count_r]=InPut3;
count_r++;
RI=0;
if (count_r==5)//接收完4位数据
{
//数据接收完毕处理。
count_r=0;
str[0]=indata[0];
str[1]=indata[1];
str[2]=indata[2];
str[3]=indata[3];
str[4]=indata[4];
P0=0;
}
}
}
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。