国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于窄帶物聯(lián)網(wǎng)的圖書館座位智能管理系統(tǒng)設(shè)計(jì)

2022-08-02 10:10:52戴晶華
電子制作 2022年13期
關(guān)鍵詞:窄帶串口座位

戴晶華

(內(nèi)蒙古自治區(qū)法治培訓(xùn)中心,內(nèi)蒙古呼和浩特,010070)

0 引言

長(zhǎng)時(shí)間占用圖書館的座位,導(dǎo)致圖書館座位的使用效率降低,影響其他讀者對(duì)公共資源的使用。雖然圖書館的管理員也在進(jìn)行管理,但工作量很大,也存在監(jiān)管不到位的情況。因此,開發(fā)一種可對(duì)圖書館座位進(jìn)行遠(yuǎn)程實(shí)時(shí)管理的智能管理系統(tǒng),以提高圖書館座位的利用效率。將基于窄帶物聯(lián)網(wǎng)這一具有覆蓋廣、連接多、成本低、功耗低等特點(diǎn)的新興技術(shù)應(yīng)用到圖書館座位智能管理系統(tǒng)中,具有極大的開發(fā)前景和極強(qiáng)的現(xiàn)實(shí)意義,可明顯提高圖書館座位的使用效率。

1 系統(tǒng)研究方案

1.1 系統(tǒng)整體概述

本系統(tǒng)結(jié)構(gòu)如圖1所示,由以下三個(gè)部分構(gòu)成:座位信息采集終端、云平臺(tái)端及應(yīng)用服務(wù)器端。座位信息采集端負(fù)責(zé)實(shí)時(shí)檢測(cè)圖書館內(nèi)各座位的使用情況,當(dāng)檢測(cè)到其狀態(tài)發(fā)生變化時(shí),通過窄帶物聯(lián)網(wǎng)模塊將數(shù)據(jù)發(fā)送至云平臺(tái)端。云平臺(tái)端負(fù)責(zé)接收座位信息采集端上傳的數(shù)據(jù),將其解碼后轉(zhuǎn)發(fā)給后臺(tái)應(yīng)用服務(wù)器端。應(yīng)用服務(wù)器端負(fù)責(zé)處理云平臺(tái)及用戶的請(qǐng)求,將云平臺(tái)發(fā)送來的數(shù)據(jù)解析后存入數(shù)據(jù)庫(kù),當(dāng)用戶訪問時(shí),從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并將前端界面返回給用戶。

圖1 系統(tǒng)結(jié)構(gòu)框圖

1.2 硬件實(shí)現(xiàn)方案

1.2.1 座位信息采集端

座位信息采集端由多組座位信息采集終端構(gòu)成。各終端主要由以下三部分構(gòu)成:熱釋電紅外傳感器、Arduino微控制器、窄帶物聯(lián)網(wǎng)模塊。

采用HC-SR501熱釋電紅外傳感器模塊安裝于桌下,每個(gè)座位所對(duì)應(yīng)的位置上方。向下檢測(cè)用戶腿部的移動(dòng)信號(hào),當(dāng)用戶腿部發(fā)生移動(dòng)時(shí)紅外輻射溫度發(fā)生變化,傳感器內(nèi)失去電荷平衡,向外釋放電荷。通過該模塊可將用戶的移動(dòng)信號(hào)轉(zhuǎn)換為數(shù)字電信號(hào),供后續(xù)電路處理。

采用Arduino Nano微控制器作為座位信息采集端的核心,處理分析熱釋電紅外傳感器的信號(hào)并通過窄帶物聯(lián)網(wǎng)模塊發(fā)送數(shù)據(jù)。Arduino Nano是Arduino USB接口的微型版本,具有14路數(shù)字輸入/輸出口、一路串口,且其尺寸較小,在滿足本系統(tǒng)設(shè)計(jì)的同時(shí)可最大程度上縮小座位信息采集終端,使其便于放置。

