基于单片机的 wifi 家电开关控制系统设计

摘要 : 本文是利用 51 单片机基础知识结合 wifi 通信技术完成的一套可通过手机无线遥控家电开关系统设计。整个系统以 STC89C51 单片机为核心,采用业界主流的 ESP8266wifi 模块作为通信模块,家电开关的自动控制部分采用 3 路继电器开关来实现。本系统的硬件成本较低,可在实际生活中应用,在中职单片机课程教学中具有较高的使用和推广价值。
关键词 : 单片机 ;wifi 遥控 ; 家电开关

0 引言

单片机课程的学习,设计与实践对学生知识的理解与掌握至关重要,贴切生活的实训项目设计能使学生从被动的接受枯燥的理论知识转到主动的理论探究,可极大地调动学生学习的积极性和主动性,更重要的是学生动手能力、发现问题和解决问题的能力可以得到质的提升。现代社会,人们生
活质量不断提高,家庭中的家用电器不断增多,人们对于操控家用电器的便利性也要求越来越高。在物联网概念下,基于单片机与无线通信技术的 wifi 无线家电开关控制系统,在居住空间内可通过手机随时随地地开关电器,为人们的生活提供极大的便利。而目前中职的单片机教材中,wifi 技术的内容基本没涉及,为了使学生在学习单片机技术时,激发学生的学习兴趣,初步掌握 wifi 技术跟单片机技术的结合,特设计这个基于单片机的 wifi 家电开关控制系统。本系统可在实际生活中应用,也适合在单片机教学中推广。

1 wifi 家电开关控制系统的整体方案设计

自从 ESP8266wifi 模块上市以来,由于其成本低,性能高而备受关注。根据设计和功能及教学方面的要求,本系统主要采用了 51 单片机技术、自动控制技术和无线通信技术,通过手机 APP 控制用电设备。
整个系统主要由五大部分组成,分别是智能手机 APP、电源管理部分、51 单片机最小系统、ESP8266wifi 模块通信部分、继电器开关控制及发光二极管指示部分。整个系统结构简单、性能稳定可靠、可操作性强,并且成本低廉。系统的设计框图如图 1 所示。

2 wifi 家电开关控制系统硬件设计

2.1 电源管理系统设计

电源部分设计的质量对整个系统设计至关重要,由于系统单片机和 ESP8266wifi 模块需要的电压不同,51 单片机的工作电压为 5V,单片机电源供电由外接 5V 电源提供,而8266wifi 模块的工作电压为 3.3V,因此 8266wifi 模块 3.3V电压由 AMS1117-3.3V 稳压输出提供。

2.2 ESP8266wifi 通信系统设计

本设计通信模块使用业界主流 8266wifi 模块。ESP8266硬件接口丰富,适用于各种物联网应用场合,其作为一个透传模块使用, URXD、UTXD 分别连接 51 单片机的 TXD 和RXD,VCC 和 CH_PD 管 脚 接 3.3V 电 压,GND 接 地(8266wifi模块要和单片机共地才能正常工作),只需要连接这些管脚,ESP8266 模块就可以正常工作了。本设计单片机与 ESP8266通信方式采用 AT 命令方式,首先由单片机对 ESP8266 模块进行初始化,ESP8266 通过 WIFI 接收到手机发送的命令后传入单片机,单片机再进行相应的操作。

2.3 单片机最小系统设计

单片机最小系统是中职生学习单片机的必学内容,也是基于单片机的系统设计的最基础的部分,是系统的控制核心。相对来说,最小系统的构建比较简单,只涉及到了晶振电路、复位电路以及 EA/VPP 端的高电平。设计单片机最小系统,选择合适的单片机非常重要。由于本系统功能相对较少,8位单片机就可以实现设计的功能要求,且价格较低,因此本设计选择 STM 公司出品的 STC89C51 单片机。这款单片机可以直接从 RXD 和 TXD 引脚直接进行通信,非常方便。完成最小系统电路设计后,对其测试。第一步,检测晶振是否能正常起震,第二步,把相应的 IO 口控制程序置入单片机,可通过控制一个发光二极管的发光情况来测试。最后是测试复位电路功能是否正常。

2.4 家电控制电路设计

