在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32設計的宿舍安防控制系統

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2025-01-09 11:28 ? 次閱讀

1.1 項目介紹

【1】開發背景

隨著社會的發展和技術的進步,人們對居住環境的安全性和智能化水平提出了更高的要求。特別是在校園宿舍這樣的集體生活環境里,由于人員密集且流動性大,傳統的安防措施已經難以滿足現代安全標準的需求。為了提高宿舍區的安全防范能力,減少安全隱患,本項目提出了一套基于STM32微控制器與NBIoT(窄帶物聯網通信技術相結合的宿舍安防控制系統。

該系統的設計理念是將物聯網技術應用于日常生活中,通過集成多種傳感技術來實現對宿舍環境的全方位監控,并能夠及時響應各種異常情況,從而達到預防火災、防盜、節能等多重目的。例如,在發生火災初期,通過安裝于宿舍內的煙霧及火焰傳感器可以迅速感知火情并發出警報;同時,系統還能監測用電安全,當檢測到線路過載或短路等危險狀況時,自動切斷電源以避免事故進一步擴大。此外,考慮到實際使用中的便利性,該系統還具備了遠程操控功能,允許用戶通過智能手機應用程序或是PC端管理軟件隨時隨地掌握家中狀態,并執行如開啟門鎖等操作。

選擇STM32作為主控芯片是因為它具有強大的處理能力和豐富的外設資源,非常適合用來構建復雜而高效的嵌入式系統。搭配NBIoT模塊,則保證了即使在網絡信號較差的情況下也能保持穩定可靠的無線連接,這對于確保重要信息能夠及時準確地傳輸至云端至關重要。與此同時,利用華為云提供的物聯網平臺服務,不僅簡化了后端架構的設計工作量,而且為用戶提供了一個直觀易用的數據展示界面以及靈活多樣的交互方式。

本項目結合先進的嵌入式技術和物聯網概念,打造一套集成了環境監測、安全防護以及智能家居控制于一體的綜合性解決方案,旨在為用戶提供更加安心舒適的生活體驗。通過這樣一個智能化的安全管理系統,不僅可以有效提升宿舍區域的整體安全性,同時也促進了節能減排目標的實現,對于推動智慧城市建設具有積極意義。

image-20241108113301727

框架圖:

image-20241108103823707

原理圖:

image-20241108112409021

【2】實現需求

當前項目使用的相關軟件工具已經上傳到網盤:
https://ccnr8sukk85n.feishu.cn/wiki/QjY8weDYHibqRYkFP2qcA9aGnvb?from=from_copylink

為了明確本項目的具體實現需求,以下按照功能模塊詳細列出各項需求:

(1) 火焰檢測與報警

  • 配備火焰檢測傳感器,能夠快速響應火焰存在。
  • 當檢測到火焰時,系統應立即啟動蜂鳴器報警,同時將警報信息通過NBIoT模塊發送到云端。
  • 在本地LCD顯示屏上顯示火焰警告信息。

(2) 煙霧檢測與報警

  • 使用MQ2煙霧傳感器,實時監測環境中的煙霧濃度。
  • 如果煙霧濃度超過預設閾值,觸發蜂鳴器報警,并將警報信息上傳至云端。
  • LCD顯示屏同步更新顯示煙霧警告信息。

(3) 門磁控制

  • 實現本地按鍵開門功能(內部開門的按鈕),按下指定按鍵后,通過STM32控制電磁鎖開啟。
  • 開發手機APP和Windows電腦上位機軟件,支持用戶遠程發送開門指令。

(4) 人體感應

  • 安裝紅外熱釋電人體檢測傳感器,用于探測宿舍內是否有人。
  • 傳感器數據用于輔助判斷是否需要保持照明或其他設備的工作狀態。
  • 檢測結果同樣上傳至云端,并可在LCD顯示屏上查看。

(5) 電力監測與保護

  • 通過電力參數采集模塊持續監測宿舍內的電壓、電流、功率等電氣參數。
  • 設定合理的電流和功率閾值,當超過這些閾值時,系統應自動切斷電源,并觸發蜂鳴器報警。
  • 監測數據定期上傳至云端,并在LCD顯示屏上顯示。

(6) 數據上云

  • 采用NBIoT模塊和MQTT協議將采集到的所有數據上傳到華為云物聯網平臺。
  • 確保數據傳輸的安全性和可靠性,同時保證低功耗運行。
  • 提供API接口,便于Android手機APP和Windows上位機獲取云端數據。

(7) 本地數據顯示

  • 利用1.44寸LCD顯示屏,實時顯示當前的環境狀態,包括但不限于煙霧濃度、火焰檢測狀態、電力參數等。

(8) 用戶界面

  • 開發基于Qt框架的Android手機APP和Windows上位機軟件,界面友好且易于操作。
  • 用戶界面需包含數據展示、遠程控制、歷史記錄查詢等功能。
  • 確保用戶界面能夠適應不同尺寸的屏幕,并提供良好的用戶體驗。

【3】項目硬件模塊組成

本項目的硬件模塊組成如下,每個模塊都根據其特定的功能進行了詳細的描述:

(1) 主控芯片 - STM32F103RCT6 :作為整個系統的核心,STM32F103RCT6負責處理來自各個傳感器的數據輸入、執行邏輯運算以及控制輸出設備。它擁有豐富的外設接口,能夠滿足與多種傳感器及執行器的連接需求。

(2) 煙霧檢測 - MQ2傳感器 :MQ2是一種常用的氣體傳感器,特別適用于檢測液化氣、丁烷、丙烷、甲烷、酒精、氫氣、煙霧等可燃氣體。在本項目中,它被用來監測宿舍環境中是否存在異常煙霧,一旦檢測到煙霧濃度超標,即刻向主控發送信號。

(3) 電力參數采集模塊 :通過RS485UART接口與STM32相連,此模塊能夠精確測量宿舍內電路的電壓、電流、功率等參數。這些數據不僅用于顯示,也用于判斷是否存在過載或其他潛在的電氣風險。

(4) LCD顯示屏 - 1.44寸LCD :作為人機交互的重要組成部分,這款小型彩色LCD屏幕用于展示實時監測的各項數據,如溫度、濕度、煙霧濃度以及電力使用情況等信息,使用戶能夠直觀了解當前狀態。

(5) 蜂鳴器 - 高電平觸發的有源蜂鳴器 :當系統檢測到火災、煙霧或其他緊急情況時,STM32將控制蜂鳴器發聲,起到警示作用。蜂鳴器直接由STM32的GPIO引腳驅動。

(6) NBIoT模塊 - BC26 :作為物聯網通信的關鍵部件,BC26模塊使得系統能夠通過移動運營商網絡將采集到的數據上傳至云端服務器。它支持低功耗廣域網(LPWAN)技術,非常適合于遠程監控應用。

(7) 火焰檢測傳感器 :專門設計用于探測火焰的存在,通常基于紅外光譜特性工作。當檢測到火焰時,傳感器會向STM32發送信號,觸發警報流程。

(8) 人體感應 - 紅外熱釋電傳感器 :這種類型的傳感器可以感知人體散發出的熱量變化,用于判斷房間內是否有人。它對于提高系統的智能化程度,比如自動調整照明亮度或空調溫度非常有用。

(9) 電磁鎖 - :作為門禁系統的一部分,電磁鎖由STM32控制,可通過本地按鍵、手機APP或電腦遠程解鎖。它提供了物理層面的安全保障,確保只有授權人員才能進入宿舍。

(10) 穩壓電源 - 12V 2A :為保證整個系統穩定運行,選用一款輸出穩定的直流電源適配器,為所有電子組件提供必要的電力支持。考慮到系統的總功耗,2安培的額定輸出足夠應對大多數應用場景。

【4】設計意義

本項目設計的意義在于通過集成多種先進技術和智能設備,構建一個高效、可靠且用戶友好的宿舍安防控制系統,從而顯著提升宿舍環境的安全性和居住質量。隨著城市化進程的加快和學生群體的不斷增長,校園宿舍的安全問題日益受到重視。傳統的安防措施往往依賴于人工巡檢和簡單的報警系統,無法實現全天候、全方位的監控,且響應速度慢,難以及時有效地處理突發事件。因此,開發一套基于現代物聯網技術的宿舍安防控制系統顯得尤為重要。

系統通過引入火焰檢測、煙霧檢測以及人體感應等多種傳感器,能夠實時監測宿舍內外的各種潛在威脅。一旦發現火災或其他緊急情況,系統能夠立即作出反應,通過蜂鳴器發出警報,并將警報信息上傳至云端,確保管理人員第一時間得到通知并采取相應措施。這種即時響應機制大大減少了災害發生的可能性及其帶來的損失。

門磁控制系統結合了本地按鍵開門與遠程控制兩種方式,不僅增強了宿舍入口的安全性,還提供了極大的便利性。用戶可以通過智能手機應用程序或PC端軟件隨時隨地進行訪問控制,無論是忘記帶鑰匙還是需要臨時授權他人進入,都能夠輕松解決。這種方式不僅提高了效率,也增加了靈活性,讓宿舍管理變得更加現代化。

電力參數監測功能的加入,使得系統能夠持續跟蹤宿舍內的用電狀況。通過對電壓、電流、功率等關鍵指標的監控,系統能夠在檢測到異常情況時及時切斷電源,防止電氣火災的發生。這不僅保障了學生的生命財產安全,也有助于促進節能減排,符合可持續發展的理念。

數據上云是本項目另一個重要的特點。通過NBIoT模塊將采集的數據上傳至華為云物聯網平臺,不僅實現了數據的集中管理和分析,也為用戶提供了一個便捷的遠程查看和控制平臺。用戶可以在任何地方通過手機或電腦訪問系統,查看最新的監測數據,并進行相應的操作。這種透明化的管理模式,既增強了用戶的參與感,也提升了整體管理效率。

通過本地LCD顯示屏的實時數據顯示,以及基于Qt開發的用戶界面,系統提供了直觀的操作體驗。用戶可以輕松獲取所需信息,并進行簡單有效的交互。這樣的人機交互設計考慮到了用戶的實際需求,使得高科技產品變得更加親民易用。

綜上所述,本項目不僅在技術層面上實現了對宿舍環境的全面監測與智能控制,更是在實際應用中為學生創造了一個更加安全、便捷和舒適的居住環境。它代表了未來智能家居的一個發展方向,對于推動校園安全管理現代化、提升學生生活質量具有重要意義。

【5】國內外研究現狀

在中國,隨著智慧校園和智慧城市概念的推廣,宿舍安防控制系統的研究與應用逐漸增多。北京航空航天大學曾推出了一款基于物聯網技術的宿舍安全管理系統,該系統不僅能夠監測宿舍內的溫濕度、煙霧、一氧化碳等環境參數,還可以通過智能門鎖實現對進出人員的身份驗證。這套系統通過集成攝像頭和人臉識別技術,進一步增強了宿舍的安全性。此外,該系統還支持通過手機APP遠程控制門鎖、查看宿舍內環境數據以及接收警報信息,極大地方便了學生的生活。北京航空航天大學的這項研究展示了物聯網技術在提升宿舍安全性方面的巨大潛力。

在國外,類似的智能安防解決方案也在不斷發展。美國的一些高校,如麻省理工學院(MIT),已經在宿舍中應用了先進的安防技術。MIT的宿舍區采用了多種智能傳感器和監控設備,如運動探測器、門窗傳感器以及智能煙霧報警器。這些設備通過無線網絡連接到中央管理系統,一旦檢測到異常情況,系統會自動向相關人員發送警報。此外,MIT還開發了一款名為“SafeWalk”的應用程序,允許學生在夜間步行回宿舍時請求護送服務,進一步提高了校園的安全水平。

歐洲方面,德國的亞琛工業大學(RWTH Aachen University)實施了一個名為“Smart Campus”的項目,其中包含了宿舍安防系統的改進。該項目利用了LoRaWAN(低功耗廣域網絡)技術來連接分布在宿舍區的各種傳感器,包括門窗傳感器、水浸傳感器以及溫度濕度傳感器等。通過這些傳感器收集的數據,系統能夠實時監測宿舍的安全狀況,并通過手機應用程序向住戶發送警報。此外,亞琛工業大學還在研究如何利用機器學習算法來優化警報系統的性能,減少誤報率,提高準確性。

新加坡國立大學(NUS)也致力于通過技術創新來提高宿舍區的安全性。該校部署了一套結合了視頻監控、面部識別技術和物聯網傳感器的綜合安防系統。這套系統不僅可以監控宿舍區內的異常活動,還能通過面部識別技術來識別進出宿舍的人員身份,從而確保只有授權的人員才能進入宿舍。同時,NUS還利用大數據分析來優化宿舍區的安全管理策略,通過對大量數據的分析,識別潛在的安全隱患,并提前采取預防措施。

這些國內外的實際案例表明,宿舍安防控制系統的研究正處于快速發展階段,新技術的應用不僅提高了宿舍的安全水平,也大大提升了居住者的舒適度和便利性。隨著技術的不斷進步,未來的宿舍安防系統將更加智能化、個性化,更好地服務于校園生活。

【6】摘要

本項目設計了一個基于STM32微控制器和NB-IoT通信技術的宿舍安防控制系統。系統集成了多種安防功能,包括火焰檢測、煙霧檢測、門磁控制、人體感應、電氣監測等。火焰和煙霧檢測通過相應的傳感器實現,一旦檢測到異常,系統會觸發蜂鳴器報警以提醒用戶。門磁控制功能允許用戶通過本地按鍵、手機APP和Windows電腦上位機遠程控制門鎖的開啟與關閉。人體感應功能可檢測宿舍內是否有人員存在,用于防止盜竊或異常情況發生。

系統還具有電氣監測功能,能夠實時監測直流電與單相交流電的電壓、電流與功率,并在電流或功率超出設定閾值時,通過蜂鳴器報警并自動切斷電源,確保用電安全。所有采集的數據通過NB-IoT模塊和MQTT協議上傳至華為云物聯網平臺,用戶可通過Android手機APP遠程查看數據和控制設備。數據的本地顯示則通過1.44寸LCD屏完成,方便用戶實時獲取各項監測信息。

本系統不僅具備本地和遠程控制功能,還通過云平臺實現了數據的實時監控和報警功能,增強了宿舍的安全性。該系統采用STM32F103RCT6作為主控芯片,結合MQ2、火焰檢測、人體感應等傳感器,具有較高的集成度和實用性。

關鍵字

STM32, NB-IoT, 宿舍安防, 火焰檢測, 煙霧檢測, 門磁控制, 人體感應, 電氣監測, 數據上云, MQTT, 華為云物聯網, LCD顯示, 無線通信, 遠程控制, 安全報警

1.2 系統總體設計

【1】系統功能需求分析

系統功能需求分析是項目規劃階段的重要組成部分,它明確了系統需要實現的具體功能,確保開發能夠準確理解并滿足用戶的需求。對于基于STM32和NBIoT設計的宿舍安防控制系統,以下是對其功能需求的詳細分析:

系統需配備高靈敏度的火焰檢測傳感器和煙霧傳感器,如MQ-2煙霧傳感器。這些傳感器應能夠連續監測宿舍環境,一旦檢測到火焰或異常煙霧濃度,系統應當立即觸發蜂鳴器發出警報,并通過NBIoT模塊將警報信息發送到云端。同時,警報信息也應在本地LCD顯示屏上顯示,以便宿舍內人員能夠迅速察覺并采取行動。火焰與煙霧檢測是宿舍安防的基礎,對于早期發現火災隱患至關重要。

系統需要支持多種方式的門鎖控制,包括本地按鍵開門、手機APP遠程開門以及通過Windows電腦上的上位機軟件遠程控制。本地按鍵開門適用于日常出入,而遠程開門則為特殊情況下的應急處理提供了便利。電磁鎖應由STM32控制,確保只有授權用戶才能通過合法途徑進入宿舍。此外,每次開門動作都應記錄下來并通過NBIoT模塊上傳至云端,以備后續審查和審計之用。

系統需集成紅外熱釋電人體感應傳感器,用于檢測宿舍內是否有人。當檢測到有人時,系統可以自動調節照明和其他電器設備的狀態,以節約能源。此外,人體感應數據也可用于輔助判斷宿舍內的安全狀態,如在無人狀態下檢測到異常移動,系統應立即發出警報并通知相關人員。人體感應功能不僅提高了系統的智能化程度,也增強了安全性。

系統應配置電力參數采集模塊,實時監測宿舍內的電壓、電流、功率等電氣參數。系統需設定合理的電流和功率閾值,一旦超過這些閾值,系統應自動切斷電源,以防止電氣故障導致的火災或其他安全事故。同時,電力監測數據應通過LCD顯示屏實時顯示,并通過NBIoT模塊定期上傳至云端,以便管理者進行數據分析和趨勢預測。

通過NBIoT模塊和MQTT協議,系統需將所有收集到的數據上傳至華為云物聯網平臺。這包括火焰和煙霧警報、門鎖操作記錄、人體感應數據以及電力參數等。數據上云后,可以通過Android手機APP和Windows電腦上的上位機軟件進行遠程查看。用戶可以隨時隨地監控宿舍的安全狀況,并進行遠程控制,如遠程開門等。云端數據存儲還便于進行長期的數據分析和管理。

系統應配備1.44寸LCD顯示屏,用于顯示實時的環境監測數據和系統狀態。顯示屏應清晰易讀,能夠顯示火焰檢測狀態、煙霧濃度、電力參數等關鍵信息。此外,顯示屏還應顯示基本的操作指南和當前設置狀態,以方便用戶理解和操作。

系統設計需充分考慮穩定性和安全性。硬件方面,應選用可靠耐用的組件,并確保電源穩定。軟件方面,程序應具備良好的錯誤處理機制和數據加密功能,以保護用戶隱私和系統安全。系統還應支持掉電恢復功能,確保在電力中斷后能夠恢復正常工作。

通過上述功能需求的實現,該宿舍安防控制系統將能夠提供全面的安全防護,同時為用戶提供便捷的遠程控制體驗。系統不僅提升了宿舍的安全性,還促進了能源的有效利用,體現了智能化管理的優勢。

【2】系統總體方案設計

系統總體方案設計基于STM32微控制器和NBIoT通信技術,旨在創建一個高度集成、智能化的宿舍安防控制系統。該系統集成了火焰檢測、煙霧檢測、門磁控制、人體感應、電力監測與保護以及數據上云等多項功能,確保宿舍環境的安全性、便捷性和智能化管理。核心組件包括STM32F103RCT6微控制器、MQ2煙霧傳感器、火焰檢測傳感器、紅外熱釋電人體感應傳感器、電力參數采集模塊、蜂鳴器、NBIoT模塊BC26、5V電磁鎖、1.44寸LCD顯示屏以及一個5V 2A的穩壓電源。

系統架構分為三個主要部分:數據采集與處理、本地控制與顯示、遠程監控與管理。在數據采集與處理部分,STM32F103RCT6微控制器作為系統的大腦,負責接收來自各類傳感器的數據,并進行初步處理。火焰檢測傳感器和煙霧傳感器分別用于監測火焰和煙霧,一旦檢測到異常,立即觸發蜂鳴器報警,并通過NBIoT模塊將警報信息上傳至云端。電力參數采集模塊通過串口與STM32通信,實時監測宿舍內的電壓、電流、功率等參數,若超出預設的安全閾值,系統將自動切斷電源并發出警報。此外,紅外熱釋電人體感應傳感器用于檢測宿舍內是否有人存在,輔助判斷安全狀況并優化能源使用。

在本地控制與顯示方面,系統通過1.44寸LCD顯示屏實時顯示各類傳感器的監測數據及系統狀態。用戶可以通過本地按鍵控制門鎖開啟,同時,LCD顯示屏還提供了系統操作指南和當前設置狀態,增強了用戶的交互體驗。蜂鳴器作為報警裝置,會在檢測到異常情況時發出聲音警報,確保及時引起注意。門鎖采用5V電磁鎖,支持本地按鍵、手機APP以及Windows上位機軟件遠程控制,確保了宿舍入口的安全性和便利性。

遠程監控與管理部分是通過NBIoT模塊BC26實現的。該模塊利用NB-IoT網絡將采集到的數據上傳至華為云物聯網平臺,實現了數據的遠程存儲和管理。借助于華為云提供的服務,用戶可以通過Android手機APP或Windows電腦上的上位機軟件隨時查看宿舍的實時狀態,并執行遠程控制命令,如遠程開門等。數據上傳至云端后,還支持數據分析和歷史記錄查詢,為管理者提供了決策支持。

軟件開發方面,STM32的固件采用C語言編寫,利用Keil MDK開發環境進行編譯和調試。固件代碼實現了傳感器數據采集、處理、報警邏輯以及與NBIoT模塊的通信。手機APP和Windows上位機軟件則基于Qt框架開發,使用C++語言編寫,提供了直觀的用戶界面,支持數據查看、遠程控制以及系統配置等功能。通過這些軟件的支持,系統不僅能夠實現基本的安全監測和控制功能,還能提供豐富的用戶體驗。

綜上所述,本系統的總體設計方案綜合了先進的傳感器技術、微控制器處理能力、NBIoT通信技術以及云端服務,形成了一套完整且高效的宿舍安防解決方案。該方案不僅提高了宿舍的安全防護水平,還增強了用戶的便捷性和舒適度,是現代智慧校園建設的重要組成部分。

【3】系統工作原理

系統的工作原理基于STM32微控制器為核心,結合多種傳感器和執行器,通過NBIoT通信技術實現數據的遠程傳輸和云端管理。整個系統的設計提供一個全面的宿舍安防解決方案,確保居住環境的安全性和便利性。

系統通過各類傳感器對宿舍環境進行持續監測。火焰檢測傳感器和煙霧傳感器(如MQ-2)分別用于檢測火焰和煙霧的存在。這些傳感器將環境中的物理變化轉化為電信號,然后傳遞給STM32微控制器。一旦檢測到火焰或煙霧濃度超過預設閾值,STM32會立即觸發蜂鳴器發出警報,提醒宿舍內的人員注意潛在的火災風險。同時,系統會通過NBIoT模塊將警報信息發送到華為云物聯網平臺,以便遠程監控和快速響應。

對于門磁控制,系統配備了5V電磁鎖,支持多種開門方式。用戶可以通過宿舍內的本地按鍵手動開啟門鎖,也可以通過手機APP或Windows電腦上的上位機軟件發送遠程開門指令。這些指令通過NBIoT模塊傳輸到STM32,由微控制器解析后控制電磁鎖的動作。每次門鎖操作都會記錄下來,并通過NBIoT模塊上傳至云端,便于后續的數據分析和安全審計。

人體感應功能由紅外熱釋電傳感器實現。該傳感器能夠檢測宿舍內是否有人存在,并將信號發送給STM32。這不僅有助于判斷宿舍內是否有未經授權的闖入者,還可以根據檢測結果自動調整宿舍內的照明和其他電器設備的狀態,以節省能源。人體感應數據同樣會被記錄并上傳至云端,以供進一步分析和使用。

電力監測是系統的一項重要功能。通過電力參數采集模塊,系統能夠實時監測宿舍內的電壓、電流和功率等參數。當這些參數超過預設的安全閾值時,系統會自動切斷電源以防止電氣故障,并通過蜂鳴器發出警報。電力監測數據也會通過LCD顯示屏顯示,并通過NBIoT模塊上傳至云端,便于遠程監控和故障排查。

在數據處理和傳輸方面,STM32微控制器負責接收來自各個傳感器的數據,進行初步處理,并通過NBIoT模塊BC26將數據發送到華為云物聯網平臺。NBIoT技術以其低功耗和廣覆蓋的特點,非常適合于這類需要長時間在線監測的應用場景。數據上傳至云端后,可以通過手機APP或Windows上位機軟件進行遠程查看和控制。用戶可以隨時隨地監控宿舍的安全狀況,并執行遠程操作,如遠程開門等。

系統還配備了一個1.44寸LCD顯示屏,用于本地顯示各種監測數據和系統狀態。這使得用戶可以直接在宿舍內查看關鍵信息,而不需要依賴遠程設備。顯示屏還可以顯示系統的基本操作指南,方便用戶理解和操作。

系統通過集成多種傳感器、執行器和通信模塊,實現了對宿舍環境的全面監測與控制。從火焰和煙霧檢測到門磁控制,再到電力監測和人體感應,每一項功能都緊密配合,確保宿舍的安全和舒適。通過NBIoT技術與云端服務的結合,系統不僅實現了本地的即時響應,還提供了遠程監控和控制的能力,為用戶提供了一個全方位、智能化的宿舍安防解決方案。

1.3 系統框架圖

image-20241108103818629

1.4 系統功能總結

為了清晰地展示系統的主要功能,下面是一個系統功能總結的表格。這個表格列出了每個功能的描述、涉及的關鍵組件以及預期的效果。

功能模塊描述關鍵組件預期效果
火焰檢測檢測宿舍內是否存在火焰,觸發警報火焰檢測傳感器, STM32, 蜂鳴器, NBIoT模塊及時發現火災風險,發出警報并上傳警報信息至云端
煙霧檢測檢測宿舍內是否存在煙霧,觸發警報MQ2煙霧傳感器, STM32, 蜂鳴器, NBIoT模塊及時發現火災風險,發出警報并上傳警報信息至云端
門磁控制支持本地按鍵開門、手機APP和Windows上位機遠程開門5V電磁鎖, STM32, NBIoT模塊提供多種開門方式,增強便利性和安全性
人體感應檢測宿舍內是否有人存在紅外熱釋電傳感器, STM32, NBIoT模塊輔助判斷宿舍狀態,優化能源使用,提高安全性
電力監測與保護監測宿舍內的電壓、電流、功率,超限時發出警報并切斷電源電力參數采集模塊, STM32, 蜂鳴器, NBIoT模塊防止電氣故障,確保用電安全
數據上云通過NBIoT模塊將采集的數據上傳至華為云物聯網平臺NBIoT模塊BC26, STM32實現遠程監控和數據分析
本地數據顯示通過1.44寸LCD顯示屏顯示實時數據和系統狀態1.44寸LCD顯示屏, STM32提供直觀的數據展示,方便用戶查看和操作
遠程控制通過手機APP和Windows上位機軟件實現遠程監控和控制NBIoT模塊, STM32, 手機APP, Windows上位機用戶可以隨時隨地查看宿舍狀態并執行遠程控制

功能總結

  • 火焰檢測與煙霧檢測 :通過火焰檢測傳感器和MQ2煙霧傳感器實時監測宿舍內的火焰和煙霧情況,一旦檢測到異常,立即觸發蜂鳴器報警,并通過NBIoT模塊將警報信息上傳至云端,確保及時響應火災風險。
  • 門磁控制 :結合5V電磁鎖和STM32微控制器,支持本地按鍵開門、手機APP和Windows上位機遠程開門,提高宿舍入口的安全性和便利性。
  • 人體感應 :利用紅外熱釋電傳感器檢測宿舍內是否有人存在,輔助判斷宿舍狀態,優化能源使用,并提高安全性。
  • 電力監測與保護 :通過電力參數采集模塊監測宿舍內的電壓、電流和功率,當超過預設閾值時,系統自動切斷電源并發出警報,確保用電安全。
  • 數據上云 :通過NBIoT模塊BC26將采集的數據上傳至華為云物聯網平臺,實現遠程監控和數據分析,便于管理者進行決策。
  • 本地數據顯示 :1.44寸LCD顯示屏實時顯示宿舍內的各種監測數據和系統狀態,提供直觀的信息展示。
  • 遠程控制 :通過手機APP和Windows上位機軟件,用戶可以遠程查看宿舍狀態并執行控制命令,如遠程開門等,提高系統的靈活性和可用性。

1.5 系統原理圖

image-20241108112352828

1.6 實物圖

image-20241108112743410

image-20241108112554898

1.7 模塊的技術詳情介紹

【1】NBIOT-BC26模塊

NBIoT-BC26模塊是由中國移動通信研究院和移遠通信合作推出的一款NB-IoT(窄帶物聯網)通信模塊,專為低功耗廣域網(LPWAN)應用而設計。NB-IoT是物聯網領域的一項重要通信技術,具有低功耗、低成本、大連接和廣覆蓋的特點,能夠為各種智能終端提供穩定、高效的無線連接。BC26模塊廣泛應用于智能表計、智慧城市、資產追蹤、環境監測和遠程控制等領域。

BC26模塊的尺寸小巧(大約為19.9mm × 23.6mm),功耗極低,非常適合空間有限、功耗敏感的物聯網應用。模塊支持電池供電,并具備深度睡眠模式,使其在無操作時的功耗極低,這在需要長時間工作和持續連接的應用中極為重要。BC26模塊在設計上特別注重能效管理,其低功耗特性為長時間、低成本的物聯網部署提供了可行性。

BC26模塊支持NB-IoT標準的三種部署模式:獨立部署、保護帶部署和帶內部署,使其能夠適應不同網絡環境。它支持多個頻段,如B1、B3、B5、B8、B20等,能夠滿足不同地區和國家的通信需求。BC26模塊提供高達幾百kbps的下行速率,盡管比4G等高帶寬網絡慢得多,但對于大多數傳感器數據、環境監測數據和狀態上報等低數據量的物聯網通信來說已經足夠。

在網絡連接上,BC26模塊使用了NB-IoT技術特有的窄帶無線頻譜,使其具備極強的網絡覆蓋能力。與傳統移動網絡相比,NB-IoT模塊能夠在更深的樓宇或地下環境中保持穩定連接。這一特性對于智慧城市建設中廣泛分布的智能設備至關重要,確保了物聯網設備的可靠通信。

BC26模塊支持標準的AT命令集,使得開發者能夠通過簡單的指令進行配置和操作,包括網絡注冊、連接管理、數據發送與接收等。使用AT命令,開發人員可以快速實現與云平臺的通信、數據傳輸和遠程管理。BC26模塊還支持多種通信協議,如UDP和CoAP,可以通過這些協議實現高效的物聯網數據傳輸。

為了滿足物聯網的安全需求,BC26模塊支持多種加密和認證機制,如數據加密、SIM卡認證等。這些功能增強了通信過程中的安全性,確保數據在傳輸過程中不會被惡意截取或篡改。通過與云平臺的連接,BC26模塊能夠將采集到的設備數據上傳至云端,實現遠程監控、數據分析和設備管理等功能,助力企業構建智能化的物聯網應用。

BC26模塊具備較強的抗干擾能力和穩定性,即使在復雜的無線環境下也能保持高效通信。它的接口類型包括UART、SPI和I2C等,方便與各種單片機、傳感器和其他外圍設備集成。BC26模塊還支持多種電源管理模式,開發者可以根據應用需求設置不同的功耗模式,以優化能源使用。

NBIoT-BC26模塊以其低功耗、高效能、廣覆蓋和易于開發的特點,為物聯網應用提供了可靠的無線通信解決方案。它特別適用于大規模、分布廣泛、低數據量傳輸的場景,成為智能終端和遠程數據采集的重要通信模塊之一。BC26模塊的靈活性和可靠性為各類物聯網項目的構建和部署提供了理想的支持。

【2】MQ2氣體傳感器

MQ2氣體傳感器是一種常見的氣體檢測設備,能夠用于監測環境中的多種氣體,包括可燃性氣體和煙霧等。其工作原理基于金屬氧化物半導體(MOS),當傳感器暴露于特定氣體環境中時,其電阻會發生變化,從而使傳感器產生不同的電信號,進而被檢測出來。以下是MQ2傳感器的詳細介紹:

MQ2傳感器的主要特點是能夠檢測多種氣體,如液化氣(LPG)、丙烷、氫氣、一氧化碳(CO)、酒精和煙霧。由于其靈敏度較高,尤其在檢測煙霧和可燃性氣體方面表現優異,因此被廣泛應用于家庭安全系統、氣體泄漏報警設備、工業監測和其他涉及氣體檢測的應用場景中。它在確保居家安全和工業生產安全方面扮演著重要角色。

MQ2傳感器通常由一個加熱元件和一個電阻傳感元件組成。當傳感器通電時,其內部加熱元件會加熱傳感表面,這一過程有助于加速氣體與傳感層之間的反應速度。加熱器會在傳感器表面形成一個高溫環境,從而提高檢測氣體的反應速度。傳感元件的電阻在不同濃度的可燃氣體或煙霧中會發生變化,通過測量該電阻的變化,可以得到環境中氣體的濃度信息。

該傳感器的輸出為模擬信號,通常需要通過微控制器(如STM32)進行信號的采集和處理。為了將MQ2的模擬信號轉化為數字信號,通常會配合ADC模數轉換器)模塊。還可以使用合適的閾值設定來判斷是否達到報警條件。大多數情況下,它需要一定的預熱時間來達到穩定的工作狀態(一般為20至30秒),以確保檢測結果的準確性。

