APP下载

基于ESP8266的物联网远程监控系统

2021-06-17薛迪杰

电子制作 2021年11期
关键词:云端服务器单片机

薛迪杰

(江西理工大学能源与机械工程学院,江西南昌,330013)

0 引言

近年来,一种全新的网络—物联网(Internet of Things)随着网络电子技术的飞速发展,出现在公众面前。作为互联网领域的另一个拓展,物联网很快被人们接受,并融入了人们生活、生产的方方面面[1]。在过去互联网时代,现实生活中的很多信息在网络上很难被感知和传输,然而物联网的到来却改变了这一现状,并将用户端延伸并扩展到了任何物体与物体之间的信息互换和交流,于是互联网将世界万物组成了一个巨大网络。本文介绍了一种基于ESP8266的物联网远程控制系统,利用ESP8266模块将传感器设备、控制设备和检测设备等接入了互联网。本远程控制系统利用STM32F103C8T6单片机作为主控制器,利用STM32F103C8T6单片机高速的数据处理能力和丰富的片上资源,可以完美驱动OLED屏幕,兼容ESP8266WIFI模块和各种传感器,并可解决传输速度问题[2]。本设计完成后,用户通过手机中安装的APP可以随时随地的进行实时监控,如:监测固定区域中PM2.5浓度,家中门窗是否关闭,家中天然气浓度等,并且可以对相关设备进行远程控制;本设计系统只要在有互联网的地方均可工作,无论距离多远,甚至在地球的另一端也能轻松的进行远程监测和控制。

1 系统工作过程

系统要实现网络远程控制,首先必须在互联网上建立一个服务器。本系统直接选用互联网上已经建好的贝壳物联云端服务器,主要优点是方便快捷,无需自己再重新创建私人的服务器。其次对手机端进行配置,在手机上创建APP,并根据贝壳物联云端服务器对手机中APP进行配置,使得手机与服务器建立起TCP连接。然后对终端物联网ESP8266模块进行配置,并使其也与云端服务器建立起TCP长连接[3]。

手机端和物联网终端分别与云端服务器建立好连接后,接下来进行数据发收测试。在手机端使用JSON数据的网络通信发送数据到服务器,服务器在接收到数据后,会把接收到的数据再转发给终端物联网控制和监测模块。终端接收数据如果和发送数据一致,则通信正常。

然后在物联网控制和监测模块终端利用STM32F103 C8T6单片机控制ESP8266模块发送数据到云端服务器,云端服务器在接收到数据后,将接收到的数据转发至手机APP端,在手机终端APP上显示。如果发送数据和接收数据一致,则通信正常。

系统利用云端服务器作为互联网中间媒介,实现手机APP和物联网终端互联互通,从而完成数据传输,远程控制和监测。

2 系统结构

本系统通过ESP8266 WIFI模块与互联网连接,每个模块均有独立的设备ID及独立的数据传输接口,数据传输接口数量可以在贝壳物联官网自行添加或删除。本系统在开机之后输入需要连接的WIFI账号及密码,连接上网络之后,各个设备开始工作,各个分设备通过网络将需要采集的数据传输到主机设备上,用户也可通过手机APP控制相应的设备,云端下传到设备的数据通过CJson解码,把需要的数据解析出来以用作控制相应的设备。系统在无人干预状态下根据环境中天然气含量判断是否天然气泄漏,如果检测出天然气泄漏,设备可自动关闭天然气开关并向用户发送天然气泄漏信息。也可自主检测环境温湿度,当温度过高时设备自主打开空调开关,当湿度过高或过低时,设备自主打开除湿机或雾化器,超过设定警报值主机设备通过语音自主播报。

本系统以贝壳物联为中心,可根据官网上的贝壳物联平台通信协议连接云平台。贝壳物联云平台提供的通信协议有TCP、UDP、HTTP、Websocket四种通信协议,本系统采用的是TCP协议。用户可通过浏览器登陆官网、下载官方APP、建立微信通信协议及自行开发APP四种方式与云端进行连接,并传递数据。物联网终端硬件设备主要以意法半导体的STM32F1系列芯片为主,通过ESP8266网络模块及其他外围电路与云端进行连接,把主控单片机通过传感器采集处理过的数据通过网络模块发向云端,通信数据格式为Json字符串,设备通过解码获得Json字符串中相应的键值。该系统以接口层用户、中间层服务器及控制层设备组成一套基于ESP8266为基础的远程控制监测系统。总系统框图如图1所示。