采用以具有高性能、低功耗等特點(diǎn)的移遠(yuǎn)BC95-B5無線通信芯片為核心的NB101窄帶物聯(lián)網(wǎng)模塊來發(fā)送數(shù)據(jù),其體積較小,在滿足終端需求的同時(shí),最大限度的減少了座位信息采集終端的體積。

綜上所述,在各圖書館內(nèi),各桌下放置座位信息采集終端來采集各圖書館內(nèi)各座位的使用情況,以構(gòu)成座位信息采集端,完成采集圖書館內(nèi)座位信息的要求。

1.2.2 云平臺(tái)端

由于采用的窄帶物聯(lián)網(wǎng)模塊的核心為BC95電信版本,遂采用中國(guó)電信物聯(lián)網(wǎng)平臺(tái),作為云平臺(tái)對(duì)數(shù)據(jù)進(jìn)行解碼等處理。該云平臺(tái)可在線設(shè)置解碼器及配置文件對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,以便后續(xù)數(shù)據(jù)轉(zhuǎn)發(fā)及后端服務(wù)器處理。

1.2.3 應(yīng)用服務(wù)器端

應(yīng)用服務(wù)器端使用阿里云的云服務(wù)器ECS。方便部署操作系統(tǒng),不需進(jìn)行內(nèi)網(wǎng)穿透等煩瑣操作,且免費(fèi)提供 DDoS 防護(hù)、木馬查殺、防暴力破解等服務(wù)。

1.3 軟件方案

1.3.1 座位信息采集端

使用Visual Studio Code及Arduino插件部署Arduino開發(fā)環(huán)境,使用C/C++編寫庫(kù)及主程序。通過AT指令控制窄帶物聯(lián)網(wǎng)模塊發(fā)送數(shù)據(jù)。

1.3.2 云平臺(tái)端

使用中國(guó)電信物聯(lián)網(wǎng)平臺(tái)提供的在線開發(fā)環(huán)境,設(shè)置部署解碼器及配置文件。

1.3.3 應(yīng)用服務(wù)器端

(1)后端

在阿里云服務(wù)器上部署Ubuntu 16.04操作系統(tǒng),搭建Python 3.6運(yùn)行環(huán)境,使用Nginx和uWSGI進(jìn)行Django的生產(chǎn)環(huán)境部署。使用Mysql數(shù)據(jù)庫(kù)存儲(chǔ)圖書館內(nèi)座位信息。

當(dāng)客戶端(用戶瀏覽器、云平臺(tái))發(fā)起http/https請(qǐng)求時(shí),首先到達(dá)Nginx,Nginx收到請(qǐng)求后進(jìn)行解析處理(如果是靜態(tài)請(qǐng)求,直接返回靜態(tài)頁(yè)面),然后將請(qǐng)求發(fā)送給uWSGI,uWSGI對(duì)Nginx的請(qǐng)求進(jìn)行處理,將處理后的結(jié)果發(fā)送給Django應(yīng)用,Django應(yīng)用收到請(qǐng)求之后,對(duì)請(qǐng)求進(jìn)行處理,從Mysql中讀取或存儲(chǔ)數(shù)據(jù),將結(jié)果返回給uWSGI,uWSGI收到Django應(yīng)用的處理結(jié)果后,對(duì)該結(jié)果進(jìn)行處理打包,發(fā)送給Nginx,Nginx將收到的結(jié)果返回給客戶端(用戶瀏覽器)。

(2)前端

使用HTML+CSS+JavaScript編寫前端界面,并安裝Bootstrap前端開發(fā)框架和jQuery函數(shù)庫(kù)。使用HTML設(shè)置網(wǎng)頁(yè)的內(nèi)容,使用CSS設(shè)置樣式,使用JavaScript控制網(wǎng)頁(yè)的行為。

2 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

2.1 系統(tǒng)硬件設(shè)計(jì)

