我的本科畢業設計--家庭雲端智能管家--把思路和技術細節寫給大家分享

前言

想寫這篇文章好久了,寫寫刪刪好多次,總覺得寫不出來技術水平,用畢業論文的內容又顯得太正式,不像一個博客的分享型文章,思前想後,終於決定用今天這個記敘的角度去切入我的畢業設計來介紹。

歡迎大家交流討論。

家庭雲端智能管家

我爲什麼會設計這個東西?

我本科學習的是物聯網工程,專業知識學了很多的方面,各種編程語言啊、做網站啊、做界面啊、嵌入式編程等等,本人有幸加入學校實驗室,在學校實驗室學到了不少東西,於是想把自己大學學到的知識融合起來(至少能用上的知識都用上,也算給自己大學四年一個交待。)

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站,鏈接在下面:

下面是直接看的(我第一次傳視頻,不知道能不能看,如果不能看還是看上方的跳轉鏈接吧):

真正的人機互動,智能家居--雲端智能管家--我的畢業設計作品,我的大學的心血。

後話

總是鼓起勇氣給大家分享了,沒有說大概細節,但是卻都是我當時的心理活動,現在已經大學畢業了,回想起當時的行爲,總是覺得又氣又笑,氣的是自己那麼早就做了畢業設計,導致後來學的技術很難加入這個設計中,笑的是當時的幼稚,幼稚到竟然以爲會有公司願意招聘一個大三下學期的學生,專業課還沒有學完。

大學時光已然結束,回顧既往,大學學了太多的東西,需要以後的路上慢慢消化吸收了。

寄語

最後呢,希望看到這個博客的大學生要好好學習專業課,計算機相關專業的同學要對自己有信心,我的大學是一個四線城市的普通二本,都能在老師的指導下,憑藉自己的努力,和團隊成員們一起加油,拿下一個國家一等獎、一個省級特等獎。我們都是普通人,我相信,只要你們努力,就能做到。即使實驗室名額有限,但是技術終究是謀生的本錢,技術足夠了,也能在畢業後掙到很多的錢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章