基于单片机的WIFI无线操控LED灯的电路设计

2021-10-13 10:25锁萌蔡武德赵昆霞冯瑞宝王天硕
电子制作 2021年19期
关键词:微控制器串口亮度

锁萌,蔡武德,赵昆霞,冯瑞宝,王天硕

(云南师范大学,云南昆明,650500)

0 引言

由于无线通信技术的快速兴起,WiFi通信技术逐步成熟并得到了广泛关注。同时与WiFi领域相关的研究也逐渐增多[1]。因此,利用WiFi技术来控制灯光的系统设计有了强硬的技术支持和认可。关于利用WiFi技术来控制灯光的系统设计将基于微控制器STC89C52和ESP8266WiFi通信模块来实现。

1 系统设计

1.1 系统框图

系统框图如图1所示,包括电源电路、STC89C52单片机、复位时钟电路、ESP8266WiFi通信模块、智能手机和LED灯。该系统设计的核心部分是STC89C52微控制器,主要的控制芯片为ESP8266WiFi通信模块。其中,对LED灯亮度的控制主要通过PWM控制的原理来实现。

图1 系统框图

1.2 系统设计原理

在系统工作之前需要给系统上电,同时ESP8266WiFi通信模块需要系统提供3.3V的电压才能正常工作,因此需要供给3.3V的稳压电路,单片机P1.7脚所连接的LED灯D1是WiFi模块初始化的指示灯,在给系统上电后,打开自锁开关SW1,WiFi模块开始初始化,D1点亮,当D1熄灭时就说明WiFi模块的初始化工作已经完成。S1为电路中的按键,在WiFi模块初始化完成之后,按下按键S1,LED灯D2将被点亮,长按按键S1会使得D2的亮度发生变化,可以通过按键来实现对LED灯的亮度操控。系统采用的是8550PNP型三极管。在电路中将三极管与LED灯相连接,在低电平的时候LED灯点亮,当低电平维持的时间越长,LED灯亮度就越高,低电平维持的时间越短,LED灯亮度就会越低,维持时间的长短可以通过定时器来实现。系统设计原理图如图2所示。

图2 系统设计原理图

1.3 系统功能介绍

该设计系统以微控制器STC89C52为核心,将ESP82 66WiFi通信模块与单片机建立起串口通信,ESP8266WiFi模块与手机APP相连接,作为一个数据的收发站,将其接收的无线信号转换成串口信号传递给微控制器STC89C52,微控制器再对LED灯的亮度以及亮灭进行控制,从而实现手机APP对LED的无线操控。

2 硬件电路设计

2.1 LED灯的控制电路设计

2.1.1 LED灯亮灭控制原理

LED灯连接在STC89C52单片机的P3口上,LED灯与8550PNP型三极管连接,LED灯的亮灭通过将相应程序导入单片机来进行控制,在低电平的时候LED灯亮,高电平的时候LED灯灭。

2.1.2 LED灯亮度控制原理

LED灯的亮度与通过其两端的电流强度成正比。PWM调光正是利用了这一原理。PWM信号源是PWM调光时所需的,驱动器根据高低电平的不同来打开或者关闭场效应管的栅极,并反复切换LED驱动器,当开关频率高于100Hz时,人眼就看不到LED的关闭,对导通与关断时间进行平均,仅看到由占空比决定的亮度,占空比越小,开关管断开的时间越长,因此平均电流会越小,人眼会观察到LED灯的灯光变暗了[2]。由此,为了实现对LED灯的亮度控制,只需要给单片机提供宽度不同的数字脉冲即可。

2.2 ESP8266WiFi模块电路设计

2.2.1 ESP8266WiFi模块介绍

系统所使用的WiFi模块为ESP8266WiFi通信模块[3]。该芯片体积小、价格较低且性能稳定,相比其他芯片性价比更高。ESP8266WiFi通信模块在与STC89C52微控制器通信时使用串行通信的方式进行连接,将数据通过WiFi传输给上位机是利用ESP8266WiFi通信模块将传统的串口设备进行串口配置来实现的。

2.2.2 ESP8266WiFi模块电路工作原理

图3为ESP8266WiFi通信模块的电路设计图。给ESP8266WiFi通信模块提供一个3.3V的电压,使其能够正常工作。给WiFi模块的CH_PD引脚一个3.3V的电压。微控制器STC89C52的TXD脚与WiFi模块的URXD引脚连接,GND引脚接地。

图3 ESP8266WiFi模块电路设计图

3 软件设计

3.1 ESP8266WiFi模块的设置

