时间:2024-05-04
锁萌,蔡武德,赵昆霞,冯瑞宝,王天硕
(云南师范大学,云南昆明,650500)
由于无线通信技术的快速兴起,WiFi通信技术逐步成熟并得到了广泛关注。同时与WiFi领域相关的研究也逐渐增多[1]。因此,利用WiFi技术来控制灯光的系统设计有了强硬的技术支持和认可。关于利用WiFi技术来控制灯光的系统设计将基于微控制器STC89C52和ESP8266WiFi通信模块来实现。
系统框图如图1所示,包括电源电路、STC89C52单片机、复位时钟电路、ESP8266WiFi通信模块、智能手机和LED灯。该系统设计的核心部分是STC89C52微控制器,主要的控制芯片为ESP8266WiFi通信模块。其中,对LED灯亮度的控制主要通过PWM控制的原理来实现。
图1 系统框图
在系统工作之前需要给系统上电,同时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 系统设计原理图
该设计系统以微控制器STC89C52为核心,将ESP82 66WiFi通信模块与单片机建立起串口通信,ESP8266WiFi模块与手机APP相连接,作为一个数据的收发站,将其接收的无线信号转换成串口信号传递给微控制器STC89C52,微控制器再对LED灯的亮度以及亮灭进行控制,从而实现手机APP对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.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模块电路设计图
软件设计需要先对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.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灯亮度的程序流程图
本设计中控制LED灯亮灭以及亮度的手机APP为“TCP连接”,APP的控制按钮可自行设置,本设计设置了三个控制按钮,第一个按钮为LED灯开关控制按钮,在按钮编辑器窗口进行相关设置,在“状态OFF”下的按钮文本设置为“LED灯关”,消息处设置为“A3”,在“状态ON”下的按钮文本设置为“LED灯开”,消息处设置为“A1”。第二个按钮为增强LED灯亮度的按钮,在按钮编辑窗口进行设置时将“状态OFF”和“状态ON”下的按钮文本都设置为“亮度加”,消息处都设置为“T1”。第三个按钮为减弱LED灯亮度的按钮,在按钮编辑窗口进行设置时将“状态OFF”和“状态ON”下的按钮文本都设置为“亮度减”,消息处都设置为“T3”。
给设计成品通电,通电后打开电源开关,可以看到黄色LED灯亮,表示正在初始化ESP8266WiFi模块,黄色LED灯灭说明对WiFi模块的初始化已经完成。将手机连接到名称为“SuoMeng_01”的WiFi信号,输入设置的WiFi密码,打开控制LED灯的手机APP,连接到地址为“192.168.4.1”,端口号为2000的主机,APP界面显示连接成功即可对LED灯进行操控。图6、7为实物测试图。
图6 初始化ESP8266WiFi模块
图7 手机APP对LED灯的操控
设计完成了对LED灯的亮灭控制和亮度调节的目标,从设计过程来看,整个设计主要包括软件系统设计部分和硬件设计部分。通过本次设计,我收获了许多有用的知识和技能,与此同时,整个系统的设计让我真实的体会到书本知识和实际应用的不同。在设计完成的过程中也遇到了很多问题和挑战,这些问题十分值得我进行深入的研究和探讨,争取能够早日解决。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!