本设计家电控制电路部分采用 3 路继电器实现控制,单片机通过 IO 口输出高低电平控制继电器的通断,从而控制外部家电电源的通断。为了方便操作和观察继电器的吸合和断开,在继电器端接一个 LED 灯,通过观察 LED 灯的亮灭来了解继电器的状态,当 LED 灯亮时,说明相应的继电器吸合,当LED 灯不亮时,说明相应的继电器吸合。整个系统设计原理图如图 2 所示。

3 wifi 家电开关控制系统软件设计

系统软件设计,编程使用 C 语言,编译环境为 Keil。单片机软件主要是串口初始化、ESP8266 模块的初始化(如设置模块 wifi 模式为 AP 模式,并设置 wifi 名称和密码等)、接收模块转发的数据、根据收到的数据处理串口中断来完成对继电器的控制。部分程序如下 :
Uart_Init();
ms_delay(2000);
ESP8266_Set(“AT+CWMODE=2”);// 设置路由器模式 2
(AP 模式 )
ms_delay(2000);
ESP8266_Set(“AT+RST”);// 重 新 启 动 wifi 模 块
ms_delay(2000)ESP8266_Set("AT+CWSAP=\"wifi_
yuan\",\"123456789\",11,4");// 设置 wifi 名称和密码
ms_delay(2000);
ESP8266_Set(“AT+CIPMUX=1”);// 开启多连接模式,允
许多个各客户端接入
ms_delay(2000);
ESP8266_Set(“AT+CIPSERVER=1,5000”);// 启 动 TCP/
IP 实现基于网络 // 控制
ms_delay(2000);
ESP8266_Set(“AT+CIPSTO=0”);/ 永远不超时
ES=1;// 允许串口中断

4 系统的调试

在本设计中,单片机的串口中断的波特率设为 9600,在将 ESP8266 模块与单片机硬件连接之前,先通过电脑用 USBTTL 模块连接好 ESP8266 模块,将 ESP8266 模块的波特率改 为单片机能使用的 9600bps,再将模块插到系统中。在手机上安装手机端控制软件,手机接入到 ESP8266 模块发射的无线wifi 网络,打开控制软件设置好 IP 和端口就可以连接单片机开关控制系统了,按对应的按键就可以控制继电器吸合或断开,从而控制家电的开关。
通过实际测试,系统成功完成了设计的功能,通过点击手机上的按键能成功地让对应的继电器吸合或断开(对应的LED 灯亮或灭),从而控制接到继电器上的家电电源的通和断。

5 结束语

这次设计的系统能够实现利用 wifi,通过操控手机遥控家用电器的开关。 因为本设计只是一个非常入门的设计,使用到的无线网络也仅仅是局域网,操作指令也很简单,传输的数据量也很小,比较适合中职学生的学习水平,可以在中职单片机教学中推广。
因系统没有涉及到手机接收单片机发来的信息的功能,也没涉及到利用互联网进行连接控制的功能。下一步,我们计划对系统进行完善,加入以上两个功能,同时对软件进行优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】多线程(3)queue队列之不同延时时长的参数调用问题

链接1:【python】多线程(笔记)(1) 链接2:【python】多线程(笔记)(2)Queue队列 0.问题描述 两个线程,但是不同延时时长,导致数据输出…

MyBatis框架-开发方式+参数传递+#{}、${}+返回值处理+查询结果封装为对象+resultType

一、开发方式 MyBatis-Dao层Mapper接口化开发 二、注意事项 1、Mapper接口与Mapper.xml映射文件要满足4个对应 (1)Mapper接口的全类名必须与Mapper映射文件中的namespace相同 (2)Mapper接口中的每一个方法名在Mapper映射文件…

961题库 北航计算机 操作系统 附答案 选择题形式

有题目和答案,没有解析,不懂的题问大模型即可,无偿分享。 第1组 习题 计算机系统的组成包括( ) A、程序和数据 B、处理器和内存 C、计算机硬件和计算机软件 D、处理器、存储器和外围设备 财务软件是一种&#xff…

iOS——类与对象底层探索

类和对象的本质 当我们使用OC创建一个testClass类并在main函数创建它的实例对象的时候,OC的底层到底是什么样的呢? 首先,我们要了解OC对象的底层结构,那么我们就得知道:OC本质底层实现转化其实都是C/C代码。 使用下面…

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包(软件)1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包(软件) 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

④单细胞学习-cellchat细胞间通讯