图1 总系统原理框图

3 系统硬件部分

本系统硬件部分由STM32F103C8T6单片机构成主控,完成主要的传感器数据处理,控制信号的产生以及控制语音模块完成语音提示,并通过串口向ESP8266WIFI模块发送AT指令控制其连接AP,实现设备与云端之间的通信。云端服务器与手机移动端APP的连接,把数据和相应设备上的传感器感知的数据在移动端显示出来。如:当家里没人时可通过湿度传感器检测绿植是否需要浇水,需要浇水时可通过APP的控制小水泵对绿植进行浇水,类似的也可控制室内温度,控制门窗等。系统硬件框图如图2所示。

图2 系统硬件框图

■3.1 STM32F103C8T6主控芯片

作为各个控制和检测外设模块的核心,主控芯片用来处理传感器的数据和发送网络模块的控制信号。主控芯片具备高性能,低功耗的特点,其内部Cortex™-M3 32位的RISC内核,工作频率最高可达到72MHz,使用时可用内部分频器生成自己需要的相应频率,内置高达64K字节的闪存和20K字节的SRAM,无需外扩存储器,芯片具有充裕的I/O接口,方便用户连接外设,并且还支持连接APB总线。STM32处理器具有睡眠模式、停机模式、待机模式三种低功耗模式,单片机在低功耗状态下唤醒时间可以达到微秒级[4]。ST意法半导体公司为单片机提供了丰富的库函数,用户在使用时,可以方便灵活的调用相关库函数和片上资源,大大提高了开发效率,缩短了开发周期。本设计中采用AT指令对ESP8266WIFI模块进行控制联网时,主要用到主控制芯片中的UART串口通信,主控制芯片UART串口多达3个,完全满足每个设备的需求(系统所需最多3个串口,OLED显示屏幕使用内置SPI资源)。系统主控STM32芯片使用方便、内部资源丰富、性价比高,非常适合作为本设计的主控芯片。

■3.2 ESP8266WIFI模块

该模块的处理器为乐鑫公司研发的专用于物联网的一款芯片。用户可以使用该WIFI模块为现有的设备添加联网功能,也可以够构建独立的网络控制器[5]。该模块供电范围为3.0V~3.6V,供电电流需大于500mA。在给该模块供电时,电源端需添加滤波电容,保证供电电压的稳定性,供电接口处连接到3.3V的稳压电路上,通信时必须保证电压稳定,不然容易造成设备与云端出现断连的情况。在检测温度的设备上,系统将温度传感器与网络模块分开布置,并且给网络模块安装散热器或开启低功耗模式,避免该模块运行时产生大量的热量。如果不采取相应处理措施,会造成传感器测量误差加大,导致检测数据不准确。ESP8266模块电路原理图如图3所示。

图3 ESP8266模块电路原理图

■3.3 OLED显示屏模块

本系统选用0.96寸的OLED显示屏作为显示部件。该模块具有无需背光、视角范围广、对比度高、低能耗、刷新反应速度快、全彩化高等优点。此模块具有SPI通信接口,可以搭配主控单片机的SPI接口,从而节省主控制芯片I/O口;此外低耗电及高对比度不仅可以节能,更增加了可视化界面美观性。结合主控制器的片上资源和该显示屏的优点,选用该OLED作为显示模块。

■3.4 编码器电路

编码器电路作为输入电路,用来修改所需要登陆的WIFI账号和密码,由于WIFI账号和密码多为英文字母和数字组成,所以事先在控制芯片中保存了26英文字母(可选择大小写)和0-9的数字,通过编码器作为外部输入设备来修改物联网终端需要连接的无线网络。因为输入的信息较多,而STM32F103C8T6控制芯片的I/O有限,为了不占用主控单片机过多的I/0口,因此放弃使用矩阵键盘的输入方式,改用编码器选择显示屏的数据输入方式,这样能节省键盘扫描方式占用的I/O口,为外接其他设备保留更多的I/O接口。

■3.5 语音播报模块