MQ2傳感器的優點在于價格低廉、靈敏度較高、易于使用并且能夠適應不同氣體檢測需求。它的工作電壓通常為5V,并支持模擬和數字兩種輸出模式。需要注意的是,MQ2的輸出信號會受到環境溫濕度的影響,因此在某些特殊環境下需要進行校準或考慮其影響。同時,由于傳感器對多種氣體具有一定的反應,因此有可能出現干擾,需要針對特定場景做專門的氣體選擇性檢測。

在使用時,MQ2氣體傳感器通常與負載電阻(Load Resistor)連接形成一個簡單的電路。負載電阻的大小可以影響傳感器的靈敏度和響應時間,因此需要根據應用需求進行合理選擇。MQ2氣體傳感器適用于氣體檢測報警、電路保護、消防報警和家用安全等領域。

【3】火焰檢測模塊

火焰檢測模塊是一種基于紅外或紫外光譜檢測火焰的傳感器裝置,廣泛用于火災預警、工業安全、家居安防和自動化系統等領域。它通過感應火焰發出的光信號來實現火焰的檢測和監控,可以快速識別火源并提供警報信號,從而有效降低火災風險,保護生命和財產安全。

火焰檢測模塊通常依靠感應火焰所產生的特定波長的光線來進行檢測。大多數火焰檢測模塊基于紅外感應技術,能夠探測到760納米至1100納米波長的紅外光,部分高精度的模塊也能夠探測紫外光(185-260納米范圍)。由于火焰中含有熾熱的燃燒氣體,這些氣體會在燃燒過程中發出特定波長的紅外或紫外線,因此火焰檢測模塊可以通過識別這些光信號來判斷火焰的存在。