目录 1,原理基础 流程 受体配体概念 方法比较 计算原理 2,数据 3,代码运行 1,原理基础 原文学习Inference and analysis of cell-cell communication using CellChat - PMC (nih.gov) GitHub - sqjin/CellChat: R toolk…

字符串操作java

题目: 描述 给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串 输入描述: 第一行两个数n,m 第二行一个字符串s 之后m行,每行两个数l 、r两个字符…

[DDR5 Jedec 4-1] 预充电命令 Precharge

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1. 预充电(Precharge)含义 由于SDRAM的寻址具体独占性,因此在进行完读写操作后,若需对同一L-Bank的另一行进行寻址,则必须先关闭原…

针对大模型的上下文注入攻击

大型语言模型(LLMs)的开发和部署取得了显著进展。例如ChatGPT和Llama-2这样的LLMs,利用庞大的数据集和Transformer架构,能够产生连贯性、上下文准确性甚至具有创造性的文本。LLMs最初和本质上是为静态场景设计的,即输入…

idea+tomcat+mysql 从零开始部署Javaweb项目(保姆级别)

文章目录 新建一个项目添加web支持配置tomcat优化tomcat的部署运行tomcatidea数据库连接java连接数据库 新建一个项目 new project;Java;选择jdk的版本;next;next;填写项目名字,选择保存的路径;…

C++进阶之AVL树+模拟实现

目录 目录 一、AVL树的基本概念 1.1 基本概念 二、AVL树的模拟实现 2.1 AVL树节点的定义 2.2 插入操作 2.3 旋转操作 2.4 具体实现 一、AVL树的基本概念 1.1 基本概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树&…

微信里的东西怎么打印出来呢

随着微信的普及,我们的日常生活和工作都离不开这个强大的社交工具。无论是重要的工作文件、孩子的作业、还是精彩的旅行照片,我们都习惯在微信里保存和分享。但是,当需要将这些微信里的内容打印出来时,很多人可能会感到困惑和麻烦…

【C++】vector的模拟实现

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 1. vector的核心框架接口 2. 构造函数 2.1 基本构造 2.2 拷贝构造(传统写法) 2.3 析构函数 2…

验证外星语词典

在解决算法题时,哈希表是经常被使用的工具,可以用来记录字符串中字母出现的次数,字符串中字符出现的位置等,这里用到的就是利用哈希表储存字符串中字符出现的的位置。 “外星语”的字母表顺序是不一样的,所以…

SIMBA:单细胞嵌入与特征

目前大多数单细胞分析管道仅限于细胞嵌入,并且严重依赖于聚类,而缺乏显式建模不同特征类型之间相互作用的能力。此外,这些方法适合于特定的任务,因为不同的单细胞问题的表述方式不同。为了解决这些缺点,SIMBA作为一种图…

43.自定义线程池(一)

ThreadPool是线程池,里面是一定数量的线程,是消费者。 BlockingQueue阻塞队列,线程池中的线程会从阻塞队列中去拿任务执行。任务多了线程池处理不过来了,就会到Blocking Queue中排队,等待执行。链表结构,特…

使用python实现超市购物系统(一个小例子)

可以增加其他功能,这里就展示一个小的例子~

Crosslink-NX器件应用连载(11): 图像(数据)远程传输

作者:Hello,Panda 大家下午好,晚上好。这里分享一个Lattice Crosslink-NX器件实现图像或数据(卫星数据、雷达数据、ToF传感器数据等)远程传输的案例(因为所描述的内容颇杂,晒图不好晒&#xff…

【刷题】初探递归算法 —— 消除恐惧

送给大家一句话: 有两种东西, 我对它们的思考越是深沉和持久, 它们在我心灵中唤起的惊奇和敬畏就会日新月异, 不断增长, 这就是我头上的星空和心中的道德定律。 -- 康德 《实践理性批判》 初探递归算法 1 递归算…

我给线程池管理框架hippo4j找bug

1 虚拟机参数不生效 hippo4j的docker启动脚本位于 docker/docker-startup.sh 。从下图可以看到 JAVA_OPT放在了jar包名 hippo4j-server.jar之后,而只有项目参数才放在jar包名之后。 实际上这里JAVA_OPT中包含虚拟机参数,而虚拟机参数要放在jar包名之前…