当前位置: 首页 > news >正文

基于51单片机WIFI智能家居系统设计

基于51单片机WIFI智能家居系统设计

1 功能介绍

本设计以STC89C51/52单片机作为主控核心,结合ESP8266无线通信模块、DHT11温湿度传感器、LCD1602液晶显示屏、继电器电路、AT24C02存储电路以及声光报警电路构建而成,最终实现一个具备远程监控与控制功能的智能家居系统。该系统能够通过WiFi网络实时传输数据到手机端,实现用户远程操作和信息反馈,具备良好的扩展性与实用性。

系统主要功能如下:

  1. 远程控制:通过ESP8266 WiFi模块,用户可以在手机端发送特定指令实现远程控制。

    • 打开继电器1 :DKJDQ1
    • 关闭继电器1 :GBJDQ1
    • 打开继电器2 :DKJDQ2
    • 关闭继电器2 :GBJDQ2
    • 获取温湿度数据 :HQSJ
      系统默认WiFi连接参数为账号:DuoDuoXueZhang,密码:123456789
  2. 环境监测:通过DHT11传感器实时测量室内温湿度,并在LCD1602液晶显示屏上显示结果,同时支持WiFi数据上传。

  3. 家电控制:设计板上设置两路继电器,能够直接控制家电设备,如电灯、风扇、空调等,继电器带有指示灯,便于观察运行状态。

  4. 报警功能:系统支持通过按键设定温湿度报警阈值,并将该阈值存储到AT24C02存储器中。当实际测得数据超过设定值时,系统触发声光报警提醒,并可通过WiFi发送警报信息。

该系统集成了监控、存储、显示、控制与报警多种功能,能够满足智能家居场景下用户的远程控制与信息获取需求。


2 系统电路设计

智能家居系统采用模块化设计思路,将各功能电路单元通过STC89C51/52单片机统一协调工作。以下分别介绍各主要模块。

2.1 主控电路(STC89C51/52单片机)

STC89C51/52作为系统主控芯片,负责接收ESP8266的数据、处理传感器输入、驱动继电器与LCD显示,并控制报警模块。单片机采用12MHz晶振电路提供时钟信号,同时配合上电复位电路,确保系统运行稳定。

2.2 ESP8266 WiFi模块电路

ESP8266模块通过串口与单片机通信,负责实现与手机端的无线数据交互。其默认连接家庭无线网络,并监听来自手机的控制指令。当接收到控制命令时,ESP8266将指令传输给单片机,由主控芯片解析并执行相应操作。

2.3 温湿度传感器电路(DHT11)

DHT11作为环境检测传感器,通过单总线与单片机通信,实时采集空气中的温湿度数据。其输出数据不仅在LCD1602液晶屏上显示,还会定时通过ESP8266模块传输到手机端,便于远程监控。

2.4 液晶显示电路(LCD1602)

LCD1602用于显示系统的实时状态信息,包括温湿度值、继电器状态和报警信息。该模块通过并口与单片机连接,采用4位数据线方式,节省IO资源。用户在现场即可直观查看系统的运行情况。

2.5 继电器驱动电路

系统设计了两路继电器输出接口,可用于控制电灯、风扇、空调等家用电器。继电器由单片机通过三极管驱动,带有状态指示灯,直观显示继电器的开关状态。通过手机指令即可实现远程开关家电。

2.6 存储电路(AT24C02)

AT24C02为I2C接口的EEPROM存储芯片,主要用于存储用户设定的温湿度报警阈值。这样即使系统掉电,参数也不会丢失。单片机在上电时会读取EEPROM中的数据,作为报警判断的基准值。

2.7 声光报警电路

系统设计了蜂鸣器与LED指示灯作为报警单元。当实际温湿度超过设定阈值时,蜂鸣器发出声响,LED灯闪烁提示用户,同时通过WiFi向手机端推送报警信息,确保用户及时获知异常情况。

2.8 按键电路

按键模块用于设置温湿度报警阈值。通过按键组合,用户可调整并确认报警值,最终存储到AT24C02中。单片机检测按键状态时需进行去抖动处理,以保证输入准确可靠。