火焰檢測模塊一般由光敏元件、濾光器和放大電路等組成。光敏元件可以是光電二極管、光敏晶體管或其他類型的紅外傳感器。當火焰光線被光敏元件接收時,會引起光電效應,從而產生電信號。經過濾波和放大處理后,這一信號被傳遞到微控制器(如STM32)或報警電路中,觸發相應的動作,比如蜂鳴器報警或關閉電源。

火焰檢測模塊的輸出通常為數字和模擬信號兩種模式。數字信號輸出通常以高低電平的形式表示是否檢測到火焰。對于許多簡單應用,數字信號足以實現火焰的快速識別。模擬信號輸出則提供了更精確的測量值,可以反映火焰的強度和距離。通過對模擬信號的采集和處理,可以對火焰的狀態和變化進行更深入的分析和判斷。

火焰檢測模塊具有反應迅速、靈敏度高和抗干擾性強的特點,能夠在短時間內檢測到火焰的存在并發出警報。其檢測距離和角度通常受光敏元件的靈敏度和透鏡的設計影響,一般的檢測角度為60°至120°,檢測距離可達幾米至十幾米。用戶可以通過調節模塊上的靈敏度電位器來設定檢測靈敏度,從而滿足不同應用場景的需求。

在使用火焰檢測模塊時,環境光和反射物體可能會對檢測結果產生影響。因此,在安裝和應用時需要注意避免陽光直射或強光干擾。模塊應對準可能的火源方向,以便獲得最佳的檢測效果。此外,為了提高火焰檢測的可靠性,模塊通常與其他傳感器(如煙霧傳感器、溫度傳感器)聯合使用,形成多層次的火災預警系統,以減少誤報警的風險。

