王文超,徐超,高銘陽,余國輝,楊巍,張祎
(天津理工大學中環(huán)信息學院,天津 300380)
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,網(wǎng)絡(luò)的運用已經(jīng)從人與人之間通信慢慢地發(fā)展成萬物互聯(lián)的時代。當下,網(wǎng)絡(luò)通信不僅僅是通知人員信息,更多的是基于智能終端的服務(wù)搭建,還能對智慧物流園、智能家居等進行搭建和維護,同時,云平臺的普及讓開發(fā)者對所需要掌握的技術(shù)能力要求大幅降低,僅僅調(diào)用云平臺所提供的人工智能接口就可以完成大部分智能搭建。
對于物聯(lián)網(wǎng)的應用,在國內(nèi)已經(jīng)有非常多的案例,如京東的物流倉庫、小米的智能家具,但是,對于學生來說,了解這些成體系的案例實在太難,而且人工智能的算法同樣不簡單,故本文介紹了一種基于云平臺人工智能接口,以及云端所提供的服務(wù)和樹莓派智能終端通過flask顯示的虛擬現(xiàn)實相結(jié)合的實驗平臺。
如圖1所示,本作品由終端設(shè)備識別出人臉后,送到百度云的庫中進行比對,如果是公司員工,則不報警,自動開門;如果是陌生人,則將照片上傳到阿里云 OSS 數(shù)據(jù)庫中,并將此條信息傳送倉庫釘釘群,同時收集倉庫環(huán)境信息,如果環(huán)境異常進行智能調(diào)度,同時上傳環(huán)境信息到釘釘群中。
圖1 整體流程圖
阿里云是阿里云計算有限公司發(fā)布的一個云平臺,其中的物聯(lián)網(wǎng)開發(fā)平臺可以讓初學者更好地學習物聯(lián)網(wǎng)知識,同時,阿里云自主研發(fā)的“飛天”操作系統(tǒng),大大提高了該系統(tǒng)的規(guī)模以及穩(wěn)定性,所以阿里云物聯(lián)網(wǎng)平臺也成為某些企業(yè)進行服務(wù)器搭建時的選擇。
百度云是百度發(fā)布的云平臺,相對于阿里云,百度云則是大部分的經(jīng)濟與時間花費在人工智能算法與云存儲上,所以調(diào)用百度云的人工智能接口,不僅可以使初學者快速地完成功能的搭建,而且正確率往往比自己寫算法高很多。
Flask是一個對于開發(fā)環(huán)境沒有過多要求且可以針對不同應用場景可以進行開發(fā)的框架,使用Python語言編寫,相較目前主流運用Java的框架,編寫更加容易,與其他的輕量級框架相比,F(xiàn)lask框架有很好的擴展性,這是其他Web框架不可替代的。可以使學生更快更靈活地去完成開發(fā)任務(wù)。
釘釘是阿里巴巴集團專為中國企業(yè)打造的免費的溝通和協(xié)同的多端平臺,提供PC版、Web版、Mac版和手機版,支持手機和電腦間文件互傳。同時,釘釘內(nèi)部的機器人接口支持開發(fā),這樣為消息提醒提供了可能。
在物聯(lián)網(wǎng)開發(fā)中,必然少不了使用數(shù)據(jù)傳輸協(xié)議和數(shù)據(jù)庫的建立,如果自己創(chuàng)立MQTT協(xié)議,必然少不了大量的代碼編寫和穩(wěn)定的網(wǎng)絡(luò)服務(wù)器,同時數(shù)據(jù)庫會占用大量電腦本地內(nèi)存,針對以下問題在阿里云云端實驗平臺,對物聯(lián)網(wǎng)進行數(shù)據(jù)傳輸?shù)膮f(xié)議MQTT和云存儲服務(wù)(oss),MQTT協(xié)議的作用是將終端所連接的設(shè)備收集的信息發(fā)送到多個收集端而不是傳送到單個地方,在此實驗中發(fā)送到阿里云物聯(lián)網(wǎng)平臺中OSS數(shù)據(jù)庫進行數(shù)據(jù)的查看和保存、flask所構(gòu)建的窗口中進行設(shè)備狀態(tài)的改變和查看中和釘釘機器人中對于數(shù)據(jù)的發(fā)送,使學習者可以學習物聯(lián)網(wǎng)中的數(shù)據(jù)傳輸協(xié)議以及云數(shù)據(jù)庫專業(yè)知識,同時,云平臺提供的各種功能可以使學習者不需要過多地考慮設(shè)備版本以及操作難度,同時,阿里云實驗平臺良好的人機交互界面可以大大降低學習者對人機交互界面的開發(fā)和學習專業(yè)知識的成本。
在人臉識別方面,如果通過自己開發(fā)人臉識別會出現(xiàn)精度差、需要算法學習資源和對硬件設(shè)備的支持,所以在該實驗中百度云云端實驗平臺主要目的是調(diào)用人工智能API接口,去實現(xiàn)人臉識別功能,完成智能打卡的功能,同時,通過釘釘去通知倉庫內(nèi)部人員。調(diào)用API接口可以降低系統(tǒng)各個部分的相互依賴,同時降低組成單元的耦合程度,從而可以便于系統(tǒng)的維護和擴展,學習者也不需要學習大量智能算法和調(diào)用大量算法學習資源。在百度云平臺上同樣提供了良好的人機交互界面,可以使學習者快速地學習。
對于通知方式的設(shè)計,無論是現(xiàn)在外界主流的通過手機短信還是通過一個固定網(wǎng)站的直接查看,都會出現(xiàn)提醒強度不夠強大和無法確認是否所有人都已經(jīng)了解倉庫內(nèi)部信息,然而,通過外界特定軟件去開發(fā),會出現(xiàn)開發(fā)較難和收費等現(xiàn)象,所以在本實驗使用了釘釘機器人,釘釘中的機器人在釘釘中是一個獨立的應用,其可以支持二次開發(fā),同時,也不需要任何應用進行強制綁定,所以可以通過MQTT協(xié)議定期使釘釘發(fā)送倉庫內(nèi)部信息去通知內(nèi)部工作人員,同時群內(nèi)可以查看有多少人查看這個消息,對于釘釘,釘釘群就是良好的數(shù)據(jù)展示界面,同時,也是良好的提醒界面去提醒倉庫內(nèi)部人員。
對于網(wǎng)站的設(shè)計,如果使用目前主流的開發(fā)語言JAVA,可能會學習成本較大,又因為所有開發(fā)都是基于python語言開發(fā),所有可能會出現(xiàn)不兼容問題。所以該實驗對于flask作用為制作一個可視化窗口,然后,將阿里云MQTT協(xié)議接入窗口中,使阿里云物聯(lián)網(wǎng)開發(fā)者平臺中的數(shù)據(jù)同步到web端,可以使使用者更好地查看倉庫信息,同時,在web端也可以控制倉庫設(shè)備狀態(tài)。這樣完成后可以更加直觀地查看倉庫環(huán)境,而且flask對于其他開發(fā)框架開發(fā)相對簡單,可以使學習者更好地去學習。
在圖2中,整體的數(shù)據(jù)流向為由硬件終端收集數(shù)據(jù)后,通過MQTT協(xié)議進行數(shù)據(jù)的傳輸將數(shù)據(jù)傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)平臺,之后再次通過MQTT協(xié)議將數(shù)據(jù)傳輸給OSS數(shù)據(jù)庫、釘釘機器人和flask接口,分別用來存儲數(shù)據(jù)、數(shù)據(jù)的提醒和展示數(shù)據(jù)。讓實驗者能夠了解協(xié)議運行的機制,加強實驗者的編程能力。
圖2 數(shù)據(jù)走向
如圖3所示,在終端收集數(shù)據(jù)后,將數(shù)據(jù)傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)開發(fā)平臺,數(shù)據(jù)在阿里云中進行數(shù)據(jù)的分配,在分配完成后,通過MQTT協(xié)議將數(shù)據(jù)傳輸?shù)皆茢?shù)據(jù)庫、釘釘端和web窗口,從而完成整體作品。
圖3 作品整體圖
如圖4所示,在硬件終端收集數(shù)據(jù)后,將數(shù)據(jù)傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)平臺,同時阿里云物聯(lián)網(wǎng)開發(fā)平臺在注冊設(shè)備信息后,傳感器所收集的數(shù)據(jù)就如圖4所示進行實時更新,可以讓實驗者通過后臺更加直觀地觀看數(shù)據(jù)信息。
圖4 阿里云物聯(lián)網(wǎng)開發(fā)平臺數(shù)據(jù)
如圖5所示為在百度云調(diào)用API接口后,將接口上傳到樹莓派后,當樹莓派收集到人臉信息后,如圖5就會將人臉信息傳輸?shù)饺四樄芾韼?,以便后期查看?/p>
圖5 百度云人臉識別平臺
圖6 所示為MQTT協(xié)議將數(shù)據(jù)上傳到flask后,用flask搭建的網(wǎng)站窗口中將數(shù)據(jù)實時展示,同時下方報警狀態(tài)可以在代碼中設(shè)置一個閾值當超過閾值時進行報警,同時進行智能調(diào)控,在下方的狀態(tài)提示中的交互按鈕也可以手動去改變倉庫內(nèi)部智能設(shè)備的狀態(tài)。通過這樣的方式可以更加全面地了解物聯(lián)網(wǎng)中的各種協(xié)議和運行方式。
圖6 Flask
本文所展示的實驗平臺,可以使學習者了解目前主流物聯(lián)網(wǎng)應用搭建方式以及制作方法,首先,開發(fā)者可以通過終端的搭建了解樹莓派和傳感器的使用方法和代碼的編寫;其次,通過阿里云云平臺去學習通信協(xié)議MQTT和云數(shù)據(jù)庫的搭建,之后通過百度云去學習目前主流的人工智能學習算法;然后,通過flask的學習使自己學習對于前端交互界面的開發(fā);最后,通過釘釘機器人去設(shè)計一個良好的消息通知平臺。通過這些軟件以及平臺的學習,可以使學習者較為快速且壓力較輕地去學習搭建一個完整的物聯(lián)網(wǎng)開發(fā)平臺,且開發(fā)者可以根據(jù)自己所想到的應用環(huán)境,去合理地使用不同云平臺所提供的功能去搭建不同應用場景的物聯(lián)網(wǎng)平臺,模塊化的實驗可以使該實驗的耦合度較低,從而使學習者不怕搭建平臺途中出現(xiàn)錯誤從而導致整體實驗的失敗,但是,對于學習者來說,雖然相對于傳統(tǒng)物聯(lián)網(wǎng)開發(fā)來說學習難度大大降低,但是,所運用的平臺和軟件相對較多,所以在后期開發(fā)中,進一步將所有物聯(lián)網(wǎng)功能集中到一個云平臺中。