软件设计需要先对ESP8266WiFi模块进行初始化,对WiFi模块的调试使用串口调试助手来完成。在配置ESP8266WiFi通信模块时将模块设置为工作在透传模式[4]。具体步骤为:

(1)将芯片的串口比特率设置为9600Hz:发送指令AT+UART=9600, 8, 1, 0, 0;

(2)将WiFi芯片的模式设置为AP模式:发送指令AT+CWMODE=2;

(3)重新启动WiFi模块以使应用程序模式更改有效:发送指令AT+RST;

(4)设置WiFi模块的名字和密码,把WiFi的名称设置为“SuoMeng_01”,WiFi密码设置为“12345”:发送指令AT+CWSAP=" SuoMeng_01",“12345”, 5,3;

(5)设置为允许多连接,ESP8266WiFi模块最多允许5个客户端连接,其根据连接的先后顺序给每个客户端相应地分配ID为0~4:发送指令AT+CIPMUX=1;

(6)建立服务器:发送指令AT+CIPSERVER=1。

3.2 单片机控制LED灯程序设计

3.2.1 LED灯亮灭控制的程序设计

STC89C52单片机与ESP8266WiFi通信模块之间以串口通信的方式建立连接,程序设计过程需要满足串口通信的协议要求,因此在设计中将ESP8266WiFi通信模块的串口比特率设置为9600Hz。程序设计包括对单片机I/O口进行初始化,然后初始化ESP8266WiFi通信模块,给连接WiFi模块初始化指示灯和连接LED灯的单片机引脚赋值,系统调用相关子函数执行后续程序,接着判断WiFi模块是否接收了指令,若接收成功,单片机将接收WiFi模块发送过来的指令并作出判断,从而控制灯的亮灭;若WiFi模块没有接收指令,则返回上一步再重新进行判断。相关程序流程图如图4所示。

图4 单片机控制LED灯亮灭的程序流程图

3.2.2 LED灯亮度调节程序设计

本设计对LED灯的亮度操控主要通过控制高电平和低电平维持的时间来实现。程序设计用定时器T0服务函数来实现,通过程序编写来控制LED灯的灯光亮灭持续时间从而实现亮度调节。首先设置定时器,接着判断WiFi模块是否接收了指令,若接收成功,单片机将接收WiFi模块发送过来的指令并作出判断,从而控制灯的亮度;若WiFi模块没有接收指令,则返回上一步再重新进行判断。相关程序流程图如图5所示。

图5 STC89C52控制LED灯亮度的程序流程图

4 实物测试

4.1 手机APP功能介绍

本设计中控制LED灯亮灭以及亮度的手机APP为“TCP连接”,APP的控制按钮可自行设置,本设计设置了三个控制按钮,第一个按钮为LED灯开关控制按钮,在按钮编辑器窗口进行相关设置,在“状态OFF”下的按钮文本设置为“LED灯关”,消息处设置为“A3”,在“状态ON”下的按钮文本设置为“LED灯开”,消息处设置为“A1”。第二个按钮为增强LED灯亮度的按钮,在按钮编辑窗口进行设置时将“状态OFF”和“状态ON”下的按钮文本都设置为“亮度加”,消息处都设置为“T1”。第三个按钮为减弱LED灯亮度的按钮,在按钮编辑窗口进行设置时将“状态OFF”和“状态ON”下的按钮文本都设置为“亮度减”,消息处都设置为“T3”。

4.2 实验测试

给设计成品通电,通电后打开电源开关,可以看到黄色LED灯亮,表示正在初始化ESP8266WiFi模块,黄色LED灯灭说明对WiFi模块的初始化已经完成。将手机连接到名称为“SuoMeng_01”的WiFi信号,输入设置的WiFi密码,打开控制LED灯的手机APP,连接到地址为“192.168.4.1”,端口号为2000的主机,APP界面显示连接成功即可对LED灯进行操控。图6、7为实物测试图。

图6 初始化ESP8266WiFi模块

图7 手机APP对LED灯的操控

5 结束语

设计完成了对LED灯的亮灭控制和亮度调节的目标,从设计过程来看,整个设计主要包括软件系统设计部分和硬件设计部分。通过本次设计,我收获了许多有用的知识和技能,与此同时,整个系统的设计让我真实的体会到书本知识和实际应用的不同。在设计完成的过程中也遇到了很多问题和挑战,这些问题十分值得我进行深入的研究和探讨,争取能够早日解决。

猜你喜欢
微控制器串口亮度
用于遥感影像亮度均衡的亮度补偿方法
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
本本亮度巧调节,工作护眼两不误
用于高品质电动汽车的分布式并行计算
亮度一样吗?
MCS—51单片机中的多串口通讯技术的应用
电磁导向智能车设计探讨