火焰檢測模塊被廣泛用于工業設備監控、燃氣灶具安全控制、火災報警器等場合。它能夠在火災初期迅速響應,及時發出報警信號或采取控制措施,從而大大提高火災防控能力,保護生命和財產安全。總的來說,火焰檢測模塊是一個重要的安防組件,為多種應用提供了可靠的火災預警和安全保障功能。

【4】蜂鳴器模塊

高低電平控制的有源蜂鳴器是一種集成了振蕩電路和發聲組件的電子器件,通過簡單的電平控制即可產生聲音提示,廣泛用于報警系統、家電、智能設備以及工控系統等需要聲音提示的場合。相比無源蜂鳴器,有源蜂鳴器不需要外部提供驅動頻率信號,內部已包含振蕩電路,因此只需提供電源和控制電平就能發聲,使用更加方便。

有源蜂鳴器通常由電磁線圈、鐵芯、磁鐵、振蕩器、以及振膜等組成。當給蜂鳴器供電時,內置振蕩電路開始工作,產生一定頻率的交變磁場,使振膜不斷振動,從而發出連續的“嘀嘀”聲。蜂鳴器的工作頻率通常在2kHz至4kHz之間,這一頻段的聲音刺耳,便于在嘈雜環境中引起注意。

高低電平控制的有源蜂鳴器根據輸入信號的不同可以分為高電平觸發和低電平觸發兩種類型。高電平觸發的蜂鳴器在輸入信號為高電平時發聲,而低電平觸發的蜂鳴器則在輸入信號為低電平時發聲。此設計使得蜂鳴器能夠靈活適應不同的控制電路要求,便于和各類控制器(如單片機、PLC)直接對接,通過簡單的GPIO信號即可控制蜂鳴器發聲或停止。

在電氣特性方面,有源蜂鳴器的工作電壓通常在3V到12V之間,常見的規格為5V和12V兩種,用戶可以根據應用場合選擇適合的電壓等級。有源蜂鳴器的功耗較低,工作電流通常在幾十毫安左右,因此適合電池供電設備以及低功耗應用場景。蜂鳴器的封裝形式有插件式和貼片式兩種,插件式適合在PCB上直接安裝,而貼片式則適合自動化設備生產,更加適合高密度電路板應用。

由于內置了振蕩電路,有源蜂鳴器在使用中不需要考慮驅動頻率的問題,只需控制電平即可實現發聲與停止,因此開發簡單,安裝便捷。在實際應用中,若需實現不同的報警音效,可以通過脈沖信號控制發聲的間歇頻率,使蜂鳴器產生間歇報警聲。此外,在電平驅動的電路中,有源蜂鳴器還可以與其他傳感器、開關、按鍵等組件配合,構建智能化的聲音提示系統,以提升設備的交互體驗。

【5】人體感應傳感器

熱釋電人體感應傳感器,也稱為PIR(Passive Infrared)傳感器,是一種常用于檢測人體活動的傳感設備。它基于紅外輻射感應原理,能夠探測到人體發出的紅外熱輻射并產生信號輸出,從而感知人體的存在或運動。PIR傳感器廣泛應用于自動門、安防報警系統、智能家居照明控制等領域,憑借其可靠性高、成本低和易于集成的特點,成為了主流的人體感應方案。

PIR傳感器的核心組件是一個熱釋電元件,該元件能夠對紅外線的變化產生響應。人體通常會發出紅外線,其波長在8到14微米范圍內。當一個人進入傳感器的檢測范圍時,會引起傳感器探測區域內紅外輻射的變化。傳感器內的熱釋電元件在接收到紅外信號后,會產生微弱的電壓變化,通過放大電路將這種變化轉化為可用的電信號。這一電信號可以用于控制后續電路,比如啟動蜂鳴器報警或觸發電路開關等。

為了提高檢測精度和靈敏度,PIR傳感器通常會配備菲涅爾透鏡。菲涅爾透鏡可以將紅外線聚焦到傳感器的熱釋電元件上,并分成多個“檢測區域”,以便更精確地感知人體活動。這一設計使得傳感器能夠區分不同方向和距離的運動,從而更準確地觸發感應。

熱釋電人體感應傳感器通常有兩種工作模式:觸發模式和非觸發模式。觸發模式用于檢測到運動后產生高低電平信號,并在延時后恢復初始狀態。這種模式適用于自動門控制和智能燈控制等場景。而在非觸發模式下,傳感器檢測到運動信號時,會保持高電平輸出,適合需要長時間信號保持的應用。

PIR傳感器具有高靈敏度和較低的功耗,這使其非常適合電池供電的設備。同時,由于PIR傳感器本身是“被動”的,只需感知外界紅外輻射,無需主動發射信號,因此具有抗干擾能力強和安全性好的特點。此外,PIR傳感器的檢測距離和范圍通常可以通過調整其光學鏡頭和電路參數來設定,一般的檢測距離為3-7米,覆蓋角度約為120°至180°,具體參數可以根據應用需求進行配置。

需要注意的是,熱釋電人體感應傳感器可能會受環境溫度變化影響。在高溫或低溫環境下,其檢測靈敏度可能會有所變化。此外,傳感器也可能受到電磁干擾的影響,因此在設計和使用時需注意電磁屏蔽和環境適配,以提高系統的穩定性和可靠性。總體來說,PIR傳感器以其簡便的操作和廣泛的適用性,在智能家居、安防系統和自動化控制等方面得到了廣泛應用。

【6】電磁鎖

電磁鎖是一種利用電磁力進行控制的鎖具,常用于門禁系統、安防系統以及其他需要電子控制的場景。它以可靠性高、響應快速、使用方便而著稱,是現代智能控制設備中常見的組件。電磁鎖的工作原理是通過電流產生的磁力來實現鎖定和解鎖,當電流通過電磁線圈時,線圈內會產生強磁場,使金屬鎖體吸附或釋放,從而控制門的開關狀態。

電磁鎖的基本結構包括線圈、鐵芯和鎖體。通常情況下,當鎖需要處于鎖定狀態時,通電后的線圈會產生強大的磁力,將鎖舌牢牢吸附在鎖體內,形成一個封閉的門鎖結構。相反,當需要解鎖時,切斷電源,電磁力隨之消失,鎖體便會自動釋放。由于其操作原理基于電磁效應,電磁鎖通常需要穩定的直流電源供電,一般為12V或24V直流電。

電磁鎖有多種類型,常見的有普通電磁鎖、磁力鎖、斷電型和通電型。普通電磁鎖常用于門禁控制系統,具有高強度的磁力吸附,能夠有效防止非法闖入。磁力鎖一般安裝在門框頂部,通過磁力將門吸住,適用于輕型門的開關控制。斷電型電磁鎖在斷電時解鎖,這種設計適用于緊急出口或消防安全通道,確保在斷電時門能夠自動解鎖,方便人員迅速疏散。而通電型電磁鎖則相反,在通電時解鎖,適用于某些特定的安防場景。

電磁鎖的優勢在于其耐用性和安全性。由于其內部沒有機械活動部件,工作時沒有磨損和卡滯,使用壽命長且維護成本較低。與傳統機械鎖相比,電磁鎖的操作也更加安靜和穩定,尤其適合對噪音敏感的環境。此外,電磁鎖還可以與多種智能設備集成,支持遠程控制、指紋識別、密碼輸入等多種解鎖方式,使其廣泛應用于現代建筑的安防系統中。

在使用電磁鎖時,需要注意供電的穩定性,防止電源波動或中斷可能導致的誤動作。通常,電磁鎖會配備斷電保護機制或后備電源,以確保在電力中斷的情況下依然能夠保持安全性。另外,在實際應用中,電磁鎖的安裝位置和固定方式會影響其鎖緊力。為了確保安全性,必須保證鎖具與門體或門框緊密接觸,并避免松動或錯位。

電磁鎖的應用范圍涵蓋了住宅小區、辦公樓、商場、機場、醫院等場所。由于其響應快速、鎖定力強和易于與電子系統集成,電磁鎖在智能門禁系統中占據重要位置,為提升場所的安全性和管理便捷性提供了可靠的解決方案。

【7】MQTT協議

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)是一種輕量級、發布/訂閱模式的消息傳輸協議,專為低帶寬、不可靠網絡環境設計。它最早由IBM提出,現已成為物聯網(IoT)通信的重要協議之一。由于其高效、低功耗和實時性等特點,MQTT在智能家居、工業自動化、遠程監控和車聯網等領域得到了廣泛應用。

MQTT的工作原理基于發布/訂閱模型。這種模型有別于傳統的客戶端-服務器模型,通信方不需要直接建立連接。MQTT由三個核心組件構成:客戶端、代理(Broker)和主題(Topic)。客戶端可以作為消息的發布者或訂閱者,消息通過代理進行路由。代理是一個中間服務端,用于接收和分發來自不同客戶端的消息。發布者發送消息到一個特定的主題上,代理負責將這些消息分發給所有訂閱了該主題的客戶端。通過這種解耦的架構設計,客戶端之間可以實現松耦合的通信,降低了復雜性和依賴性。

