第1章 概 述
(作者小波QQ463431476)
(来源http://blog.chinaaet.com/zhaocundang/p/5100017645博客)
(来源 http://www.cnblogs.com/xiaobo-Linux/博客)
1.1 设计背景与意义
安卓物联系统的设计主要是解决安卓手机APP与智能硬件的结合,将互联网和生活中使用的家用电器结合。像智能家居那样,未来的发展离不开互联网,更离不开物联体系。手机通过4G网络就可以与家庭网络相连接,个人不在家中,就可以知道家里发生的所以事情,只要动一动手指头,在手机APP上点一点,远在千里之外就可以控制家里的台灯,风扇,热水器等家用电器,如果回家晚,就可以提前打开APP,通过网络打开家里的热水器。此外还可以远程监控家里的情况,给生活提供更多的便捷与快乐。物联系统APP的设计朝着智能化发展方向,与物联网相结合,为生活带来方便,为生活增添乐趣。
1.2 设计目标
(1)了解并熟练编写Android代码,了解安卓相关框架,了解安卓开发体系与运行机制,了解Eclipse Android环境的配置。
(2)使用多种Android组件,熟练使用Android多种控件。本软件是基于Eclipse开发环境,采用了Activity, Broadcast Receiver, Service组件,页面菜单采用Navigation Drawer ,每个页面采用Fragment,能任意比例适应手机大小,而且比较灵活。首页采用grid view网格布局,只是采用了横向布局,能够横向滚动的效果,可以快速地打开任意页面,比较方便。
(3)采用语音识别控制。项目中采用科大 讯 飞 语音识别API接口,来语音控制电器,小车,快速方便,而且具有语音文本朗读的功能。
(4)最简约的界面UI设计,采用Tranlucent沉浸式,获得简明友好的界面设计,扁平化简约圆形按钮,导航抽屉的快捷方便,最大限度的节省界面空间布局。
(5)使用Socket 套接字 连接WIFI 并实现传输数据,主要传输字符,用来控制硬件设备的高低电平触发。
(6)实现多种数据存储方式:完成SQLite数据库的存储,主要存储用户登录账号密码;另外一种比较轻快的数据储存方式share preference,主要用来暂时存储WIFI设置信息数据。
(7)实现硬件的焊接工作,主要是对Arduino开发板代码的设计,台灯风扇USB接口以及外部供电接口的设计,舵机连接的方式,摄像头有OpenWrt路由器连接的设置,继电器的焊接,以及平衡车电机驱动模块,MPU6050陀螺仪,Arduino主控,电机码盘和电机的接线方式。
第2章 需求分析
2.1 功能需求
安卓手机物联系统APP可以通过4G网络连接到家庭网络,查看家里的具体情况,可以查看家庭监控,可以远程遥控摄像头向左,向右转动。可以远程控制家里面的电器,例如热水器,台灯,风扇等家庭电器。此外也可以遥控智能平衡车,实现小车的前进,后退,向左,向右等。
2.2 界面需求
(1)登录、注册界面
首先是用户登录界面,用户登录和注册的界面为同一个,用来登录并注册账号密码并且保存在SQLite数据库中。用户可以随时登录并注册相关账号信息,SQLitte数据库保存账号信息使用户信息更加安全,便于维护数据库。
(2)主屏界面
用户主界面用来使用户快速地选择功能,采用GridView,实现了横线滚动,可以使用户有更好的体验。
(3)用户界面
用户界面主要显示用户的信息,采用TextView来显示可以完成什么样的功能。
(4)摄像头界面
摄像头界面主要实现监控视频的实时显示,以及控制监控摄像头向左,向右转动。
(5)网络界面
网络界面主要用来配置用户设置的WIFI地址,视频端口和控制端口号,便于开发维护,采用Share Preference轻量级存储数据,可以方便的保存数据,下次不用再次输入内容。
(6)电器界面
电器界面主要控制台灯、风扇的开关。
(7)语音界面
采用科大讯飞语音API接口,实现语音识别控制电器打开关闭,以及对平衡车的姿态控制。
(8)小车界面控制
主要实现对平衡车的前进、后退、向左、向右的方向控制。
//http://www.cnblogs.com/xiaobo-Linux/ qq463431476 (赵存档编写)
第3章 概要设计
3.1 设计框架图
系统主要分为5大主模块,主要是用户数据模块,摄像头模块,网络配置存储模块, 控制模块,语音识别和语音朗读模块,小车控制模块,系统总体框图如3.1所示:
图3.1 系统设计框图
3.2系统模块框图设计
(1)用户登录/注册模块框图
采用SQLite3数据库作为存储数据的方案,可以方便的维修用户信息。用户登录、注册框图如图3.2.1所示:
图3.2.1系统登录注册框图
(2)摄像头模块框图
摄像头模块主要显示监控画面,以及控制摄像头左转和摄像头右转,如图3.2.2所示:
图3.2.2摄像头框图
(3)网络设置模块框图
网络设置模块主要设置网络的URL地址,网络摄像头的端口号,网络控制端口号,框图如图3.2.3所示:
图3.2.3网络设置模块框图
(4)电器模块框图
电器模块框图主要实现台灯,风扇的打开和关闭,框图如图3.2.4所示:
图3.2.4电器控制模块框图
(5)语音模块框图
语音模块主要实现用语音识别来控制台灯和风扇的开关,平衡车方向的控制。框图如图3.2.5所示:
图3.2.5电器控制模块框图
(5)小车控制模块框图
小车模块主要是控制小车的方向,前进,后退,向左,向右,以及连接WIFI,框图如图3.2.6所示:
图3.2.6小车控制模块框图
3.3 设计框架说明
3.3.1 后台服务
语音识别和语音文本朗读使用了后台服务组件,采用Service的好处就是可以灵活的调用服务,后台运行。语音模块通过Intent Start Service的方式来启动Service服务,调用Stop Service 开关Service服务。服务里面主要实现语音API接口调用,语音识别,获取语音识别的结果,返回给Fragment。
3.3.2 SQLite 数据库存储
用户登录注册模块采用了SQLite数据库,SQLite3数据库用来存储用户的账号密码信息,方便维护用户信息数据。首先建立一个SQLite Helper的类来重载增删 改 查的方法,并且建立Database数据文件,以及建立表格。然后在用户类中自己定义函数实现增删改查。
3.3.3 Share Preference数据存储
Android轻量级的数据存储用来暂时存储用户的偏好设置,非常方便。用户存储的数据都是存放在XML文件中。
3.3.4 Grid View 数据适配器
数据适配器将图片和标题存放到链表数据结构中,显示的时候就以图片或者标题的长度遍历链表,输出完整的图片和文字标题。
3.3.5 Navigation Drawer导航抽屉
导航抽屉就是侧滑出界面菜单,节省空间布局大小。侧滑菜单采用Fragment里面包含一个List View, 采用一个数据适配器,List View里面包含图片和标题。
第4章Arduino开发板硬件方案
4.2.1 Arduino 主控搭建
(1)采用了Arduino Nano 最小板外加一个扩展版,主要用来控制台灯、风扇,语音模块和摄像头舵机,如图4.2.1.1所示:
图4.2.1.1 Arduino Nano 主控板
(2)控制平衡车则是采用了Arduino UNO R3板,如图4.2.1.2所示:
图4.2.1.2 Arduino Uno板
4.2.2 Arduino 台灯、风扇继电器搭建
继电器用来弱电控制强电,给继电器供电,来控制台灯、风扇的打开和关闭,如图4.2.2.1所示:
图4.2.2.1 台灯、风扇继电器
4.2.3 舵机和摄像头的搭建
舵机主要控制摄像头的左转和右转,摄像头用来采集视频图像,如图4.2.3.1所示:
图5.2.3.1 舵机摄像头
4.2.4 SYN6288语音文本合成模块
模块主要用于语音合成,播放台灯“台灯已经关闭”,“台灯已经打开”或者播放“风扇已经关闭”,“风扇已经打开”语音提示音,如图4.2.4.1所示:
图4.2.4.1 SYN6288语音合成模块
4.2.5 OpenWrt 路由器模块
Openwrt简单就是跑在微控制器上的Linux操作系统
路由器主要实现WIFI热点,以及摄像头图像的采集,WIFI串口控制Arduino MCU主控板的工作,如图4.2.5.1所示:
带串口的TX RX GND,然后连接MCU Arduino上的RX TX GND,即可通信(前提是Openwrt上安装ser2net一类的串口转发接收数据软件)
图4.2.5.1 OpenWrt路由器
4.2.5 平衡车整体电路搭建设计
平衡车系统电路搭建主要包括Arduino UNO R3主控制板,L298N电机驱动模块,MPU6059陀螺仪模块,降压模块,其他包括电池,电机等部件,整体设计如图4.2.5.2所示:
图4.2.5.2平衡车整体电路搭建
4.2.6 上部分电路搭建设计
上部分主要是控制台灯、风扇和舵机摄像头的左右转动,如图4.2.6.1所示:
图5.2.6.1 上部分电路设计
第五章测试
5.2.4 语音识别测试
主要看语音识别是否成功,测试图5.2.4
图5.2.4 语音识别测试图
5.2.5 广播发送接收测试
主要测试广播是否发送接收成功,测试图如图5.2.5所示:
图5.2.5 广播测试图
5.2.6 Wi-Fi 发送接收测试
主要测试WIFI是否发送接收成功,测试图如图5.2.6所示:
图5.2.6 WIFI发送接收测试图
5.3 硬件测试过程
5.3.1 台灯风扇的测试
用手机连接Wi-Fi测试是否可以打开和关闭风扇,如图5.3.1所示:
图5.3.1 控制台灯风扇测试图
5.3.2 摄像头和舵机的测试
用手机连接Wi-Fi测试是否可以接收监控图像和舵机左右转动,如图5.3.2所示:
图5.3.2 摄像头和舵机测试
5.3.3 智能平衡车的测试
用手机连接Wi-Fi测试平衡是否可以前进后退向左和向右,测试如图5.3.3所示:
图5.3.3平衡车测试
第6章 结 论
了解Android的开发流程,了解Android 的运行开发机制模式,熟悉了Android 4大组件代码编写与熟练的应用,对各种控件都有所了解和更深入的研究。
物联系统的项目将安卓手机APP与智能硬件设备结合,通过WIFI网络传串口的方式,与Arduino MCU主控串口通信,实现发送与接收数据,更加深入的了解软件和硬件结合密不可分的关系,作为软件与硬件结合,必定像是智能家居,智能物联系统 这样的智能设备的新潮流。
在项目开发中,对安卓各种UI界面和开发框架更有深入的了解,了解开发的思路,学习别人开发的方式方法,将与自己的项目结合,做一些更好的改进,在硬件中,学习Arduino 开发板硬件代码的编写,了解串口发送与接收的方式,保证能够成功执行相关指令。对于平衡车的控制,主要是对MPU6050陀螺仪的角度输出控制,卡尔曼滤波输出比较稳定的角度值,然后PID计算角度输出PWM脉冲来控制电机。当小车往前倾时,小车电机快速前进防止其倾倒,反之小车往后倾时,小车电机快速后退防止其倾倒,这样就保证小车稳定运行。
项目代码:https://item.taobao.com/item.htm?spm=686.1000925.0.0.QUGyYj&id=534691263656
最后下面是项目的演示视频:
语音识别控制风扇台灯的开关
安卓远程控制智能机器人,优化好的话必定是家庭机器人控制新潮流
Arduino 舵机摄像头转动
就介绍到这里啦,又什么想法或者有什么问题请在下面留言,一起学习进步吧!