基于WiFi和移动终端的智能照明控制系统设计
扫描二维码
随时随地手机看文章
引 言
独立的照明控制已经发展成熟,但很多时候使用者无法准确根据情况设置控制参数。如果照明系统的使用环境情况多变,仅仅靠非专业的使用者来调节控制,则无法达到最佳的使用效果。而且任何控制都要在现场进行,非常不方便。在物联网环境下,使用者可以利用远程移动和通信设备通过互联网对室内照明设施进行监控和控制,通过传感器及微处理控制系统,使物联网的照明系统能够 感知 环境,并根据外界情况的变化做出相应调整,为用户提供方便高效的服务。
本文以设计智能照明系统为目标,结合时下最流行的物联网开发思路,将灯光的操控不局限于本地,设计了一个单片机控制系统、Web 服务器、Android 客户端三位一体的智能照明控制系统。采用C 语言和Java 语言分别编写单片机应用程序、App 程序和服务器端程序,通过安卓移动设备达到远程控制室内LED 灯的开关、亮度以及智能调光等目的。
1 系统设计
1.1 系统架构设计
该系统是一个可远程遥控室内灯光智能动作的控制系统,主要包含了控制系统和通信系统两大部分。通信系统采用WiFi 模块与服务器建立TCP 链接后,通过HTTP 协议来完成单片机和服务器的信息交互。安卓客户端也通过HTTP 协议和服务器进行信息交互,通过服务器将安卓客户端的请求间接转向单片机,单片机再将获得的数据解析后生成相应的指令进行动作。
路由器建立一个WiFi 热点, 单片机端的WiFi 模块以STATION 模式接入该热点,Tomcat 服务器搭在本机电脑也接入该热点。为了保证通信安全,网络采用WPA2 加密方式。
当路由器通过家庭宽带连接上Internet,并在云端发布服务器程序后,手机客户端可以直接通过本机的GPRS 网络访问单片机客户端,不需要连接局域网的WiFi 热点。本系统的设计总架构图如图 1 所示。
图 1 室内LED 智能照明系统总体架构图
1.2 系统总体设计
系统以 ARM 单片机 STM32F103ZET6 作为本系统的主控芯片,单片机通过串口 WiFi 接收到了服务器的响应信息后, 通过内置DMA 转存到内存当中,CPU 再将内存中的数据取出并解析为对应的控制指令和数据信息,将手机传递过来的数据和单片机读取到的本地实时时间数据都显示到OLED 屏上,单片机通过判断动作指令来决定是否开灯关灯以及调光。当检测到有开启智能模式的指令后,则启动光照传感器,读取当前的照度信息,根据照度信息控制PWM 调光驱动输出当前所需要的室内灯光亮度。红外检测电路则通过一个S8050 三极管构成放大电路将红外模块的输出信号进行放大后输出到继电器模块,通过继电器模块的吸合与断开来控制当前灯光的亮灭。本系统由STM32 单片机模块、DS1302 实时时钟模块、OLED12864 液晶显示模块、BH1750FVI 数字光照传感器模块、HC-SR501 人体红外模块、PWM 调光驱动模块和ESP8266WIFI 模块组成。系统总设计框图如图 2 所示。
2 系统软件设计
本系统软件方面的设计主要为单片机主控端的程序设计、服务器端的程序设计和Android 手机应用程序设计。为了使单片机、服务器、Android 客户端的数据通信一致,采用自定义通信的协议,该数据帧一共由14 位数字字符组成,其通信格式如图 3 所示。
bit0/bit2:灯 1/2的开或关, 0代表关, 1代表开;
bit1/bit3:灯1/2 的调光值,范围为09,对应单片机的PWM值为该数值比例系数;
bit4-bit7/bit8-bit11:表示灯光开启 /关闭的时间(小时:分钟);
bit12/bit13:表示智能模式 /定时模式的开或关, 0代表关, 1 代表开。
2.1 单片机程序设计
单片机先初始化各模块,然后以 500 ms 间隔发送HTTP 请求,将服务器响应的数据经WiFi 串口接收,再通过DMA 转存到内存中。单片机通过读取对应位置的内存数据即可解析到相应模块的控制指令,进入不同的设置状态。单片机主 程序流程如图 4 所示。
2.2 服务器程序设计
本设计的服务器程序中主要包括了两个 Servlet,分别 为 ControlServlet 和 ProviderServlet。ControlServlet 服 务 程 序用来接收 Android 客户端的 HTTP 请求,ProviderServlet 服务程序用来接收单片机的 HTTP 请求。服务器响应过程 图如图 5 所示。首先当单片机和 Android 客户端与服务器建 立 TCP 连接后,会发送 HTTP 请求到服务器,二者请求的 URL 地址以及参数都不一样。服务器一直处于等待状态,当 ControlServlet 接收到来自 Android 客户端的 GET 请求后,服 务器会通过 ControlServlet 来读取 GET 参数,然后将参数 存放到 ServletContext 域中,当单片机同样发出 GET 请求到 ProviderServlet 后,服务器则会将 ServletContext 域中的数据 作为响应参数发回给单片机。
2.3 Android 程序设计
本文设计的 Android 客户端主要采用 Activity 组件。通 过自定义协议将用户设置的参数信息封装成字符串数据,最终 将其拼接在 URL 地址后,形式如 :192.168.1.100:8080/demo/ Control Provider?controlMessage=“11111111111111”, 具 体 程 序流程如图 6 所示。
启动了App 后,会进入动画界面,同时会对用户的控制界面进行布局加载,加载完成后就会出现各种控件,并且为控件都设置了监听事件,当用户点击了相应的控件后,便会触发一次事件,在该事件中,将会完成对控制指令的封装,封装完成后作为URL 参数以GET 的方式发送HTTP 请求给服务器。
3 系统测试
根据 App 的设置,可以在 OLED 屏幕上同步看到设置的 信息数据,说明安卓 App 已经成功控制了照明系统。这里设 置了开启的时间为 15:37,关闭的时间为 16:22,等待观察,系 统确实在设定时间将 LED 灯开启与关闭,其实物图与界面图 如图 7 所示。开启智能模式后,模型里 LED 的灯光亮度会随 着当前室外的灯光变化而变化,当室外灯光较亮时,室内灯光 的亮度则会阶梯降低,节约电能,其实物演示图如图 8 所示。
结 语
本文完成了一个可远程遥控室内灯光智能动作的控制系统,包括完整的硬件和软件系统。硬件系统是基于一个一房一厅的灯光控制模型,有两套单片机客户控制终端;软件系统则实现了各类数据通信和控制功能,主要包括:
(1) 单片机主控端的控制软件 ;
(2) 服务器端的控制软件;
(3) Android手机应用软件等。
通过实物演示和检测,该作品完成了初设的各项功能指标,使用方便,为生活提供了便利,改善了环境质量,有待进一步研发和推广。