在MQTT協議中,消息被分為不同的主題(Topic),例如“home/sensor/temperature”可以用來代表溫度傳感器數據。客戶端可以訂閱這個主題,當發布者發送新的數據到該主題時,所有訂閱該主題的客戶端都會收到更新信息。這種靈活的主題結構和層次化的命名規則,使得MQTT在復雜場景下也能快速組織和管理消息流。

MQTT協議支持三種服務質量(QoS)等級,分別為“至多一次”(QoS 0)、“至少一次”(QoS 1)和“僅一次”(QoS 2)。QoS 0表示消息傳輸盡力而為,可能會丟失或重復;QoS 1確保消息至少送達一次,但可能會有重復;QoS 2則確保消息恰好傳輸一次,保證消息的嚴格可靠性。這種設計使MQTT能夠適應不同的應用場景,用戶可以根據應用需求選擇合適的QoS級別。

為了保證通信的安全性,MQTT支持用戶名和密碼驗證,代理可以對連接進行身份認證。此外,許多實現中還支持TLS/SSL加密通信,確保數據在傳輸過程中不會被竊取或篡改。用戶也可以使用不同的認證方式來增強系統的安全性,適應物聯網應用中對安全性的高需求。

MQTT非常注重輕量化和低功耗。它的報文頭非常小,通信開銷很低,這使其特別適合在資源受限的設備或不穩定的網絡環境中使用。MQTT支持“保持連接”和“遺囑消息”功能,客戶端可以在連接斷開時自動向代理發送遺囑消息,通知其他客戶端連接狀態的變化。這種特性有助于提高網絡的健壯性和系統的可用性。

MQTT的典型使用場景包括物聯網設備數據采集、實時監控、消息推送和控制命令的發布。比如在智能家居中,傳感器可以發布環境數據,如溫濕度、煙霧濃度等,控制設備根據收到的消息作出響應,實現自動化操作。在工業場景中,MQTT可以幫助收集和管理大規模設備的運行狀態,實現集中化和高效的設備監控。

總的來說,MQTT協議憑借其低功耗、高效能、實時性強等優勢,已成為物聯網通信的主要協議之一。它的發布/訂閱模式簡化了設備之間的通信,使其特別適合多對多、低延遲、高可靠性的數據傳輸場景。MQTT易于使用、拓展性強,為開發者提供了靈活的解決方案來構建各種物聯網應用。

1.8 參考文獻

1. 韓軍,胡坤朋.基于STM32的宿舍防火防盜系統[J].電子技術與軟件工程,2019. 
2. 蘇世雄,劉洲洲,李川等.基于STM32的高校智能宿舍系統研究與設計[J].自動化與儀器儀表,2023. 
3. 李宇航,秦紅星,史苗紅等.基于STM32的宿舍智能防盜報警系統設計[J].物聯網技術,2023. 
4. 麥家裕,吳家輝,倫文康.智能宿舍安全管理系統設計[J].網絡安全技術與應用,2021. 
5. 廣西民族師范學院.基于物聯網技術智慧宿舍系統的設計[J].電子制作,2024. 
6. 史振江.基于stm32單片機的公寓安全控制系統設計與實現[J].石家莊鐵路職業技術學院學報,2017. 
7. 陜西鐵路工程職業技術學院.基于NB-IoT的校園宿舍智能鎖控制系統設計[J].自動化與儀器儀表,2024. 
8. 陸麗娟,劉亞榮,謝曉蘭.基于物聯網技術的高校宿舍監控管理系統[J].科技和產業,2022. 
9. 沈陽城市建設學院信息與控制工程系.基于物聯網的智能宿舍管理系統[J].電子技術與軟件工程,2018. 
10. 趙娜,于克龍,王貴和等.基于Android和STM32的學生宿舍智能防盜鎖[J].遼東學院學報(自然科學版),2021. 
11. 曲阜師范大學工學院.基于LabVIEW的網絡數據管理系統的設計與實現[J].電子技術,2017. 
12. 尹德睿,題原,范高倫.智能高校寢室安全監控和學生管理系統[J].電工技術,2019. 
13. 馬光偉,樊廣曉,王玉虎等.宿舍用電監控系統設計[J].河南科技學院學報(自然科學版),2020. 
14. 王賾坤,桂玲.基于NB-IoT技術的智能安防監測系統[J].計算機技術與發展,2021. 
15. 王桂君,蔣蓁.基于STM32的室內安防監控系統設計[J].自動化儀表,2020. 
16. 張鵬,苗鳳娟,田朋博等.基于stm32學生公寓消防安全監控管理系統V1.0.齊齊哈爾大學;,2021. 
17. 何龍,冉東陽,楊柳.宿舍燈光與預警智能控制系統設計[J].電子制作,2023. 
18. 李鵬霞,李宛睿.高校學生宿舍智慧化管理系統的設計與實現[J].長江信息通信,2023. 
19. 宋耀華,王梅霞.基于物聯網技術的宿舍安防系統設計[J].機械與電子,2013. 
20. 任建明,盧宇,管立偉.室內環境無線監控系統的設計[J].信息通信,2017. 
21. 張強志,房楚杰,楊永華等.基于STM32的智能門控安防系統設計[J].嘉應學院學報,2022. 
22. 王歡.基于ZigBee網絡的高校宿舍智能安防系統設計[J].襄陽職業技術學院學報,2021. 
23. 武漢理工大學自動化學院.基于NB-IOT的室內環境監測和報警系統[J].科技與創新,2021. 
24. 章魁,衛新華.遠程智能安防與控制系統設計與實現[J].科技信息,2012. 
25. He Bai, Yun Gao et al. “Study on College Apartment Fire Monitoring System Based on GSM.” Applied Mechanics and Materials(2014). 
26. 王鵬,于潤嘉,羅全珍.基于物聯網的家庭智慧安防系統設計與實現[J].物聯網技術,2020. 
27. Xiangjun Su, G. Guo et al. “Design and Implementation of Dormitory Disciplinary Monitoring and Management System.” Applied Mechanics and Materials(2014). 
28. Lele Niu, Zu‐Pei Ou et al. “Design of Indoor Intelligent Alarm System Based on STM32.” Proceedings of the 6th International Conference on Intelligent Information Processing(2021). 
29. Fengshan Huang, Shaozi Li et al. “Design on Intelligent Smoke Alarm System.” 2022 12th International Conference on Information Technology in Medicine and Education (ITME)v(2022). 
30. Biao Chen, Shihong Qin et al. “Design of Smart Home Control System Based on STM32.” 2021 4th International Conference on Robotics, Control and Automation Engineering (RCAE)(2021).

二、部署華為云物聯網平臺

華為云官網: https://www.huaweicloud.com/

打開官網,搜索物聯網,就能快速找到 設備接入IoTDA

image-20221204193824815

2.1 物聯網平臺介紹

華為云物聯網平臺(IoT 設備接入云服務)提供海量設備的接入和管理能力,將物理設備聯接到云,支撐設備數據采集上云和云端下發命令給設備進行遠程控制,配合華為云其他產品,幫助我們快速構筑物聯網解決方案。

使用物聯網平臺構建一個完整的物聯網解決方案主要包括3部分:物聯網平臺、業務應用和設備。

物聯網平臺作為連接業務應用和設備的中間層,屏蔽了各種復雜的設備接口,實現設備的快速接入;同時提供強大的開放能力,支撐行業用戶構建各種物聯網解決方案。

設備可以通過固網、2G/3G/4G/5G、NB-IoT、Wifi等多種網絡接入物聯網平臺,并使用LWM2M/CoAP、MQTT、HTTPS協議將業務數據上報到平臺,平臺也可以將控制命令下發給設備。

業務應用通過調用物聯網平臺提供的API,實現設備數據采集、命令下發、設備管理等業務場景。

img

2.2 開通物聯網服務

地址: https://www.huaweicloud.com/product/iothub.html

image-20221204194233414

點擊立即創建

image-20240117134653452

正在創建標準版實例,需要等待片刻。

image-20240117134729401

創建完成之后,點擊實例名稱。 可以看到標準版實例的設備接入端口和地址。

image-20240425180759670

在上面也能看到 免費單元的限制。

image-20240425180817704

開通之后,點擊總覽,也能查看接入信息。 我們當前設備準備采用MQTT協議接入華為云平臺,這里可以看到MQTT協議的地址和端口號等信息。

image-20240425180845461

總結:

端口號:   MQTT (1883)| MQTTS (8883)	
接入地址:ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com

**根據域名地址得到IP地址信息: **

打開Windows電腦的命令行控制臺終端,使用ping 命令。ping一下即可。

Microsoft Windows [版本 10.0.19045.4170]
(c) Microsoft Corporation。保留所有權利。

C:Users11266 >ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com

正在 Ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com [117.78.5.125] 具有 32 字節的數據:
來自 117.78.5.125 的回復: 字節=32 時間=35ms TTL=93
來自 117.78.5.125 的回復: 字節=32 時間=36ms TTL=93
來自 117.78.5.125 的回復: 字節=32 時間=36ms TTL=93
來自 117.78.5.125 的回復: 字節=32 時間=39ms TTL=93

117.78.5.125 的 Ping 統計信息:
    數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 35ms,最長 = 39ms,平均 = 36ms

C:Users11266 >

MQTT協議接入端口號有兩個,1883是非加密端口,8883是證書加密端口,單片機無法加載證書,所以使用1883端口比較合適。 接下來的ESP8266就采用1883端口連接華為云物聯網平臺。

2.3 創建產品

(1)創建產品

image-20230109164412041

(2)填寫產品信息

根據自己產品名字填寫,下面的設備類型選擇自定義類型。

image-20240612094809689

(3)產品創建成功

image-20240612095148945

創建完成之后點擊查看詳情。

image-20240612095134263

(4)添加自定義模型

產品創建完成之后,點擊進入產品詳情頁面,翻到最下面可以看到模型定義。

模型簡單來說: 就是存放設備上傳到云平臺的數據。

你可以根據自己的產品進行創建。

比如:

煙霧可以叫  MQ2
溫度可以叫  Temperature
濕度可以叫  humidity
火焰可以叫  flame
其他的傳感器自己用單詞簡寫命名即可。 這就是你的單片機設備端上傳到服務器的數據名字。

先點擊自定義模型。

image-20240612095517900

再創建一個服務ID。

image-20240612095542749

接著點擊新增屬性。

image-20240612095648815

image-20240612095711898

2.4 添加設備

產品是屬于上層的抽象模型,接下來在產品模型下添加實際的設備。添加的設備最終需要與真實的設備關聯在一起,完成數據交互。

(1)注冊設備

image-20240425181935561

(2)根據自己的設備填寫

image-20240612100115167

(3)保存設備信息

創建完畢之后,點擊保存并關閉,得到創建的設備密匙信息。該信息在后續生成MQTT三元組的時候需要使用。

image-20240612100128061

(4)設備創建完成

image-20240612100147232

(5)設備詳情

image-20240612100202960

image-20240612100217236

2.5 MQTT協議主題訂閱與發布

(1)MQTT協議介紹

當前的設備是采用MQTT協議與華為云平臺進行通信。

