历史上的今天
今天是:2024年09月29日(星期日)
2021年09月29日 | 基于51单片机的WiFi的温湿度智能开关设计
2021-09-29 来源:eefocus
一.硬件方案
硬件电路主要由单片机电路、温湿度采集电路、液晶显示电路、继电器电路、wifi模块电路组成。本设计采用STC89C51单片机完成整个系统的控制流程。手机端软件设置操作界面登陆账号,wifi模块连入网络,实现系统设计。
主要由51单片机+最小系统+LCD1602液晶显示模块+温湿度采集模块+继电器驱动模块+风扇模块+LED指示灯模块+按键模块+AT24C02存储模块+蜂鸣器报警模块;如图:

二.设计功能
(1)AT24c02芯片掉电存储设置的上下限。
(2)四个按键为设置、加、减、确定,实现了阀值的调节。
(3)LCD1602液晶显示,上面行显示当前的温度和湿度,下面行显示相应的冷、热、干、湿。
(4)配用全数字型温湿度传感器DHT11,温度测量范围0℃–50℃,湿度测量范围20%RH—90%RH,可以满足一般需要。
(5)当超过阀值的时候,有蜂鸣器闪烁报警提示。并有开关可以关闭或打开报警.
(6)当温度或湿度超限后,报警信号灯点亮同时相应的继电器吸合.
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图

四.软件设计
主程序源码
void main()
{
char *str2="AT+CIPSEND=14rn";
unsigned char i;
memset(&RsBuf[1],' ',18);
Uart_init();
lcd_init();
wifi_init();
while(1)
{
if(FlagStart==1)
{
TR0=0;
RH();
FlagStart = 0;
write_1602com(0x83); //指定第一行第三个位置
write_1602dat(temperature%100/10+0x30); //显示温度的十位
write_1602dat(temperature%100%10+0x30); //显示温度个位
write_1602com(0x8d); //选中第一行第十三个位置
write_1602dat(humidity%100/10+0x30); //显示湿度十位
write_1602dat(humidity%100%10+0x30); //显示湿度个位
SendString("{"UN":"yhdifiot024@163.com","VER":"A1.1","ID":"234103","MAC":"18fe35f1cd4a","TP":"");
//784551388@qq.com是账号 234100是ID
SendASC(temperature%100/10+0x30); //1
SendASC(temperature%10+0x30); //1
SendString("","HM":""); // 8
SendASC(humidity%100/10+0x30); //1
SendASC(humidity%10+0x30); //1
SendString("","SOC":"99","RET":"1"}rn");
TR0=1;
Timer0_count=0;
Timer0_miao=0;
}
write_1602com(0xc7); //选中第二行第七个位置
if(LED1) //如果LED1等于1
write_1602dat('0'); //显示0
else //LED1不等于1
write_1602dat('1'); //显示1
if(LED2)
write_1602dat('0');
else
write_1602dat('2');
if(LED3)
write_1602dat('0');
else
write_1602dat('3');
if(LED4)
write_1602dat('0');
else
write_1602dat('4');
delay(100);
}
}
上一篇:基于单片机mp3音乐播放器设计
下一篇:基于51单片机的蓝牙计步器设计
史海拾趣
|
int t1,t2; printf(\"please input 1:\"); scanf(\"%d\\n\",&t1); switch(t1) { case 1:{printf(\"case1\\n\"); scanf(\"%d\",&t2);printf(\"t2=%d\\n\",t2); break;} } ------------------------------------------- 在屏幕上: 我输入1 ...… 查看全部问答> |
|
几个人同时开发一个项目,写的C语言文件怎么管理 合并????? 公司要三个人开发一个ARM项目,uc/os系统,各自写自己的模块,最后怎么才能合并起来呢?? 有什么好的管理合并软件没有????… 查看全部问答> |
|
在调试中,我的AT命令是 AT^SICS=0,conType,GPRS0↙ //选择GPRS工作模式 AT^SICS=0,user,gprs↙ //用户名称 AT^SICS=0,passwd,gprs↙ //密码 AT^SICS=0,apn,cmnet↙ //网络运营商 AT^SISS=1,srvType,socket↙ //服务类型为socket ...… 查看全部问答> |
|
我在网上看到有人写CE的浏览器程序时,他的代码为: extern \"C\" DWORD __stdcall SetProcPermissions(DWORD); extern \"C\" DWORD __stdcall GetCurrentPermissions(); CWnd *pWnd = NULL; HWND hWnd; hWnd = ::FindWindow(NULL, _T(\"\\\ ...… 查看全部问答> |
|
各位大虾,请问怎么使2812的FSX频率和CLKX频率不同步,我现在能够调出FSX频率,但是CLKX频率与FSX频率一直同步,就是同升同降。可是所需的芯片要求他们两个不同步,该怎么设置呢?谢谢各位了!!… 查看全部问答> |




