商朝歌,黄义定,海 涛
(南阳师范学院 机电工程学院,河南 南阳 473061)
由于物联网技术的快速发展,传感器采集的数据已经可以实时地进行无线传输.由于其精确、迅速、可靠性高、成本低、研发周期短等优点成为近几年的热点行业.本文采用ESP8266-ModeMCU、DHT11温湿度传感器、MQ-2烟雾气敏传感器、蜂鸣器和LED灯等元器件,设计出一个报警器,报警器可以采集温度、湿度和可燃性气体密度的参数,实时检测周围环境[1].采用了无线信息传输技术,同时具有结构简单,成本低等优点,因此可以广泛应用于智能仓储系统、智能工厂系统,作为物联网中的基本模块,对于改进工业生产,提高生产智能化具有重要意义.
系统以ESP8266-ModeMCU为核心,将温湿度和可燃性气体密度通过ESP8266-ModeMCU上的WiFi模块传输到巴法云平台,通过巴法云平台或者微信小程序可以实时监控温湿度和可燃性气体密度数值[2],并且可以在巴法云平台或者微信小程序上对环境现场实现远程智能控制,如LED灯的开关状态或其他控制接口功能等,如图1所示.各部分主要功能是:
图1 功能设计框图
1.1 DHT11温湿度传感器[3]和MQ-2烟雾气敏传感器[4]实时检测周围的温度、湿度和可燃性气体密度,并将数据通过ESP8266-ModeMCU的WiFi模块实时地传送到巴法云平台,并且固定时间每3 s检测更新一次.
1.2 通过程序设计温度、湿度和可燃性气体密度的阈值,当温度、湿度或者可燃性气体密度其中一个或者多个超出设定值时,蜂鸣器发出声音,用来提醒用户,也可通过控制加湿器[5]风扇和排气扇等设备,从而使温度、湿度和可燃性气体密度回到设定值的阈值,从而使蜂鸣器停止发声.
1.3 通过云平台或者微信小程序也可实现远程控制,本文用LED灯的熄灭来模拟此功能.
本文硬件电路包括三部分:电源模块,ESP8266-ModeMCU模块,传感器模块.电路原理图如图2.
图2 电路原理图
2.1 无线报警器电源模块设计
电源模块采用直流电池供电,供电电压为4.5 V,采用DC/DC电源模块为系统提供3 V电压,其电路原理如图3所示.
图3 电源模块原理图
2.2 ESP8266-ModeMCU模块设计
ESP8266-ModeMCU是一种集成了WiFi功能的开发板,能直接和WiFi相连.它可以用C语言进行编写代码,还可以直接进行烧录,而且拥有许多的库函数可以直接进行调用.本设计便是采用的这种开发环境.模块以ESP8266-ModeMCU芯片为核心,包括时钟电路、复位电路、GPIO接口电路等.
2.3 传感器模块设计
该模块包括DHT11温湿度传感器、MQ-2烟雾气敏传感器、蜂鸣器和LED灯电路设计,其电路原理如图4所示.
图4 DHT11温湿度传感器原理图
3.1 ESP8266-ModeMCU接入WiFi网络
ESP8266-ModeMCU芯片自带WiFi接入功能模块,首先加载ESP8266WiFi,设置添加WiFi的名称和密码,核心程序实现如下:
#include
const char* ssid = "TP-LINK_310C";//修改为自己的WiFi名字
const char* password = "l1234567";//修改为自己的WiFi密码
3.2 ESP8266-ModeMCU接入云平台
对于ESP8266-ModeMCU作为客户端,接入MQTT服务器,如图4所示.
图5 MQTT客户端—服务器
接入巴法云平台,部分程序如下:
const char* mqtt_server = "bemfa.com";//默认MQTT服务器地址
const int mqtt_server_port = 9501;//默认MQTT服务器端口
#define ID_MQTT "16a0b18fd9544e6338e5455304a9ce65"//MQTT客户端ID,修改为自己的开发者密钥
const char* topic = "light";//Led主题名字,在巴法云控制台自行创建,名称随意
const char * dhttopic = "sht11";//温湿度主题名字,在巴法云MQTT控制台创建
在巴法云官网,登录之后,找到控制台,可以找到自己的私钥[6],如图6所示.
图6 获取私钥
在MQTT设备云创建主题,如图7所示.
图7 创建主题
3.3 DHT11温湿度传感器的程序设计
DHT11温湿度传感器的DATA端口接ESP8266的D4端口,VCC和GND端口分别接ESP8266的3.3V和GND端口.
#include
dht11 DHT11;//定义传感器类型
#define DHT11PIN 2//定义传感器连接引脚.此处的PIN2在ModeMcu8266开发板上对应的引脚是D4
double Fahrenheit(double celsius)//下面几段程序是把摄氏温度转换为华氏温度和开氏温度[7]
{
return 1.8 * celsius + 32; }
double Kelvin(double celsius)
{
return celsius + 273.15; }
void setup()
{
Serial.begin(115200);//设置波特率为115200
Serial.println(" ");
Serial.println("esp8266读取DHT11传感器数值 ");
Serial.println("串口会分别打印当前湿度(%),当前摄氏温度,当前华氏温度和当前开氏温度 ");
Serial.print("DHT11库文件版本: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
}
void loop()
{
Serial.println(" ");
DHT11.read(DHT11PIN);//更新传感器所有信息
Serial.print("当前湿度(%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("当前温度(℃): ");
Serial.println((float)DHT11.temperature, 2);
Serial.print("当前温度(℉): ");
Serial.println(Fahrenheit(DHT11.temperature), 2);
Serial.print("当前温度(K): ");
Serial.println(Kelvin(DHT11.temperature), 2);
delay(2000);//每两秒打印一次
}
4.1 无线报警器的功能测试
本系统是在Arduino IDE环境下开发的Arduino IDE软件支持C语言的编程,运用方便.在完成程序编写和烧录之后,还需对其各部分功能进行验证,MQ-2烟雾气敏传感器通电后,需要预热20 s左右测量的数据才稳定.查看目前的温度和湿度,并且与自己设定的报警值相比较,若当前温度没有超过阈值,可以去干预DHT11传感器,让温度和湿度超过报警值,测试蜂鸣器是否可以报警.可燃性气体浓度可以人为干预或者修改程序,超过阈值时,蜂鸣器是否会触发报警.查看巴法云平台是否接收到数据,从云平台是否可以控制LED灯.如图8所示.
图8 巴法云平台接收数据
4.2 微信小程序的测试
运行微信小程序,查看是否接收到数据,是否可以控制LED灯,如图9所示.
图9 微信小程序界面
本设计是以ESP8266-ModeMCU为控制器件,将温湿度和可燃性气体浓度数值发送到云平台,实时监控环境数值,报警系统采用蜂鸣器,LED作为控制模拟.本系统设计简单,运用的硬件少,性能可靠稳定,成本低,可广泛应用于智能仓储、智能工厂等应用场景中,具有较高的应用价值.