MQTT是一個物聯網傳輸協議,它被設計用于輕量級的發布/訂閱式消息傳輸,旨在為低帶寬和不穩定的網絡環境中的物聯網設備提供可靠的網絡服務。MQTT是專門針對物聯網開發的輕量級傳輸協議。MQTT協議針對低帶寬網絡,低計算能力的設備,做了特殊的優化,使得其能適應各種物聯網應用場景。目前MQTT擁有各種平臺和設備上的客戶端,已經形成了初步的生態系統。

MQTT是一種消息隊列協議,使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合,相對于其他協議,開發更簡單;MQTT協議是工作在TCP/IP協議上;由TCP/IP協議提供穩定的網絡連接;所以,只要具備TCP協議棧的網絡設備都可以使用MQTT協議。 本次設備采用的ESP8266就具備TCP協議棧,能夠建立TCP連接,所以,配合STM32代碼里封裝的MQTT協議,就可以與華為云平臺完成通信。

華為云的MQTT協議接入幫助文檔在這里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

img

業務流程:

img

(2)華為云平臺MQTT協議使用限制

描述限制
支持的MQTT協議版本3.1.1
與標準MQTT協議的區別支持Qos 0和Qos 1支持Topic自定義不支持QoS2不支持will、retain msg
MQTTS支持的安全等級采用TCP通道基礎 + TLS協議(最高TLSv1.3版本)
單帳號每秒最大MQTT連接請求數無限制
單個設備每分鐘支持的最大MQTT連接數1
單個MQTT連接每秒的吞吐量,即帶寬,包含直連設備和網關3KB/s
MQTT單個發布消息最大長度,超過此大小的發布請求將被直接拒絕1MB
MQTT連接心跳時間建議值心跳時間限定為30至1200秒,推薦設置為120秒
產品是否支持自定義Topic支持
消息發布與訂閱設備只能對自己的Topic進行消息發布與訂閱
每個訂閱請求的最大訂閱數無限制

(3)主題訂閱格式

幫助文檔地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

image-20221207153310037

對于設備而言,一般會訂閱平臺下發消息給設備 這個主題。

設備想接收平臺下發的消息,就需要訂閱平臺下發消息給設備 的主題,訂閱后,平臺下發消息給設備,設備就會收到消息。

如果設備想要知道平臺下發的消息,需要訂閱上面圖片里標注的主題。

以當前設備為例,最終訂閱主題的格式如下:
$oc/devices/{device_id}/sys/messages/down
    
最終的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down

(4)主題發布格式

對于設備來說,主題發布表示向云平臺上傳數據,將最新的傳感器數據,設備狀態上傳到云平臺。

這個操作稱為:屬性上報。

幫助文檔地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html

image-20221207153637391

根據幫助文檔的介紹, 當前設備發布主題,上報屬性的格式總結如下:

發布的主題格式:
$oc/devices/{device_id}/sys/properties/report
 
最終的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report
發布主題時,需要上傳數據,這個數據格式是JSON格式。

上傳的JSON數據格式如下:

{
  "services": [
    {
      "service_id": < 填服務ID >,
      "properties": {
        "< 填屬性名稱1 >": < 填屬性值 >,
        "< 填屬性名稱2 >": < 填屬性值 >,
        ..........
      }
    }
  ]
}
根據JSON格式,一次可以上傳多個屬性字段。 這個JSON格式里的,服務ID,屬性字段名稱,屬性值類型,在前面創建產品的時候就已經介紹了,不記得可以翻到前面去查看。

根據這個格式,組合一次上傳的屬性數據:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}

2.6 MQTT三元組

MQTT協議登錄需要填用戶ID,設備ID,設備密碼等信息,就像我們平時登錄QQ,微信一樣要輸入賬號密碼才能登錄。MQTT協議登錄的這3個參數,一般稱為MQTT三元組。

接下來介紹,華為云平臺的MQTT三元組參數如何得到。

(1)MQTT服務器地址

要登錄MQTT服務器,首先記得先知道服務器的地址是多少,端口是多少。

幫助文檔地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home

image-20240509193207359

MQTT協議的端口支持1883和8883,它們的區別是:8883 是加密端口更加安全。但是單片機上使用比較困難,所以當前的設備是采用1883端口進連接的。

根據上面的域名和端口號,得到下面的IP地址和端口號信息: 如果設備支持填寫域名可以直接填域名,不支持就直接填寫IP地址。 (IP地址就是域名解析得到的)

華為云的MQTT服務器地址:117.78.5.125
華為云的MQTT端口號:1883

如何得到IP地址?如何域名轉IP? 打開Windows的命令行輸入以下命令。

ping  ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com

image-20240425182610048

(2)生成MQTT三元組

華為云提供了一個在線工具,用來生成MQTT鑒權三元組: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打開這個工具,填入設備的信息(也就是剛才創建完設備之后保存的信息),點擊生成,就可以得到MQTT的登錄信息了。

下面是打開的頁面:

image-20240425183025893

填入設備的信息: (上面兩行就是設備創建完成之后保存得到的)

直接得到三元組信息。

image-20240509193310020

得到三元組之后,設備端通過MQTT協議登錄鑒權的時候,填入參數即可。

ClientId  663cb18871d845632a0912e7_dev1_0_0_2024050911
Username  663cb18871d845632a0912e7_dev1
Password  71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237

2.7 模擬設備登錄測試

經過上面的步驟介紹,已經創建了產品,設備,數據模型,得到MQTT登錄信息。 接下來就用MQTT客戶端軟件模擬真實的設備來登錄平臺。測試與服務器通信是否正常。

(1)填入登錄信息

打開MQTT客戶端軟件,對號填入相關信息(就是上面的文本介紹)。然后,點擊登錄,訂閱主題,發布主題。

image-20240509193457358

(2)打開網頁查看

完成上面的操作之后,打開華為云網頁后臺,可以看到設備已經在線了。

image-20240612100508790

點擊詳情頁面,可以看到上傳的數據:

image-20240612100529581

到此,云平臺的部署已經完成,設備已經可以正常上傳數據了。

(3)MQTT登錄測試參數總結

MQTT服務器:  117.78.5.125
MQTT端口號:  183

//物聯網服務器的設備信息
#define MQTT_ClientID "663cb18871d845632a0912e7_dev1_0_0_2024050911"
#define MQTT_UserName "663cb18871d845632a0912e7_dev1"
#define MQTT_PassWord "71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237"

//訂閱與發布的主題
#define SET_TOPIC  "$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down"  //訂閱
#define POST_TOPIC "$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report"  //發布


發布的數據:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}

2.8 創建IAM賬戶

創建一個IAM賬戶,因為接下來開發上位機,需要使用云平臺的API接口,這些接口都需要token進行鑒權。簡單來說,就是身份的認證。 調用接口獲取Token時,就需要填寫IAM賬號信息。所以,接下來演示一下過程。

地址: https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/users

**【1】獲取項目憑證 ** 點擊左上角用戶名,選擇下拉菜單里的我的憑證

image-20240509193646253

image-20240509193701262

項目憑證:

28add376c01e4a61ac8b621c714bf459

【2】創建IAM用戶

鼠標放在左上角頭像上,在下拉菜單里選擇統一身份認證

image-20240509193729078

點擊左上角創建用戶

image-20240509193744287

image-20240314153208692

image-20240314153228359

image-20240314153258229

創建成功:

image-20240314153315444

【3】創建完成

image-20240509193828289

用戶信息如下:

主用戶名  l19504562721
IAM用戶  ds_abc
密碼     DS12345678

2.9 獲取影子數據

幫助文檔:https://support.huaweicloud.com/api-iothub/iot_06_v5_0079.html

設備影子介紹:

設備影子是一個用于存儲和檢索設備當前狀態信息的JSON文檔。
每個設備有且只有一個設備影子,由設備ID唯一標識
設備影子僅保存最近一次設備的上報數據和預期數據
無論該設備是否在線,都可以通過該影子獲取和設置設備的屬性

簡單來說:設備影子就是保存,設備最新上傳的一次數據。

我們設計的軟件里,如果想要獲取設備的最新狀態信息,就采用設備影子接口。

如果對接口不熟悉,可以先進行在線調試:https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ShowDeviceShadow

在線調試接口,可以請求影子接口,了解請求,與返回的數據格式。

調試完成看右下角的響應體,就是返回的影子數據。

image-20240509194152229

設備影子接口返回的數據如下:

{
 "device_id": "663cb18871d845632a0912e7_dev1",
 "shadow": [
  {
   "service_id": "stm32",
   "desired": {
    "properties": null,
    "event_time": null
   },
   "reported": {
    "properties": {
     "DHT11_T": 18,
     "DHT11_H": 90,
     "BH1750": 38,
     "MQ135": 70
    },
    "event_time": "20240509T113448Z"
   },
   "version": 3
  }
 ]
}

調試成功之后,可以得到訪問影子數據的真實鏈接,接下來的代碼開發中,就采用Qt寫代碼訪問此鏈接,獲取影子數據,完成上位機開發。

image-20240509194214716

鏈接如下:

https://ad635970a1.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/28add376c01e4a61ac8b621c714bf459/devices/663cb18871d845632a0912e7_dev1/shadow

三、上位機開發

為了方便查看設備上傳的數據,接下來利用Qt開發一款Android手機APP 和 Windows上位機。

使用華為云平臺提供的API接口獲取設備上傳的數據,進行可視化顯示,以及遠程控制設備。

3.1 Qt開發環境安裝

Qt的中文官網: https://www.qt.io/zh-cn/image-20221207160550486

image-20221207160606892

QT5.12.6的下載地址:https://download.qt.io/archive/qt/5.12/5.12.6

或者去網盤里下載:https://pan.quark.cn/s/145a9b3f7f53

打開下載鏈接后選擇下面的版本進行下載:

qt-opensource-windows-x86-5.12.6.exe 13-Nov-2019 07:28 3.7G Details

軟件安裝時斷網安裝,否則會提示輸入賬戶。

安裝的時候,第一個復選框里勾選一個mingw 32編譯器即可,其他的不管默認就行,直接點擊下一步繼續安裝。

image-20221203151742653

選擇MinGW 32-bit 編譯器: (一定要看清楚了)

image-20221203151750344

說明: 我這里只是介紹PC端,也就是Windows系統下的Qt環境搭建。 Android的開發環境比較麻煩,如果想學習Android開發,想編譯Android程序的APP,需要自己去搭建Android環境。

也可以看下面這篇文章,不過這個文章是在Qt開發專欄里付費的,需要訂閱專欄才可以看。 如果不想付費看,也可以自行找其他教程,自己搭建好必須的環境就行了

Android環境搭建的博客鏈接: https://blog.csdn.net/xiaolong1126626497/article/details/117254453

3.2 新建上位機工程

前面2講解了需要用的API接口,接下來就使用Qt設計上位機,設計界面,完成整體上位機的邏輯設計。

【1】新建工程

image-20240117144052547

【2】設置項目的名稱。

image-20240509195711965

【3】選擇編譯系統

image-20240117144239681

【4】選擇默認繼承的類

image-20240117144302275

【5】選擇編譯器

image-20240314162137170

【6】點擊完成

image-20240117144354252

【7】工程創建完成

image-20230421094133333

3.3 設計UI界面與工程配置

【1】打開UI文件

image-20230421094815236

打開默認的界面如下:

image-20240425194845233

【2】開始設計界面

