安卓APP与智能硬件相结合的简易方案

时间:2022-08-10 10:16:17

第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所示:

安卓APP与智能硬件相结合的简易方案

图3.1 系统设计框图

3.2系统模块框图设计

(1)用户登录/注册模块框图

采用SQLite3数据库作为存储数据的方案,可以方便的维修用户信息。用户登录、注册框图如图3.2.1所示:

安卓APP与智能硬件相结合的简易方案

图3.2.1系统登录注册框图

(2)摄像头模块框图

摄像头模块主要显示监控画面,以及控制摄像头左转和摄像头右转,如图3.2.2所示:

安卓APP与智能硬件相结合的简易方案

图3.2.2摄像头框图

(3)网络设置模块框图

网络设置模块主要设置网络的URL地址,网络摄像头的端口号,网络控制端口号,框图如图3.2.3所示:

安卓APP与智能硬件相结合的简易方案

图3.2.3网络设置模块框图

(4)电器模块框图

电器模块框图主要实现台灯,风扇的打开和关闭,框图如图3.2.4所示:

安卓APP与智能硬件相结合的简易方案

图3.2.4电器控制模块框图

(5)语音模块框图

语音模块主要实现用语音识别来控制台灯和风扇的开关,平衡车方向的控制。框图如图3.2.5所示:

安卓APP与智能硬件相结合的简易方案

图3.2.5电器控制模块框图

(5)小车控制模块框图

小车模块主要是控制小车的方向,前进,后退,向左,向右,以及连接WIFI,框图如图3.2.6所示:

安卓APP与智能硬件相结合的简易方案

图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所示:

安卓APP与智能硬件相结合的简易方案

图4.2.1.1 Arduino Nano 主控板

(2)控制平衡车则是采用了Arduino UNO R3板,如图4.2.1.2所示:

安卓APP与智能硬件相结合的简易方案

图4.2.1.2 Arduino Uno板

4.2.2 Arduino 台灯、风扇继电器搭建

继电器用来弱电控制强电,给继电器供电,来控制台灯、风扇的打开和关闭,如图4.2.2.1所示:

安卓APP与智能硬件相结合的简易方案

图4.2.2.1 台灯、风扇继电器

4.2.3 舵机和摄像头的搭建

舵机主要控制摄像头的左转和右转,摄像头用来采集视频图像,如图4.2.3.1所示:

安卓APP与智能硬件相结合的简易方案

图5.2.3.1 舵机摄像头

4.2.4 SYN6288语音文本合成模块

模块主要用于语音合成,播放台灯“台灯已经关闭”,“台灯已经打开”或者播放“风扇已经关闭”,“风扇已经打开”语音提示音,如图4.2.4.1所示:

安卓APP与智能硬件相结合的简易方案

图4.2.4.1 SYN6288语音合成模块

4.2.5 OpenWrt 路由器模块

Openwrt简单就是跑在微控制器上的Linux操作系统

路由器主要实现WIFI热点,以及摄像头图像的采集,WIFI串口控制Arduino MCU主控板的工作,如图4.2.5.1所示:

安卓APP与智能硬件相结合的简易方案

带串口的TX RX GND,然后连接MCU Arduino上的RX TX GND,即可通信(前提是Openwrt上安装ser2net一类的串口转发接收数据软件)

安卓APP与智能硬件相结合的简易方案

图4.2.5.1 OpenWrt路由器

4.2.5 平衡车整体电路搭建设计

平衡车系统电路搭建主要包括Arduino UNO R3主控制板,L298N电机驱动模块,MPU6059陀螺仪模块,降压模块,其他包括电池,电机等部件,整体设计如图4.2.5.2所示:

安卓APP与智能硬件相结合的简易方案

图4.2.5.2平衡车整体电路搭建

4.2.6 上部分电路搭建设计

上部分主要是控制台灯、风扇和舵机摄像头的左右转动,如图4.2.6.1所示:

安卓APP与智能硬件相结合的简易方案

图5.2.6.1 上部分电路设计

第五章测试

5.2.4 语音识别测试

主要看语音识别是否成功,测试图5.2.4

安卓APP与智能硬件相结合的简易方案

图5.2.4 语音识别测试图

5.2.5 广播发送接收测试

主要测试广播是否发送接收成功,测试图如图5.2.5所示:

安卓APP与智能硬件相结合的简易方案

图5.2.5 广播测试图

5.2.6 Wi-Fi 发送接收测试

主要测试WIFI是否发送接收成功,测试图如图5.2.6所示:

安卓APP与智能硬件相结合的简易方案

图5.2.6 WIFI发送接收测试图

5.3 硬件测试过程

5.3.1 台灯风扇的测试

用手机连接Wi-Fi测试是否可以打开和关闭风扇,如图5.3.1所示:

安卓APP与智能硬件相结合的简易方案

图5.3.1 控制台灯风扇测试图

5.3.2 摄像头和舵机的测试

