我的本科毕业设计--家庭云端智能管家--把思路和技术细节写给大家分享

前言

想写这篇文章好久了,写写删删好多次,总觉得写不出来技术水平,用毕业论文的内容又显得太正式,不像一个博客的分享型文章,思前想后,终于决定用今天这个记叙的角度去切入我的毕业设计来介绍。

欢迎大家交流讨论。

家庭云端智能管家

我为什么会设计这个东西?

我本科学习的是物联网工程,专业知识学了很多的方面,各种编程语言啊、做网站啊、做界面啊、嵌入式编程等等,本人有幸加入学校实验室,在学校实验室学到了不少东西,于是想把自己大学学到的知识融合起来(至少能用上的知识都用上,也算给自己大学四年一个交待。)

PS: 这个毕业设计在我大三上学期到下学期那个寒假(2018-2019年的寒假)在家设计的,所以当时的一些想法很幼稚,只是为了赶紧做好了这个毕业设计然后下学期校招找工作,并且开学后我还真的一直在来回跑着校招面试,网易、阿里、字节跳动、腾讯都面试了,但是都没过,所以19年上半年我发了很多校招面试的经验帖。这也造成了那半年我什么也没学,还因为校招一直失败而心灰意冷,在这里告诉各位还没毕业的学弟学妹一个建议:不要急于找工作,还是打磨自己的锋芒,大三正是自己的技术沉淀期,只有自己准备好了,才能抓住各个机会,撞机会、盲目自信的行为不可取。

这个设计的主要功能?

在做这个毕业设计之前,我曾去小米之家的智能家居体验店跑了一趟,问了问他们的产品,觉得做的很好,也不算是照搬照抄,里面也有我自己的一些创新,主要的功能如下:

  1. 智能门禁。
  2. 家电、家居控制。
  3. 家庭环境检测。
  4. 人机语音交互。
  5. 指纹识别。
  6. 家庭网站、专用APP。
  7. 可以外网访问。
  8. 人脸识别。
  9. 额外必需功能:本地双主控内部交互。

各个功能分块介绍

本地双主控交互

在这个系统中,我采用两个主控芯片的设计,一个是STM32,另一个是树莓派,大致来讲,在STM32上主要管理上述功能的1-5,树莓派管理功能6-8。

两个主控肯定不可能使用有线连接通信,实际情况也肯定不允许有线通信。经过咨询导师、在QQ群咨询等途径,我选择了JDY-40的短距离无线通信的芯片,小巧,便宜,还是组网型的,通信距离空地能达到120米,只要通信数据格式设计好,可以加很多分模块。这样就解决了两个主控之间交换数据和命令的问题。

智能门禁

在这个系统中,使用指纹识别和人脸识别双重认证的方式开启门禁锁,这样功能更丰富,看起来更装逼,保证安全,用户开门时首先需要认证指纹,在指纹识别通过后,STM32向树莓派发送一个指令,调用人脸识别,树莓派会在五秒内得到识别结果并且返回给STM32端,由STM32端判断是否开门。

在我拿着这个作品去参加比赛时,评委问我为什么用两个认证,我的回答是这样的:假设指纹和人脸信息丢失的概率都是1%,那么它们同时丢失的概率就是0.01%了,这样的认证方式相对来讲安全系数提高了不止一个数量级。

指纹识别、人脸识别

指纹识别我使用的是AS608光学指纹模块,使用串口和STM32通信。

人脸识别使用的是Python和Opencv做的,当时想用的是腾讯云的那个人脸识别,但是毕竟是学生党,舍不得那几百块买离线人脸识别的SDK,就到处找教程看看怎么自己弄一个人脸识别的代码,也忘记在哪里找到了,跟着教程训练人脸模型、识别人脸。

EX:这个人脸识别的程序代码之前做好了写了个博客放在了个人博客,然后博客过期了,也懒得续费,就没了。

家电、家居控制

对于我们这类专业,控制家电家居应该是这个系统里最简单的东西了。这些控制的是我们最常见的一些家电,但是这里我做了个小心眼,我把所有的传感器、家庭电器的控制都打包模块化了,如下图

这样的话,如果后期还要更改,或者有一天能投入商用,不仅大体程序不需要修改,在控制的家居方面,也可以私有的定制了,这也是我这个毕业设计最创新的地方。

比如使用了这个毕业设计,我可以使用其他任意厂家的电器,只要和这个厂家合作,并且编写专门的控制文件,导入下载即可,甚至于不需要导入下载,只需要修改一下参数,新增电器直接通过一个额外的单片机接入,配备一个JDY-40模块,开启后直接组网接受命令信息,接收到特定指令就开始工作。这个创新点可以让用户无需更换家庭电器(前提是家庭电器的厂商的电器的控制器有配套的。)