根據自己需求設計界面。

3.5 編譯Windows上位機

點擊軟件左下角的綠色三角形按鈕進行編譯運行。

image-20240509202031739

3.6 配置Android環境

如果想編譯Android手機APP,必須要先自己配置好自己的Android環境。(搭建環境的過程可以自行百度搜索學習)

然后才可以進行下面的步驟。

【1】選擇Android編譯器

image-20240425232651515

image-20240509202408776

【2】創建Android配置文件

image-20240117144604025

image-20240117144635052

image-20240117144652014

創建完成。

【3】配置Android圖標與名稱

image-20240612100947190

【3】編譯Android上位機

Qt本身是跨平臺的,直接選擇Android的編譯器,就可以將程序編譯到Android平臺。

然后點擊構建。

image-20240509202534407

成功之后,在目錄下可以看到生成的apk文件,也就是Android手機的安裝包,電腦端使用QQ發送給手機QQ,手機登錄QQ接收,就能直接安裝。

生成的apk的目錄在哪里呢? 編譯完成之后,在控制臺會輸出APK文件的路徑。

知道目錄在哪里之后,在Windows的文件資源管理器里,找到路徑,具體看下圖,找到生成的apk文件。

image-20240509202712295

D:/linux-share-dir/QT/build-app_Huawei_Eco_tracking-Android_for_arm64_v8a_Clang_Qt_5_12_6_for_Android_ARM64_v8a-Release/android-build//build/outputs/apk/debug/android-build-debug.apk

四、STM32代碼開發

4.1 硬件接線說明

1】 BC26-NBIOT模塊 接線
PA2------ >BC26的RXD
PA3------ >BC26的TXD
PB6------ >BC26的RST(復位腳)
GND---GND 地
VCC---VCC 電源(5.0V)



【2TFT 1.44 寸彩屏接線
GND   電源地
VCC   3.3v電源
SCL   接PC8(SCL)
SDA   接PC9(SDA)
RST   接PC10
DC    接PB7
CS    接PB8
BL	  接PB11



【3】電力信息檢測模塊---波特率9600
PD2(RX)  ----- >模塊的TXD
PC12(TX) ----- >模塊的RXD
VCC----------5V
GND----------GND


【4】蜂鳴器
GND----GND
VCC---3.3V
OUT---PC7


【5】MQ2煙霧濃度檢測
DO---PC0
AO---PA1
GND---GND 地
VCC---VCC 電源(5.0V)


【6】火焰檢測
GND----GND
VCC---5V
OUT---PC0


【7】人體檢測
GND----GND
VCC---5V
OUT---PC1


【7】門鎖開關
GND----GND
VCC---5V
OUT---PC2



【8】板載LED燈接線(這個不用接,這是開發板本身的)
LED1---PA8
LED2---PD2


【9】板載按鍵接線(這個不用接,這是開發板本身的)
K0---PA0 
K1---PC5 
K2---PA15

4.2 原理圖

image-20241108112340489

4.3 框架圖

image-20241108110919088

4.4 程序下載

打STM32的keil工程,編譯代碼、然后,使用USB線將開發板的左邊的USB口(串口1)與電腦的USB連接,打開程序下載軟件下載程序。

具體下載過程看下面圖:

image-20240319223247836

打開程序下載軟件:[軟件就在資料包里的軟件工具目錄下]

image-20240120160735942

4.5 程序正常運行效果

設備運行過程中會通過串口打印調試信息,我們可以通過串口打印了解程序是否正常。

程序下載之后,可以打開串口調試助手查看程序運行的狀態信息。[軟件就在資料包里的軟件工具目錄下]

image-20240327212042050

4.6 主項目的邏輯代碼

當前項目源碼已經上傳到網盤:https://ccnr8sukk85n.feishu.cn/wiki/QjY8weDYHibqRYkFP2qcA9aGnvb?from=from_copylink

下面是提供的項目主項目的偽代碼。展示整個項目的運行邏輯思路。

#include "stm32f10x.h"
#include "lcd.h"
#include "nbiot.h"
#include "mq2.h"
#include "flame_sensor.h"
#include "pir_sensor.h"
#include "power_module.h"
#include "door_lock.h"
#include "buzzer.h"
#include "keypad.h"
#include "usart.h"
#include "cloud_comm.h"

// 定義報警閾值
#define CURRENT_THRESHOLD 10.0
#define POWER_THRESHOLD 50.0

// 初始化函數聲明
void System_Init(void);
void Flame_Detection_Handler(void);
void Smoke_Detection_Handler(void);
void Human_Detection_Handler(void);
void Power_Monitoring_Handler(void);
void Door_Control_Handler(void);

int main(void) {
    // 系統初始化
    System_Init();
    
    while (1) {
        // 火焰檢測處理
        Flame_Detection_Handler();

        // 煙霧檢測處理
        Smoke_Detection_Handler();

        // 人體檢測處理
        Human_Detection_Handler();

        // 電力監控處理
        Power_Monitoring_Handler();

        // 門磁控制處理
        Door_Control_Handler();

        // 其他操作,可以添加延時或功耗管理策略等
    }
}

void System_Init(void) {
    // 初始化外設和模塊
    LCD_Init();
    NBIOT_Init();
    MQ2_Init();
    FlameSensor_Init();
    PIRSensor_Init();
    PowerModule_Init();
    DoorLock_Init();
    Buzzer_Init();
    Keypad_Init();
    USART_Init();
    CloudComm_Init();

    LCD_DisplayString("System Initialized");
}

// 火焰檢測處理函數
void Flame_Detection_Handler(void) {
    if (FlameSensor_Detect()) {
        Buzzer_On();
        LCD_DisplayString("Flame Detected!");
        CloudComm_SendAlert("Flame detected in room!");
    } else {
        Buzzer_Off();
    }
}

// 煙霧檢測處理函數
void Smoke_Detection_Handler(void) {
    if (MQ2_DetectSmoke()) {
        Buzzer_On();
        LCD_DisplayString("Smoke Detected!");
        CloudComm_SendAlert("Smoke detected in room!");
    } else {
        Buzzer_Off();
    }
}

// 人體檢測處理函數
void Human_Detection_Handler(void) {
    if (PIRSensor_Detect()) {
        LCD_DisplayString("Human Detected");
        CloudComm_SendData("Human detected in the room.");
    }
}

// 電力監控處理函數
void Power_Monitoring_Handler(void) {
    float current = PowerModule_GetCurrent();
    float power = PowerModule_GetPower();

    // 顯示電力信息
    LCD_DisplayPower(current, power);

    // 超過閾值時報警并切斷電源
    if (current > CURRENT_THRESHOLD || power > POWER_THRESHOLD) {
        Buzzer_On();
        LCD_DisplayString("Power Overload!");
        PowerModule_Disconnect();
        CloudComm_SendAlert("Power overload detected!");
    } else {
        Buzzer_Off();
    }
}

// 門磁控制處理函數
void Door_Control_Handler(void) {
    if (Keypad_Pressed()) {
        DoorLock_Open();
        CloudComm_SendData("Door opened via local keypad.");
    }

    // 遠程開門請求處理
    if (CloudComm_ReceiveCommand() == OPEN_DOOR_COMMAND) {
        DoorLock_Open();
        CloudComm_SendData("Door opened via remote control.");
    }
}

4.7 MQTT協議設計

下面是BC26模塊的子模塊代碼框架,展示了如何利用BC26 NB-IoT模塊實現數據的初始化、發送和接收功能。

#include "bc26.h"
#include "usart.h"
#include < string.h >

// 發送和接收緩沖區
#define BC26_BUFFER_SIZE 256
static char txBuffer[BC26_BUFFER_SIZE];
static char rxBuffer[BC26_BUFFER_SIZE];

// 內部函數聲明
static void BC26_SendCommand(const char* command);
static int BC26_WaitForResponse(const char* expectedResponse, uint32_t timeout);

// 初始化BC26模塊
void BC26_Init(void) {
    // 配置USART用于通信
    USART_Config();

    // 復位BC26模塊
    BC26_SendCommand("AT+NRBr");
    if (BC26_WaitForResponse("OK", 5000) != 0) {
        // 復位失敗處理
        LCD_DisplayString("BC26 Reset Failed");
        return;
    }
    LCD_DisplayString("BC26 Initialized");

    // 配置BC26為NB-IoT網絡
    BC26_SendCommand("AT+CGATT=1r"); // 附著網絡
    if (BC26_WaitForResponse("OK", 3000) != 0) {
        LCD_DisplayString("Network Attach Failed");
        return;
    }

    // 配置MQTT連接(示例)
    BC26_SendCommand("AT+QMTCFG="version",0,4r");
    BC26_WaitForResponse("OK", 2000);
}

// 發送數據到云平臺
int BC26_SendData(const char* topic, const char* payload) {
    // 設置發送MQTT消息
    snprintf(txBuffer, sizeof(txBuffer), "AT+QMTPUB=0,0,0,0,"%s"r", topic);
    BC26_SendCommand(txBuffer);

    if (BC26_WaitForResponse(" >", 2000) != 0) {
        return -1; // 等待消息提示失敗
    }

    // 發送實際消息負載
    BC26_SendCommand(payload);
    BC26_SendCommand("x1A"); // 結束符(Ctrl+Z)
    return BC26_WaitForResponse("OK", 5000);
}

// 接收數據
int BC26_ReceiveData(char* buffer, size_t bufferSize) {
    // 監聽來自BC26的數據
    size_t len = USART_ReceiveData(buffer, bufferSize, 1000);
    if (len > 0) {
        buffer[len] = '?'; // 確保字符串以NULL結尾
        return len;
    }
    return 0; // 無數據接收
}

// 內部函數實現

// 發送命令
static void BC26_SendCommand(const char* command) {
    USART_SendString(command);
}

// 等待特定響應
static int BC26_WaitForResponse(const char* expectedResponse, uint32_t timeout) {
    uint32_t startTime = HAL_GetTick();
    while ((HAL_GetTick() - startTime) < timeout) {
        size_t len = USART_ReceiveData(rxBuffer, sizeof(rxBuffer) - 1, 100);
        if (len > 0) {
            rxBuffer[len] = '?';
            if (strstr(rxBuffer, expectedResponse) != NULL) {
                return 0; // 找到期望響應
            }
        }
    }
    return -1; // 超時或失敗
}

4.8 MQ2煙霧檢測

在這個項目中,MQ2傳感器用于煙霧檢測。MQ2傳感器的輸出是一個模擬信號,需要通過ADC(模擬到數字轉換器)讀取數據,并根據讀取的值來判斷是否發生煙霧或氣體泄漏。

#include "stm32f10x.h"
#include "MQ2.h"
#include "stdio.h"

#define MQ2_ADC_CHANNEL  0  // 假設MQ2連接在ADC通道0
#define MQ2_THRESHOLD    3000 // 假設閾值為3000,可以根據實際情況調整

// 定義函數原型
void MQ2_Init(void);
uint16_t MQ2_Read(void);
void MQ2_Process(void);