本系統(tǒng)硬件設(shè)計(jì)主要為座位信息采集終端的設(shè)計(jì)。各熱釋電紅外傳感器信號(hào)線依次連接Arduino的D2到D9引腳,Arduino的D10引腳連接LED;D11和D12在程序中設(shè)置為軟串口用來輸出調(diào)試信息,方便調(diào)試,不使用時(shí)可懸空;串口通過短路帽連接窄帶物聯(lián)網(wǎng)模塊,當(dāng)燒寫程序時(shí),需斷開短路帽,防止出錯(cuò)。

圖2 硬件連線圖

2.2 系統(tǒng)軟件設(shè)計(jì)

2.2.1 座位信息采集端

程序流程如圖3所示,安裝終端前需在各終端的Arduino程序上設(shè)置該終端所在圖書館編號(hào),樓層,桌子編號(hào)。上電后首先點(diǎn)亮LED指示燈,初始化串口,設(shè)置波特率為9600,設(shè)置D11和D12為軟串口作為調(diào)試串口,設(shè)置波特率為9600。然后初始化窄帶物聯(lián)網(wǎng)模塊,依次向串口發(fā)送AT指令,并向調(diào)試串口輸出日志,指令依次為AT,確保AT指令正常;AT+CFUN=1,開啟射頻;AT+NCDP=180.101.147.115,5683(第一個(gè)參數(shù)為中國(guó)電信物聯(lián)網(wǎng)平臺(tái)窄帶物聯(lián)網(wǎng)接入IP地址,第二個(gè)參數(shù)為非加密端口),配置電信平臺(tái)的CDP服務(wù)器地址;AT+CGATT=1,激活網(wǎng)絡(luò);AT+NNMI=1,配置核心板將接收到的數(shù)據(jù)直接輸出到串口。最后初始化各座位對(duì)象(設(shè)置D2到D9引腳的類型為輸入)。關(guān)閉LED指示燈。

圖3 座位信息采集端程序流程圖

為避免用戶暫時(shí)離開座位或較長(zhǎng)時(shí)間未移動(dòng)產(chǎn)生誤報(bào),使用以下算法:逐個(gè)檢測(cè)各座位對(duì)象當(dāng)前狀態(tài),獲取當(dāng)前該座位對(duì)象所對(duì)應(yīng)的座位的使用情況,與該座位對(duì)象上一次的狀態(tài)進(jìn)行對(duì)比,當(dāng)狀態(tài)發(fā)生變化時(shí),分析其變化:若狀態(tài)從已使用變化為未占用則為該座位對(duì)象添加計(jì)數(shù)器標(biāo)志,當(dāng)下一次檢測(cè)該座位時(shí),如果狀態(tài)未變化,則計(jì)數(shù)器加一,當(dāng)計(jì)數(shù)器值達(dá)到15分鐘時(shí),確認(rèn)該座位未被占用,可以發(fā)送數(shù)據(jù),如果座位狀態(tài)變化回已使用,則清零計(jì)數(shù)器,清除計(jì)數(shù)器標(biāo)志,保持該座位為已使用狀態(tài);若狀態(tài)從未占用變化為已占用,且沒有計(jì)數(shù)器標(biāo)志則確認(rèn)該座位已被使用,可以發(fā)送數(shù)據(jù)。

2.2.2 云平臺(tái)端

云平臺(tái)端接入流程如圖4所示。

圖4 云平臺(tái)接入流程圖

首先通過“天翼物聯(lián)產(chǎn)業(yè)聯(lián)盟”微信公眾號(hào)或“天翼物聯(lián)產(chǎn)業(yè)聯(lián)盟”網(wǎng)站填寫開放平臺(tái)測(cè)試賬號(hào)申請(qǐng),賬號(hào)申請(qǐng)通過后,收到賬號(hào)和初始密碼。登錄中國(guó)電信物聯(lián)網(wǎng)開發(fā)中心。

