资源描述
I基于安卓和基于安卓和 ESP8266ESP8266 的室内灯光控器设计的室内灯光控器设计 摘要 社会在发展,科技在进步,智能手机几乎人手一部,Wi-Fi 作为无线通信技术已经非常成熟,人们随时可以连接 Wi-Fi 上网冲浪,如今各种产品和设备都朝着智能化方向发展。使用 Wi-Fi 技术来对各种智能设备进行远程控制更加符合实际需求。通过物联网技术实现对智能设备进行无线远程控制,极大方便了人们的生产生活。本设计是基于物联网开发一款简单实用的室内灯光控制器,使用智能手机对室内灯光进行无线控制。通过使用 ESP8266 芯片和 STM32F103 单片机组成控制端部分,使用ESP8266 模块无线传输数据,对室内灯光控制。并搭建一个服务器创建数据库进行用户管理和控制器的管理。创建安卓手机应用,手机连接局域网实现用户登陆注册,灯光控制器的增删改查等功能。实现手机控制室内灯光完成此次设计。关键词:关键词:STM32F103 Android Wi-Fi ESP8266 IIDesign of Indoor Lighting Controller Based on Android and ESP8266ABSTRACTIn the development of society, science and technology in progress, smart phones almost one hand, Wi-Fi as a wireless communication technology has been very mature, people can connect to Wi-Fi surfing at any time, now all kinds of products and equipment are developing towards the direction of intelligence. Using Wi-Fi technology for remote control of various intelligent devices is more in line with the actual needs. Through the Internet of things technology to achieve intelligent remote wireless control devices, greatly facilitated peoples production and life.This design is based on the Internet of things to develop a simple and practical indoor lighting controller, using smart phones to control indoor lighting wireless. The control part is composed of ESP8266 chip and STM32F103 microcontroller, and the ESP8266 module is used for wireless data transmission to control indoor lighting. And build a server to create a database for user management and controller management. Create Android mobile applications, mobile LAN connection to achieve user login registration, add and delete the lighting controller and other functions. The mobile phone controls indoor lighting to complete the design.KEY WORDS:STM32F103 Android Wi-Fi ESP8266 1目目 录录摘 要.ABSTRACT .前言.11 概述.21.1 设计背景 .21.2 应用前景 .22 灯光控制器总体设计方案.22.1 总体设计概述 .22.2 总体设计的需求分析 .22.3 系统整体架构的设计 .32.3.1 网络通信技术方案的选择.32.3.2 控制终端操作系统的选择.42.3.3 无线通信协议的选择.53 硬件控制器的设计与实现.53.1 控制器的主要芯片和模块 .63.1.1 主控芯片 STM32F103 .63.1.2 ESP8266 模块 .73.1.3 LED 灯的控制电路 .93.1.4 继电器控制电路.93.1.5 电源供电电路.103.2 控制器的程序的设计与实现 .113.2.1 控制器程序流程图.113.2.2 Wi-Fi 模块的程序设计 .113.2.3 灯光控制模块控制设计.134 服务器的设计与实现.134.1 服务器数据库的设计 .144.1.1 登陆注册数据表格的设计.144.1.2 灯光状态数据表格的设计.144.2 服务器程序设计 .154.2.1 用户登陆注册编辑的设计.1524.2.2 灯光控制与搜索的设计.164.2.3 ESP8266 访问服务器设计 .165 手机应用的设计与实现.175.1 Android 系统平台简介.175.2 程序流程框图 .185.3 应用程序设计与实现 .185.3.1 手机应用界面的设计.185.3.2 手机应用后台运行程序的设计.206 系统测试.226.1 功能测试 .226.1.1 硬件控制端部分测试.226.1.2 手机应用部分测试.236.1.3 总体测试.236.2 性能测试 .246.2.1 系统稳定性测试.246.2.2 硬件断电恢复测试.247 总结与展望.247.1 总结 .247.2 展望 .25参考文献.26附录.27致谢.301前前言言现如今网络无线通信技术发展很迅速,网络技术是可以将电脑、手机、平板等终端通过无线接入互联网。Wi-Fi 已经是网络接入的主流标准。Wi-Fi 热点覆盖范围越来越广,Wi-Fi 技术已经被运用在各种便携式智能设备上。对 Wi-Fi 技术应用产品,人们生活中运用到的越来越多,人们也希望能够通过 Wi-Fi 技术来控制生产和生活,使工作和生活更加便捷。基于此目的,本文设计了一种基于 Android 平台和 Wi-Fi 技术的灯光控制系统。该系统在硬件方面,采用 STM32F103 作为控制核心,通过 ESP8266Wi-Fi 模块进行联网。这两款芯片成本低,功耗小,开发方便且具有较高的处理速度。采用 Keil5 软件对单片机进行开发。在电脑安装 Tomcat 作为本次系统设计的服务器。使用 Android Studio 进行手机 App 开发可利用手机 App 进行灯光控制。本设计的目的是满足社会的现实需求,给人们提供更多的便利在家中随时可以用手机控制家里的照明灯。21 概述1.1 设计背景放眼全球,物联网优势愈加明显,现如今人们置身于网络环境中,各种智能设备通过网络进行各种数据和信息的交换。Wi-Fi 为智能家居领域带来了新的发展机遇。我国物联网相对落后,还处于发展初期,智能家居在日常生活中被广泛应用,在工业应用领域发展较快。中国的智能家居领域进入整合期。其存在的主要问题是:缺乏标准;产业核心技术不达标;产业链不够完整,合作体系不完善;产业间的合作困难。1.2 应用前景基于安卓和 ESP8266 的室内灯光控器设计是基于物联网开发的,属于智能家居照明部分。以物联网为基础智能家居市场非常有潜力。能够使传统产业的发展模式在一定程度上改变,能够使经济发展、资源、环境之间的矛盾得到改善,物联网的应用,有利于资源进行更高效的利用。具有极大的包容性和开放性,促进了信息的传输和交流,推动开放和合作。智能家居在未来前景广阔。2 灯光控制器总体设计方案2.1 总体设计概述基于安卓和 ESP8266 的室内灯光控制器的设计,目的是让人们的生活更加舒适方便。为普通家用的照明灯添加功能,使灯光控制器更加贴合实际需求,更人性化的服务。本次设计可分为手机应用的设计和硬件控制端的设计。本设计应避免在短时间内被市场所淘汰,并且保证性价比高。使产品大众化让人们都可以体会到舒适便捷的生活。在本系统的设计过程中,还应充分考虑现阶段人们对家居和生活的进一步需求,提供全新生活方式。系统设计中的各个部分有预留下接口方便升级和扩展新功能。2.2 总体设计的需求分析本设计将分成硬件部分灯光控制器部分、Android 平台设计部分和服务器部分进行介绍。本控制器的设计采用 ESP8266 模块无线传输,实现服务器到模块串口的数据传输,3通过手机发送控制灯光的指令到服务器。同时将灯光的状态通过 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 几种无线通信技术的比较4名称Wi-FiZigBeeBluetoothUWBNFCRFTD传输速度54Mbps250kbps723.2kbps100Mbps424kbps1kbps通信距离100m75m10m10m20cm1m频段2.4GHz2.4GHz2.4GHz3.1-10.5GHz13.56MHz868-915MHz安全性低中等高高极高低国际标准IEEE802.11bIEEE802.11gIEEE802.15.4IEEE802.15.1x未制定ISO/IEC18092为统一功耗10-50mA5mA20mA10-50mA10mA10mA由表 3-1 可以得知,通过几种无线技术的比较 Wi-Fi 技术被运用的最为普及,给用户带来更好的上网体验。Wi-Fi 技术的传输速度比较快。结合实际需求本选用 Wi-Fi 技术作为无线通信技术传输数据。2.3.2 控制终端操作系统的选择手机操作系统的选择需要实用性强并且非常普及的嵌入式操作系统,同时还要考虑操作系统的开发语言的简单易上手、易扩展,好移植等。目前常见的嵌入式操作系统有Android、 iOS、 Windows Phone、Symbian、 Linux 和 Palm OS。对这些嵌入式操作系统的各项指标列表来进行比较。如表 3-2 所示。表 3-2 几种嵌入式操作系统的比较名称AndroidIOSWindow PhoneSymbianLinuxPalm OS开发语言Java、C、C+ObjC、C、C+C+、C#Java、C、C+C、C+Java、C、C+、VB市场占有率很高高高低低低是否开源是否否否是否扩展性好一般较好一般好差功耗高高高较低中低可移植性很强弱较弱弱很强一般选择操作系统应用户站在用户的角度,人机交互界面要流畅,数据处理速度快。通过对各种操作系统各个方面的特点进行分析和比较之后,本次设计选择有 Android 系统的手5机作为基础进行开发。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 的处理器,性能稳定,成本低廉,处理速度快,有丰富的内部资源。能够满足6灯光控制器硬件控制端的需求。STM32 的引脚如图 3-1 所示:要保证 STM32F103 能够正常工作,需要几个简单电路组成最小系统,最小系统主要包括:外部晶振电路、复位电路、电源供电电路等,STM32 的系统电路如图 3-2 所示。图 3-1 单片机 STM32F103 引脚图图 3-2 单片机最小系统原理图7本设计主要使用到了 STM32F103 中的定时器、串口通信、I/O 口输出 PWM 和 I/O 口输出高低电平。定时器定时一秒用于访问服务器获取控制数据,串口通信用于 ESP8266模块的通信,I/O 口控制照明灯亮灭。3.1.2 ESP8266 模块ESP8266 可以应用于大部分微控制器的设计中。ESP8266 具有快速切换模式、配合低功耗操作、故障排除等特点。ESP8266 更加适用于移动设备、可穿戴电子设备。图 3-3 ESP8266 接线原理图表 3-1 常用 AT 指令AT+CWMODE=x设置模式 1:STATION 2:AP 3: STATION+APAT+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=1ESP 能连接方式(手机软件连接)AT+CIPSEND透传模式AT+CWLAP列出当前可用 AP如图 3-3 所示为 ESP8266 的接线原理图而 ESP8266 与微控制器之间的通信方式是串8口通信。MCU 通过串口发送 AT 指令对 ESP8266 进行设置和数据传递。使用串口工具发送 AT 指令对 ESP8266 进行复位、查看版本信息、连接 Wi-Fi、设置模式等操作。表 3-1为常用的 AT 指令。3.1.3 LED 灯的控制电路使用 LED 灯作为照明灯的方案,LED 灯珠电流很大,单片机无法点亮,需要一个驱动电路,此设计中选择 ULN2003 作为驱动芯片。ULN2003 是一款高耐压、大电流复合晶体管阵列的芯片。多用于智能仪表、单片机、PLC 等控制电路中。可直接驱动继电器、步进电机、较大功率的 LED 灯珠等负载。本设计的灯光控制部分利用了 ULN2003 的电流增益高和带负载能力强的特性。设计了如图 3-4 所示的电路,使用到了 NPN 复合晶体管。可以控制灯不同状态,通过单片机控制输出 PWM 的占空比不同 LED 灯可呈现不同的亮暗程度。添加电容可以进行滤波同时增加电源的稳定性。图 3-4 LED 灯电路设计原理图3.1.4 继电器控制电路目前家中使用的都是 220V 供电的照明灯,本次设计了另一个方案就是使用继电器控制家用照明灯开闭。灯光控制器的设计采用了电磁继电器。当电磁线圈通电导通衔铁被吸下常开端导通有。所以此种方案的灯光照明只有开关两种状态。本设计灯光控制部分的继电器电路如图 3-5 所示,照明灯接继电器常开端,添加二极管保护电路避免电磁线圈回流,损坏电路,驱动继电器的电流很大需要三极管放大电流。这样即可保护芯片还可以保护其他电路。这样就可以利用 I/O 口直接控制照明灯的开关。9图 3-5 继电器电路原理图3.1.5 电源供电电路本设计采用 220V 转 5V 模块供电,普通家庭用电都为 220V,直接使用 220V 电源供电可以增加本设计的通用性,但是 STM32F103 芯片和 ESP8266 模块都需要 3.3V 供电,如图 3-6 所示电源电路。本设计采用 ME6211 降压芯片。本设计中 ESP8266 模块对电流需求较高,所以 ME6211 是符合设计的需求的。电路中采用了很多电容进行滤波和稳压,稳定的电压可以保证芯片和模块的正常工作。图 3-6 电源电路原路图103.2 控制器的程序的设计与实现3.2.1 控制器程序流程图本设计采用 STM32 为控制芯片,通过编程,要实现的各种功能,实现灯光控制程序和无线通信程序并建立联系控制完成控制器的设计。程序流程如图 3-7 所示。图 3-7 主程序流程图3.2.2 Wi-Fi 模块的程序设计ESP8266 与 STM32F103 之间的通信是通过串口向 Wi-Fi 模块发送 AT 指令。11ESP8266 的工作流程如图 3-8 所示。图 3-8 ESP8266 工作流程图在程序中把每一个 AT 指令以函数的形式表现出来,这样主程序中调用指令的函数以达到控制 ESP8266 的目的。调用函数可以使主函数更加简洁易懂。以测试指令“AT”为例。如图 3-9 所示。在程序中直接调用函数 ESP8266_AT_Test 函数即可以向模块发送指令并可以检测到模块反馈回的信息。判断反馈信息中是否含有“OK”字符,若含有 OK则说明测试成功。可以继续执行下面的程序。若数据中没有“OK”则说明 ESP8266 还没有准备好需要等待。图 3-9 测试指令函数ESP8266 测试成功后已经完成启动为模块进行配置,设置工作模式为 Station 模式,12STM32F103 通过串口给 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 语13言编写服务器后台程序。组成完整的服务器系统架构。4.1 服务器数据库的设计4.1.1 登陆注册数据表格的设计登录模块的数据库主要存储的是用户的账号相关信息。将用户 id,账号名称和密码用户名和年龄放在一个 table_user_password 表中,能够快速的验证用户的身份。表 4-1即为 table_user_password 表。用户的登录密码存健在密码字段中,为了保证用户的密码安全性,不被泄露。userPassword 字段应对其先加密后存储。密码的加密方式是 md_5,之后再将其存储到数据库中。表 4-1 table_user_password 表table_user_password 字段数据类型数据长度userIdint10userAccountchar50userPasswordchar30usernamechar50userAgechar204.1.2 灯光状态数据表格的设计table_led 表格用于存储灯光控制器的相关信息,如表 4-2 所示。table_led 表含有灯光节点 _id 、灯光名称 ledname 可以在手机端直接更改。Ledcode 唯一码是识别每个控制器的识别标准,是控制器芯片的唯一编码是独一无二。通过改变 ledkey 的值控制灯的开关。Ledstate 表示控制器的反馈回的状态。Ledtunable 反馈灯是否可调。表 4-2 table_led 表table_led 字段数据类型数据长度_idint20Lednamechar50Ledstatechar30Ledkeychar30Ledcodechar5014Ledtunablechar204.2 服务器程序设计4.2.1 用户登陆注册编辑的设计此数据表的设计是将用户时注册的信息保存到数据库中,登陆时查找数据表里的信息通过对比账号和密码,当账号和密码与数据表里的一致判定登陆成功。密码不一致显示“密码错误” ,账号搜索不到表示该账号没有被注册,显示“查无此人” 。编辑是将用户已注册的信息进行修改。如图 4-1 所示为登陆和注册的流程。图 4-1 登陆注册流程图首先服务器连接 MySQL,用 PHP 语言编写的是服务器连接数据库的语句与 MySQL里的数据库连接。通过 PHP 语言编写程序访问服务器的控制终端将用户信息向用户表添加数据。主要利用的是服务器通 PHP 语言对 MySQL 进行数据的增删改查。在注册成功15后同时为用户创建新表以用户账号命名记录用户登陆时间,如图 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.3 ESP8266 访问服务器设计控制器端使用 ESP8266 的透传模式打包成 HTTP 格式访问服务器同样是对 MySQL 中的 table_led 表里数据的增删改查。主要是接收 ledkey 项里的值,并将状态值发送给服务器并写入 ledstate 项中。如图 4-3 所示16图 4-3 硬件控制端访问流程图5 手机应用的设计与实现5.1 Android 系统平台简介图 5-1 为 Android 系统的体系结构Android 是一种基于 Linux 内核的操作系统,一般运用于移动平台,并且源代码是开17放的。Android 系统的构建如图 5-1 所示。5.2 程序流程框图本设计使用手机作控制终端。编写手机应用程序,赋予手机应用应有的功能完成手机端的设计。如图 5-2 为手机应用流程图。图 5-2 手机应用流程图5.3 应用程序设计与实现5.3.1 手机应用界面的设计在控制和查看灯光控制端之前,用户首先需要进行登录验证,验证成功进入灯控界面。系统软件的开始界面使登录界面,用户要输入账号和密码,经过服务器系统验证是否存在该用户,密码是否正确,验证成功界面跳转,第一次使用还需要进行注册。然后点击登录键,手机将用户名与密码通过局域网 Wi-Fi 网络发送到服务器,等待反馈,验证成功后即进入到操作界面初始界面。如图 5-3 为登陆界面,图 5-4 为注册界面。18 图 5-3 用户登录界面 图 5-4 用户注册界面 图 5-5 灯控主界面 图 5-6 灯搜索界面用户登录成功后会进入灯控界面,如图 5-5 所示,进入界面后界面为空需要点击“添加灯”按钮进入搜索灯界面,如图 5-6 所示。点击条目添加灯重新跳转到灯的界面,这两个界面都是遵循规定的布局文件显示出的这些界面,即为灯光控制和搜索界面。在手机应用中使用用户注册的信息有时需要修改,信息修改界面如图 5-7 所示,在灯19的主控界面点击“用户信息修改”按钮。即可跳转至该页面,遵循在 Android studio 中的布局文件显示出的这些界面。用户在添加成功某一个灯后要修改灯名,点击 Item 条目里的编辑按钮跳转至编辑界面如图 5-8,用户不想控制此灯时可以点击“删除此灯”按钮,即可在等主控界面删除该灯。 图 5-7 用户信息修改界面 图 5-8 灯编辑界面5.3.2 手机应用后台运行程序的设计手机应用进行登陆注册的流程如图 5-9 所示,进入手机应用后会进入登陆主界面在主界面的 Activity 中先连接已经设置完成的布局文件,初始化各个控件的 id,对“登陆”和“注册”按钮进行监听。点击“注册”的按钮会跳转到注册页面。点击“登陆”程序会执行监听内的程序,首先是判断 Edit Text 里的字符串是否为空,若为空会给出提示,若不为空则继续执行。要访问服务器需要创建子线程,只有在子线程中去访问网址这样主程序才不会报错,手机应用才不会卡死。Android 手机访问服务器时用到 Http URL Connection 协议 。程序中使用的是 GET 的请求方式,访问完成后得到的反馈信息,程序中对 HTTP 状态码进行判断,当 HTTP 状态码为 200 时说明访问成功并将数据存放到字符串中。在 Handler 中进行数据解析和对比判断,是否登陆或注册成功。Handler 是异步消息处理机制。服务器请求的时间较长并且20又具有不确定性,所以要在子线程执行数据访问并且在 Handler 中处理数据。图 5-9 手机登陆注册流程图灯光控制界面和灯光搜索界面的程序的实现,界面的布局文件主要使用是 ListView 显示状态并控制灯。在开发软件中自定义 ListView 的布局如图 5-11 所示,设计实现左侧图片显示灯光状态,TextView 分别显示灯名、是否为可调灯、灯的唯一码。Button 分别控制三种灯的状态、关灯和编辑灯。程序主要在新建类 LedAdapter 中实现的。使用子线程处理接收到的 JSON 数据,分析数据判断照明灯的状态以图片不同亮度表现出来。点击“编辑”按钮跳转界面用于修改照明灯的名称或者把该灯移除灯控主界面。使用“开灯1” 、 “开灯 2” 、 “开灯 3” 、 “关灯”监听按钮发出数据请求改变灯的状态。搜索界面的程序在启动 Activity 直接进行服务器访问获取数据,使用控件显示全部的照明灯,以供用户选择并可以实现点击 Item 即可添加灯到主界面。使用到了对于 Item 的监听,跳转界面并传输数据。并将添加的数据进行保存到文件中和字符串数组中,以方便下次使用能够继续显示在主界面,避免重复添加。21 图 5-11 控制界面 Item 的布局 图 5-12 搜索界面 Item 的布局 6 系统测试 在灯光控制器的硬件部分完成,服务器程序编写和调试结束,手机应用软件编程和调试结束后,需要本次设计进行一个全面的测试,来验证系统的功能的实现和稳定性。系统测试分为功能测试和性能测试。性能测试主要检验系统的稳定性。6.1 功能测试检测系统功能是否完整,是否符合本次设计中的设定功能。每个模块之间能否正常通信,每个模块的功能是否实现。本次测试是对其主要功能进行测试。6.1.1 硬件控制端部分测试将单片机处于复位状态,并与外部电路连接,焊接好的硬件实物图如图 6-1 所示。图 6-1 硬件实物图22将服务器与灯光控制器连接到同一局域网下。通过测试,通过改变服务器数据库的值改变灯的状态,进行相应的修改操作,即可实现对灯光控制器控制并开关 50 次。测试出控制器可以实时做出反应,可见设备开关反应灵敏,时间延迟也较小。6.1.2 手机应用部分测试 打开手机 App 并保证手机和服务器在同一局域网内。通过测试,开始对手机注册登陆进行测试,注册登录成功后可以在服务器端数据库中看到注册信息,多次测试都能上传到服务器并在下次可以继续登陆,同时还可以更改用户信息。实现搜索灯点击添加不能重复添加测试,多次点击同一个灯都不能同时加。控制灯测试点击开关灯可以看到数据库中有关灯的表里的值在改变。多次进行测试数据库都可以接收到接收数据稳定。6.1.3 总体测试测试手机 App 控制照明灯并保证灯光控制器和手机 App 在同一局域网内。开启服务器,使用手机测试灯光控制器的功能,使用手机多次控制灯光控制器,控制器都可以及时的做出反应,并把灯的状态信息反馈到手机上。多次测试系统稳定,灯光控制器有 1秒左右的反应时间,时间延迟小,但手机端的灯光状态反馈速度稍慢在 4 秒左右。6.2 性能测试性能测试中包括系统稳定性测试和硬件断电恢复测试,通过模拟特殊情况和正常情况的模拟测试,测试每项功能与设计要求是否相同。6.2.1 系统稳定性测试本次测试对系统进行了 24 小时的连续开机,检验系统能否继续正常工作。测试结果表明,在连续 24 小时的工作状态下,系统可以执行,并未出现异常状况。6.2.2 硬件断电恢复测试 断电测试是为了验证本次设计可靠性,在多次断电通电的状态下,系统设计的软硬件都没有损坏,并能够继续正常的工作,功能完好。将系统正常打开并运行,然后切断电源,系统重新启动,系统能够正常运行。重复多次实验,系统仍然运行稳定。对系统的断电恢复测试一共进行 20 次,测试过程中,在上电后,系统都能够自动恢复,并且恢复后各项功能均可以正常运行。237 总结与展望7.1 总结人们生活变化日新月异是科技快速的发展的表现,物联网的出现更是给家居生活带来了更多的便利。本设计是基于 Android 平台和 Wi-Fi 技术的,实现了对家中照明灯的实时控制和监测。本次设计的优势有:1.使用 Wi-Fi 技术作为无线通信技术。成本低并且减少布线,使用 ESP8266 模块安装简单操作方便,大多数人都可以使用本次设计产品。2.基于 Android 平台设计开发手机应用。Android 系统的源代码公开,迁移性好,日后方便对软件升级,各种新功能不断出现越来越强大,并且 Android 系统中也在不断的融入智能家居的相关功能。3.关于灯光控制器的设计是符合市场发展的,结合了 Android 系统和 Wi-Fi 技术,人们都很容易接受。在这两者的结合下做了本次设计,也是为了更好迎合消费者的需求。7.2 展望由于各种客观原因,本设计仍然不够完善,不能满足所有的用户需求。现如今只实现基础功能,可以说只表现出了智能家居的部分功能,还有很多问题需要解决。1.控制系统延迟。本次设计搭建的物联网系统只在局域网中实现还需要扩展到广域网中,因为网速、带宽和设备等原因导致对灯的控制还存在延时。尽可能缩短延时优化各部分的程序。2.功能的拓展。本设计还可以利用在家居的其他设备上,例如:控制家中的窗帘,控制空调,检测烟雾进行报警等。实现较完整的智能家居系统,这些功能还要更多时间的进行研究。3.系统的安全性问题。本设计会用到用户的资料,人们在选择智能家居产品时一定会考虑其对个人信息的保护,因此需要对数据进行非常严苛的加密处理。为了使系统的安全性更高,这部分仍需要投入更多时间精力。24参考文献参考文献1 李朝清PC 机及单片机数据通信技术 M. 北京航空航天大学出版社, 2000.2 胡汉才单片机原理及其接口技术 M. 清华大学出版社, 1996.3 DavidM.Buchla,Gary Snyder Multisim Experiments for DC/AC Digital and Devices Courses J. Prentice Hall, 2010,8.4 彭伟单片机 C 语言程序设计实例 100 例 M. 西安: 电子工业出版社, 1999: 23-45.5 万福君单片机微机原理系统设计与应用 M. 中国科技大学出版社, 2004.6 赵光宙信号分析与处理(第二版)M. 机械工业出版社, 2010.7 张国雄测控电路(第四版)M. 机械工业出版社, 2011.8 谭浩强C 语言程序设计(第三版)M. 清华大学出版社, 2005.9 M.MorrisMano,Michael Ciletti Digital Design Electronic Industry Press J. Prentice Hall, 2005.10 刘爱军物联网技术现状及应用前景展望 J.物联网技术,2012(01).11 陈煜基于 Android 系统的手机文件管理器的设计与实现 C. 成都: 西南交通大学, 2012 (9):47-51.12 JamesW.Nilsson,SusanA.Riedel,Electic Circuits,Ninth Edition J.Pubilishing House of Electronics Industry, 2012.13 赵亮, 侯国锐单片机 C 语言编程与实例 M. 北京:人民邮电出版社, 2001, 2: 100-200. 14 刘志红单片机原理及应用 M. 重庆:重庆大学出版社, 2011.15 白家旺,雷腾跃,屈琦凯.浅谈嵌入式系统对智能家居的影响J.广东科技,2015(10):59-60.16本刊讯如何选择适用的智能家居系统J.中国公共安全:学术版,2012(12):56-57.17魏宏飞,黄宗建,吴会敏基于物联网的智能家居系统探究J.电子测试,2013(12):79-80.18本刊讯 “公安物联网建设与应用战略规划研究”项目启动J.中国公共安全:学术版,2013(19):40-40.2519王晖物联网智能家居的发展前景一物联网时代智能家居的发展趋势J.智能建筑,2013: 16-19.20刘丽娜物联网引领智能家居新生活J.智能建筑与城市信息,2011(2):21-25.26附附录录硬件部分代码:void ESP8266_WebFetch_Test ( void )char cStrInput 100 = 0 , * pStrDelimiter 2, * pBuf, * pStr;u8 uc = 0;int stated=0;char *state;char close=close;char opena=opena;char openb=openb;char openc=openc; PC_Usart ( rnESP8266 灯光控制器的设计rn );ESP8266_Rst (); Delay_ms ( 3000 );ESP8266_Choose ( ENABLE );/判断 WiFi 处于那种模式;ESP8266_AT_Test ();/测试 AT 指令ESP8266_Net_Mode_Choose ( STA ); /设置 WiFi 的模式ESP8266_Cmd ( AT+CWLAP, OK, 0, 5000 );/查找 WiFi 名/*加入网络*/ doPC_Usart ( rnInternet 的 WiFi 名称和密钥,名称字符+英文逗号+密钥字符+空格rn );scanf ( %s, cStrInput );/输出字符串PC_Usart ( rn 稍等片刻 rn );pBuf = cStrInput;uc = 0;while ( ( pStr = strtok ( pBuf, , ) ) != NULL )pStrDelimiter uc + = pStr;pBuf = NULL;27 while ( ! ESP8266_JoinAP ( pStrDelimiter 0, pStrDelimiter 1 ) );/连接 WiFi /连接服务器while ( ! ESP8266_Link_Server ( enumTCP, 192.168.137.1,8001, Single_ID ) );/连接服务器端口 8001ESP8266_UnvarnishSend ();/使用透传模式state=close;Delay_ms ( 1000 );PC_Usart (1 n);TIM2_Init(9999,7199);Delay_ms ( 1000 );/TIM_Cmd(TIM2,ENABLE);while(1)if( GPIO_ReadOutputDataBit( GPIOC, GPIO_Pin_15 )=1)GPIO_ResetBits( GPIOC, GPIO_Pin_15);if(stated=1)stated=0;else stated=1;switch(stated)case 0: state=close;GPIO_ResetBits( GPIOC, GPIO_Pin_14 );break;case 1: state=opena;GPIO_SetBits( GPIOC, GPIO_Pin_14 );break;default:state=close;GPIO_ResetBits( GPIOC, GPIO_Pin_14 );break;ESP8266_key ( state );Delay_ms (500); if(flag=1)flag=0; ESP8266_control ( state );28if(strstr(strEsp8266_Fram_Record .Data_RX_BUF,chuangclose) ) PC_Usart (关灯); state=close;stated=0;/调整亮度 PC14 关 if( strstr(strEsp8266_Fram_Record .Data_RX_BUF,chuangopen) ) PC_Usart (开灯); state=opena;stated=1;/调整亮度 PC14 if( strstr(strEsp8266_Fram_Record .Data_RX_BUF,chuangopen) ) PC_Usart (开灯); state=openb;stated=1;/调整亮度 PC14 if( strstr(strEsp8266_Fram_Record .Data_RX_BUF,chuangopen) ) PC_Usart (开灯); state=openc;stated=1;/调整亮度 PC14 if(strstr(strEsp8266_Fram_Record .Data_RX_BUF,400) ) break;/跳出循环 Delay_ms ( 10 ); switch(stated)case 0: GPIO_ResetBits( GPIOC, GPIO_Pin_14 );break;case 1: GPIO_SetBits( GPIOC, GPIO_Pin_14 );break;default:GPIO_ResetBits( GPIOC, GPIO_Pin_14 );break;29致致谢谢本设计和论文的制作都是在我的指导老师张志来老师的耐心指导下才得以顺利完成的。我为能选到老师的课题而感到由衷的开心,老师有着严谨的教学态度、积极进取的心态、风趣幽默的性格,更掌握厚实的专业知识,让我受益匪浅。在整个设计指导过程中,把设计中存在的所有边边角角的问题全部指出,并给予我正确而严谨的建议,我不仅仅学到专业的电路知识,学到了查询多种多样资料的方法,更在日常交流中习得了老师的品行,人变得精神而又进取。其次我还要感谢我的同学们,感谢他们的支持和帮助,使我顺利的完成了论文。 在此,我还想对培养过我的信息工程学院的老师们表示深深的感谢,同时也对提供参考文献的学者们表示感谢。
展开阅读全文