// 初始化MQ2傳感器
void MQ2_Init(void) {
    // 配置ADC
    ADC_InitTypeDef ADC_InitStructure;
    ADC_CommonInitTypeDef ADC_CommonInitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    // 開啟ADC和GPIO時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);

    // 配置GPIO:假設MQ2傳感器連接在PA0引腳
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; // 設置為模擬輸入模式
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置ADC
    ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; // 設置ADC預分頻器
    ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
    ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
    ADC_CommonInit(&ADC_CommonInitStructure);

    ADC_InitStructure.ADC_ScanConvMode = DISABLE;    // 單通道模式
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // 連續轉換
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; // 軟件觸發
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 右對齊
    ADC_InitStructure.ADC_NbrOfChannel = 1;  // 只有一個通道
    ADC_Init(ADC1, &ADC_InitStructure);

    // 啟動ADC
    ADC_Cmd(ADC1, ENABLE);
    ADC_ResetCalibration(ADC1);
    while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN) == RESET);
    ADC_StartCalibration(ADC1);
    while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADCAL) != RESET);
}

// 讀取MQ2傳感器數據
uint16_t MQ2_Read(void) {
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);  // 啟動轉換
    while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);  // 等待轉換完成
    return ADC_GetConversionValue(ADC1);  // 返回轉換結果
}

// 處理MQ2傳感器數據
void MQ2_Process(void) {
    uint16_t MQ2_value = MQ2_Read();
    printf("MQ2 Sensor Value: %dn", MQ2_value);

    // 判斷是否超過煙霧閾值
    if (MQ2_value > MQ2_THRESHOLD) {
        printf("Warning: Smoke detected!n");
        // 在此觸發報警或者其他動作,比如蜂鳴器
        // Beeper_Alarm();
    } else {
        printf("No smoke detected.n");
    }
}

代碼說明

  1. MQ2_Init函數 :初始化ADC和GPIO模塊,為讀取MQ2傳感器的模擬信號做準備。GPIOA引腳0被配置為模擬輸入模式,供ADC讀取數據。ADC1的相關配置包括單通道模式、連續轉換模式以及數據右對齊。
  2. MQ2_Read函數 :啟動ADC轉換,等待轉換完成后返回轉換值。這個值是MQ2傳感器的模擬電壓值被轉換成的數字信號。根據這個值,可以推斷煙霧的濃度。
  3. MQ2_Process函數 :這是一個高層處理函數,它讀取MQ2傳感器的值,并判斷值是否超過預設的閾值。如果超過閾值,則認為發生了煙霧或有害氣體泄漏,并進行報警處理(此處通過打印信息顯示報警狀態)。

五、總結

本項目設計并實現了一種基于STM32微控制器和NB-IoT通信技術的宿舍安防控制系統,結合了多種傳感器和智能控制模塊,提供了全方位的安全保障。通過硬件和軟件的綜合設計,系統能夠實時監測宿舍環境的各種安全參數,并能夠在發生火焰、煙霧、電氣異常等危險情況時自動觸發報警。項目的主要功能包括火焰檢測、煙霧檢測、門磁控制、人體感應、電氣監測以及遠程數據監控,充分實現了智能化安防的目標。

系統特點

  1. 多種傳感器集成 :系統集成了MQ2煙霧傳感器、火焰傳感器、人體感應傳感器、電流電壓采集模塊等硬件,能夠多角度實時檢測宿舍內的安全狀況。
  2. 報警和控制功能 :當檢測到火焰、煙霧、人體移動或電氣參數異常時,系統會通過蜂鳴器報警,并可以通過本地按鍵或遠程控制(通過手機APP或PC上位機)進行門鎖控制和其他應急措施。
  3. 電氣監測與保護 :系統具備電氣監測功能,能夠實時檢測直流電和單相交流電的電壓、電流、功率等參數,并在電流或功率超過設定閾值時自動切斷電源,確保用電安全。
  4. 數據云端管理 :通過NB-IoT通信模塊和MQTT協議,系統能夠將采集到的數據上傳至華為云物聯網平臺,實現數據的遠程監控和設備的遠程管理。用戶可以通過Android手機APP遠程查看設備狀態、調整參數并進行控制。
  5. 本地顯示功能 :1.44寸LCD顯示屏提供了實時的本地數據顯示,用戶可以直接在本地查看傳感器的實時數據和報警狀態,增強了系統的用戶友好性和可操作性。

項目實現過程

項目的實現過程中,在硬件設計階段選擇了合適的傳感器和控制模塊,確保能夠高效地進行火焰、煙霧、人體感應及電氣參數的實時檢測。STM32F103RCT6微控制器作為主控芯片,提供了足夠的處理能力來支持各個傳感器的數據采集和處理。

在軟件開發方面,使用Keil5開發環境,編寫了包括硬件初始化、傳感器數據采集、報警邏輯、LCD顯示及NB-IoT通信的完整代碼。數據上傳功能通過MQTT協議實現,確保了數據能夠穩定、安全地傳輸到云端平臺。

遇到的挑戰與解決方案

  1. 傳感器調試與靈敏度調整 :由于不同傳感器對環境因素的響應差異較大,調試過程中需要精確設置各傳感器的閾值。例如,MQ2煙霧傳感器對氣體的反應受環境濕度、溫度等因素的影響較大,通過反復測試和調整,最終確定了合理的觸發閾值。
  2. NB-IoT通信穩定性 :NB-IoT模塊需要良好的信號覆蓋以保證數據上傳的穩定性。為此,項目在硬件設計時加強了天線的布置,并對NB-IoT模塊的參數進行了多次優化測試,確保了數據傳輸的可靠性。
  3. 系統功耗優化 :由于該系統需要長時間運行,為了延長設備的使用壽命,采用了低功耗設計,如適時的休眠模式和合理的電源管理策略,確保了系統的高效能和低功耗。

項目創新點

  1. 集成化設計 :本項目通過將多種傳感器(如火焰、煙霧、人體、氣體、電氣參數等)和控制模塊(如門鎖控制、蜂鳴器報警)集成在一個系統中,實現了全方位的安防監控,提升了宿舍的安全性。
  2. 云端與遠程控制 :通過NB-IoT通信和MQTT協議,系統不僅支持本地控制,還可以通過云平臺進行遠程管理和控制。這種設計為宿舍管理者提供了便捷的實時監控和遠程操作功能,增強了系統的智能化和便捷性。
  3. 數據安全與監控 :通過將實時監測數據上傳到華為云物聯網平臺,確保了數據的安全存儲與備份,同時用戶可以隨時查看設備狀態,并根據實際情況進行調整,保證了宿舍環境的安全和舒適。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6039

    文章

    44579

    瀏覽量

    636452
  • 控制系統
    +關注

    關注

    41

    文章

    6635

    瀏覽量

    110687
  • STM32
    +關注

    關注

    2270

    文章

    10910

    瀏覽量

    356588
收藏 人收藏

    評論

    相關推薦

    [原創]專業弱電培訓(電視監控系統集成師、系統集成師、系統集成項目經

    數基本持平。課程名稱:系統集成師模塊:系統概述、電視監控系統、樓宇對講系統、室內防盜報警
    發表于 10-16 14:49

    【OK210申請】智能汽車系統

    申請理由:本人之前主要是做智能控制方面,做過智能家居,智能汽車電子。智能汽車主要是汽車系統,主控芯片是用STM32
    發表于 07-08 14:50

    【IntoRobot Atom申請】智能家庭系統

    , 讓物聯網走進家庭,實現智能家庭。將有很好的發展前景.項目描述:我們家庭系統分為以下幾個部分,首先是人臉識別系統, wifi無線開門系統
    發表于 12-29 16:20

    基于STM32和漢楓LPB100無線WIFI模塊的家電狀態顯示及控制系統

    家電狀態顯示及控制系統分為中央控制系統系統中央控制系統采用
    發表于 07-04 20:07

    【uFun試用申請】智能門鎖控制系統

    項目名稱:智能門鎖控制系統試用計劃:本人在智能領域有超過五年開發經驗,所開發的人臉識別門禁控制系
    發表于 04-09 14:12

    智能化公寓測控系統的原理是什么?

    基于ARM的學生公寓智能測控系統。該系統由采集終端和異地集中控制終端兩部分組成,兩者通過RS232總線進行串行通信,可實現異地
    發表于 03-30 06:59

    監控系統的組成部分

      一、表現層  表現城是我們最直觀感受到的,它展現了整個監控系統的品質。如監控電視墻、監視器、高音報警喇叭、報警自動駁接電話等等都屬于這一層。  二、控制層  
    發表于 12-11 14:08

    制動抱死控制系統(ABS)是什么意思

    制動抱死控制系統(ABS)是什么意思 制動抱死控制系統(ABS—Anti-lock Barke System)最初來源于機車制動中的“小平面現象”,即列車緊急制動
    發表于 03-11 17:20 ?7724次閱讀

    基于STM32的太陽自動跟蹤控制系統的設計

    基于STM32的太陽自動跟蹤控制系統的設計,有需要的看看
    發表于 11-02 10:14 ?56次下載

    基于ZigBee的學生宿舍智能限電控制系統_滕志軍

    基于ZigBee的學生宿舍智能限電控制系統_滕志軍
    發表于 01-31 15:22 ?10次下載

    STM32的智能溫室控制系統

    STM32的智能溫室控制系統
    發表于 09-28 15:05 ?74次下載
    <b class='flag-5'>STM32</b>的智能溫室<b class='flag-5'>控制系統</b>

    基于STM32的步進電機控制系統

    摘 要 本文的主要工作是基于STM32步進電機控制系統的設計。隨著越來越多的高科技產品逐漸融入了日常生活中,步進電機控制系統發生了巨大的變化。單片機、C語言等前沿學科的技術的日趨成熟與實用化,使得
    發表于 11-27 18:49 ?93次下載

    智能系統散熱問題如何解決

    智能系統在傳統系統的基礎上,加入機器人性化學習、更加深入的學習、智能算法、
    發表于 05-06 10:06 ?1021次閱讀

    基于單片機的學生宿舍控制系統

    為了方便學校對各個寢室樓進行管理,本次設計了學生宿舍控制系統
    的頭像 發表于 09-02 09:30 ?1326次閱讀

    基于ARM的宿舍智能監測系統設計

    電子發燒友網站提供《基于ARM的宿舍智能監測系統設計.pdf》資料免費下載
    發表于 11-07 14:50 ?13次下載
    基于ARM的<b class='flag-5'>宿舍</b>智能<b class='flag-5'>安</b><b class='flag-5'>防</b>監測<b class='flag-5'>系統</b>設計
    主站蜘蛛池模板: 在线黄| 天天看片天天干| 久久国产精品自在自线| 久久国内视频| 伊人网综合在线观看| 酒色激情网| 日韩欧美一级| 最新理论三级中文在线观看| 一区二区三区午夜| 一级录像| 丁香花五月婷婷| 六月激情网| 国产特级| 极品美女写真菠萝蜜视频| 色综合一区二区三区| 中日韩黄色大片| 性欧美黑人巨大videos| 种子天堂bt磁力在线资源| 一级片aaaa| 中国一级特黄真人毛片| 亚洲国产成人在线| 伊人久久香| 黄色毛片基地| 欧美极品在线视频| 视频1区| 一区二区免费视频| 日韩va亚洲va欧美va浪潮| 狠狠的干狠狠的操| 人人做人人干| 天天视频色| 手机看片自拍| 日韩天天操| 色极影院| 色爱区综合激情五月综合激情| 性国产精品| 久久狠狠干| 四虎影院免费在线| 四虎永久免费地址| 久久免费精品国产72精品剧情| 欧美精品1| 六月婷婷综合|