3 程序设计

软件部分采用C语言编写,并在Keil环境下进行开发。程序结构分为初始化、主循环和各功能模块子程序。

3.1 主程序框架

主程序负责初始化各模块并进入循环运行,不断检测传感器数据、接收WiFi指令、驱动继电器、更新显示内容以及执行报警逻辑。

#include <reg52.h>
#include "lcd1602.h"
#include "dht11.h"
#include "esp8266.h"
#include "relay.h"
#include "at24c02.h"
#include "beep.h"
#include "key.h"void main(void)
{unsigned char temp, humi;LCD1602_Init();DHT11_Init();ESP8266_Init();Relay_Init();AT24C02_Init();Beep_Init();Key_Init();while(1){DHT11_Read(&temp, &humi);   // 读取温湿度LCD1602_Show(temp, humi);   // 显示数据ESP8266_ReceiveCmd();       // 接收WiFi指令Relay_Control();            // 控制继电器Alarm_Check(temp, humi);    // 报警检测Key_Scan();                 // 按键设置阈值}
}

3.2 WiFi通信程序设计

ESP8266通过串口与单片机通信,接收并解析手机端发来的指令,然后控制继电器或返回数据。

void ESP8266_ReceiveCmd(void)
{unsigned char cmd[10];if(UART_Receive(cmd)){if(strcmp(cmd,"DKJDQ1")==0) Relay1_On();else if(strcmp(cmd,"GBJDQ1")==0) Relay1_Off();else if(strcmp(cmd,"DKJDQ2")==0) Relay2_On();else if(strcmp(cmd,"GBJDQ2")==0) Relay2_Off();else if(strcmp(cmd,"HQSJ")==0) ESP8266_SendData(temp, humi);}
}

3.3 温湿度采集程序设计

DHT11通过单总线通信协议传输数据,程序需要实现起始信号、数据接收和校验。

bit DHT11_Read(unsigned char *temp, unsigned char *humi)
{unsigned char data[5];if(DHT11_GetData(data)){*humi = data[0];*temp = data[2];return 1;}return 0;
}

3.4 继电器控制程序设计

继电器通过单片机IO口控制三极管,从而实现开关动作。

void Relay_Control(void)
{if(relay1_state) RELAY1 = 0; // 吸合else RELAY1 = 1;            // 断开if(relay2_state) RELAY2 = 0;else RELAY2 = 1;
}

3.5 报警程序设计

通过检测当前温湿度与阈值比较,判断是否触发报警。

void Alarm_Check(unsigned char temp, unsigned char humi)
{unsigned char set_temp, set_humi;AT24C02_Read(0x00, &set_temp);AT24C02_Read(0x01, &set_humi);if(temp > set_temp || humi > set_humi){Beep_On();LED = 0;  // 点亮报警灯ESP8266_SendAlert();}else{Beep_Off();LED = 1;  // 熄灭报警灯}
}

3.6 按键设置程序设计

按键用于调整报警阈值,并存储至EEPROM。

void Key_Scan(void)
{if(KEY_TEMP == 0)   // 温度阈值增加{Delay_ms(20);if(KEY_TEMP == 0){set_temp++;AT24C02_Write(0x00,set_temp);}}if(KEY_HUMI == 0)   // 湿度阈值增加{Delay_ms(20);if(KEY_HUMI == 0){set_humi++;AT24C02_Write(0x01,set_humi);}}
}

3.7 LCD显示程序设计

LCD1602显示实时温湿度以及继电器状态,方便用户直观查看。

void LCD1602_Show(unsigned char temp, unsigned char humi)
{LCD1602_SetCursor(0,0);LCD1602_Print("Temp:");LCD1602_PrintNum(temp);LCD1602_Print("C");LCD1602_SetCursor(1,0);LCD1602_Print("Humi:");LCD1602_PrintNum(humi);LCD1602_Print("%");
}

4 总结

本设计基于STC89C51/52单片机,融合了ESP8266 WiFi模块、DHT11温湿度传感器、LCD1602液晶显示、AT24C02存储、继电器控制和声光报警模块,实现了智能家居环境下的远程监控与控制。系统能够通过手机远程获取温湿度数据、控制家电开关,同时具备阈值报警功能,整体架构清晰,功能完善。

在硬件电路层面,采用模块化设计思路,确保系统运行稳定且易于扩展。在软件设计方面,通过C语言编写驱动与功能模块,保证了程序逻辑的可读性和可维护性。整体而言,本系统为智能家居的实现提供了一个低成本、高实用性的解决方案,体现了单片机与物联网技术结合的应用价值。


文章转载自:

http://aXP7PUxN.prysb.cn
http://qRZyy3K6.prysb.cn
http://vTkqSeQe.prysb.cn
http://ksPsUFig.prysb.cn
http://bYUh0PyL.prysb.cn
http://IkakKWRq.prysb.cn
http://8XEoYIpU.prysb.cn
http://Y6ToVU8F.prysb.cn
http://oN79lPtA.prysb.cn
http://56lceljn.prysb.cn
http://ReutpJ6I.prysb.cn
http://6o1zNUsD.prysb.cn
http://ilzKG8cv.prysb.cn
http://iRxqBs16.prysb.cn
http://nsqCDPJ7.prysb.cn
http://UDDbM89z.prysb.cn
http://DCiJn7eS.prysb.cn
http://guAfQ8Ap.prysb.cn
http://2LrC8CqX.prysb.cn
http://AK2JGrYE.prysb.cn
http://wZCqazQd.prysb.cn
http://2qKq338L.prysb.cn
http://T7jDBRMK.prysb.cn
http://qv48Ivc3.prysb.cn
http://5qMrEInl.prysb.cn
http://MnZ18tHh.prysb.cn
http://h5hDqrTh.prysb.cn
http://Z9kKuAML.prysb.cn
http://nE728XOe.prysb.cn
http://kqvXxL8h.prysb.cn
http://www.dtcms.com/a/368139.html

相关文章:

  • 软件构建工具生态
  • 无人机RTK模块技术要点与难点
  • 微信开发小程序开发授权获取 access_token
  • Spring Boot+Nacos+MySQL微服务问题排查指南
  • LeetCode 2749.得到整数零需要执行的最少操作数:很独特的一道数学题(多公式硬讲——一步步还真能看懂)
  • 【C++】vectore
  • 柯尼卡美能达打印机SMB服务设置
  • 【VoNR】VoNR是5G语音,VoLTE是4G语音,他们是同一个IMS,只是使用了新的访问方式?
  • Android/Java 泛型全面详解
  • 国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
  • html+css+vue实现增删改查
  • 在Unity中实现DTLN-AEC处理音频文件的功能
  • 关于kubernetes和docker版本的一些总结
  • 图像的几种成像方式简介
  • AI 基础设施新范式,百度百舸 5.0 技术深度解析
  • 中创中间件适配HGDB
  • 没 iCloud, 如何数据从iPhone转移到iPhone
  • 【技术教程】如何将文档编辑器集成至基于Java的Web应用程序
  • 基于华为云平台的STM32F103C8T6工业生产线温湿度监控系统
  • js设计模式-状态模式
  • 一文从零部署vLLM+qwen0.5b(mac本地版,不可以实操GPU单元)
  • Python核心基础:运算符、流程控制与字符串操作详解
  • Follow 幂如何刷屏?拆解淘宝闪购×杨幂的情绪共振品牌营销
  • 嵌入式学习4——硬件
  • 数据标注:人工智能视觉感知的基石
  • 【Linux系统】POSIX信号量
  • 【Python - 类库 - requests】(02)使用“requests“发起GET请求的详细教程
  • XSCT/Vitis 裸机 JTAG 调试与常用命令
  • 【GitHub每日速递】不止 TeamViewer 替代!RustDesk 与 PowerToys,Windows 效率神器
  • 使用海康机器人相机SDK实现基本参数配置(C语言示例)