首页-达尔闻    全部    毕业设计| 真正的人机互动,云端智能管家(我的毕设,我的心血)

毕业设计| 真正的人机互动,云端智能管家(我的毕设,我的心血)

大学最后一课-毕设,有多少人会用心的记录下来?今天我们分享的这篇毕设作者是ChuckieZhu,他就用记叙的角度切入毕设介绍,让做相似课题的同学充分的了解设计过程。
收藏
  • 大学最后一课-毕设,有多少人会用心的记录下来?今天我们分享的这篇毕设作者是ChuckieZhu,他就用记叙的角度切入毕设介绍,让做相似课题的同学充分的了解设计过程。

    先来看下毕设的演示视频:

    https://www.bilibili.com/video/BV1xt4y1C7Z7

     

    前  言

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

    欢迎大家交流讨论,可以来我的csdn博客:ChuckieZhu(博客ID)

     

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

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

    PS: 这个毕业设计在我大三上学期到下学期那个寒假(2018-2019年的寒假)在家设计的,所以当时的一些想法很幼稚,只是为了赶紧做好了这个毕业设计。然后,下学期校招找工作,并且开学后我还真的一直在来回跑着校招面试,网易、阿里、字节跳动、腾讯都面试了,但是都没过,所以19年上半年我发了很多校招面试的经验帖。这也造成了那半年我什么也没学,还因为校招一直失败而心灰意冷。

    在这里告诉各位还没毕业的学弟学妹一个建议:不要急于找工作,还是打磨自己的锋芒,大三正是自己的技术沉淀期,只有自己准备好了,才能抓住各个机会,撞机会、盲目自信的行为不可取

     

    这个设计的主要功能?

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

    • 家电、家居控制

    • 家庭环境检测

    • 人机语音交互

    • 指纹识别

    • 家庭网站、专用APP

    • 可以外网访问

    • 人脸识别

    额外必需功能:本地双主控内部交互。

     

    各个功能分块介绍

    ☞ 本地双主控交互

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

    两个主控肯定不可能使用有线连接通信,实际情况也肯定不允许有线通信。经过咨询导师、在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+运行不了,当时搞这个问题搞了一天,最后怎么弄好的我也给忘了,因为弄得时间较长,所以印象比较深。

    ☞ 珍贵视频流出

    文章开头的视频是当时参加河南省第五届大学生物联网设计竞赛拍的,拿了《特等奖》。

     

    后话 & 寄语

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

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

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

Control Render Error!ControlType:productSlideBind,StyleName:Style1,ColorName:Item0,Message:InitError, ControlType:productSlideBind Error:未将对象引用设置到对象的实例。