基于安卓和ESP8266的室内灯光控制器设计毕业论文.docx
《基于安卓和ESP8266的室内灯光控制器设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于安卓和ESP8266的室内灯光控制器设计毕业论文.docx(32页珍藏版)》请在冰点文库上搜索。
![基于安卓和ESP8266的室内灯光控制器设计毕业论文.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/9067d572-8ffc-468d-86a2-99408311949e/9067d572-8ffc-468d-86a2-99408311949e1.gif)
基于安卓和ESP8266的室内灯光控制器设计毕业论文
---文档均为word文档,下载后可直接编辑使用亦可打印---
Ⅰ
前 言
现如今网络无线通信技术发展很迅速,网络技术是可以将电脑、手机、平板等终端通过无线接入互联网。
Wi-Fi已经是网络接入的主流标准。
Wi-Fi热点覆盖范围越来越广,Wi-Fi技术已经被运用在各种便携式智能设备上。
对Wi-Fi技术应用产品,人们生活中运用到的越来越多,人们也希望能够通过Wi-Fi技术来控制生产和生活,使工作和生活更加便捷。
基于此目的,本文设计了一种基于Android平台和Wi-Fi技术的灯光控制系统。
该系统在硬件方面,采用STM32F103作为控制核心,通过ESP8266Wi-Fi模块进行联网。
这两款芯片成本低,功耗小,开发方便且具有较高的处理速度。
采用Keil5软件对单片机进行开发。
在电脑安装Tomcat作为本次系统设计的服务器。
使用AndroidStudio进行手机App开发可利用手机App进行灯光控制。
本设计的目的是满足社会的现实需求,给人们提供更多的便利在家中随时可以用手机控制家里的照明灯。
1概述
1.1设计背景
放眼全球,物联网优势愈加明显,现如今人们置身于网络环境中,各种智能设备通过网络进行各种数据和信息的交换。
Wi-Fi为智能家居领域带来了新的发展机遇。
我国物联网相对落后,还处于发展初期,智能家居在日常生活中被广泛应用,在工业应用领域发展较快。
中国的智能家居领域进入整合期。
其存在的主要问题是:
缺乏标准;产业核心技术不达标;产业链不够完整,合作体系不完善;产业间的合作困难。
1.2应用前景
基于安卓和ESP8266的室内灯光控器设计是基于物联网开发的,属于智能家居照明部分。
以物联网为基础智能家居市场非常有潜力。
能够使传统产业的发展模式在一定程度上改变,能够使经济发展、资源、环境之间的矛盾得到改善,物联网的应用,有利于资源进行更高效的利用。
具有极大的包容性和开放性,促进了信息的传输和交流,推动开放和合作。
智能家居在未来前景广阔。
2灯光控制器总体设计方案
2.1总体设计概述
基于安卓和ESP8266的室内灯光控制器的设计,目的是让人们的生活更加舒适方便。
为普通家用的照明灯添加功能,使灯光控制器更加贴合实际需求,更人性化的服务。
本次设计可分为手机应用的设计和硬件控制端的设计。
本设计应避免在短时间内被市场所淘汰,并且保证性价比高。
使产品大众化让人们都可以体会到舒适便捷的生活。
在本系统的设计过程中,还应充分考虑现阶段人们对家居和生活的进一步需求,提供全新生活方式。
系统设计中的各个部分有预留下接口方便升级和扩展新功能。
2.2总体设计的需求分析
本设计将分成硬件部分灯光控制器部分、Android平台设计部分和服务器部分进行介绍。
本控制器的设计采用ESP8266模块无线传输,实现服务器到模块串口的数据传输,通过手机发送控制灯光的指令到服务器。
同时将灯光的状态通过Wi-Fi模块传输到服务器,手机实时访问服务器将灯光状态反馈到手机上。
Android系统普及度最高,相比电脑系统更加的灵活。
实现用户可以使用装有Android系统的手机可以对灯光控制器进行监控。
2.3系统整体架构的设计
在灯光控制器的设计中,ESP8266模块和手机都是通过Wi-Fi无线网络连接到服务器获取数据和修改数据。
控制端接收到服务器发送来的操控信息后完成指定操作,并将灯光状态及时反馈到服务器。
图2-1为灯光控制器的整体架构示意图。
图2-1灯光控制器的整体架构示意图
2.3.1网络通信技术方案的选择
现如今,主流的无线技术主要有Wi-Fi、ZigBee、Bluetooth、UWB、NFC、RFID等方案。
无线技术几乎无需布线,调试简单,在智能家居领域优势明显。
表3-1列出了各个无线技术的相关指标数据。
表3-1几种无线通信技术的比较
名称
Wi-Fi
ZigBee
Bluetooth
UWB
NFC
RFTD
传输速度
54Mbps
250kbps
723.2kbps
100Mbps
424kbps
1kbps
通信距离
100m
75m
10m
10m
20cm
1m
频段
2.4GHz
2.4GHz
2.4GHz
3.1-10.5GHz
13.56MHz
868-915MHz
安全性
低
中等
高
高
极高
低
国际标准
IEEE802.11b
IEEE802.11g
IEEE
802.15.4
IEEE
802.15.1x
未制定
ISO/IEC
18092
为统一
功耗
10-50mA
5mA
20mA
10-50mA
10mA
10mA
由表3-1可以得知,通过几种无线技术的比较Wi-Fi技术被运用的最为普及,给用户带来更好的上网体验。
Wi-Fi技术的传输速度比较快。
结合实际需求本选用Wi-Fi技术作为无线通信技术传输数据。
2.3.2控制终端操作系统的选择
手机操作系统的选择需要实用性强并且非常普及的嵌入式操作系统,同时还要考虑操作系统的开发语言的简单易上手、易扩展,好移植等。
目前常见的嵌入式操作系统有Android、iOS、WindowsPhone、Symbian、Linux和PalmOS。
对这些嵌入式操作系统的各项指标列表来进行比较。
如表3-2所示。
表3-2几种嵌入式操作系统的比较
名称
Android
IOS
WindowPhone
Symbian
Linux
PalmOS
开发语言
Java、C、C++
ObjC、C、C++
C++、C#
Java、C、C++
C、C++
Java、C、C++、VB
市场占有率
很高
高
高
低
低
低
是否开源
是
否
否
否
是
否
扩展性
好
一般
较好
一般
好
差
功耗
高
高
高
较低
中
低
可移植性
很强
弱
较弱
弱
很强
一般
选择操作系统应用户站在用户的角度,人机交互界面要流畅,数据处理速度快。
通过对各种操作系统各个方面的特点进行分析和比较之后,本次设计选择有Android系统的手机作为基础进行开发。
2.3.3无线通信协议的选择
为保证本设计在无线传输中数据的稳定和传输速度,在目前网络传输协议中用的是TCP/IP协议。
TCP/IP协议包括应用层、传输层、网络层、网络接口。
如图2-2所示,在传输层主要有TCP协议和UDP协议两种。
图2-2网络传输协议层
TCP即传输控制协议,提供面向连接的字节流服务。
UDP即用户数据报协议,是面向数据报的传输层协议。
TCP与UDP的区别于有连接和无连接,UDP程序结构较简单,TCP保证数据正确。
故UDP传输速度快占用带宽小却不稳定,UDP传输稳定性没有被解决,所以本设计选择了稳定性较高的TCP协议传输数据。
3硬件控制器的设计与实现
单片机是集成电路芯片,构成的了完善的微型计算机系统。
ESP8266模块具有设计紧凑、功耗低、稳定性高等特点,具有较完整的Wi-Fi网络功能,既可以独立应用,也可以作为从机搭载到单片机或嵌入式上运行。
单片机与ESP8266组成控制系统。
ESP8266负责无线传输数据,单片机处理数据并控制灯光。
3.1控制器的主要芯片和模块
3.1.1主控芯片STM32F103
本次硬件部分的设计采用单片机STM32F103系列作控制芯片,该芯片是32位的Cortex-M3的处理器,性能稳定,成本低廉,处理速度快,有丰富的内部资源。
能够满足灯光控制器硬件控制端的需求。
STM32的引脚如图3-1所示:
要保证STM32F103能够正常工作,需要几个简单电路组成最小系统,最小系统主要包括:
外部晶振电路、复位电路、电源供电电路等,STM32的系统电路如图3-2所示。
图3-1单片机STM32F103引脚图
图3-2单片机最小系统原理图
本设计主要使用到了STM32F103中的定时器、串口通信、I/O口输出PWM和I/O口输出高低电平。
定时器定时一秒用于访问服务器获取控制数据,串口通信用于ESP8266模块的通信,I/O口控制照明灯亮灭。
3.1.2ESP8266模块
ESP8266可以应用于大部分微控制器的设计中。
ESP8266具有快速切换模式、配合低功耗操作、故障排除等特点。
ESP8266更加适用于移动设备、可穿戴电子设备。
图3-3ESP8266接线原理图
表3-1常用AT指令
AT+CWMODE=x
设置模式1:
STATION2:
AP3:
STATION+AP
AT+RST
复位
AT+CIPMUX=x
开启mux多路连接设置为服务器时,必须开启
AT+GMR
查看固件版本
AT+CIPSEND=x,y
发送tcp信息x为连接IPD值y为信息长度
AT+CWDHCP=x,y
开启DHCP,y=0关1开,x为设置模式
AT+CWSMARTSTART=1
ESP能连接方式(手机软件连接)
AT+CIPSEND
透传模式
AT+CWLAP
列出当前可用AP
如图3-3所示为ESP8266的接线原理图而ESP8266与微控制器之间的通信方式是串口通信。
MCU通过串口发送AT指令对ESP8266进行设置和数据传递。
使用串口工具发送AT指令对ESP8266进行复位、查看版本信息、连接Wi-Fi、设置模式等操作。
表3-1为常用的AT指令。
3.1.3LED灯的控制电路
使用LED灯作为照明灯的方案,LED灯珠电流很大,单片机无法点亮,需要一个驱动电路,此设计中选择ULN2003作为驱动芯片。
ULN2003是一款高耐压、大电流复合晶体管阵列的芯片。
多用于智能仪表、单片机、PLC等控制电路中。
可直接驱动继电器、步进电机、较大功率的LED灯珠等负载。
本设计的灯光控制部分利用了ULN2003的电流增益高和带负载能力强的特性。
设计了如图3-4所示的电路,使用到了NPN复合晶体管。
可以控制灯不同状态,通过单片机控制输出PWM的占空比不同LED灯可呈现不同的亮暗程度。
添加电容可以进行滤波同时增加电源的稳定性。
图3-4LED灯电路设计原理图
3.1.4继电器控制电路
目前家中使用的都是220V供电的照明灯,本次设计了另一个方案就是使用继电器控制家用照明灯开闭。
灯光控制器的设计采用了电磁继电器。
当电磁线圈通电导通衔铁被吸下常开端导通有。
所以此种方案的灯光照明只有开关两种状态。
本设计灯光控制部分的继电器电路如图3-5所示,照明灯接继电器常开端,添加二极管保护电路避免电磁线圈回流,损坏电路,驱动继电器的电流很大需要三极管放大电流。
这样即可保护芯片还可以保护其他电路。
这样就可以利用I/O口直接控制照明灯的开关。
图3-5继电器电路原理图
3.1.5电源供电电路
本设计采用220V转5V模块供电,普通家庭用电都为220V,直接使用220V电源供电可以增加本设计的通用性,但是STM32F103芯片和ESP8266模块都需要3.3V供电,如图3-6所示电源电路。
本设计采用ME6211降压芯片。
本设计中ESP8266模块对电流需求较高,所以ME6211是符合设计的需求的。
电路中采用了很多电容进行滤波和稳压,稳定的电压可以保证芯片和模块的正常工作。
图3-6电源电路原路图
3.2控制器的程序的设计与实现
3.2.1控制器程序流程图
本设计采用STM32为控制芯片,通过编程,要实现的各种功能,实现灯光控制程序和无线通信程序并建立联系控制完成控制器的设计。
程序流程如图3-7所示。
图3-7主程序流程图
3.2.2Wi-Fi模块的程序设计
ESP8266与STM32F103之间的通信是通过串口向Wi-Fi模块发送AT指令。
ESP8266的工作流程如图3-8所示。
图3-8ESP8266工作流程图
在程序中把每一个AT指令以函数的形式表现出来,这样主程序中调用指令的函数以达到控制ESP8266的目的。
调用函数可以使主函数更加简洁易懂。
以测试指令“AT”为例。
如图3-9所示。
在程序中直接调用函数ESP8266_AT_Test函数即可以向模块发送指令并可以检测到模块反馈回的信息。
判断反馈信息中是否含有“OK”字符,若含有OK则说明测试成功。
可以继续执行下面的程序。
若数据中没有“OK”则说明ESP8266还没有准备好需要等待。
图3-9测试指令函数
ESP8266测试成功后已经完成启动为模块进行配置,设置工作模式为Station模式,STM32F103通过串口给ESP8266发送Wi-Fi搜索指令“AT+CWLAP”得到当前所在范围内的Wi-Fi信号。
在程序中我们将连接Wi-Fi的指令写入独立的函数里,函数中使用scanf函数将热点的SSID和密码通过串口发到STM32F103上经过处理后发送到ESP8266连接Wi-Fi。
连接服务器我们用到的是TCP连接方式。
在连接服务器成功后ESP8266设置成透传模式更加方便数据传输,TCP/IP连接后将数据封装成HTTP的数据格式,在程序中编写了访问服务器的函数,如图3-16所示,ESP8266_control函数将已封装好的HTTP的数据通过ESP8266访问服务器数据库,发送和接收数据以达到控制灯的目的。
通过定时器定时访问服务器。
图3-16服务器访问程序片段
3.2.3灯光控制模块控制设计
灯光控制模块分两部分,一部分控制LED灯使用PWM输出调节LED灯的亮暗程度改变灯的状态。
另一部分使用继电器控制220V照明灯供电只有灯亮和灯灭两种状态。
LED灯程序设计,初始化引脚PA6口并设置成PWM输出。
PWM(脉冲宽度调制)同一频率下高低电平得时长不同并可以调节。
在STM32中设置PWM输出要占用一个定时器首先要初始化定时器时钟、预分频值、自动重装值、计数模式等。
设定其次配置PWM的模式并设定跳变值并使能该通道达到输出可变方波的目的。
PWM的值决定灯的亮度。
照明灯的程序设计,初始化引脚PC14后将该引脚清零变成低电平继电器断开控制关灯,将引脚置一则控制开灯。
两种方案都是通过判段ESP8266模块接收到的数据进行提取分析判断是否可以存在字符串opena、openb、openc、close收到不同的字符串LED灯的呈现亮暗不同。
4服务器的设计与实现
在本设计中用到的是Tomcat软件作为服务器,使用MySQL作为数据存储,PHP语言编写服务器后台程序。
组成完整的服务器系统架构。
4.1服务器数据库的设计
4.1.1登陆注册数据表格的设计
登录模块的数据库主要存储的是用户的账号相关信息。
将用户id,账号名称和密码用户名和年龄放在一个table_user_password表中,能够快速的验证用户的身份。
表4-1即为table_user_password表。
用户的登录密码存健在密码字段中,为了保证用户的密码安全性,不被泄露。
userPassword字段应对其先加密后存储。
密码的加密方式是md_5,之后再将其存储到数据库中。
表4-1table_user_password表
table_user_password字段
数据类型
数据长度
userId
int
10
userAccount
char
50
userPassword
char
30
username
char
50
userAge
char
20
4.1.2灯光状态数据表格的设计
table_led表格用于存储灯光控制器的相关信息,如表4-2所示。
table_led表含有灯光节点_id、灯光名称ledname可以在手机端直接更改。
Ledcode唯一码是识别每个控制器的识别标准,是控制器芯片的唯一编码是独一无二。
通过改变ledkey的值控制灯的开关。
Ledstate表示控制器的反馈回的状态。
Ledtunable反馈灯是否可调。
表4-2table_led表
table_led字段
数据类型
数据长度
_id
int
20
Ledname
char
50
Ledstate
char
30
Ledkey
char
30
Ledcode
char
50
Ledtunable
char
20
4.2服务器程序设计
4.2.1用户登陆注册编辑的设计
此数据表的设计是将用户时注册的信息保存到数据库中,登陆时查找数据表里的信息通过对比账号和密码,当账号和密码与数据表里的一致判定登陆成功。
密码不一致显示“密码错误”,账号搜索不到表示该账号没有被注册,显示“查无此人”。
编辑是将用户已注册的信息进行修改。
如图4-1所示为登陆和注册的流程。
图4-1登陆注册流程图
首先服务器连接MySQL,用PHP语言编写的是服务器连接数据库的语句与MySQL里的数据库连接。
通过PHP语言编写程序访问服务器的控制终端将用户信息向用户表添加数据。
主要利用的是服务器通PHP语言对MySQL进行数据的增删改查。
在注册成功后同时为用户创建新表以用户账号命名记录用户登陆时间,如图4-2所示。
图4-2用户登陆时间记录图
修改用户信息同样是利用的是PHP语言对MySQL进行增删改查。
在登陆、注册、修改成功或失败后都会反馈出信息以供手机端判断。
4.2.2灯光控制与搜索的设计
手机应用控制灯是访问服务器中PHP语言的程序是对MySQL中的table_led表里数据的增删改查。
“ledstate”项的值是表示的是当前的灯的状态,“ledkey”项的值是手机控制灯光将要改变成的状态。
在编写程序中用到了JSON数据解析,LED1的数据格式表示为:
{"ledname":
"LED1","ledstate":
"close","ledcode":
"640582115","ledtunable":
"yes"}在手机接收到此条数据后可以查看灯的状态、灯的名字、控制器的唯一编码等,该控制器是否可调的数据需要一次传输方便手机端去解析。
手机接收到数据后将分配到各个部分。
反馈到手机界面可以让用户看到。
4.2.3ESP8266访问服务器设计
控制器端使用ESP8266的透传模式打包成HTTP格式访问服务器同样是对MySQL中的table_led表里数据的增删改查。
主要是接收ledkey项里的值,并将状态值发送给服务器并写入ledstate项中。
如图4-3所示
图4-3硬件控制端访问流程图
5手机应用的设计与实现
5.1Android系统平台简介
图5-1为Android系统的体系结构
Android是一种基于Linux内核的操作系统,一般运用于移动平台,并且源代码是开放的。
Android系统的构建如图5-1所示。
5.2程序流程框图
本设计使用手机作控制终端。
编写手机应用程序,赋予手机应用应有的功能完成手机端的设计。
如图5-2为手机应用流程图。
图5-2手机应用流程图
5.3应用程序设计与实现
5.3.1手机应用界面的设计
在控制和查看灯光控制端之前,用户首先需要进行登录验证,验证成功进入灯控界面。
系统软件的开始界面使登录界面,用户要输入账号和密码,经过服务器系统验证是否存在该用户,密码是否正确,验证成功界面跳转,第一次使用还需要进行注册。
然后点击登录键,手机将用户名与密码通过局域网Wi-Fi网络发送到服务器,等待反馈,验证成功后即进入到操作界面初始界面。
如图5-3为登陆界面,图5-4为注册界面。
图5-3用户登录界面图5-4用户注册界面
图5-5灯控主界面图5-6灯搜索界面
用户登录成功后会进入灯控界面,如图5-5所示,进入界面后界面为空需要点击“添加灯”按钮进入搜索灯界面,如图5-6所示。
点击条目添加灯重新跳转到灯的界面,这两个界面都是遵循规定的布局文件显示出的这些界面,即为灯光控制和搜索界面。
在手机应用中使用用户注册的信息有时需要修改,信息修改界面如图5-7所示,在灯的主控界面点击“用户信息修改”按钮。
即可跳转至该页面,遵循在Androidstudio中的布局文件显示出的这些界面。
用户在添加成功某一个灯后要修改灯名,点击Item条目里的编辑按钮跳转至编辑界面如图5-8,用户不想控制此灯时可以点击“删除此灯”按钮,即可在等主控界面删除该灯。
图5-7用户信息修改界面图5-8灯编辑界面
5.3.2手机应用后台运行程序的设计
手机应用进行登陆注册的流程如图5-9所示,进入手机应用后会进入登陆主界面在主界面的Activity中先连接已经设置完成的布局文件,初始化各个控件的id,对“登陆”和“注册”按钮进行监听。
点击“注册”的按钮会跳转到注册页面。
点击“登陆”程序会执行监听内的程序,首先是判断EditText里的字符串是否为空,若为空会给出提示,若不为空则继续执行。
要访问服务器需要创建子线程,只有在子线程中去访问网址这样主程序才不会报错,手机应用才不会卡死。
Android手机访问服务器时用到HttpURLConnection协议。
程序中使用的是GET的请求方式,访问完成后得到的反馈信息,程序中对HTTP状态码进行判断,当HTTP状态码为200时说明访问成功并将数据存放到字符串中。
在Handler中进行数据解析和对比判断,是否登陆或注册成功。
Handler是异步消息处理机制。
服务器请求的时间较长并且又具有不确定性,所以要在子线程执行数据访问并且在Handler中处理数据。
图5-9手机登陆注册流程图
灯光控制界面和灯光搜索界面的程序的实现,界面的布局文件主要使用是ListView显示状态并控制灯。
在开发软件中自定义ListView的布局如图5-11所示,设计实现左侧图片显示灯光状态,TextView分别显示灯名、是否为可调灯、灯的唯一码。
Button分别控制三种灯的状态、关灯和编辑灯。
程序主要在新建类LedAdapter中实现的。
使用子线程处理接收到的JSON数据,分析数据判断照明灯的状态以图片不同亮度表现出来。
点击“编辑”按钮跳转界面用于修改照明灯的名称或者把该灯移除灯控主界面。
使用“开灯1”、“开灯2”、“开灯3”、“关灯”监听按钮发出数据请求改变灯的状态。
搜索界面的程序在启动Activity直接进行服务器访问获取数据,使用控件显示全部的照明灯,以供用户选择并可以实现点击Item即可添加灯到主界面。
使用到了对于Item的监听,跳转界面并传输数据。
并将添加的数据进行保存到文件中和字符串数组中,以方便下次使用能够继续显示在主界面,避免重复添加。
图5-11控制界面Item的布局图5-12搜索界面Item的布局
6系统测试
在灯光控制器的硬件部分完成,服务器程序编写和调试结束,手机应用软件编程和调试结束后,需要本次设计进行一个全面的测试,来验证系统的功能的实现和稳定性。
系统测试分为功能测试和性能测试。
性能测试主要检验系统的稳定性。
6.1功能测试
检测系统功能是否完整,是否符合本次设计中的设定功能。
每个模块之间能否正常通信,每个模块的功能是否实现。
本次测试是对其主要功能进行测试。
6.1.1硬件控制端部分测试
将单片机处于复位状态,并与外部电路连接,焊接好的硬件实物图如图6-1所示。
图6-1硬件实物图
将服务器与灯光控制器连接到同一局域网下。
通过测试,通过改变服务器数据库的值改变灯的状态,进行相应的修改操作,即可实现对灯光控制器控制并开关50次。
测试出控制器可以实时做出反应,可见设备开关反应灵敏,时间