本设计为了体现人性化设计,还加入了语音播报模块,系统采用国外开源DFPlayer Mini MP3 Player mini音乐播放器模块。每个外围设备预先合成一种播报语音储存在TF卡中,根据主控单片机芯片的计算与处理选择相应需要播报的音频,控制芯片通过简单的UART接收指令即可完成播放指定的播报音频,音量大小可通过外围设计功率放大器和调节器件,完成音量大小的调节。

■3.6 传感器模块

传感器模块部分设计为可拆卸替换模块,不同用户可以根据所需要检测和控制的对象灵活进行更换,电路只要少许改变,源代码稍作修改就可以变换不同的检测传感器模块,从而对不同检测对象进行测量。本系统设计可测量对象包括环境温湿度、空气PM2.5、环境亮暗度、光照强度、甲烷含量、漏水等测量对象。各个模块可以相互替换,这种设计可以大大缩短PCB制版的时间。

■3.7 控制模块

控制模块采用单片机控制继电器的方式构成控制电路,在继电器与I/O口之间添加光耦进行隔离,增加系统的稳定性。继电器的控制端主要由物联网终端主控单片机参照相关指令进行控制,继电器的负载端用来连接相应的用电设备,如空调、加湿器、水泵等。

4 系统软件部分

系统软件部分主要由网络模块联网、OLED显示、编码器读取、语音播报、传感器读取、外围设备控制几个程序模块组成,程序开始后先要对各个模块进行初始化,然后进入监测控制程序,实时监测和控制被测对象,系统监测和控制部分程序流程图如图4所示。

系统程序开始运行后,需要先对ESP8266WiFi模块进行初始化,先对WiFi模块复位重启,然后设置成AP工作模式,并启动多连接,最后设置开启服务器模式。WiFi模块的波特率设置9600,和单片机串口连接,并保持一致。WiFi模块初始化函数如下:

图4 系统监测和控制部分程序流程图

Void WIFI_Init(void)

{

ES = 0;

TI = 1;

printf(“AT+RST ”);

LED();

ms_delay(1000) ;

printf(“AT+CWMODE=3 ”);

LED();

ms_delay(1000) ;

printf(“AT+CIPMUX=1 ”);

LED();

ms_delay(1000) ;

printf(“AT+CIPSERVER=1,8080 ”);

LED();

ms_delay(1000) ;

printf("AT+CIOBAUD=9600 ");

// 设置与单片机一致的波特率

LED();

ms_delay(1000) ;

while(!TI);

TI = 0;

ES = 1;

}

5 系统测试及运行结果

安装调试好系统后,在实验室进行测试。在传感器模块装上温湿度检测传感器,并将继电器负载接上空调和加湿器,分别进行制冷和加湿控制。系统开机运行后,可以实时在手机APP上看到室内温度和湿度。测试手机APP在异地登录控制系统,通过连上互联网的手机可以远程控制空调和加湿器的开启和关闭,完全不受地理位置的限制,实现了远程控制和监测。系统手机APP端运行界面如图5所示。

图5 系统手机APP端运行界面

6 结语

该系统经过多次测试与运行,不断改进以及不断优化程序,目前已经可以稳定运行。系统可显示数据波形图,PC端可以与移动设备端同时在线控制,并且可以在此基础上添加其他传感器。系统在运行中,使用AT指令编程,通过串口通信控制WIFI模块,通信数据经过物联网平台安全加密。本系统外围传感器模块目前已设置有PM2.5检测电路、甲烷检测电路、温湿度检测电路、门窗控制电路。测试表明,整个系统监测数据准确,控制便捷,同时系统电路易于维护,达到预期目标。此外,整套系统成本较低,经济实用,适合推广。本系统还可以进一步加强其功能,将原有的AT配网更改为移动设备配网,开发方式由AT指令开发更改为SDK固件包开发,这样系统可以节省外接单片机的成本且同样能满足系统需求。

猜你喜欢

云端服务器单片机
基于单片机的智能平衡小车设计
四海心连·云端汇聚
在云端永生
2018年全球服务器市场将保持温和增长
在云端
《云端三公尺》:下一个天亮,谁在等你
C8051F020与80C51单片机的异同点
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵
单片机I/O口模拟串行通讯的C51实现方法