點(diǎn)擊創(chuàng)建項(xiàng)目,填寫“項(xiàng)目名稱”、“所屬行業(yè)”、“描述”等項(xiàng)目信息后,點(diǎn)擊“創(chuàng)建”。

點(diǎn)擊新建產(chǎn)品,選擇自定義產(chǎn)品,在設(shè)置產(chǎn)品信息中填入產(chǎn)品名稱、型號(hào)、廠商ID、所屬行業(yè)、設(shè)備類型、接入應(yīng)用層協(xié)議類型、數(shù)據(jù)格式等信息,點(diǎn)擊創(chuàng)建。產(chǎn)品是某一類具有相同能力或特征的設(shè)備的集合稱,除了設(shè)備實(shí)體,產(chǎn)品還包含該類設(shè)備在物聯(lián)網(wǎng)能力建設(shè)中產(chǎn)生的產(chǎn)品信息、產(chǎn)品模型(Profile)、插件、測(cè)試報(bào)告等資源。

然后創(chuàng)建產(chǎn)品模型(也稱Profile)用于描述設(shè)備具備的能力和特性。通過定義Profile,在云平臺(tái)構(gòu)建一款設(shè)備的抽象模型,使云平臺(tái)理解該款設(shè)備支持的服務(wù)、屬性、命令等信息。設(shè)置服務(wù)名稱為Seat,添加以下五個(gè)屬性用于承載上報(bào)的數(shù)據(jù)。

(1)樓層編號(hào):floor,數(shù)據(jù)類型為int,范圍為1-10,必選且只讀。

(2)桌子編號(hào):table,數(shù)據(jù)類型為int,范圍為1-50,必選且只讀。

(3)座位編號(hào):seat,數(shù)據(jù)類型為int,范圍為1-8,必選且只讀。

(4)座位狀態(tài):status,數(shù)據(jù)類型為int,范圍為0-1,必選且只讀。

(5)圖書館編號(hào):library,數(shù)據(jù)類型為int,范圍為1-10,必選且只讀。

由于座位信息采集端發(fā)送的數(shù)據(jù)在中國(guó)電信物聯(lián)網(wǎng)平臺(tái)做協(xié)議解析時(shí),會(huì)轉(zhuǎn)換成統(tǒng)一的json格式,以方便Web服務(wù)器使用。最終與產(chǎn)品模型建立映射后按協(xié)議順序轉(zhuǎn)換成如下json格式數(shù)據(jù){"libra ry":1,"floor":2,"table":3,"seat":7,"status":0}。當(dāng)設(shè)置完產(chǎn)品模型及解碼插件后,可接入設(shè)備進(jìn)行測(cè)試。最后設(shè)置應(yīng)用訂閱,設(shè)置訂閱設(shè)備數(shù)據(jù)變化接口及訂閱地址。

2.2.3 應(yīng)用服務(wù)器端

Django為重量級(jí)Web框架,為使業(yè)務(wù)邏輯、數(shù)據(jù)、界面開發(fā)分離,解除耦合。使用MTV的框架模式,其中視圖Views響應(yīng)用戶http請(qǐng)求,進(jìn)行邏輯處理,模型Models描述服務(wù)器儲(chǔ)存的數(shù)據(jù)(數(shù)據(jù)庫(kù)的表),模板templates用來生產(chǎn)HTML頁(yè)面(返回給用戶的HTML頁(yè)面是由模型和模板渲染出來的)。

2.2.4 數(shù)據(jù)庫(kù)端

通過models在數(shù)據(jù)庫(kù)PW中創(chuàng)建三個(gè)數(shù)據(jù)表:

在sm_library中 設(shè) 置id( 主 鍵)、name及introduce字段,用于存儲(chǔ)圖書館名稱及簡(jiǎn)介。

