版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
||[13]。數(shù)據(jù)準(zhǔn)確:通過傳感器采集數(shù)據(jù)并實(shí)時(shí)上傳至華為云開發(fā)平臺(tái)保存,后通過springboot后臺(tái)從華為云接口處獲取數(shù)據(jù)并發(fā)至前端VUE頁面上,比起傳統(tǒng)統(tǒng)計(jì)數(shù)據(jù)和記錄數(shù)據(jù)要更為高效且實(shí)用。3.1系統(tǒng)概述返校消毒系統(tǒng)在校內(nèi)人員出入口的各點(diǎn)位部署了設(shè)備,通過無線WIFI傳輸對(duì)采集到的數(shù)據(jù)進(jìn)行收集,后統(tǒng)一通過鴻蒙OS開發(fā)板上傳至華為云服務(wù)器。本設(shè)計(jì)包含有硬件模塊部分和軟件模塊部分及華為云物聯(lián)網(wǎng)平臺(tái)三部分。硬件部分:主要負(fù)責(zé)與對(duì)數(shù)據(jù)的采集,并將其進(jìn)行數(shù)字化傳輸,后通過WIFI模塊將數(shù)據(jù)傳輸至云服務(wù)器,還有一部分的硬件,可以實(shí)行遠(yuǎn)程控制指令做出反應(yīng),控制相關(guān)設(shè)備做出操作,并進(jìn)行無需人工控制的自動(dòng)化操作。硬件中單片機(jī)板上的傳感器所采集到的數(shù)據(jù)則優(yōu)先通過串口傳輸至鴻蒙開發(fā)板上后統(tǒng)一上傳至華為云服務(wù)器。上傳輸部分為樹狀網(wǎng)絡(luò)傳輸,將數(shù)據(jù)經(jīng)過多級(jí)上傳,并將各區(qū)域做出合理分割。軟件部分:vue前端頁面展示、功能程序控制。后端功能的主要內(nèi)容為對(duì)于傳入的數(shù)據(jù)進(jìn)行解析,存儲(chǔ),并對(duì)預(yù)先設(shè)計(jì)的程序執(zhí)行相應(yīng)的運(yùn)行結(jié)果,如當(dāng)傳感器采集到的溫度數(shù)據(jù)超過原先設(shè)定的閾值時(shí),對(duì)這條數(shù)據(jù)進(jìn)行保存并記錄同時(shí)彈出窗口提醒操作人員。還將華為云上數(shù)據(jù)傳輸?shù)缴衔粰C(jī)進(jìn)行數(shù)據(jù)的顯示。Vue頁面的主要作用就是可以顯示實(shí)時(shí)的接收到的數(shù)據(jù),以及相關(guān)的智能設(shè)備控制和額外情況需要人工手動(dòng)控制設(shè)備。華為云物聯(lián)網(wǎng)平臺(tái)的主要內(nèi)容通過鴻蒙OS開發(fā)板攜帶的WIFI模塊,在網(wǎng)絡(luò)覆蓋下即可實(shí)現(xiàn)管理者無論在何時(shí)何地都可以查看到校門口人員的體溫,消毒狀況等各種情況,并且可以遠(yuǎn)程通過設(shè)定的命令控制系統(tǒng)內(nèi)的消毒設(shè)備、點(diǎn)燈開關(guān)等。3.2系統(tǒng)功能描述基于鴻蒙OS的大學(xué)生返校消毒系統(tǒng)由服務(wù)器、軟件部分、硬件部分構(gòu)成如圖3-1所示: 圖3-1大學(xué)生返校消毒系統(tǒng)構(gòu)成圖(1)采集單元傳感器設(shè)備在大學(xué)生返校消毒系統(tǒng)中的不可或缺的,傳感器設(shè)備負(fù)責(zé)采集相關(guān)的人員環(huán)境數(shù)據(jù)并監(jiān)測(cè)相關(guān)運(yùn)行的設(shè)備數(shù)據(jù)。還負(fù)責(zé)自動(dòng)化判斷并控制設(shè)備做出反應(yīng)。傳感器設(shè)備在物聯(lián)網(wǎng)的三層架構(gòu)中處于感知層,它將系統(tǒng)所需要的數(shù)據(jù)采集后傳輸給核心節(jié)點(diǎn)負(fù)責(zé)解析。如采集人員溫度的MLX90614非接觸式紅外溫度計(jì)、判斷人員行李的HX711壓力傳感器。通過直接傳感器,將人員數(shù)據(jù)以數(shù)字量進(jìn)行傳輸,后由軟件部分進(jìn)行可視化的顯示、或者后臺(tái)程序的自動(dòng)化控制及人工手動(dòng)控制。安裝在51單片機(jī)板上的傳感器設(shè)備在采集完數(shù)據(jù)后則統(tǒng)一將采集到數(shù)據(jù)通過串口傳輸?shù)姆绞桨l(fā)送到鴻蒙開發(fā)板上。(2)控制單元在大學(xué)生返校消毒系統(tǒng)中除了感應(yīng)相關(guān)的人員數(shù)據(jù)的傳感器設(shè)備外,還可以將一些設(shè)備變得更為智能化,將原本需要人工手動(dòng)控制的設(shè)備變成自動(dòng)化控制,并且可以實(shí)現(xiàn)遠(yuǎn)程控制的狀態(tài)。在本次大學(xué)生返校消毒系統(tǒng)中,將電燈、壓力傳感器、霧化片、風(fēng)扇變成了自動(dòng)化控制。實(shí)現(xiàn)了設(shè)備的智能化,無需人員額外進(jìn)行手動(dòng)控制。在需要的情況下操作人員也可通過VUE頁面上的控制模塊控制設(shè)備或直接登錄華為云平臺(tái)使用命令控制設(shè)備狀態(tài)。(3)軟件部分在軟件中又分為前端部分和后端部分。BearPi-HMNano開發(fā)板采用C語言編寫與相關(guān)指令和匯編程序,開發(fā)環(huán)境為linux。燒錄至開發(fā)板Hi3861V100芯片中,后通過WIFI模塊與華為云開發(fā)平臺(tái)進(jìn)行數(shù)據(jù)的傳輸。也主要負(fù)責(zé)各傳感器設(shè)備的自動(dòng)化控制,并與單片機(jī)89C52進(jìn)行串口連接使在單片機(jī)89C52的傳感器采集到的數(shù)據(jù)傳輸至HMNANO開發(fā)板上進(jìn)行統(tǒng)一的數(shù)據(jù)傳輸。51單片機(jī)89C52負(fù)責(zé)采集人員行李是否防止到消毒區(qū)域和行李消毒模塊的工作狀態(tài)控制,后通過串口將數(shù)據(jù)發(fā)送至HMNANO開發(fā)板上。后端部分則由IDEA通過華為云接口實(shí)現(xiàn)數(shù)據(jù)的對(duì)接及控制,同時(shí)編寫前端VUE需要對(duì)于傳感器設(shè)備的功能。前端VUE部分與后端相關(guān)聯(lián)主要是對(duì)數(shù)據(jù)的可視化顯示,編寫數(shù)據(jù)需要的相關(guān)頁面,及需要人工手動(dòng)控制的額外功能。(4)服務(wù)器部分服務(wù)器部分有負(fù)責(zé)保存并顯示數(shù)據(jù)的華為云開發(fā)平臺(tái),在平臺(tái)上可通過設(shè)備影子服務(wù)使IDEA可以通過華為云接口獲取到采集模塊所傳輸?shù)臄?shù)據(jù)。并讓IDEA后端可以使用JS格式代碼遠(yuǎn)程控制采集設(shè)備。
第4章系統(tǒng)設(shè)計(jì)本系統(tǒng)設(shè)計(jì)是由BearPi-HMNano開發(fā)板、51單片機(jī)89C52、傳感器硬件、springboot框架后臺(tái)、前端vue頁面、華為云物聯(lián)網(wǎng)平臺(tái)集成。傳感器采集到的數(shù)據(jù)通過WIFI網(wǎng)絡(luò)與互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)交換。系統(tǒng)架構(gòu)主要分成三層:感知層、傳輸層、應(yīng)用層這三大層。感知層主要包括的內(nèi)容為各項(xiàng)傳感器,以及無線控制硬件設(shè)備,傳輸層主要包括為Hi3861V1002.4GHzWi-FiSoC芯片,以及AP無線接入點(diǎn)至互聯(lián)網(wǎng),應(yīng)用層主要有這幾大塊,后臺(tái)的華為云服務(wù)器,負(fù)責(zé)程序的運(yùn)行,數(shù)據(jù)的存儲(chǔ)與統(tǒng)計(jì)分類,各模塊之間的數(shù)據(jù)交互,以及設(shè)備的自動(dòng)化控制,springboot后臺(tái)框架加上vue前端,提供可視化的可操作的,以及實(shí)時(shí)對(duì)傳感器采集到的數(shù)據(jù)進(jìn)行監(jiān)控,提供給校園的管理安保人員。通過便攜、并且覆蓋面廣的管理平臺(tái),提供對(duì)于接入系統(tǒng)的智能化硬件設(shè)備以及傳感器設(shè)備有總體的調(diào)控與監(jiān)視,并且依托與vue前端的頁面展示型,可以實(shí)時(shí)查看校門口的情況以及各個(gè)設(shè)備的工作狀態(tài),其次充分的發(fā)揮移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)的高覆蓋性,在網(wǎng)絡(luò)的覆蓋范圍即可對(duì)校園入口的整體情況有充分的掌握。4.1系統(tǒng)硬件技術(shù)指標(biāo)4.1.1鴻蒙OSNano開發(fā)板指標(biāo) 圖4-1開發(fā)板功能框圖(1)PHY特性支持IEEE802.11b/g/n單天線所有的數(shù)據(jù)速率支持最大速率:72.2Mbps@HT20MCS7支持標(biāo)準(zhǔn)20MHz帶寬和5M/10M窄帶寬支持STBC支持Short-GI。(2)MAC特性支持A-MPDU,A-MSDU支持Blk-ACK支持QoS,滿足不同業(yè)務(wù)服務(wù)質(zhì)量需求.(3)CPU子系統(tǒng)高性能32bit微處理器,最大工作頻率160MHz內(nèi)嵌SRAM352KB、ROM288KB內(nèi)嵌2MBFlash。(4)搭載系統(tǒng)搭載鴻蒙OS系統(tǒng),在LINUX系統(tǒng)環(huán)境下配置開發(fā)環(huán)境,通過VisualStudioCode編輯器寫代碼后燒錄代碼到開發(fā)板。(5)其他封裝:QFN-325mm×5mm工作溫度:-40℃~+85℃。4.1.2壓力傳感器技術(shù)指標(biāo) HX711集成了片內(nèi)時(shí)鐘振蕩器、穩(wěn)壓電源等其它同類型芯片都所需要的外圍電路,具有著抗干擾性能強(qiáng)、響應(yīng)的速度快、集成度較高等特點(diǎn)。芯片內(nèi)部的時(shí)鐘振蕩器可以不和任何器件外接。上電時(shí)會(huì)自動(dòng)復(fù)位,大大簡(jiǎn)化了開機(jī)的初始化過程。 圖4-2HX711內(nèi)部方框圖圖4-3HX711芯片引腳圖4.1.3紅外測(cè)溫傳感器技術(shù)指標(biāo)由于集成了放大器、17位的模數(shù)轉(zhuǎn)換器和強(qiáng)大的數(shù)字信號(hào)處理單元,使得高精度和高分辨度的溫度計(jì)可以實(shí)現(xiàn)。溫度計(jì)具備出廠校準(zhǔn)化,有數(shù)字模式和系統(tǒng)管理總線輸出模式。 圖4-4MLX90614電路圖圖4-5MLX90614引腳描述4.1.451單片機(jī)技術(shù)指標(biāo) 圖4-7STC98C52控制電路引腳介紹:主電源引腳(2根) VCC(Pin40):電源輸入,接+5V電源 GND(Pin20):接地線外接晶振引腳(2根) XTAL1(Pin19):片內(nèi)振蕩電路的輸入端 XTAL2(Pin20):片內(nèi)振蕩電路的輸出端控制引腳(4根) RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。 ALE/PROG(Pin30):地址鎖存允許信號(hào) PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào) EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令??删幊梯斎?輸出引腳(32根)4.2系統(tǒng)功能設(shè)計(jì)4.2.1數(shù)據(jù)采集功能模塊 數(shù)據(jù)采集模塊由HMNANO開發(fā)板、51單片機(jī)89C52、Hi3861V100芯片、華為云物聯(lián)網(wǎng)平臺(tái)、傳感器參與功能流程如圖4-8所示:圖4-8數(shù)據(jù)采集流程圖首先傳感器采集數(shù)據(jù)分別傳輸至HMNANO開發(fā)板與51單片機(jī)98C52接收,后由51單片機(jī)98C52通過串口傳輸將接收到的數(shù)據(jù)匯總發(fā)送至HM開發(fā)板上再統(tǒng)一通過WIFI模塊上傳至華為云物聯(lián)網(wǎng)平臺(tái)進(jìn)行顯示并保存。4.2.2設(shè)備控制功能模塊設(shè)備控制模塊是由通訊功能部分和控制功能部分以及上位機(jī)的頁面組成,設(shè)備控制的產(chǎn)生,首先是由上位機(jī)Vue前端頁面產(chǎn)生相應(yīng)的操作,達(dá)到觸發(fā)條件,后經(jīng)過IDEA的后臺(tái)程序的判斷,將保存在后臺(tái)程序中的相關(guān)指令,通過華為云物聯(lián)網(wǎng)平臺(tái)模塊下發(fā)至硬件。先是IDEA使用JS格式發(fā)送命令至華為云,后華為云平臺(tái)會(huì)將數(shù)據(jù)通過WIFI模塊發(fā)送給HMNANO開發(fā)板的主控芯片,由HMNANO主控芯片對(duì)命令進(jìn)行解析,后對(duì)設(shè)備的控制。如是對(duì)于單片機(jī)上的設(shè)備進(jìn)行控制則再通過串口將設(shè)備命令傳輸后再控制。設(shè)備控制的流程圖如下圖4-9所示圖4-9設(shè)備控制流程圖首先是系統(tǒng)管理人員在Vue前端頁面觸發(fā)指令,通過IDEA后臺(tái)將指令轉(zhuǎn)為JS格式后發(fā)送至華為云物聯(lián)網(wǎng)平臺(tái),華為云平臺(tái)通過WIFI模塊將命令下傳至HM開發(fā)板上,開發(fā)板解析命令后,進(jìn)行對(duì)設(shè)備的控制,如果是單片機(jī)上的設(shè)備則通過串口將命令傳輸至單片機(jī)上進(jìn)行設(shè)備的操作。4.2.3自動(dòng)控制功能模塊自動(dòng)控制功能需要使得傳感器數(shù)據(jù)與設(shè)備控制的配合下才可完成,首先是由傳感網(wǎng)將傳感數(shù)據(jù)發(fā)送到華為云服務(wù),通過IDEA后臺(tái)的程序判斷是否打開自動(dòng)控制的功能,下一步是程序判斷其傳感器的數(shù)據(jù)是否達(dá)到預(yù)設(shè)的標(biāo)準(zhǔn),另外在上位機(jī)Vue端頁面設(shè)置閾值,上位機(jī)的閾值通過其界面設(shè)置,后通過IDEA將數(shù)值發(fā)送給華為云服務(wù)器,華為云服務(wù)器使用設(shè)備影子功能設(shè)置設(shè)備命令,方便設(shè)備相關(guān)的控制。其自動(dòng)控制功能流程圖如圖4-10所示。圖4-10自動(dòng)控制流程圖首先是傳感器數(shù)據(jù)上傳至華為云服務(wù)器,通過華為云接口使后臺(tái)IDEA接收到傳感數(shù)據(jù),觸發(fā)打開,判斷預(yù)設(shè)的數(shù)據(jù)閾值是否達(dá)標(biāo),達(dá)標(biāo)后觸發(fā)指令通過WIFI模塊下發(fā)至HM開發(fā)板,再分別傳輸至開發(fā)板設(shè)備及通過串口傳輸至單片機(jī)設(shè)備。4.2.4數(shù)據(jù)可視化功能模塊數(shù)據(jù)可視化的功能模塊主要體現(xiàn)在系統(tǒng)設(shè)計(jì)的vue端UI與springboot框架后臺(tái)上,通過后臺(tái)的讀取華為云上設(shè)備影子的數(shù)據(jù)讀取后傳輸至Vue前端。其主要的功能就是把原本數(shù)字或者是模擬的傳感數(shù)值進(jìn)行頁面的可視化顯示,數(shù)字顯示,方便數(shù)據(jù)的讀取、數(shù)據(jù)的操作。其流程圖如4-11所示。圖4-11數(shù)據(jù)可視化流程圖首先由傳感器數(shù)據(jù)上傳至華為云物聯(lián)網(wǎng)開發(fā)平臺(tái),后通過華為云設(shè)備影子服務(wù)將數(shù)據(jù)存儲(chǔ)至云服務(wù)器上,后端程序通過華為云接口獲取設(shè)備影子數(shù)據(jù)并將數(shù)據(jù)打包完成后傳輸給Vue端頁面進(jìn)行顯示。在傳感器數(shù)據(jù)傳輸至華為云平臺(tái)時(shí)可在華為云平臺(tái)上建立設(shè)備可視化的UI頁面,一樣可進(jìn)行數(shù)據(jù)的可視化,以及設(shè)置傳感設(shè)備的命令。4.3系統(tǒng)程序設(shè)計(jì)在本次的設(shè)計(jì)中,軟件模塊的設(shè)計(jì)有兩大部分,一部分是華為云上平臺(tái)的網(wǎng)頁上的上位機(jī)界面,及Vue前端上面的控制端屬于上位機(jī)范圍內(nèi),一部分是嵌入式程序的設(shè)計(jì),就是燒錄到單片機(jī)與HM開發(fā)板里面的嵌入式程序。還有一部分為華為云上物聯(lián)網(wǎng)平臺(tái)的使用。上位機(jī)頁面程序總體流程圖如4-12所示:圖4-12總體流程圖4.4華為云平臺(tái)與設(shè)備連接(1)華為lot平臺(tái)介紹華為云物聯(lián)網(wǎng)平臺(tái)就是華為云平臺(tái)中的設(shè)備接入服務(wù),其主要功能就是給用戶提供設(shè)備連接上云、設(shè)備和云端實(shí)現(xiàn)數(shù)據(jù)傳輸同時(shí)可以給設(shè)備編寫命令用于控制設(shè)備、批量設(shè)備管理等,并可將設(shè)備數(shù)據(jù)轉(zhuǎn)移并存儲(chǔ)到華為云其他服務(wù),如OBS存儲(chǔ)等。主要幫助需要物聯(lián)網(wǎng)設(shè)備與云上數(shù)據(jù)存儲(chǔ)的用戶快速完成設(shè)備聯(lián)網(wǎng)與云上操控設(shè)備等功能。圖4-13華為lot平臺(tái)(2)華為lot平臺(tái)產(chǎn)品模型簡(jiǎn)單描述設(shè)備所具備的能力和特性,讓平臺(tái)可以了解設(shè)備所支持的服務(wù)、屬性、命令等信息,也可以了解到設(shè)備的命令、對(duì)設(shè)備的操作等。圖4-14華為lot平臺(tái)產(chǎn)品模型(3)華為lot平臺(tái)產(chǎn)品創(chuàng)建在硬件設(shè)備連接電腦后進(jìn)入華為云頁面之后可看到總覽界面,展示了華為云平臺(tái)接入的協(xié)議與域名信息,根據(jù)需要,選取MQTT通訊必要的信息備用。接入?yún)f(xié)議(端口號(hào)):MQTT1883.域名:選中側(cè)邊欄產(chǎn)品頁,單擊右上角“創(chuàng)建產(chǎn)品”如圖4-15所示:圖4-15產(chǎn)品創(chuàng)建在頁面中選中設(shè)備的所屬資源空間,并且按照要求填寫產(chǎn)品名稱,選中MQTT協(xié)議,數(shù)據(jù)格式為JSON,并填寫廠商名稱,在下方模型定義欄中選擇所屬行業(yè)以及添加設(shè)備類型,并單擊右下角的“立即創(chuàng)建”如圖4-16所示:圖4-16立刻創(chuàng)建在產(chǎn)品創(chuàng)建完成之后,產(chǎn)品頁面上會(huì)自動(dòng)生成剛剛創(chuàng)建的產(chǎn)品,單擊“查看”可查看創(chuàng)建的具體信息。圖4-18查看具體信息可以單擊單擊產(chǎn)品詳情頁的自定義模型,在彈出頁面中新增服務(wù),填寫服務(wù)ID與服務(wù)類型。圖4-19新增服務(wù)在“Agriculture”的下拉菜單下點(diǎn)擊“添加屬性”填寫相關(guān)需要上傳與顯示的數(shù)據(jù)名稱,需同開發(fā)板燒錄的代碼中定義的一致。圖4-20添加屬性在“Agriculture”的下拉菜單下點(diǎn)擊“添加命令”可填寫相關(guān)的操作命令,同為控制設(shè)備燈與設(shè)備電機(jī)。 圖4-21添加命令在側(cè)邊欄中可以點(diǎn)擊“設(shè)備”按鈕,進(jìn)入設(shè)備頁面,在右上角的“注冊(cè)設(shè)備”中,勾選對(duì)應(yīng)所屬資源空間并選中剛剛創(chuàng)建的產(chǎn)品,注意設(shè)備認(rèn)證類型選擇“秘鑰”,按要求填寫秘鑰。圖4-22注冊(cè)設(shè)備記錄下設(shè)備ID和設(shè)備密鑰圖4-23設(shè)備ID與密鑰在注冊(cè)完成后,可以在設(shè)備頁面進(jìn)入“所有設(shè)備”,就可以看到新建的設(shè)備,此刻的設(shè)備處于未激活狀態(tài)。在將設(shè)備燒錄代碼并連接電腦后設(shè)備狀態(tài)則會(huì)激活。圖4-24設(shè)備列表第5章系統(tǒng)整體測(cè)試5.1下位機(jī)程序設(shè)計(jì)下位機(jī)程序設(shè)計(jì)主要分為HMNano開發(fā)板與51單片機(jī)89C52開發(fā)板這兩塊開發(fā)板。倆塊開發(fā)板編程開發(fā)平臺(tái)不同,燒錄軟件不同將分別展示。5.1.1BearPi-HMNano開發(fā)板程序設(shè)計(jì) (1)WIFI設(shè)置與華為云設(shè)備設(shè)置模塊主要代碼展示#defineCONFIG_WIFI_SSID"ytxesp8266"#defineCONFIG_WIFI_PWD"11111111"#defineCONFIG_APP_SERVERIP"00"#defineCONFIG_APP_SERVERPORT"1883"#defineCONFIG_APP_DEVICEID"6125c5c40ad1ed028663d028_20210825"#defineCONFIG_APP_DEVICEPWD"bearpi123456"#defineCONFIG_APP_LIFETIME60#defineCONFIG_QUEUE_TIMEOUT(5*1000)#defineMSGQUEUE_OBJECTS16#defineUART_TASK_STACK_SIZE1024*8#defineUART_TASK_PRIO25#defineUART_BUFF_SIZE1000展示代碼主要編寫WIFI賬號(hào)及密碼和在華為云物聯(lián)網(wǎng)平臺(tái)上所注冊(cè)的設(shè)備ID及秘鑰用于連接。 (2)傳感器上報(bào)數(shù)據(jù)及采集數(shù)據(jù)功能模塊主要代碼展示if(g_app_cb.connected!=1){return;}service.event_time=NULL;service.service_id="Agriculture";service.service_property=&temperature;service.nxt=NULL;temperature.key="Temperature";temperature.value=&report->temp;temperature.type=EN_OC_MQTT_PROFILE_VALUE_INT;temperature.nxt=&humidity;humidity.key="Humidity";humidity.value=&report->hum;humidity.type=EN_OC_MQTT_PROFILE_VALUE_INT;humidity.nxt=&luminance;luminance.key="Luminance";luminance.value=&report->lum;luminance.type=EN_OC_MQTT_PROFILE_VALUE_INT;luminance.nxt=&led;led.key="LightStatus";led.value=g_app_cb.led?"ON":"OFF";led.type=EN_OC_MQTT_PROFILE_VALUE_STRING;led.nxt=&motor;motor.key="MotorStatus";motor.value=g_app_cb.motor?"ON":"OFF";motor.type=EN_OC_MQTT_PROFILE_VALUE_STRING;motor.nxt=NULL;oc_mqtt_profile_propertyreport(NULL,&service);return;}代碼主要功能是將傳感數(shù)據(jù)上傳至華為云平臺(tái)時(shí)的格式。簡(jiǎn)單的定義屬性名稱屬性類型屬性值等。及采集傳感器數(shù)據(jù)所需的代碼 (3)命令解析功能模塊主要代碼展示intcmdret=1;oc_mqtt_profile_cmdresp_tcmdresp;obj_root=cJSON_Parse(cmd->payload);if(NULL==obj_root){gotoEXIT_JSONPARSE;}obj_cmdname=cJSON_GetObjectItem(obj_root,"command_name");if(NULL==obj_cmdname){gotoEXIT_CMDOBJ;}if(0==strcmp(cJSON_GetStringValue(obj_cmdname),"Agriculture_Control_light")){obj_paras=cJSON_GetObjectItem(obj_root,"paras");if(NULL==obj_paras){gotoEXIT_OBJPARAS;}obj_para=cJSON_GetObjectItem(obj_paras,"Light");if(NULL==obj_para){gotoEXIT_OBJPARA;}if(0==strcmp(cJSON_GetStringValue(obj_para),"ON")){g_app_cb.led=1;Light_StatusSet(ON);printf("LightOn!\r\n");}else{g_app_cb.led=0;Light_StatusSet(OFF);printf("LightOff!\r\n");}cmdret=0;}EXIT_OBJPARA:EXIT_OBJPARAS:EXIT_CMDOBJ:cJSON_Delete(obj_root);EXIT_JSONPARSE:cmdresp.paras=NULL;cmdresp.request_id=cmd->request_id;cmdresp.ret_code=cmdret;cmdresp.ret_name=NULL;(void)oc_mqtt_profile_cmdresp(NULL,&cmdresp);return;}這里主要編寫命令解析模塊,是對(duì)于設(shè)備的工作狀態(tài)進(jìn)行更改,在華為云平臺(tái)接收到命令時(shí)改變?cè)O(shè)備工作狀態(tài)。 (4)消息隊(duì)列功能模塊主要代碼展示if(NULL==g_app_cb.app_msg){printf("Createreceivemsgqueuefailed");}oc_mqtt_profile_connect_tconnect_para;(void)memset(&connect_para,0,sizeof(connect_para));connect_para.boostrap=0;connect_para.device_id=CONFIG_APP_DEVICEID;connect_para.device_passwd=CONFIG_APP_DEVICEPWD;connect_para.server_addr=CONFIG_APP_SERVERIP;connect_para.server_port=CONFIG_APP_SERVERPORT;connect_para.life_time=CONFIG_APP_LIFETIME;connect_para.rcvfunc=msg_rcv_callback;connect_para.security.type=EN_DTLS_AL_SECURITY_TYPE_NONE;ret=oc_mqtt_profile_connect(&connect_para);if((ret==(int)en_oc_mqtt_err_ok)){g_app_cb.connected=1;printf("oc_mqtt_profile_connectsucced!\r\n");}else{printf("oc_mqtt_profile_connectfaild!\r\n");}while(1){app_msg=NULL;(void)queue_pop(g_app_cb.app_msg,(void**)&app_msg,0xFFFFFFFF);if(NULL!=app_msg){switch(app_msg->msg_type){caseen_msg_cmd:deal_cmd_msg(&app_msg->msg.cmd);break;caseen_msg_report:deal_report_msg(&app_msg->msg.report);break;default:break;}free(app_msg);}}return0;}消息隊(duì)列功能主要代碼展示,這里主要編寫了消息隊(duì)列,首先是連接WIFI然后消息隊(duì)列,下面是調(diào)用函數(shù)上傳數(shù)據(jù)。(5)串口接收發(fā)送數(shù)據(jù)功能模塊主要代碼:WifiIotUartAttributeuart_attr={.baudRate=9600,.dataBits=8,.stopBits=1,.parity=0,};ret=UartInit(WIFI_IOT_UART_IDX_1,&uart_attr,NULL);if(ret!=WIFI_IOT_SUCCESS){printf("Failedtoinituart!Errcode=%d\n",ret);return;}printf("UARTTestStart\n");while(1){UartWrite(WIFI_IOT_UART_IDX_1,(unsignedchar*)data,strlen(data));UartRead(WIFI_IOT_UART_IDX_1,uart_buff_ptr,UART_BUFF_SIZE);if(uart_buff==NULL){printf("B");}elseif(uart_buff!=NULL){g_app_cb.motor=1;Motor_StatusSet(ON);usleep(5000000);g_app_cb.motor=0;Motor_StatusSet(OFF);}usleep(1000000);}}staticvoidUART_ExampleEntry(void){osThreadAttr_tattr;="UART_Task";attr.attr_bits=0U;attr.cb_mem=NULL;attr.cb_size=0U;attr.stack_mem=NULL;attr.stack_size=UART_TASK_STACK_SIZE;attr.priority=UART_TASK_PRIO;if(osThreadNew((osThreadFunc_t)UART_Task,NULL,&attr)==NULL){printf("[ADCExample]FaliedtocreateUART_Task!\n");}} 主要展示了HMNano開發(fā)板與51單片機(jī)98C52進(jìn)行串口通信,主要是傳遞在單片機(jī)上工作的設(shè)備狀態(tài),壓力傳感器的是否感應(yīng)以及二號(hào)消毒設(shè)備的工作狀態(tài)。5.1.251單片機(jī)98C52程序設(shè)計(jì) 單片機(jī)主要功能代碼展示:主要為壓力傳感器核心代碼及當(dāng)壓力傳感器到達(dá)閾值時(shí)電機(jī)啟動(dòng)霧化片啟動(dòng)消毒程序啟動(dòng),同時(shí)通過串口像HM開發(fā)板發(fā)送數(shù)據(jù)。voidmain(){ Uart_Init(); Delay_ms(3000); ABC=0; Get_Maopi(); while(1) { EA=0; Get_Weight(); EA=1; Scan_Key(); if(Flag_ERROR==1) { Send_Word("A\n"); ABC=1; Delay_ms(5000); ABC=0; } {} }}voidScan_Key(){ if(KEY1==0) { Delay_ms(5); if(KEY1==0) { while(KEY1==0); Get_Maopi(); } }}5.2系統(tǒng)硬件部分測(cè)試首先將硬件按照設(shè)計(jì)要求連接完畢,通電。將HMNANO開發(fā)板與單片機(jī)開發(fā)板的代碼分別燒錄完成,并將倆塊板串口連接,連接好所需傳感器如圖5-1所示:圖5-1系統(tǒng)硬件連接總覽代碼編譯燒錄代碼后,按下開發(fā)板上的復(fù)位按鍵,然后打開串口助手查看日志,開發(fā)板會(huì)根據(jù)之前所在開發(fā)板上編輯的要求格式把接收到的傳感器數(shù)據(jù)上傳到華為云平臺(tái),并打印出傳感器所采集到的信息如圖5-2所示:圖5-2串口助手查看日志5.3設(shè)備連接華為云測(cè)試當(dāng)HMNANO開發(fā)板連接成功并燒錄正確代碼后登錄華為云平臺(tái)上查看的設(shè)備時(shí),設(shè)備的狀態(tài)顯示則變?yōu)樵诰€如圖5-3所示:圖5-3設(shè)備狀態(tài)在設(shè)備右側(cè)的“查看”中,可以查看設(shè)備詳情頁面,如圖5-4所示:圖5-4設(shè)備數(shù)據(jù)顯示在華為云平臺(tái)設(shè)備詳情頁,單擊“命令”,一般選擇同步命令下發(fā),選中創(chuàng)建的命令屬性,即可發(fā)送下發(fā)命令控制設(shè)備如圖5-5所示: 圖5-4設(shè)備命令測(cè)試5.4綜合性測(cè)試(1)Vue前端登錄界面如圖5-5所示:圖5-5Vue前端系統(tǒng)登錄頁面 publicclassUserController{@PostMapping("login")@ApiOperation(value="用戶登錄")publicResultlogin(@ApiParam(name="user",value="系統(tǒng)用戶對(duì)象",required=true)@RequestBodyUseruser){returnResult.ok().data("token","admin");}@GetMapping("info")@ApiOperation(value="獲取用戶信息")publicResultinfo(@ApiParam(name="token",value="令牌",required=true)@RequestParamStringtoken){returnResult.ok().data("roles","admin").data("name","admin").data("avatar","/f778738c-e4f8-4870-b634-56703b4acafe.gif");}} 登錄頁面的前后端主要代碼展示,后端獲取前端獲取管理人員輸入的賬號(hào)及密碼進(jìn)行判斷,通過后進(jìn)入后臺(tái)系統(tǒng)的首頁。這里前端負(fù)責(zé)簡(jiǎn)單的賬號(hào)與密碼判斷,后端負(fù)責(zé)驗(yàn)證的功能編寫。(2)頁面首頁如下圖4-10所示學(xué)生刷卡進(jìn)入提醒如下圖4-11所示: 圖5-6首頁展示圖5-7刷卡提醒 首頁功能實(shí)現(xiàn)主要代碼:publicclassHDCenterController{@AutowiredprivateHDCenterServicehdCenterService;@ApiOperation(value="獲取設(shè)備狀態(tài)")@GetMapping("/data")publicResultshowData(){returnResult.ok().data("data",hdCenterService.showShadow());}@ApiOperation(value="開啟電機(jī)")@PostMapping("/openMotor")publicResultopenMotor(){hdCenterService.openMotor();returnResult.ok();}@ApiOperation(value="關(guān)閉電機(jī)")@PostMapping("/stopMotor")publicResultstopMotor(){hdCenterService.closeMotor();returnResult.ok();}}后端通過華為云接口獲取華為云設(shè)備影子上的傳感數(shù)據(jù)再發(fā)送至前端進(jìn)行顯示,后端還編寫了控制設(shè)備對(duì)電機(jī)的代碼,其命令是在華為云物聯(lián)網(wǎng)平臺(tái)上創(chuàng)建,這里前端發(fā)送至后端改變代碼后,后端將其轉(zhuǎn)換為JS格式后發(fā)送至華為云平臺(tái)進(jìn)行設(shè)備的控制。前端代碼在本頁中還編寫了學(xué)生入校提醒功能,獲取門禁卡所綁定的學(xué)號(hào)并記錄入校時(shí)間入校溫度。同時(shí)將數(shù)據(jù)保存至學(xué)生入校記錄表之中。(3)門禁卡綁定學(xué)生信息記錄表頁面如下圖4-12所示:圖5-8學(xué)生管理頁面(3)學(xué)生管理頁面實(shí)現(xiàn)主要代碼:privateStudentServicestudentService;@ApiOperation(value="根據(jù)ID查詢學(xué)生信息")@GetMapping("/{id}")publicResultgetById(@ApiParam(name="id",value="學(xué)生學(xué)號(hào)",required=true)@PathVariableStringid){Studentstudent=studentService.getById(id);List<Student>ss=newArrayList<>();ss.add(student);returnResult.ok().data("items",ss);}@ApiOperation(value="根據(jù)所有學(xué)生信息")@GetMapping("/list")publicResultgetById(){List<Student>list=studentService.list(null);returnResult.ok().data("items",list);}學(xué)生管理頁面的前后端功能主要代碼展示,通過后端查詢本地?cái)?shù)據(jù)庫將學(xué)生信息發(fā)送至前端進(jìn)行數(shù)據(jù)的可視化展示,此外后端還簡(jiǎn)單的編寫了學(xué)生表的增刪改查操作。前端調(diào)用后端所編寫的功能進(jìn)行學(xué)生信息的頁面顯示,并簡(jiǎn)單的寫了一個(gè)刪除記錄的提示。(5)入校記錄頁面如下圖4-13所示:圖5-9學(xué)生入校記錄頁面 學(xué)生入校記錄頁面主要代碼: publicclassRecordController{@AutowiredprivateRecordServicerecordService;@ApiOperation(value="所有記錄信息")@GetMapping("/rlist")publicResultgetAll(){List<Record>allRecord=recordService.list(null);returnResult.ok().data("items",allRecord);}@ApiOperation(value="體溫異常學(xué)生記錄")@GetMapping("/errList")publicResultgetErrStu(){List<Record>allRecord=recordService.getErrStu();returnResult.ok().data("items",allRecord);}@ApiOperation(value="根據(jù)時(shí)間查詢記錄信息")@GetMapping("{startTime}/{endTime}")publicResultgetByrtime(@PathVariableStringstartTime,@PathVariableStringendTime){List<Record>list=recordService.findRecoedBetweenTime(startTime,endTime);returnResult.ok().data("items",list);}}學(xué)生入校記錄頁面的前后端主要代碼展示,通過后端查詢本地?cái)?shù)據(jù)庫將數(shù)據(jù)發(fā)送至前端進(jìn)行數(shù)據(jù)的可視化展示,后端還簡(jiǎn)單的編寫了也記錄表的增刪改查操作還編寫了通過入校時(shí)間來查詢學(xué)生入校記錄,和對(duì)異常體溫進(jìn)行查詢的功能。前端編寫頁面UI并調(diào)用后端所編寫的功能進(jìn)行學(xué)生入校記錄的頁面顯示,并簡(jiǎn)單的寫了一個(gè)刪除記錄的提示。5.5遇到的問題及解決方案在測(cè)試項(xiàng)目以及完善模擬環(huán)境搭建的過程中,遇到了一些阻礙進(jìn)度的問題。根據(jù)指導(dǎo)老師的講解和查閱相關(guān)的資料,對(duì)遇到的問題進(jìn)行處理并解決。使得系統(tǒng)恢復(fù)正常,同時(shí)也正常完成進(jìn)度,以下是我的在開發(fā)系統(tǒng)設(shè)計(jì)中遇到的問題,以及相關(guān)的解決辦法。(1)傳感器與HMNANO開發(fā)板不適配問題一開始在編寫程序與選擇傳感器中沒有考慮好傳感器與設(shè)備之間匹配的問題,在多次購買使用不同的傳感器之后,選擇將傳感器先連接在51單片機(jī)上在通過串口通信,后將傳感器獲取到的數(shù)據(jù)通過串口傳遞給HMNANO開發(fā)板
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 納米晶體科普
- 《GAT 1384-2017刑事案件偵查業(yè)務(wù)實(shí)體數(shù)據(jù)項(xiàng)》專題研究報(bào)告
- 2026湖南懷化國際陸港經(jīng)濟(jì)開發(fā)區(qū)內(nèi)國有企業(yè)招聘25人參考題庫附答案
- 2026湖南長(zhǎng)沙市雨花區(qū)中雅培粹雙語中學(xué)合同制教師招聘參考題庫附答案
- 2026福建廈門市集美區(qū)寧寶幼兒園非在編廚房人員招聘1人參考題庫附答案
- 2026福建省福州市潤樓教育科技集團(tuán)有限公司招聘1人考試備考題庫附答案
- 2026重慶九龍坡區(qū)黃桷坪街道辦事處公益崗招聘2人備考題庫附答案
- 高中地理人教版選擇性必修二4.4 國際合作課件(32張)
- 樂山市教育局2026年直屬學(xué)校公開招聘足球教練員的 參考題庫附答案
- 巴中市總工會(huì)關(guān)于招聘工會(huì)社會(huì)工作者的巴中市總工會(huì)(5人)考試備考題庫附答案
- (市質(zhì)檢二檢)福州市2024-2025學(xué)年高三年級(jí)第二次質(zhì)量檢測(cè) 歷史試卷(含答案)
- 《外科手術(shù)學(xué)基礎(chǔ)》課件
- 化學(xué)-湖南省永州市2024-2025學(xué)年高二上學(xué)期1月期末試題和答案
- 2025年貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- DB33T 1214-2020 建筑裝飾裝修工程施工質(zhì)量驗(yàn)收檢查用表標(biāo)準(zhǔn)
- 拖欠工程款上訪信范文
- 高考語文復(fù)習(xí)【知識(shí)精研】鑒賞古代詩歌抒情方式 課件
- 春運(yùn)志愿者培訓(xùn)
- 語文-安徽省皖南八校2025屆高三上學(xué)期12月第二次大聯(lián)考試題和答案
- 養(yǎng)豬企業(yè)新員工職業(yè)規(guī)劃
- 《建筑工程設(shè)計(jì)文件編制深度規(guī)定》(2022年版)
評(píng)論
0/150
提交評(píng)論