用手机连接Wi-Fi测试是否可以接收监控图像和舵机左右转动,如图5.3.2所示:

安卓APP与智能硬件相结合的简易方案

图5.3.2 摄像头和舵机测试

5.3.3 智能平衡车的测试

用手机连接Wi-Fi测试平衡是否可以前进后退向左和向右,测试如图5.3.3所示:

安卓APP与智能硬件相结合的简易方案

图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 舵机摄像头转动

就介绍到这里啦,又什么想法或者有什么问题请在下面留言,一起学习进步吧!

安卓APP与智能硬件相结合的简易方案的更多相关文章

  1. app配置智能硬件的解决方案

    随着越来越多的智能硬件产品上市,越来越多的硬件都戴上了智能的帽子,什么智能插座,智能音箱,智能称等等.凡是所谓的智能,都是通过wifi或者蓝牙来连接互联网,其中蓝牙也只能算是手机的附属品吧.主要还是硬 ...

  2. [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”

    NOW, 步 将此黑科技传授予你~ 一.普通家电控制电路板分析 普通家电,其人机接口一般由按键和指示灯组成(高端的会稍微复杂,这里不考虑) 这样交互过程,其实就是:由当前指示灯信息,按照操作流程按相应 ...

  3. 智能硬件+App移动新生态【北京、广州、深圳】

    智能硬件+App移动新生态[10.24北京站] 时间:2015年10月24日13:30-16:30 地点:Wepac空间(海淀区北四环西路68号左岸工社6层) 主办:APICloud.机智云.智石科技 ...

  4. 智能硬件+App移动新生态【11.01深圳】

    活动概况 时间:2015年11月01日13:30-16:30 地点:深圳腾讯大厦(南山区科技园科技中一路)2楼多功能厅 主办:APICloud.庆科.信鸽 费用:免费 活动背景 智能电视.智能汽车.智 ...

  5. 智能硬件+App移动新生态【10.24北京站】

    活动概况 时间:2015年10月24日13:30-16:30 地点:Wepac空间(海淀区北四环西路68号左岸工社6层) 主办:APICloud.机智云.智石科技.华为云 网址:www.apiclou ...

  6. 深度讲解智能硬件手机APP开发流程

    常州做APP开发公司紫竹云科技分析,智能硬件产品的软件开发,除了APP和后台之外还有一个固件端的开发,由于固件是要运行产品上的,不过此时的硬件也是刚开始进行研发,所以是无法提供硬件来运行固件的.因此在 ...

  7. 为智能硬件提供一站式解决方案——机智云GoKit评测

    为智能硬件提供一站式解决方案——机智云GoKit评测 2014年12月24日 作者: ladouyu 3 17,414+ 4 EMW3162GoKit开发板STM32F103智能硬件机智云2.0 从物 ...

  8. 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  9. [编译] 6、开源两个简单且有用的安卓APP命令行开发工具和nRF51822命令行开发工具

    星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一.前言 前几天给大家介绍了如何手动搭建安卓APP命令行开发环境和nRF51822命令行开发环境,中秋这几天我把上面篇 ...

随机推荐

  1. How Kafka’s Storage Internals Work

    In this post I'm going to help you understand how Kafka stores its data. I've found understanding th ...

  2. zoj.3865.Superbot(bfs + 多维dp)

    Superbot Time Limit: 2 Seconds      Memory Limit: 65536 KB Superbot is an interesting game which you ...

  3. 初识MFC学习——Hello World

    MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...

  4. HDU 4633 Who's Aunt Zhang(polay计数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4633 题意:有下面一个魔方.有K种颜色.可以为顶点.边.面(每个面有9个小面)染色.两种染色算作一种当 ...

  5. ECSHOP如何解决购物车中商品自动消失问题

    最近有客户反映关于ECShop购物车的问题:需要加入多个商品到购物车时,发现之前加入到购物车的商品都自动消失了,只有最后一次加入购物车的商品在里面.那么,这是什么原因呢? 因为ECShop的SESSI ...

  6. mysql---左连接、右连接、内连接之间的区别与联系

    现有两张表 第一张表为男生表,记录了男生的姓名和配偶的编号 第二张表为女生表,记录了女生的姓名和自己的编号 第一种情况:主持人请所有男生都上台,并且带上自己的配偶.这时不管男生有没有配偶都要上台,所以 ...

  7. Python大神成长之路: 第一次学习记录

    一.Python发展史 二.Python2 or 3 博主选择了Python3. 从官网下载Python  www.python.org Windows安装python3.5.python2.7.安装 ...

  8. C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!

    说起异步,Thread,Task,async/await,IAsyncResult 这些东西肯定是绕不开的,今天就来依次聊聊他们 1.线程(Thread) 多线程的意义在于一个应用程序中,有多个执行部 ...

  9. shell 网络状态查询 ping curl telnet

    ping curl telnet python -m SimpleHTTPServer

  10. Flask源码解析:Flask上下文

    一.上下文(Context) 什么是上下文: 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行.你为了使他们运行, ...