• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Flask的樹莓派溫濕度氧氣濃度報警器

      2020-06-30 10:07:21陳梓敏張子揚周賢中
      科技創(chuàng)新導(dǎo)報 2020年8期
      關(guān)鍵詞:樹莓派

      陳梓敏 張子揚 周賢中

      摘? ?要:基于實驗室氣體安全問題頻出的情景,研發(fā)性能強大、架構(gòu)輕便的報警器是一個值得研究的課題。在實驗室中配置該報警器以檢測環(huán)境中的溫度、濕度、氧氣濃度,當(dāng)檢測數(shù)值高于或低于安全范圍時,將會由傳感器發(fā)出警示信號。同時,通過輕量化Web框架Flask進行后端設(shè)計,經(jīng)過樹莓派進行數(shù)據(jù)處理后可以在瀏覽器網(wǎng)頁端實時監(jiān)控受檢測指標(biāo)變化,并且保存歷史記錄。

      關(guān)鍵詞:Flask? Python? 樹莓派? 氧氣濃度

      中圖分類號:TP273;U495? ? ? ? ? ? ? ? ? ? ? ? 文獻標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ? ?文章編號:1674-098X(2020)03(b)-0056-04

      Abstract: Based on the situation of frequent gas safety problems in the laboratory, it is worth studying to develop a powerful and portable alarm. The alarm is equipped in the laboratory to detect the temperature, humidity and oxygen concentration in the environment. When the detection value is higher or lower than the safe range, the sensor will send out warning signals. At the same time, through the lightweight web framework flask for back-end design, after the raspberry pie data processing, it can real-time monitor the changes of detected indicators in the browser Web site, and save the history.

      Key Words: Flask; Python; Raspberry Pi; Oxygen Concentration

      在任何可能發(fā)生氧氣不足的地方,都需要氧氣警報。盡管大多數(shù)人都想到飛機或潛艇等封閉環(huán)境,但更常見的例子是頻繁使用化學(xué)試劑和化學(xué)氣體進行實驗的密閉實驗室環(huán)境。如果實驗室中存儲著的氣體的鋼瓶或儲罐發(fā)生泄漏,氣體的快速流出會迅速降低封閉區(qū)域或室內(nèi)的氧氣含量,從而威脅人的生命安全。

      隨著實驗室中的科研范圍日漸擴大,實驗環(huán)境的密封性要求逐漸提高,由缺氧導(dǎo)致的一系列安全事故頻發(fā),這一嚴(yán)峻問題引起了廣大科研工作者的重視。為達到保障科研工作者的生命安全、創(chuàng)造安全的實驗環(huán)境等目的,本項目意在開發(fā)一個功能強大、使用方便、能耗較低的溫濕度氧氣濃度報警器。

      1? 系統(tǒng)設(shè)計

      本項目的硬件設(shè)計圍繞樹莓派3B+單片機及其外設(shè)展開。正常工作狀態(tài)下,傳感器持續(xù)讀取外界環(huán)境中的目標(biāo)數(shù)值,LED燈處于常亮狀態(tài),蜂鳴器處于低電平狀態(tài),不發(fā)出鳴叫聲音。當(dāng)傳感器檢測到相關(guān)目標(biāo)數(shù)值未處于預(yù)設(shè)的標(biāo)準(zhǔn)范圍之內(nèi)時,蜂鳴器被置于高電平狀態(tài),開始持續(xù)鳴叫示警。

      直至使用者連續(xù)按兩次按鈕,LED燈變至閃爍狀態(tài),蜂鳴器停止發(fā)出鳴叫警報聲。此外,長按按鈕可使LED燈處于熄滅狀態(tài),輕按一次則恢復(fù)正常工作狀態(tài)。

      1.1 硬件設(shè)計

      如圖1所示,硬件部分由樹莓派3B+、Grove拓展板、溫濕度傳感器、氧氣濃度傳感器、蜂鳴器及LED按鍵組成,其中的外設(shè)統(tǒng)一使用Grove接口,達到便于整理、美觀等效果。

      其中,樹莓派3B+是由英國樹莓派基金會于2018年發(fā)行的單板計算機,相較此前的型號,具備更加豐富的拓展功能以及更加強大的性能,自身帶有四個USB A端口、一個基于USB 2.0的千兆以太網(wǎng)端口、HDMI高清多媒體接口以及3.5mm音頻接口,此外還有雙頻WiFi模塊、藍牙4.2模塊。處理器基于ARM芯片,能夠以1.4GHz的頻率運行,以SD卡為內(nèi)存硬盤,具備所有PC的基本功能。因此,其自身具備功耗低、性能強大、拓展豐富的特點,此外,其價格不足250元,價格低廉,采用其作為開發(fā)板能夠節(jié)約經(jīng)費。

      拓展板Grove Base Hat通過GPIO拓展口連接在樹莓派的IO口上,并使用銅柱固定。拓展板提供多個數(shù)字、模擬、I2C、PWM、UART端口,以滿足使用者多樣要求,并且端口皆為Grove接口。

      DHT11是一款低成本的數(shù)字溫度和濕度傳感器,可產(chǎn)生校準(zhǔn)的數(shù)字輸出,并且具有很高的可靠性和長期穩(wěn)定性。氧氣濃度傳感器選用了煒盛科技的ME2-O2-Φ20型電化學(xué)氣體傳感器,可對氧氣進行定量測量,具有低功耗、高精度、高靈敏度、抗干擾能力強等優(yōu)點。

      以上兩個傳感器在使用前都需預(yù)熱數(shù)分鐘,否則將產(chǎn)生不穩(wěn)定數(shù)據(jù)。

      1.2 軟件設(shè)計

      該報警器需實現(xiàn)實時監(jiān)控數(shù)據(jù)變化和查詢歷史數(shù)據(jù)的功能,并且當(dāng)氧氣濃度不在安全范圍內(nèi)時,蜂鳴器以及LED按鈕開始工作,實現(xiàn)報警功能。為了達到降低功耗以及使用方便等目的,設(shè)計了在瀏覽器中查詢相關(guān)數(shù)據(jù)的功能。

      1.2.1 開發(fā)平臺

      根據(jù)需求,本項目軟件設(shè)計后端部分使用了由Python編寫的輕量級WEB應(yīng)用框架——Flask框架[1-2],并使用HTML和JavaScript語言編寫網(wǎng)頁顯示部分。Flask框架使用簡單、功耗低、占用內(nèi)存少,且具有很強的可拓展性,可快速搭建小型網(wǎng)站。在數(shù)據(jù)存儲調(diào)用方面,選用了小型數(shù)據(jù)庫SQLite3[3],通過創(chuàng)建pi_temp.db數(shù)據(jù)庫文件,并在其中建立三個表分別存儲溫度、濕度和氧氣濃度數(shù)值。使用者在瀏覽器中輸入樹莓派的IP地址以及預(yù)設(shè)的端口號,即可實時監(jiān)控數(shù)據(jù)或查閱歷史數(shù)據(jù)。

      1.2.2 后端程序分析

      如圖2程序框架所示,后端設(shè)計部分主要由flask_sqlite3.py(構(gòu)建flask框架)、deque_logger.py(讀取并寫入數(shù)據(jù))、bbb.py(報警服務(wù))三個Python程序構(gòu)成,并由ZeroMQ[4-5]模塊實現(xiàn)程序間的通訊。

      在flask_sqlite3.py程序中,導(dǎo)入了flask包中的Flask、request、render_template模塊構(gòu)建flask框架,通過模板新建html文件并傳遞相關(guān)參數(shù),分別由不同的使用條件建立live.html、no_sensor.html、history.html三個網(wǎng)頁程序。

      以上網(wǎng)頁中,live頁面直接顯示溫度、濕度、氧氣濃度三項數(shù)據(jù),從而達到實時監(jiān)控的目的;在history頁面中,通過調(diào)用time、datetime、arrow時間模塊,使對應(yīng)時間格式化,以便查詢時調(diào)用,并通過json[5]模塊格式化數(shù)據(jù),使用plotly模塊包繪制三項數(shù)據(jù)的折線變化圖,當(dāng)檢測到數(shù)據(jù)庫中相應(yīng)的表中無數(shù)據(jù)更新時,在no_sensor頁面中顯示錯誤警告“Sorry, can't access the sensor!”。

      deque_logger.py程序通過導(dǎo)入Seeed公司提供的grove.adc包中的讀數(shù)方法讀取傳感器對應(yīng)電壓值,從而換算成對應(yīng)的氧氣濃度。另外,通過DHT公司提供的例程直接計算從DHT11溫濕度傳感器[6-7]得到的溫度、濕度數(shù)據(jù)。

      通過導(dǎo)入zmq模塊,采用請求應(yīng)答模式(Request-Reply)實現(xiàn)消息的雙向傳輸,滿足deque_logger.py和bbb.py程序的通訊需求。在deque_logger.py程序中,每當(dāng)寫入一次數(shù)據(jù)后,都將檢測氧氣濃度是否在安全范圍內(nèi),若不在安全范圍內(nèi),則發(fā)送警示消息‘bb至bbb.py程序。當(dāng)bbb.py程序檢測到該信息為‘bb且預(yù)設(shè)的alarm變量為真,將蜂鳴器置于高電平,蜂鳴器開始鳴叫。若alarm變量為假或接收到的信息不為‘bb,則蜂鳴器不發(fā)出鳴叫聲。

      在bbb.py 程序中,導(dǎo)入gpiozero包中的Buzzer模塊控制蜂鳴器。LED按鈕由Seeed公司提供的相應(yīng)例程進行控制,其中的GroveLedButton類通過Button模塊和Factory模塊將按鍵的狀態(tài)和LED燈的狀態(tài)聯(lián)系在一起,設(shè)計出三個事件,分別響應(yīng)不同的動作。當(dāng)單次按壓按鍵時,LED燈亮起;當(dāng)連續(xù)按壓按鍵時,LED燈開始閃爍,蜂鳴器停止發(fā)出鳴叫聲;當(dāng)長按按鍵時,LED燈熄滅,蜂鳴器不再工作,LED按鍵也不再工作。

      1.2.3 前端界面設(shè)計

      如圖3所示,live頁面可實時顯示當(dāng)前外界環(huán)境中溫度、濕度、氧氣濃度的數(shù)值,為了達到簡潔明了的目的,在層中鍵入文本,并且設(shè)定每10s刷新一次頁面顯示數(shù)據(jù)。通過Javascript腳本[8-9]制作名為Historic的控件,點擊后可跳轉(zhuǎn)至history頁面。

      如圖4所示,history頁面通過折線圖中不同顏色的線條直接顯示溫度、濕度、氧氣濃度的歷史數(shù)據(jù),通過控件可更改數(shù)據(jù)顯示范圍。此外,點擊Live可跳轉(zhuǎn)至實時顯示頁面。

      2? 實驗驗證

      如圖5所示,為了達到節(jié)省環(huán)保的目的,本項目使用生活中常用的物品來完成實驗驗證。首先,通過充電寶對樹莓派進行供電,通電開機后程序開始運行,預(yù)熱5min后,傳感器開始穩(wěn)定測量環(huán)境中的有關(guān)數(shù)據(jù)。將所有設(shè)備放入密閉性良好的保鮮盒,在其中放入合適用量的除氧劑用以降低氧氣濃度。

      如圖6所示,密封一段時間后,當(dāng)盒中氧氣濃度低于預(yù)先設(shè)定的臨界值,蜂鳴器開始報警,實現(xiàn)報警功能,完成驗證。

      3? 結(jié)語

      基于Flask的樹莓派溫濕度及氧氣濃度報警器在硬件上,通過樹莓派和多個grove接口傳感器進行設(shè)計,實現(xiàn)了功能強大、接線簡單、設(shè)計方便等目的。其中,溫濕度傳感器DHT11通過PWM接口連接樹莓派,氧氣濃度傳感器通過Analog接口連接樹莓派。

      在軟件設(shè)計方面,通過Python的Flask輕量級Web框架進行后端設(shè)計,降低了代碼設(shè)計難度,提高了代碼的簡潔度和可讀性,提高了完成項目的效率。

      由于樹莓派PWM方面的設(shè)計漏洞,導(dǎo)致當(dāng)多個程序同時運行時,PWM時序會產(chǎn)生波動,從而導(dǎo)致溫濕度傳感器產(chǎn)生錯誤數(shù)據(jù)。在調(diào)試過程中,通過逐步嘗試修改讀數(shù)方法、更換傳感器、更換接口等方法,最終決定通過collections模塊中的deque.median()方法取中位數(shù)以消除錯誤數(shù)據(jù),達到代碼簡便、經(jīng)濟節(jié)省的目的。

      基于Flask的樹莓派溫濕度及氧氣濃度報警器的開發(fā)可以提高實驗室安全性,同時可以達到高性能、低功耗的目的,能夠為實驗室安全提供良好的服務(wù)。

      參考文獻

      [1] 葉鋒.Python最新Web編程框架Flask研究[J].電腦編程技巧與維護,2015(15):29-30.

      [2] 牛作東,李捍東.基于Python與flask工具搭建可高效開發(fā)的實用型MVC框架[J].計算機應(yīng)用與軟件,2019, 36(7).

      [3] Introduction to Sqlite and its usage with python[J]. 2015.

      [4] 葉崧, 姚健東. 基于ZeroMQ & JSON的分布式測控系統(tǒng)消息通信架構(gòu)設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(2):105-109.

      [5] 方賡.基于ZeroMQ消息交換的充電站監(jiān)控平臺的設(shè)計與應(yīng)用[J].電子世界,2019(11).

      [6] 李德路,侯文寶.基于DHT11室內(nèi)溫/濕度監(jiān)控系統(tǒng)設(shè)計[J].智能建筑與城市信息,2013(11):65-67.

      [7] 潘繼強.基于DHT11的空氣溫濕度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2014(21):5105-5108.

      [8] Halfacree G .JavaScript[M]// The Official BBC micro:bit?; User Guide. John Wiley & Sons, Inc. 2017.

      [9] Dale, Kyran.Data Visualization With Python And Javascript[J].2016.

      猜你喜歡
      樹莓派
      基于微信端的智能家居監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
      智能安全防盜探測小車
      一種基于樹莓派的門禁系統(tǒng)快速構(gòu)建方法
      煙草物流中心工業(yè)無線網(wǎng)絡(luò)安全監(jiān)測系統(tǒng)設(shè)計
      基于樹莓派的高清視頻播放器的設(shè)計與實現(xiàn)
      科技視界(2015年29期)2015-10-19 10:55:56
      基于嵌入式技術(shù)的農(nóng)村醫(yī)療系統(tǒng)設(shè)計
      忻城县| 疏附县| 安多县| 西峡县| 金平| 汝南县| 正镶白旗| 扎鲁特旗| 巴林右旗| 武安市| 济宁市| 三亚市| 无锡市| 沁源县| 贵溪市| 凭祥市| 大同市| 盘山县| 香港| 唐山市| 梅州市| 扶绥县| 乾安县| 浑源县| 黄龙县| 巴中市| 砀山县| 鸡泽县| 岢岚县| 莒南县| 延寿县| 和硕县| 莱西市| 始兴县| 苏尼特左旗| 古浪县| 凯里市| 招远市| 凤山市| 南京市| 自治县|