在sm_seat中設(shè)置id(主鍵)、library、serialID 、floor_num、equipID、status字段,用于存儲(chǔ)圖書館編號(hào),座位號(hào),樓層,桌子編號(hào),座位狀態(tài)。其中設(shè)置library外鍵約束為sm_library的主鍵,使其保持?jǐn)?shù)據(jù)一致性,禁止出現(xiàn)sm_library存儲(chǔ)以外的信息。

在sm_order中設(shè)置id(主鍵)、seat、user、start_time、end_time字段,用于儲(chǔ)存座位,用戶,預(yù)訂開始時(shí)間,預(yù)訂結(jié)束時(shí)間。其中設(shè)置seat外鍵約束為sm_seat的主鍵,防止對(duì)未知的座位進(jìn)行操作,擾亂程序操作。

3 系統(tǒng)調(diào)試結(jié)果

座位采集終端的實(shí)物連接如圖5所示。在Visual Studio Code中連接Arduino的硬件串口,出口的輸出結(jié)果如圖6所示。當(dāng)完成初始化后,連接在D2端口上的熱釋電紅外傳感器檢測(cè)到移動(dòng),通過AT指令發(fā)送數(shù)據(jù)。一號(hào)圖書館的一樓一號(hào)桌一號(hào)座位狀態(tài)為已占用。

圖5 座位采集終端實(shí)物連接圖

圖6 串口輸出數(shù)據(jù)

將數(shù)據(jù)中的status改為1后,由postman模擬發(fā)送數(shù)據(jù),整體用戶測(cè)試界面如圖7所示,可見對(duì)應(yīng)座位樣式發(fā)生變化。

4 總結(jié)

本設(shè)計(jì)針對(duì)圖書館座位利用效率較低這一問題展開研究,采用熱釋電傳感器采集座位使用信息,Arduino微控制器處理數(shù)據(jù),窄帶物聯(lián)網(wǎng)模塊傳輸數(shù)據(jù),中國(guó)電信物聯(lián)網(wǎng)平臺(tái)解碼轉(zhuǎn)發(fā)數(shù)據(jù),阿里云云服務(wù)器搭建應(yīng)用服務(wù)器接收數(shù)據(jù),B/S模式展示數(shù)據(jù)的方式完成以下功能:

(1)非接觸式,實(shí)時(shí)主動(dòng)采集座位使用信息;

(2)人性化判斷座位的使用情況,排除了一些干擾;

(3)低功耗數(shù)據(jù)傳輸,節(jié)約系統(tǒng)維護(hù)成本;

(4)各端數(shù)據(jù)可視,方便數(shù)據(jù)追蹤;

(5)圖書館管理員遠(yuǎn)程管理,用戶遠(yuǎn)程查看,預(yù)訂座位;

(6)圖書館內(nèi)座位使用情況圖形化展示,使數(shù)據(jù)展示更加直觀。

猜你喜歡
窄帶串口座位
換座位
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
熱軋窄帶鋼Q345B微合金化生產(chǎn)實(shí)踐
山東冶金(2019年1期)2019-03-30 01:34:54
巴士上的座位
無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
換座位
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
那個(gè)沒搶到座位的孩子
人生十六七(2015年5期)2015-02-28 13:08:25
基于壓縮感知的窄帶干擾重構(gòu)與消除
陵川县| 怀化市| 霸州市| 抚松县| 南投县| 深水埗区| 叶城县| 尼勒克县| 罗平县| 会昌县| 宣威市| 墨竹工卡县| 乌审旗| 积石山| 肇东市| 祁阳县| 清涧县| 依兰县| 水富县| 时尚| 财经| 衡水市| 和平区| 旅游| 鲁甸县| 南雄市| 漳州市| 临江市| 武安市| 富宁县| 渑池县| 乐亭县| 汉寿县| 宝坻区| 伊通| 东阿县| 阜新| 肥东县| 蒙阴县| 丹江口市| 敦煌市|