一、开发环境/工具:
环境:keil4
器件:STC89C52RC、Wifi模块(ESP8266)、DHT11温湿度传感器、声音传感器,雨水传感器、LCD1602
二、项目描述:
1、 使用DHT11采集当前环境温度、湿度信息,监测敲门、监测室外天气;
2、 通过无线通信ESP8266模块发送到服务器,服务器连接局域网;
3、 手机可以通过访问局域网来访问家中的数据信息;
三、硬件模块描述:
图1 原理图
绘制系统板以最小系统板为原型,内外机功能实现不同,雨水传感器需要外接,所以绘制了最小系统板外界扩展传感器,外机由于天气变化无法预见,不装配LCD屏幕,以免损坏;
图2 PCB图
四、具体功能及实现:
用户可随时在局域网中获取室内室外的温度、湿度等信息,有人敲门时、室外下雨时会实时收到提醒。
功能实现:
内机主函数:
外机主函数:
ESP8266模块初始化函数:
将一系列的AT指令按照芯片手册要求通过串口发送到ESP8266模块后开启透传模式;
DHT11模块原理:
DHT11模块函数:
获得的温度湿度存放在全局数组RHS和TEM中;
五、功能展示:
硬件连接:
手机端联网后,打开Netassist软件,开启TCP server模式,设置端口号8080,端口号可以自行设置,最好大于两千,选择GBK编码方便中文显示;
Client端上电连接后,server端会收到操作提示信息;
开机上电后LCD显示启动画面和欢迎界面,此时后台给WiFi模块ESP8266发送AT指令,连接到路由器,连接到服务器并开启透传模式,透传模式下,服务器与WiFi模块的通信可以直接通过串口传输;
如图所示是,有LCD显示的为内机,有雨水传感器的为外机,启动时后台需要10秒左右的时间初始化各个模块,并开启WiFi模块的透传模式。
初始化接收后,内机lcd显示室内温湿度,此时初始化结束,系统稳定运行。
配置相应的外部中断检测声音传感器的敲门动作,主函数循环检测雨水传感器检测是否下雨,检测到之后均通过串口发送相应的信息给ESP8266,然后通过无线模块发送给单片机;
DHT11传感器通过IO口传输数据到单片机,当服务器端发送对应命令的时候,主机通过已经开启透传模式的ESP8266接收到数据,通过串口传输给主机,主机经过判断命令返回相应的:室内温度,室内湿度,室外温度,室外湿度给服务器。