人机交互

首先要解决的就是语音识别服务,当时群友主推的三款语音识别是:讯飞、百度、图灵,我都去看了,评论都很好,功能也都很强大,但是和我需要的不一样,我想要的是类似于siri、小娜一样的语音助手,可以在后台一直等着,叫他们时就有反应,否则没反应(也可能是我没找到对应的功能页面),调来选取还是决定从硬件模块入手做离线语音识别,这时候我想起来了大二时买的语音识别模块。

这部分功能运行在STM32上面,语音识别模块早已经买过了,当时懵懂无知,差点买了个400块的模块,最后通过度娘了解到一款芯片:LD3320,大部分的语音识别的模块都是使用的这款芯片。记得买这个芯片的时候才大二下学期,正是技术上升期,看文档没看懂就放弃了,到我做毕业设计时看来,竟然那么简单,就干脆直接使用了这个芯片,好在老板还认两年前的订单,又给我发了一份当时的技术文档。

语音识别解决了,剩下的就是解决发声了。刚开始我想着使用树莓派的音频口发声,考虑到实际使用(家庭控制的话是以STM32为中心主控,如果语音识别和发生分开或者都放在树莓派上,会给家庭控制带来麻烦和不便,都放在STM32上可以少很多通信、交换数据的过程)的问题,又去网购了一个MP3播放模块,把需要说的语言提前合成,然后存储进去。(还是怪自己当时太心急,没有多找找,刚做好毕业设计时,我发现了一个更好的模块,串口发送什么那边就说什么,当时后悔极了)。

这样,管家的人机交互算是设计完成了。

家庭网站、专用APP

由于当时正好学完Django,正好就拿这个毕业设计练手,也能训练自己的技术水平,网站里面大概给了四个页面,一个是主页,就是介绍的界面,然后就是家电信息查看、云端留言板和家庭控制(哈哈哈界面确实不太好看,勇拓队是我的队伍名称,我当时还想顺便参加全国大学生物联网竞赛,所以顺便把自己的队伍名字做进去,省得到时候改,但是最后没去成,和自己面试冲了,很遗憾。),大概界面如下图所示,使用的是BootStrap的框架。

家电控制和家电状态里面会通过JDY-40与STM32交互,然后传递信息和命令,为了访问这个网站方便,我使用APP Inventor在线做了个APP,只支持安卓的,但是足够使用了,APP里面直接定向到服务器的域名,然后就可以通过手机访问。

内网穿透

这也是最后一步了,但同时也是最重要的一步,没有这一步这个毕业设计几乎就没有灵魂。

当时想自己做一个跳板服务器做内网穿透,考虑了服务器成本,还是决定使用别人的内网穿透。刚开始使用的花生壳,但是花生壳实在是太不稳定,可能是因为我白嫖吧,于是我就换了别的,经过群友推荐,我选择了Sunny大神的内网穿透服务器,我的个人感觉是很稳定。

但是这个时候竟然出了问题,我使用的树莓派是树莓派B+,很老的一个版本了,导致内网穿透的服务使用不了,同样的程序我使用树莓派3B+都能运行,这个B+运行不了,当时搞这个问题搞了一天,最后怎么弄好的我也给忘了,因为弄得时间较长,所以印象比较深。

珍贵视频流出

这个视频是当时参加河南省第五届大学生物联网设计竞赛拍的,拿了《特等奖》,我上传到了两个视频网站,一个优酷,一个B站,链接在下面:

下面是直接看的(我第一次传视频,不知道能不能看,如果不能看还是看上方的跳转链接吧):

真正的人机互动,智能家居--云端智能管家--我的毕业设计作品,我的大学的心血。

后话

总是鼓起勇气给大家分享了,没有说大概细节,但是却都是我当时的心理活动,现在已经大学毕业了,回想起当时的行为,总是觉得又气又笑,气的是自己那么早就做了毕业设计,导致后来学的技术很难加入这个设计中,笑的是当时的幼稚,幼稚到竟然以为会有公司愿意招聘一个大三下学期的学生,专业课还没有学完。

大学时光已然结束,回顾既往,大学学了太多的东西,需要以后的路上慢慢消化吸收了。

寄语

最后呢,希望看到这个博客的大学生要好好学习专业课,计算机相关专业的同学要对自己有信心,我的大学是一个四线城市的普通二本,都能在老师的指导下,凭借自己的努力,和团队成员们一起加油,拿下一个国家一等奖、一个省级特等奖。我们都是普通人,我相信,只要你们努力,就能做到。即使实验室名额有限,但是技术终究是谋生的本钱,技术足够了,也能在毕业后挣到很多的钱。

展开阅读全文
©️2020 CSDN 皮肤主题: 点我我会动 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值