衡阳派盒市场营销有限公司

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

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

3天內不再提示

基于物聯網地下煤礦安全監測與預警

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2024-12-25 17:24 ? 次閱讀

[TOC]

一、前言

1.1 項目介紹

本項目設計里用到的全部工具軟件、模塊的源代碼都可以在這里下載(放在夸克網盤里了)。

https://pan.quark.cn/s/145a9b3f7f53

【1】項目開發背景

隨著全球對能源需求的持續增長,煤炭作為重要的傳統能源之一,在許多國家和地區依然扮演著不可或缺的角色。然而,煤礦開采作業由于其特殊的地下環境,常常伴隨著較高的安全風險,包括瓦斯爆炸、火災、透水事故等。這些事故不僅會導致嚴重的人員傷亡和經濟損失,還可能引發長期的環境問題。因此,提高煤礦的安全管理水平,減少事故發生率,成為行業發展中需要解決的問題。

近年來,物聯網IoT)技術的發展為礦井安全管理提供了新的解決方案。通過部署各種傳感器智能設備,可以實現對礦井內環境參數的實時監測,及時發現潛在的風險因素,并采取有效的預防措施。基于此背景,本項目提出了一種基于物聯網設計的地下煤礦安全監測與預警系統。該系統利用先進的傳感技術無線通信技術,構建一個智能化的安全監控網絡,以增強礦井作業的安全性,提升應急響應速度,降低事故發生概率。

項目將重點放在以下幾個方面:

通過溫濕度傳感器和氣體傳感器對礦井內的溫度、濕度以及瓦斯濃度進行連續監測;

引入人體檢測傳感器來監控人員活動情況,確保在緊急情況下能夠迅速定位并救援被困人員;

采用OLED顯示屏在現場展示關鍵數據,同時通過NBIoT模塊將數據上傳至華為云物聯網平臺,實現遠程監控;

開發一套基于Qt的可視化大屏軟件界面,方便管理人員隨時查看礦井狀況,并作出快速決策。

通過上述措施,本項目致力于打造一個高效、可靠且易于操作的安全監測體系,為礦工提供更加安全的工作環境,同時也為企業帶來更高的運營效率和經濟效益。

img

image-20241010113431709

image-20241010113520568

【2】華為云IOT物聯網平臺

華為云IoT物聯網平臺是華為公司提供的一種全棧式、安全可靠的云服務,它能夠支持各種物聯網場景和行業應用。

(1) 全面連接能力 :華為云IoT平臺支持多種網絡協議(如MQTT, CoAP, HTTP等)以及廣泛的設備接入方式,可以實現不同種類的終端設備與云端的穩定連接。

(2) 強大的數據處理能力 :平臺提供了豐富的數據處理功能,包括規則引擎、流式計算、消息路由等,能夠快速對海量數據進行分析處理,并根據業務需求觸發相應的動作或告警。

(3) 安全保障機制 :通過采用端到端的安全架構設計,華為云IoT平臺為用戶提供多層次的安全防護措施,確保從設備端到云端的數據傳輸過程中的安全性。

(4) 靈活部署選項 :除了公共云之外,還支持私有云及混合云等多種部署模式,使得企業可以根據自身實際情況選擇最適合自己的解決方案。

(5) 開放生態系統 :構建了一個開放的合作生態體系,不僅與其他華為產品和服務無縫集成,也兼容第三方系統和服務,便于開發者基于此平臺開發出更多創新的應用和服務。

(6) 高效運維管理 :提供了一套完善的設備管理工具集,幫助用戶輕松完成設備生命周期內的所有操作,如注冊、激活、配置更新、狀態監控等。

(7) 全球服務能力 :依托于華為在全球范圍內的基礎設施布局,該平臺能夠為企業提供跨國界的物聯網服務支持。

對于基于物聯網的地下煤礦安全監測與預警系統來說,利用華為云IoT平臺的優勢,可以有效提升系統的穩定性、可靠性和安全性,同時簡化了開發流程,加快了項目上線速度。此外,通過運用其強大的數據分析能力和靈活的服務定制特性,還可以進一步優化安全管理策略,提高應對突發事件的能力。

【3】設計實現的功能

(1)環境溫濕度監測

  • 使用DHT11溫濕度傳感器實時檢測礦井內的溫度和相對濕度。當檢測到的數值超過預設的安全閾值時,系統會觸發蜂鳴器報警,提醒工作人員采取相應措施。

(2)瓦斯濃度檢測與自動通風控制

  • 通過MQ5氣體傳感器監測礦井內瓦斯(甲烷)的濃度。一旦瓦斯濃度達到危險水平,控制系統將激活繼電器開關模塊,自動啟動通風風扇以降低有害氣體濃度,并可能伴有聲音警報。

(3)人員存在檢測

  • 利用紅外熱釋電人體感應模塊檢測礦井內是否有人。如果檢測到人員存在,系統將點亮指示燈,以此作為視覺提示,增強對現場人員活動的監控。

(4)數據實時顯示

  • 采用OLED顯示屏來展示當前采集到的各項環境參數,包括但不限于溫濕度、瓦斯濃度等,以便于現場工作人員及時了解礦井內的實際情況。

(5)遠程數據上傳

  • 通過BC26 NBIOT模塊將收集到的所有環境信息上傳至華為云物聯網平臺,允許遠程監控和數據分析,提高管理效率和響應速度。

(6)可視化大屏界面

  • 開發了基于Qt框架的可視化大屏軟件界面,運行在Windows電腦端。該界面可以接收并展示從設備上傳的數據,為管理人員提供一個直觀且易于操作的平臺來進行數據查看和分析。

【4】項目硬件模塊組成

(1)主控芯片 - STM32F103RCT6

  • 作為系統的核心處理器,負責處理來自各個傳感器的數據、執行控制邏輯以及管理通信協議。

(2)溫濕度傳感器 - DHT11

  • 用于實時監測礦井內的溫度和相對濕度,并將數據傳輸給主控芯片。當環境參數超過設定的安全閾值時,觸發報警機制。

(3)瓦斯濃度檢測模塊 - MQ5氣體傳感器

  • 專門用于檢測環境中甲烷等可燃氣體的濃度。一旦檢測到的瓦斯濃度達到危險水平,會通過控制系統激活通風設備以降低濃度,并觸發警報。

(4)人體檢測傳感器 - 紅外熱釋電模塊

  • 通過感應人體發出的紅外輻射來判斷區域內是否有人存在,增強現場的安全監控能力。

(5)顯示模塊 - SPI接口OLED顯示屏

  • 提供一個直觀的用戶界面,用來顯示當前采集到的溫濕度、瓦斯濃度等關鍵信息。

(6)無線通信模塊 - BC26 NBIOT模塊

  • 負責將收集到的各種環境數據通過NBIoT網絡上傳至華為云物聯網平臺,實現遠程監控和數據分析。

(7)蜂鳴器報警

  • 在任何環境參數超出預設的安全范圍時,蜂鳴器將被激活,發出聲音警報以提醒工作人員采取緊急措施。

(8)繼電器開關模塊 - 電磁繼電器

  • 根據主控芯片發送的指令控制外部設備如通風風扇的工作狀態,確保在必要時能夠迅速響應。

(9)風扇模塊 - 礦用通風風扇

  • 當瓦斯濃度過高時,通過繼電器控制自動啟動,以快速降低礦井內有害氣體的濃度,保障人員安全。

(10)電源管理

(11)指示燈 - LED指示燈

  • 用于視覺上提示系統狀態或特定事件的發生,比如當檢測到人員存在時點亮指示燈。

1.2 設計思路

本項目的設計思路基于對煤礦安全現狀的深入分析,在利用物聯網技術構建一個全面、智能且高效的地下煤礦安全監測與預警系統。首先,我們認識到礦井作業環境中存在的多種潛在風險因素,如瓦斯積聚、溫濕度異常以及突發事故等,這些都可能直接威脅到礦工的生命安全。因此,設計之初就明確了系統需要具備實時監測環境參數的能力,并能夠快速響應以降低風險。

為了實現這一目標,系統集成了多種傳感器來收集關鍵數據。DHT11溫濕度傳感器用于監測礦井內的溫度和濕度變化,這是評估工作環境舒適度及防止因極端條件引發事故的重要指標。MQ5氣體傳感器則專注于檢測瓦斯濃度,因為瓦斯是導致煤礦爆炸的主要原因之一。當這些傳感器檢測到的數據超過預設的安全閾值時,系統會立即啟動報警機制,通過蜂鳴器發出聲音警報,同時自動開啟通風風扇以稀釋有害氣體,從而迅速減輕潛在危險。

考慮到礦井內人員的安全管理同樣重要,系統還加入了紅外熱釋電人體感應模塊,用以監測是否有人員在場。這不僅有助于提高現場的安全意識,還能在緊急情況下幫助救援隊伍更快地定位被困人員。此外,OLED顯示屏被用來在現場直觀展示各種監測數據,確保所有工作人員都能及時了解當前的環境狀況。

為了讓管理者能夠遠程監控礦井狀態并進行數據分析,系統采用了BC26 NBIoT模塊將采集的數據上傳至華為云物聯網平臺。這種做法極大地增強了系統的靈活性和可擴展性,使得即使不在現場也能隨時掌握最新情況。最后,為了提供更友好的用戶體驗,我們使用Qt框架開發了一款可視化大屏軟件界面,該界面運行于Windows電腦端,可以清晰地呈現從設備上傳來的所有信息,便于管理人員做出及時有效的決策。

本項目通過集成先進的傳感技術、無線通信技術和云計算平臺,打造了一個多層次的安全監測體系。該體系不僅提升了煤礦作業的安全水平,也為實現智能化礦山管理奠定了堅實的基礎。

1.3 系統功能總結

序號功能模塊描述實現方式/硬件組件
1溫濕度監測檢測礦井內溫濕度情況,并在超過預設閾值時觸發報警。DHT11溫濕度傳感器,蜂鳴器
2瓦斯濃度檢測監控環境中的瓦斯濃度,當濃度達到危險水平時自動開啟通風設備。MQ5氣體傳感器,繼電器控制的礦用通風風扇
3人員存在監測檢測礦井內是否有人員活動,提高安全響應速度。紅外熱釋電人體感應模塊,指示燈
4數據顯示顯示實時采集到的各項環境參數。OLED顯示屏(SPI協議)
5數據上傳將收集的數據通過無線網絡上傳至云端平臺,支持遠程監控和數據分析。BC26 NBIOT模塊,華為云物聯網平臺
6可視化界面在Windows電腦端提供一個用戶友好的可視化大屏界面,用于展示和管理數據。Qt開發的圖形用戶界面軟件
7電源管理為系統提供穩定的電力供應,確保所有電子元件正常工作。5V 2A穩壓電源供控制電路使用;市電供電給高功耗設備如風扇等

1.4 開發工具的選擇

【1】設備端開發

STM32的編程語言選擇C語言,C語言執行效率高,大學里主學的C語言,C語言編譯出來的可執行文件最接近于機器碼,匯編語言執行效率最高,但是匯編的移植性比較差,目前在一些操作系統內核里還有一些低配的單片機使用的較多,平常的單片機編程還是以C語言為主。C語言的執行效率僅次于匯編,語法理解簡單、代碼通用性強,也支持跨平臺,在嵌入式底層、單片機編程里用的非常多,當前的設計就是采用C語言開發。

開發工具選擇Keil,keil是一家世界領先的嵌入式微控制器軟件開發商,在2015年,keil被ARM公司收購。因為當前芯片選擇的是STM32F103系列,STMF103是屬于ARM公司的芯片構架、Cortex-M3內核系列的芯片,所以使用Kile來開發STM32是有先天優勢的,而keil在各大高校使用的也非常多,很多教科書里都是以keil來教學,開發51單片機、STM32單片機等等。目前作為MCU芯片開發的軟件也不只是keil一家獨大,IAR在MCU微處理器開發領域里也使用的非常多,IAR擴展性更強,也支持STM32開發,也支持其他芯片,比如:CC2530,51單片機的開發。從軟件的使用上來講,IAR比keil更加簡潔,功能相對少一些。如果之前使用過keil,而且使用頻率較多,已經習慣再使用IAR是有點不適應界面的。

【2】上位機開發

上位機的開發選擇Qt框架,編程語言采用C++;Qt是一個1991年由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可用于開發非GUI程序,比如控制臺工具和服務器。Qt是面向對象的框架,使用特殊的代碼生成擴展(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴展,并且允許真正地組件編程。Qt能輕松創建具有原生C++性能的連接設備、用戶界面(UI)和應用程序。它功能強大且結構緊湊,擁有直觀的工具和庫。

1.5 模塊的技術詳情介紹

【1】NBIOT-BC26模塊

NBIoT-BC26模塊是由Quectel(移遠通信)生產的一款低功耗廣域網絡(LPWAN)模塊,專為窄帶物聯網(Narrowband Internet of Things, NB-IoT)應用設計。這款模塊具有體積小、功耗低、覆蓋范圍廣等優點,非常適合用于遠程監控、智能計量、資產跟蹤、環境監測等多種物聯網應用場景。

BC26模塊支持NB-IoT標準,這是3GPP定義的一種專門針對物聯網應用的蜂窩技術。與傳統的2G/3G/4G網絡相比,NB-IoT提供了更好的室內覆蓋能力、更低的功耗以及更高的連接密度。這使得BC26模塊能夠在信號較弱或難以到達的地方保持穩定的數據傳輸。此外,NB-IoT還支持更深的穿透力和更長的電池壽命,這對于部署在偏遠地區或需要長時間運行的設備尤為重要。

該模塊采用LGA封裝,尺寸僅為19.9 x 23.6 x 2.2 mm,便于集成到各種小型化設備中。BC26模塊支持多種頻段,包括B1/B3/B5/B8/B20/B28等全球主流頻段,確保了廣泛的地域兼容性。模塊內置了多種協議棧,如CoAP、TCP/UDP、MQTT等,簡化了數據傳輸和遠程控制的應用開發。通過這些協議棧,開發者可以輕松實現設備與云端服務器之間的通信,進行數據上報和命令下發。

在接口方面,BC26模塊提供了豐富的外設接口,包括UART、GPIO、ADCSIM卡接口等。這些接口使得模塊能夠方便地與其他傳感器、控制器和其他外圍設備進行連接。例如,通過UART接口,模塊可以直接與微控制器進行通信;通過GPIO接口,可以控制外部設備或讀取開關狀態;而SIM卡接口則允許使用標準SIM卡或eSIM卡進行網絡認證

為了進一步降低功耗,BC26模塊支持多種省電模式,如PSM(Power Saving Mode)和eDRX(Extended Discontinuous Reception)。這些模式可以在不需要持續數據傳輸時顯著降低功耗,延長電池壽命。在PSM模式下,模塊可以進入深度睡眠狀態,僅在預定的時間間隔內喚醒以檢查是否有新的數據傳輸需求。而在eDRX模式下,模塊會定期監聽網絡消息,但相比于傳統DRX模式,其監聽間隔更長,從而降低了功耗。

BC26模塊還具備強大的安全特性,支持多種加密算法和協議,如TLS/SSL、AES等,確保數據傳輸的安全性和完整性。此外,模塊支持FOTA(Firmware Over-The-Air)更新功能,可以通過無線方式對固件進行升級,提高了系統的可維護性和安全性。

NBIoT-BC26模塊以其小巧的體積、低功耗、廣泛的網絡覆蓋以及豐富的接口支持,成為物聯網應用中的理想選擇。無論是用于智能農業、環境監測、智能城市還是其他需要長期可靠連接的應用場景,BC26都能提供穩定高效的數據傳輸解決方案。

【2】MQ5傳感器

MQ5氣體傳感器是一種廣泛應用于檢測多種可燃氣體的半導體氣體傳感器,特別適合于監測甲烷(CH4)、液化石油氣(LPG)、丙烷、氫氣等。這種傳感器因其高靈敏度、快速響應時間和相對低廉的成本而在工業安全監控領域得到了廣泛應用,尤其是在需要對易燃易爆氣體進行實時監測的環境中。

MQ5的工作原理基于金屬氧化物半導體(MOS)技術。當傳感器暴露在目標氣體中時,其表面會發生化學反應,導致傳感器電阻發生變化。這一變化可以通過電路轉換為電信號,進而被用來評估氣體濃度。通常情況下,MQ5傳感器會連接到一個簡單的分壓電路,并通過測量輸出電壓來判斷氣體的存在及其濃度。傳感器對不同氣體有不同的敏感度,因此在實際應用中需要根據所要檢測的具體氣體類型進行校準。

該傳感器的操作溫度范圍較寬,一般在-10°C至50°C之間,這使得它能夠在大多數礦井環境下正常工作。然而,為了獲得最佳性能,建議在使用前進行預熱,以確保傳感器達到穩定的工作狀態。預熱時間通常約為20分鐘,之后傳感器才能提供準確可靠的讀數。

MQ5傳感器具有良好的穩定性和較長的使用壽命,但需要注意的是,其性能可能會受到環境濕度和溫度的影響。因此,在設計系統時,應考慮這些因素并采取適當的補償措施。此外,由于MQ5傳感器主要針對可燃氣體設計,對于非可燃性氣體如一氧化碳或二氧化碳則不適用,所以在選擇傳感器時需要明確具體的應用需求。

在本項目中,MQ5氣體傳感器將被用來監測礦井內的瓦斯(主要是甲烷)濃度。一旦檢測到的瓦斯濃度超過設定的安全閾值,系統就會自動啟動通風設備,降低礦井內有害氣體的濃度,同時觸發報警機制,提醒工作人員采取必要的安全措施。這樣的設計不僅提高了礦井作業的安全性,也增強了事故預防的能力。

【4】DHT11傳感器

DHT11是一種廣泛使用的數字溫濕度傳感器,它能夠同時測量環境的溫度和相對濕度。這種傳感器因其簡單易用、成本低廉以及良好的性能而被廣泛應用于各種場合,包括家庭自動化、氣象站、農業監測以及工業控制等領域。在本項目中,DHT11將用于實時監測地下煤礦內的溫濕度條件,確保礦井內保持適宜的工作環境。

DHT11傳感器內部集成了一個電阻式濕敏元件和一個NTC(負溫度系數)熱敏電阻,這兩個組件共同作用以實現對環境溫濕度的精確測量。濕敏元件通過檢測空氣中的水分含量來反映濕度水平,而熱敏電阻則根據其電阻值隨溫度變化的特性來測量溫度。這兩種物理量的變化會被轉換成電信號,并通過內置的微處理器進行處理,最終輸出數字信號

DHT11采用單線數字接口進行通信,這意味著只需一根數據線即可完成與微控制器之間的數據傳輸。這簡化了電路設計,減少了布線復雜度。為了獲取準確的數據,用戶需要遵循特定的時序協議來讀取傳感器的輸出。通常情況下,一次完整的數據采集過程包括發送開始信號、接收響應以及讀取溫濕度數據等步驟。

該傳感器的工作電壓范圍為3.3V至5.0V,使其能夠兼容多種供電系統。在正常工作條件下,DHT11可以提供±2°C的溫度精度和±5%的相對濕度精度。盡管這些數值對于某些高精度應用可能不夠理想,但對于大多數日常用途來說已經足夠。此外,DHT11具有較寬的工作溫度范圍(0°C至50°C)和濕度范圍(20%RH至90%RH),這使得它能夠在多種環境中可靠運行。

需要注意的是,DHT11傳感器不建議頻繁讀取數據,因為連續快速的請求可能會導致傳感器過載。一般來說,兩次讀取之間至少應間隔2秒。此外,由于DHT11沒有防水功能,在使用時應避免將其直接暴露于水或高濕度環境中,以免影響其使用壽命和準確性。

在本項目中,DHT11傳感器將被集成到主控板上,定時采集礦井內的溫濕度數據,并通過OLED顯示屏顯示出來。如果檢測到的溫濕度超出預設的安全閾值,系統會觸發報警機制,提醒工作人員采取措施改善礦井內的環境條件,從而保障礦工的安全和健康。通過這種方式,DHT11傳感器為礦井安全監測提供了重要的支持。

【5】紅外熱釋電人體檢測傳感器

紅外熱釋電人體檢測傳感器是一種利用人體發出的紅外輻射來檢測人員存在的裝置。這種傳感器基于熱釋電效應工作,當有溫度變化時(例如人體移動),傳感器中的熱釋電材料會產生電荷變化,從而生成電信號。這些信號經過放大和處理后,可以用來判斷是否有人進入或離開監測區域。

紅外熱釋電傳感器通常包含一個菲涅爾透鏡,該透鏡能夠將探測區域分成多個部分,并且每個部分在不同時間點上依次被傳感器掃描。這樣的設計有助于提高檢測范圍和靈敏度,同時減少誤報率。菲涅爾透鏡還能夠聚焦紅外輻射,使得傳感器對較遠距離的人體也能做出反應。此外,一些先進的傳感器可能還會配備環境溫度補償電路,以適應不同的工作條件,確保在各種溫度下都能穩定工作。

這類傳感器的一個重要特點是其低功耗特性,非常適合電池供電的應用場景。它們通常只需要很少的能量就能保持工作狀態,這在需要長時間無人值守監控的情況下尤為重要。然而,紅外熱釋電傳感器也有一些局限性,比如它不能穿透障礙物進行檢測,因此安裝位置需要避免被物體遮擋;另外,如果環境中有其他熱源或溫差較大的物體,也可能引起誤觸發。

在本項目中,紅外熱釋電人體檢測傳感器將用于監測礦井內是否有人員活動。當檢測到人員存在時,系統會點亮指示燈作為視覺提示,這有助于增強現場的安全管理。例如,在緊急情況下,這種信息可以幫助救援隊伍更快地定位被困人員的位置。此外,結合其他傳感器的數據,如瓦斯濃度和溫濕度,可以更全面地評估礦井內的安全狀況,為采取進一步的安全措施提供依據。

通過集成紅外熱釋電人體檢測傳感器,本項目不僅提高了對礦工活動的實時監控能力,也增強了整體系統的智能化水平,有助于構建一個更加安全、高效的地下煤礦作業環境。

1.6 市場可行性調查

image-20241031140314339

image-20241031140324415

image-20241031140400589

基于物聯網設計的地下煤礦安全監測與預警系統是一個復雜而全面的系統,通過實時監測、數據分析和預警機制來提高煤礦的安全性。該系統的設計和實施需要綜合考慮煤礦環境的特殊性、監測技術的先進性以及預警機制的有效性。

【1】系統架構

根據現有研究,基于物聯網的煤礦安全監測與預警系統通常包括感知層、傳輸層和應用層三個主要部分。感知層負責通過各種傳感器收集煤礦環境中的數據,如瓦斯濃度、溫度、濕度等。傳輸層則利用有線和無線通信技術將收集到的數據傳輸到控制中心。應用層則負責對數據進行處理和分析,并根據分析結果發出預警。

【2】關鍵技術

  1. 傳感器技術 :傳感器是監測系統的核心,需要能夠準確地測量煤礦環境中的各種參數。例如,用于檢測瓦斯、一氧化碳等有害氣體的傳感器,以及用于監測礦工健康狀況的生理參數傳感器。
  2. 無線通信技術 :由于煤礦環境的特殊性,傳統的無線通信技術可能無法滿足需求。因此,需要開發適合煤礦環境的無線通信技術,如基于RFID和Mesh網絡的通信系統。
  3. 數據處理與分析 :收集到的數據需要通過高效的數據處理和分析算法進行處理,以識別潛在的安全風險。這包括使用大數據技術和云計算來處理和分析大量數據。
  4. 預警機制 :基于數據分析的結果,系統需要能夠及時發出預警,通知相關人員采取措施。這可能包括自動化的報警系統和緊急響應機制。

【3】實施挑戰

  1. 環境適應性 :煤礦環境復雜多變,傳感器和通信設備需要能夠適應高溫、高濕、易爆等惡劣條件。
  2. 數據安全與隱私 :在傳輸和存儲過程中保護數據的安全性和礦工的隱私是一個重要挑戰。
  3. 系統的可靠性和穩定性 :系統需要保證長時間的穩定運行,避免因故障導致的安全事故。

【4】參考文獻

1. 孫繼平.煤礦物聯網特點與關鍵技術研究[J].煤炭學報,2011. 
2. 馬小平,胡延軍,繆燕子.物聯網、大數據及云計算技術在煤礦安全生產中的應用研究[J].工礦自動化,2014. 
3. B. Jo, Rana Muhammad Asad Khan. “An Event Reporting and Early-Warning Safety System Based on the Internet of Things for Underground Coal Mines: A Case Study.” Applied Sciences(2017). 
4. 孫彥景,錢建生,李世銀等.煤礦物聯網絡系統理論與關鍵技術[J].煤炭科學技術,2011. 
5. Yufeng Jiang, Wei Chen et al. “Real-Time Monitoring of Underground Miners’ Status Based on Mine IoT System.” Sensors (Basel, Switzerland)(2024). 
6. 劉瑞祥.基于物聯網的煤礦井下監測網絡平臺關鍵技術研究[D].中國礦業大學(北京),2014. 
7. 張靜,聶章龍.基于物聯網的煤礦安全監測與預警平臺設計 附視頻[J].煤炭技術,2021. 
8. 付貴祥,周紅軍,郭繼茹.基于物聯網的煤礦安全綜合智能預警系統[J].工礦自動化,2014. 
9. 田立勤,馬亞楠.基于物聯網的煤礦實時監測的拓撲可靠性設計與優化分析[J].金屬礦山,2017. 
10. 王學琛,郭昕曜,李墨瀟等.基于物聯網的煤礦安全風險預警平臺的研究及應用[J].武漢理工大學學報(信息與管理工程版),2016. 
11. 徐州建筑職業技術學院.煤礦安全檢測系統的物聯網技術研究[J].煤炭技術,2011. 
12. 國家安全生產監督管理總局通信信息中心.物聯網技術在煤礦安全監察中的應用[J].煤礦安全,2014. 
13. 程文嶺.基于物聯網的數字式煤礦安全監測監控技術研究[J].科技創新與應用,2020. 
14. 國能神東煤炭集團有限責任公司布爾臺煤礦.基于物聯網技術的煤礦用電安全智能監測研究[J].中國煤炭,2022. 
15. 李瑞華,喬玉峰,劉峰.基于物聯網的礦井安全檢測系統設計[J].電子設計工程,2016. 
16. 劉香蘭,趙旭生,董桂剛.基于物聯網的煤礦瓦斯爆炸動態安全預警系統的設計研究[J].煤炭工程,2012. 
17. 淮南聯合大學計算機系.基于物聯網技術的煤礦人員定位系統及其應用[J].電腦知識與技術,2019. 
18. 黎敏.基于五層物聯網架構的煤礦安全監控系統設計[J].煤炭技術,2016. 
19. 徐江陵.基于物聯網的智能化煤礦安全監控系統研究[J].煤炭技術,2018. 
20. 粟闖,方思宇,容德春等.基于物聯感知技術的地下開采風險管控系統建設及應用 附視頻[J].中國礦業,2024. 
21. 劉衛東,張薇,孟曉靜.基于物聯網的煤礦檢測監控系統研究[J].電子器件,2015. 
22. 郭江濤,楊娟.基于物聯網感知的煤礦安全監控系統設計[J].自動化與儀器儀表,2015. 
23. 黃成玉,李學哲,張全柱.基于物聯網技術的煤礦綜合自動化系統[J].煤礦安全,2012. 
24. 西安歐亞學院信息工程學院.基于物聯網技術的煤礦智能安全管理系統研究[J].價值工程,2011. 
25. 朱晶.基于物聯網技術的煤礦安全監控平臺的設計與關鍵技術[J].機械管理開發,2020. 
26. 黃彩梅,辛樂,黃丹等.基于物聯網技術的煤礦定位與監測系統設計[J].傳感器與微系統,2013. 
27. 姚逸程.基于物聯網的煤礦粉塵在線預警系統[J].綠色科技,2021. 
28. Y. Qi, Wen Ji et al. “Analysis and Design of Monitoring System in Coal Mine Based on Internet of Things.” Applied Mechanics and Materials(2012). 
29. P. Jayarajan, K. V. Gayathri et al. “Improved Cost Effective IoT Based Coal Mining Safety System.” Journal of Physics: Conference Series(2021). 
30. Y. S. Dohare, T. Maity et al. “Design of surveillance and safety system for underground coal mines based on low power WSN.” 2014 International Conference on Signal Propagation and Computer Technology (ICSPCT 2014)(2014).

二、硬件選型

1. NBIoT模塊 - BC26

BC26是一款支持NB-IoT(窄帶物聯網)技術的無線通信模塊。它具有低功耗、廣覆蓋的特點,非常適合用于遠程數據傳輸。在這個項目中,BC26模塊將負責將采集到的各種環境信息上傳至華為云物聯網平臺,確保數據能夠被遠端服務器接收并處理。

2. 瓦斯濃度檢測模塊 - MQ5氣體傳感器

MQ5是一種半導體氣體傳感器,專門用于檢測可燃氣體如甲烷(瓦斯)、液化石油氣等。它具有高靈敏度和快速響應時間。在本項目中,MQ5傳感器將用來監測礦井內的瓦斯濃度。一旦檢測到的濃度達到預設閾值,控制系統會立即啟動通風風扇以降低有害氣體濃度。

3. 風扇模塊 - 礦用通風風扇

為了有效降低礦井內瓦斯等有害氣體的濃度,系統采用礦用通風風扇。這些風扇通常設計為能夠在惡劣環境下工作,具備防塵、防水等特性。風扇的啟停由繼電器控制,根據MQ5傳感器檢測到的瓦斯濃度自動調節。

4. OLED顯示屏 - SPI協議OLED顯示屏

OLED顯示屏以其高對比度、快速響應時間和寬視角而聞名。在本項目中,采用SPI接口的OLED顯示屏來顯示實時采集的數據,包括溫濕度、瓦斯濃度等關鍵信息。這種顯示屏不僅清晰可見,而且功耗較低,適合長時間運行。

5. 溫濕度傳感器 - DHT11

DHT11是一種經濟實惠且易于使用的數字溫濕度傳感器。它能夠同時測量溫度和相對濕度,并通過單線數字接口輸出數據。在本項目中,DHT11傳感器用于監測礦井內的溫濕度條件。當檢測到的數值超過設定的安全閾值時,系統會觸發蜂鳴器報警。

6. 供電電源

  • 控制板系統供電 :采用5V 2A外部穩壓電源,為微控制器、傳感器以及其他低功耗電子元件提供穩定的電力供應。
  • 其他電器供電 :對于高功耗設備如風扇,則直接使用市電供電,以保證足夠的電力支持其正常工作。

7. 人體檢測 - 紅外熱釋電模塊

紅外熱釋電傳感器利用人體發出的紅外輻射來檢測人員的存在。在本項目中,該傳感器用于監測礦井內是否有人員活動。一旦檢測到人員存在,系統會點亮指示燈作為視覺提示,增強現場安全管理。

8. 主控芯片 - STM32F103RCT6

STM32F103RCT6是意法半導體公司推出的一款高性能ARM Cortex-M3微控制器。它具有豐富的外設資源和強大的計算能力,適用于各種嵌入式應用。在本項目中,STM32F103RCT6作為主控芯片,負責處理來自各個傳感器的數據、執行控制邏輯以及管理通信協議。

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

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

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

image-20221204193824815

3.1 物聯網平臺介紹

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

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

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

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

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

img

3.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端口連接華為云物聯網平臺。

3.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

3.4 添加設備

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

(1)注冊設備

image-20240425181935561

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

image-20240612100115167

(3)保存設備信息

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

image-20240612100128061

(4)設備創建完成

image-20240612100147232

(5)設備詳情

image-20240612100202960

image-20240612100217236

3.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}}]}

3.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

3.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}}]}

3.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

3.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接口獲取設備上傳的數據,進行可視化顯示,以及遠程控制設備。

4.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

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

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

4.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

4.3 設計UI界面與工程配置

【1】打開UI文件

image-20230421094815236

打開默認的界面如下:

image-20240425194845233

【2】開始設計界面

根據自己需求設計界面。

image-20240620151816878

4.4 編譯Windows上位機

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

image-20240509202031739

編譯之后的效果:

image-20240620151858925

4.5 配置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

五、 BC26-NBIOT模塊調試過程

5.1 模塊調試接線

image-20240511223245187

image-20240511223256788

image-20240511223308721

5.2 測試模塊

第一步接上之后,串口調試助手選擇波特率為115200,勾選軟件上的發送新行選項。發送AT過去,正常模塊會返回OK

只有收到了OK,才表示模塊工作正常。

image-20240511204301353

5.3 上電初始化操作

1】查詢模塊是否正常
AT

OK


【2】獲取卡號,查詢卡是否插好
AT+CIMI

460041052911195

OK


【3】激活網絡
AT+CGATT=1

OK


【4】獲取網絡激活狀態
AT+CGATT?

+CGATT: 1

OK


【5】查詢網絡質量
AT+CSQ

+CSQ: 26,0

OK
    
【6】 檢查網絡狀態
AT+CEREG=?   //
+CEREG: 0,1 //找網成功
OK

5.4 開啟GPS定位

如果需要使用GPS定位就開,不需要使用就不用管。

使用GPS定位還需要將模塊上的GPS天線接好,否則也是沒有信號的。

官方文檔:

image-20220220191400115

1】激活GPS,要等一段時間
AT+QGNSSC=1

OK


【2】查詢激活狀態,1表示成功激活
AT+QGNSSC?

+QGNSSC: 1

OK


【3】獲取一次GPS定位語句
AT+QGNSSRD="NMEA/RMC"
+QGNSSRD: $GNRMC,120715.00,A,3150.78179,N,11711.93433,E,0.000,,310818,,,A,V*19
OK

六、STM32代碼開發

6.1 BC26-NBIOT配置代碼

#include "ec20.h"
#include "stdlib.h"
#include "string.h"
#include "usart.h"	
#include "iwdg.h"

int errcount = 0;
char atstr[BUFLEN];
char AtStrBuf[BUFLEN];
char *strx,*extstrx,*Readystrx;
extern char AtRxBuffer[512],Rxcouter;

////////////////////////////////////////////////////////////////////
char GPRMCSTR[128]; //轉載GPS信息 GPRMC 經緯度存儲的字符串
char GPRMCSTRLON[64]; //經度存儲字符串 也就是119.20694
char GPRMCSTRLAT[64]; //維度存儲字符串,也就是26.06451
char IMEINUMBER[64];//+CGSN: "869523052178994"
//////////////////下面是糾正火星坐標的變量定義/////////////////////////
int Get_GPSdata(void);
void Getdata_Change(char status);

    typedef struct 
{
char UtcDate[6];
char longitude[11];//經度原數據
char Latitude[10];//緯度源數據
char longitudess[4];//整數部分
char Latitudess[3];
char longitudedd[8];//小數點部分
char Latitudedd[8];
char Truelongitude[12];//轉換過數據
char TrueLatitude[11];//轉換過數據
char getstautus;//獲取到定位的標志狀態	
float gpsdata[2];
}LongLatidata;
LongLatidata latdata;

float tempdata[2];
char latStrAF[64];          //存放數據經緯度用來發送
char lonStrAF[64];   				//存放數據經緯度用來顯示
//////////////////////////火星糾偏結束///////////////////////////////////

////////////////////////只要修改三要素/////////////////////////////////
#define PRODUCEKEY "6402ac07352830580e48ff7b_dev1_0_0_2023030403"        //設備ID
#define DEVICENAME "6402ac07352830580e48ff7b_dev1"           //用戶名
#define DEVICESECRET "517f1c8f18d6b7b2e4c134653dc892edd38c3e86153506df57f7c296d13b37f7" //密碼


void Clear_Buffer(void)//清空緩存
{
    u8 i;
		NBIOTSend_RecAccessMode();
    printf(AtRxBuffer);
    for(i=0;i< Rxcouter;i++)
        AtRxBuffer[i]=0;//緩存
    Rxcouter=0;

}


//初始化模塊
void  NBIOT_Init(void)
{
    Uart2_SendStr("ATrn");
    delay_ms(500);
    strx=strstr((const char*)AtRxBuffer,(const char*)"OK");//返回OK
    errcount = 0;
    while(strx==NULL)
    {
        errcount++;
        printf("rn單片機正在連接到模塊...rn");
        Clear_Buffer();
        Uart2_SendStr("ATrn");
        delay_ms(500);
        strx=strstr((const char*)AtRxBuffer,(const char*)"OK");//返回OK
        if(errcount >50)     //防止死循環
        {
            errcount = 0;
            reset_4g();
            __set_FAULTMASK(1); //關閉總中斷
            NVIC_SystemReset(); //請求單片機重啟
            break;
        }
    }

    Uart2_SendStr("ATE1rn"); //回顯
    delay_ms(500);
    Clear_Buffer();

    /////////////////////////////////
    Uart2_SendStr("AT+CPIN?rn");//檢查SIM卡是否在位
    delay_ms(500);
    strx=strstr((const char*)AtRxBuffer,(const char*)"+CPIN: READY");//查看是否返回ready
    while(strx==NULL)
    {
        Clear_Buffer();
        Uart2_SendStr("AT+CPIN?rn");
        delay_ms(500);
        strx=strstr((const char*)AtRxBuffer,(const char*)"+CPIN: READY");//檢查SIM卡是否在位,等待卡在位,如果卡識別不到,剩余的工作就沒法做了
    }
    Clear_Buffer();
    ///////////////////////////////////////
    Uart2_SendStr("AT+CSQrn"); //檢查CSQ
    delay_ms(500);
    Clear_Buffer();
    Uart2_SendStr("ATIrn"); //檢查模塊的版本號
    delay_ms(500);
    Clear_Buffer();


    ///////////////////////////////////
    Uart2_SendStr("AT+CREG?rn");//查看是否注冊GSM網絡
    delay_ms(500);
    Clear_Buffer();

    Uart2_SendStr("AT+CEREG?rn");//查看注冊到哪個運營商,支持移動 聯通 電信
    delay_ms(500);
    Clear_Buffer();

    Uart2_SendStr("AT+CIMIrn");//獲取卡號,類似是否存在卡的意思,比較重要。
    delay_ms(1000);
    strx=strstr((const char*)AtRxBuffer,(const char*)"OK");//只要卡不錯誤 基本就成功
    if(strx)
    {
        printf("============rn我的卡號是 : %s rn===============rn",AtRxBuffer);
        delay_ms(1000);
        Clear_Buffer();

    }
    else
    {
        // printf("卡錯誤 : %s rn",AtRxBuffer);
        delay_ms(300);
        Clear_Buffer();
    }
    Clear_Buffer();

    Uart2_SendStr("AT+CGSNrn");//激活網絡,PDP
    delay_ms(300);
    strx=strstr((const char*)AtRxBuffer,(const char*)"OK");//返OK
    Clear_Buffer();

    Uart2_SendStr("AT+CGATT?rn");//查詢激活狀態
    delay_ms(300);
    strx=strstr((const char*)AtRxBuffer,(const char*)"+CGATT: 1");//返1 表明激活成功 獲取到IP地址了
    Clear_Buffer();
    errcount = 0;
    while(strx==NULL)
    {
        errcount++;
        Clear_Buffer();
        Uart2_SendStr("AT+CGATT?rn");//獲取激活狀態
        delay_ms(300);
        strx=strstr((const char*)AtRxBuffer,(const char*)"+CGATT: 1");//返回1,表明注網成功
        if(errcount >100)     //防止死循環
        {
            errcount = 0;
            reset_4g();
            __set_FAULTMASK(1); //關閉總中斷
            NVIC_SystemReset(); //請求單片機重啟
            break;
        }
    }

    Uart2_SendStr("AT+QCCIDrn");//獲取當前卡的IP地址
    delay_ms(500);
    Clear_Buffer();
}


void Start_GPS(void)
{
		Clear_Buffer();	
		Uart2_SendStr("AT+QGPS=1rn");//查詢激活狀態
		delay_ms(300);
		strx=strstr((const char*)AtStrBuf,(const char*)"OK");//返1
	
		if(strx==NULL)
		{
				//__set_FAULTMASK(1);
				//NVIC_SystemReset();	//超時重啟
				delay_ms(300);
		}
		Clear_Buffer();	
}
//////////////////////////////獲取定位數據/////////////////////////////////////////////

/*
AT+QGPSGNMEA="RMC"

+QGPSGNMEA: $GNRMC,035645.00,A,2603.9111,N,11912.4140,E,0.336,,140821,,,A,V*19

OK
AT+QGPSGNMEA="RMC"

+QGPSGNMEA: $GPRMC,145620.00,A,2603.972207,N,11912.411739,E,0.0,0.0,171022,3.5,W,A*2F

*/

char *Get_GPS_RMC(char type)
{
		Clear_Buffer();	
		memset(GPRMCSTR,0,128);
		Uart2_SendStr("AT+QGPSGNMEA="RMC"rn");//查詢激活狀態
		delay_ms(300);
		strx=strstr((const char*)AtRxBuffer,(const char*)"$GPRMC");//返1
		
		while(strx==NULL)
		{
				Clear_Buffer();	
				Uart2_SendStr("AT+QGPSGNMEA="RMC"rn");//獲取激活狀態
				delay_ms(300);
				strx=strstr((const char*)AtRxBuffer,(const char*)"$GPRMC");//返回1,表明注網成功
		}
		sprintf(GPRMCSTR,"%s",strx);

		Clear_Buffer();	//打印收到的GPS信息
		GPRMCSTR[2]=	'P';
		
		//printf("============GETGPRMC==============rn%s",GPRMCSTR);		//打印GPRMC
		if(GPRMCSTR[17]=='A')
		{
			memset(latStrAF,0,64);
			memset(lonStrAF,0,64);
			Get_GPSdata();
			
			if(type==1)
				return latStrAF;
			if(type==2)
				return lonStrAF;
		}
		return 0;
}

/*****************************************************
下面是矯正火星坐標的
*****************************************************/


//解GPS析函數
//$GPRMC,134952.00,A,2603.9576,N,11912.4098,E,0.154,,280821,,,A,V*18
int Get_GPSdata()
{
		int i=0;
    strx=strstr((const char*)GPRMCSTR,(const char*)"A,");//獲取緯度的位置
       if(strx)
        {
            for(i=0;i< 9;i++)
            {
             latdata.Latitude[i]=strx[i+2];//獲取緯度值2603.9576
            }
						strx=strstr((const char*)GPRMCSTR,(const char*)"N,");//獲取經度值
						if(strx)
						{
								 for(i=0;i< 10;i++)	//獲取經度 11912.4098
								 {
										latdata.longitude[i]=strx[i+2];
								 }
								 
						}  
						
						printf("latdata.Latitude ,%s rn",latdata.Latitude);
						printf("latdata.longitude ,%s rn",latdata.longitude);
            latdata.getstautus=1;//                 
	    }
                            
		else
		{
						
				latdata.getstautus=0;
		 }
			Getdata_Change(latdata.getstautus);//數據換算
			Clear_Buffer();
		 return 0;

}





/*************解析出經緯度數據,然后直接提交數據*******************/	

void Getdata_Change(char status)
{
	unsigned char i;	
    	
    if(status)
    {

        for(i=0;i< 3;i++)
						latdata.longitudess[i]=latdata.longitude[i];
				for(i=3;i< 10;i++)
						latdata.longitudedd[i-3]=latdata.longitude[i];
			
			 latdata.gpsdata[0]=(latdata.longitudess[0]-0x30)*100+(latdata.longitudess[1]-0x30)*10+(latdata.longitudess[2]-0x30)
		     +((latdata.longitudedd[0]-0x30)*10+(latdata.longitudedd[1]-0x30)+(float)(latdata.longitudedd[3]-0x30)/10+
		     (float)(latdata.longitudedd[4]-0x30)/100+(float)(latdata.longitudedd[5]-0x30)/1000+(float)(latdata.longitudedd[6]-0x30)/10000)/60.0;//獲取完整的數據
       
///////////////////////////////////////////
				for(i=0;i< 2;i++)
						latdata.Latitudess[i]=latdata.Latitude[i];
				for(i=2;i< 9;i++)
						latdata.Latitudedd[i-2]=latdata.Latitude[i];	
				 
			latdata.gpsdata[1]=(float)(latdata.Latitudess[0]-0x30)*10+(latdata.Latitudess[1]-0x30)
		     +((latdata.Latitudedd[0]-0x30)*10+(latdata.Latitudedd[1]-0x30)+(float)(latdata.Latitudedd[3]-0x30)/10+
		     (float)(latdata.Latitudedd[4]-0x30)/100+(float)(latdata.Latitudedd[5]-0x30)/1000+(float)(latdata.Latitudedd[6]-0x30)/10000)/60.0;//獲取完整的數據b

	
				 sprintf(latStrAF,"%f",latdata.gpsdata[1]);
				 sprintf(lonStrAF,"%f",latdata.gpsdata[0]);
				 
				 			 
				 printf("latStrAF,%s rn",latStrAF);
				 printf("lonStrAF,%s rn",lonStrAF);
				 
    }
    else
    {
        latdata.gpsdata[0]=0;
        latdata.gpsdata[1]=0;
    }
		
	
}

/*****************************************************
糾偏結束
*****************************************************/

/*********************************************************************************
** 函數名稱 : MakeOnenetPayload(char *Str,u8 Temp,u8 Humi)
** 函數功能 : 將溫度與濕度封裝成Onenet有效載荷包
** 輸    入	: *str有效載荷保存的目標字符串, 
** 輸    入	: Temp 溫度值
** 輸    入	: Humi 濕度值
** 輸    出	: 有效載荷字符串
** 返    回	: 有效載荷字符串長度
*********************************************************************************/
char JsonBuf[256];//臨時數據緩存 
u8 MakeOnenetPayload(u8 *Str,u8 Temp,u8 Humi)//將溫度與濕度封裝成Onenet有效載荷包
{
  char Payload[] = "{"datastreams":[{"id":"Temp","datapoints":[{"value":%d}]},{"id":"Humi","datapoints":[{"value":%d}]}]}";//onenet有效載荷固定格式
	
	unsigned short   StrLen;//有效載荷數據長度
	memset(JsonBuf,0,256);
	sprintf(JsonBuf,Payload,Temp,Humi);//合成數據有效載荷封裝
	//printf("rn有效載荷(%d):[%s]rn",strlen(JsonBuf),(char *)JsonBuf);
	StrLen = strlen(JsonBuf)/sizeof(char);//計算有效載荷的數據長度
	//printf("rn有效載荷長度(%d)rn",StrLen);
	Str[0] = 'x01';//報文第一個字節的固定顯示
	//printf("rnStr[0]=0X(%02X)rn",Str[0]);
	//報文第2個字節和第三個字節表示有效載荷的長度的固定顯示
	Str[1] = (StrLen & 0XFF00) > >8;//高位
	//printf("rnStr[1]=0X(%02X)rn",Str[1]);
	Str[2] =  StrLen & 0XFF;//低位
	//printf("rnStr[2]=0X(%02X)rn",Str[2]);
	//拷貝有效載荷數據到Str
	memcpy(Str+3,JsonBuf,StrLen);//從第三個字節開始拷貝
	return (StrLen+3);//返回長度
}

u8 CSTX_4G_MQTT_Senddata(char *data)
{	
	u8 JsonLen;//Json包數據長度
	memset(AtStrBuf,0,BUFLEN);
	Clear_Buffer();
    sprintf(AtStrBuf,"AT+QMTPUB=0,0,0,0,"$oc/devices/6402ac07352830580e48ff7b_dev1/sys/properties/report"rn");
   // printf("ATSTR = %s rn",AtStrBuf);
    Uart2_SendStr(AtStrBuf);//mqtt提交
    delay_ms(300);
		strx=strstr((const char*)AtRxBuffer,(const char*)" >");//準備發送數據
		errcount=0;
    while(strx==NULL)
    {
        errcount++;
        strx=strstr((const char*)AtRxBuffer,(const char*)" >");//準備發送數據 模塊的反饋
				delay_ms(30);
        if(errcount >10)     //超時退出
        {
            errcount = 0;
            break;
        }
    }
		Clear_Buffer();
        
       
		USART2_Send((char *)data,strlen(data));//發送json數據
	
        UART2_send_byte(0x1A);
		delay_ms(300);
		errcount=0;
    strx=strstr((const char*)AtRxBuffer,(const char*)"+QMTPUB: 0,0,0");//返SEND OK +QMTPUB: 0,0,0
    while(strx==NULL)
    {
				errcount++;
        strx=strstr((const char*)AtRxBuffer,(const char*)"+QMTPUB: 0,0,0");//返SEND OK
				delay_ms(30);
        if(errcount >10)     //超時退出
        {
            errcount = 0;
            break;
        }
    }
    Clear_Buffer();
    return 0;
}


u8 MakeOnenetPayloadGPS(u8* Str,char *latstr,char * lonstr)//將溫度與濕度封裝成Onenet有效載荷包
{
  char Payload[] = "{"datastreams":[{"id":"location","datapoints":[{"value":{"lon":%s,"lat":%s}}]}]}";//onenet有效載荷固定格式

	unsigned short   StrLen;//有效載荷數據長度
	memset(JsonBuf,0,256);
	sprintf(JsonBuf,Payload,lonstr,latstr);//合成數據有效載荷封裝
	printf("JSONEND= %s rn",JsonBuf);
	//printf("rn有效載荷(%d):[%s]rn",strlen(JsonBuf),(char *)JsonBuf);
	StrLen = strlen(JsonBuf)/sizeof(char);//計算有效載荷的數據長度
	//printf("rn有效載荷長度(%d)rn",StrLen);
	Str[0] = 'x01';//報文第一個字節的固定顯示
	//printf("rnStr[0]=0X(%02X)rn",Str[0]);
	//報文第2個字節和第三個字節表示有效載荷的長度的固定顯示
	Str[1] = (StrLen & 0XFF00) > >8;//高位
	//printf("rnStr[1]=0X(%02X)rn",Str[1]);
	Str[2] =  StrLen & 0XFF;//低位
	//printf("rnStr[2]=0X(%02X)rn",Str[2]);
	//拷貝有效載荷數據到Str
	memcpy(Str+3,JsonBuf,StrLen);//從第三個字節開始拷貝
	return (StrLen+3);//返回長度
}

void CSTX_4G_ONENETIOTSenddataGPS(char *latstr,char *lonstr)//上發數據,上發的數據跟對應的插件有關系,用戶需要注意插件然后對應數據即可
{
//		int JsonLen= 0;
//    memset(AtStrBuf,0,BUFLEN);
//	
//		Clear_Buffer();	//發送命令之前清空之前的模塊反饋的數據
//    sprintf(AtStrBuf,"AT+QMTPUB=0,0,0,0,"$dp"rn");	//發送ONENET命令
//    printf("AtStrBuf = %s rn",AtStrBuf);
//    Uart2_SendStr(AtStrBuf);//mqtt提交
//    delay_ms(300);
//		strx=strstr((const char*)AtRxBuffer,(const char*)" >");//模塊反饋可以發送數據了
//		errcount=0;
//    while(strx==NULL)
//    {
//        errcount++;
//        strx=strstr((const char*)AtRxBuffer,(const char*)" >");//模塊反饋可以發送數據了
//				delay_ms(30);
//        if(errcount >100)     //防止死循環跳出
//        {
//            errcount = 0;
//            break;
//        }
//    }
//		//命令發送成功下面就去發送數據了
//		//Clear_Buffer();

//		JsonLen = MakeOnenetPayloadGPS((u8*)Send_Json,latstr,lonstr);	//組建CJSON數據
//		USART2_Send((char *)Send_Json,JsonLen);//發送json 數據
//		delay_ms(10);
//		UART2_send_byte(0x1A);
//    strx=strstr((const char*)AtRxBuffer,(const char*)"+QMTPUB: 0,0,0");//返發送成功
//		errcount=0;
//    while(strx==NULL)
//    {
//				errcount++;
//				strx=strstr((const char*)AtRxBuffer,(const char*)"+QMTPUB: 0,0,0");//返發送成功
//				delay_ms(10);
//				if(errcount >100)     //超時退出死循環 表示服務器連接失敗
//        {
//            errcount = 0;
//            break;
//        }
//    }
//		
//    Clear_Buffer();

}

6.2 主函數里的項目邏輯代碼

下面是項目的主函數里的項目邏輯代碼(其他子模塊的代碼太多,文檔無法全部貼出)。

可以去網盤里下載傳感器模塊的代碼:https://pan.quark.cn/s/145a9b3f7f53

#include "stm32f10x.h"
#include "sensors.h"  // 傳感器驅動
#include "lcd.h"      // LCD顯示驅動
#include "nbiot.h"    // NBIoT模塊驅動
#include "mqtt.h"     // MQTT協議庫
#include "relay.h"    // 繼電器控制
#include "delay.h"    // 延時函數
#include < string.h >   // 字符串處理函數

// 初始化所有外設
void Hardware_Init(void) {
    // 初始化GPIO
    GPIO_InitTypeDef GPIO_InitStructure;
    // ... 配置必要的GPIO引腳(如LCD接口、繼電器控制等)

    // 初始化定時器(用于周期性任務)
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    // ... 配置定時器

    // 初始化傳感器
    Sensors_Init();

    // 初始化LCD
    LCD_Init();

    // 初始化NBIoT模塊
    NB_IoT_Init();

    // 初始化MQTT客戶端
    MQTT_Init();
}

// 檢查并執行灌溉命令
void CheckAndExecuteIrrigationCommands(void) {
    // 從云端獲取最新的灌溉命令
    char *irrigation_command = MQTT_Subscribe("irrigation/command");

    if (irrigation_command != NULL) {
        // 解析命令并控制相應的繼電器
        Relay_Control(irrigation_command);
    }
}

// 主函數
int main(void) {
    // 初始化硬件
    Hardware_Init();

    // 主循環
    while (1) {
        // 讀取傳感器數據
        float soil_temp, soil_humidity, air_temp, air_humidity, light_intensity, air_quality;
        Sensors_Read(&soil_temp, &soil_humidity, &air_temp, &air_humidity, &light_intensity, &air_quality);

        // 顯示到LCD
        LCD_DisplayData(soil_temp, soil_humidity, air_temp, air_humidity, light_intensity, air_quality);

        // 通過NBIoT上傳數據到華為云IoT
        if (NB_IoT_IsConnected()) {
            char data[128];
            snprintf(data, sizeof(data), 
                     "soil_temp=%.2f,soil_humidity=%.2f,air_temp=%.2f,air_humidity=%.2f,light_intensity=%.2f,air_quality=%.2f",
                     soil_temp, soil_humidity, air_temp, air_humidity, light_intensity, air_quality);
            MQTT_Publish("sensor/data", data);
        }

        // 檢查并執行灌溉命令
        CheckAndExecuteIrrigationCommands();

        // 延時一段時間
        Delay(5000);  // 例如每5秒更新一次
    }
}

七、總結

本項目設計并實現一套基于物聯網技術的地下煤礦安全監測與預警系統,以提高礦工工作環境的安全性。該系統通過集成多種傳感器技術,能夠實時監控礦井內的溫濕度、瓦斯濃度及人員活動情況,并在檢測到異常時及時發出警報,采取相應的安全措施。

系統硬件核心采用STM32F103RCT6微控制器,結合DHT11溫濕度傳感器、MQ5氣體傳感器以及紅外熱釋電人體感應模塊,分別用于環境溫濕度、瓦斯濃度和人員存在的監測。當環境參數超過預設的安全閾值時,系統將自動激活蜂鳴器報警,并通過控制繼電器啟動通風風扇以降低有害氣體濃度。此外,OLED顯示屏被用作現場顯示終端,提供直觀的數據展示。為了實現遠程數據傳輸與管理,系統還集成了BC26 NBIOT模塊,可以將收集到的信息上傳至華為云物聯網平臺,便于管理者進行數據分析和決策支持。

為提升用戶體驗,我們使用Qt框架開發了一款運行于Windows平臺上的可視化大屏軟件界面,能夠實時展現來自地下煤礦的各類監測數據,使管理人員能夠迅速掌握礦區狀況并作出響應。整個系統的供電設計考慮了穩定性和安全性,其中控制電路部分由5V 2A穩壓電源供應,而風扇等高功耗設備則直接接入市電,確保長時間可靠運行。

本項目不僅增強了地下煤礦作業場所的安全保障能力,也為未來構建更加智能化、信息化的礦山管理體系奠定了基礎。

審核編輯 黃宇

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

    關注

    2553

    文章

    51390

    瀏覽量

    756560
  • 物聯網
    +關注

    關注

    2913

    文章

    44923

    瀏覽量

    376988
  • 安全監測
    +關注

    關注

    0

    文章

    175

    瀏覽量

    10576
收藏 人收藏

    評論

    相關推薦

    煤礦安全監控系統

    煤礦安全監控系統二十一世紀煤礦事故的頻發使得煤礦企業的安全生產信息化勢在必行。煤礦安全監控系統可以保證煤炭的
    發表于 06-04 09:01

    DTU在煤礦安全生產無線監測

    方案需求瓦斯事故是當前煤礦生產的主要災害。大多數煤礦企業都已經或正在進行瓦斯等安全生產監測監控系統的建設,但由于現有系統的局限性,無法使安全
    發表于 10-17 16:01

    【HarmonyOS HiSpark AI Camera】煤礦安全監測系統

    項目名稱:煤礦安全監測系統試用計劃:我司跟中國煤炭科工集團(央企)沈陽研究院最近合作一個煤礦安全監測系統。其中有一個是熱成像攝像頭,計劃到時候使用鴻蒙系統和海思開發板為基礎,開發這一套
    發表于 09-25 10:11

    STM32應用案例 實現地下停車場安全預警系統設計

    設計了一套基于STM32的地下停車場安全預警系統。該系統由供電模塊、STM32主處理器模塊、無線通信模塊、車輛監測模塊、安全
    發表于 01-06 18:22

    加強小型煤礦安全監測系統的探討

    文章論述了加強小型煤礦安全監測工作的必要性,以及監測系統選型的重要性,闡述了選型的 內容、測量的布置以及傳感器數目的確定方法,還提出了小型煤礦安全
    發表于 07-04 09:07 ?7次下載

    煤礦安全生產與監測設備

    煤礦安全生產與監測設備 摘要:主要介紹一種適用于中小型煤礦安全生產與監測設備的設計方案。該設備能夠實時采集、監測井下工作面的瓦斯濃度、一氧
    發表于 01-07 10:05 ?960次閱讀
    <b class='flag-5'>煤礦安全</b>生產與<b class='flag-5'>監測</b>設備

    煤礦安全生產監測管理系統的設計

    針對煤礦地理環境復雜、井下作業環境惡劣,難以有效地對煤礦井下開采環境進行有效地監測和管理,設計并實現了煤礦安全生產監測管理系統。該系統采用M
    發表于 12-05 14:44 ?50次下載
    <b class='flag-5'>煤礦安全</b>生產<b class='flag-5'>監測</b>管理系統的設計

    煤礦安全規程修改條文對照表

    本規程是《煤礦安全規程》修改條文對照表,序號 原《煤礦安全規程》條文 修改后的《煤礦安全規程》條文。
    發表于 04-02 09:29 ?15次下載

    避免煤礦安全事故的系統

    監測監控。 先抽后采就是在煤礦瓦斯突出的煤層開采之前,必須對煤層中的瓦斯進行抽采,消除瓦斯隱患后再開采,為安全生產創造條件,是從源頭上治理瓦斯災害的關鍵舉措。因此,對瓦斯抽采管道的濃度在線
    的頭像 發表于 10-14 10:09 ?2659次閱讀
    避免<b class='flag-5'>煤礦安全</b>事故的系統

    煤礦安全在線監測系統,數據采集網關的應用

    重點。 煤礦安全在線監測系統 煤礦安全在線監測系統,采用無線通信技術,實現現場環境、設備狀態的實時云監控,大數據的智能、可視化管理不放過任何可能存在的
    的頭像 發表于 11-18 16:34 ?2550次閱讀

    煤礦井下安全監控聯網解決方方案_井下安全監控設備

    煤礦安全監管聯網解決方案是基于聯網技術的一種安全生產解決方案,其背景主要源于以下幾個方面:1
    的頭像 發表于 07-19 17:39 ?959次閱讀
    <b class='flag-5'>煤礦</b>井下<b class='flag-5'>安全</b>監控<b class='flag-5'>物</b><b class='flag-5'>聯網</b>解決方方案_井下<b class='flag-5'>安全</b>監控設備

    燃爆!煤礦安全,人員越界識別的必要性!

    人員越界識別AI算法作為智慧礦山AI算法的一大創新,應用于煤礦安全管理中,通過實時監測預警,有效避免人員越界引發的事故,提升煤礦安全性和
    的頭像 發表于 10-30 15:03 ?391次閱讀

    煤礦安全生產預警系統

    智慧華盛恒輝煤礦安全生產預警系統是一種針對煤礦生產過程中的安全隱患進行監測預警的系統。 該系統
    的頭像 發表于 01-03 13:35 ?843次閱讀

    煤礦安全風險監測預警系統

    智慧華盛恒輝煤礦安全風險監測預警系統是一個集成了云計算、移動互聯網聯網和人工智能技術的綜合性
    的頭像 發表于 06-18 10:16 ?906次閱讀

    基于AI網關的智慧煤礦安全監測應用

    煤礦安全一直是礦業管理的重中之重。由于煤礦環境的惡劣與復雜性,針對煤礦安全監測和防范時常面臨著極大的挑戰。本篇就結合AI網關的功能和優勢,
    的頭像 發表于 09-24 17:47 ?421次閱讀
    基于AI網關的智慧<b class='flag-5'>煤礦安全</b><b class='flag-5'>監測</b>應用
    乐中百家乐的玩法技巧和规则| 波克城市棋牌下载| 百家乐官网投注翻倍方法| 百家乐游戏机子| 大发888娱乐城手机版| 狮威百家乐官网娱乐平台| 威尼斯人娱乐城返佣| 网上百家乐官网大赢家筹码| LV百家乐赢钱LV| 百家乐官网赌场娱乐城| 足球百家乐系统| 澳门百家乐官网的故事| 百家乐空调维修| 百家乐官网好多假网站| 百家乐博娱乐平台| 至尊百家乐官网2014| JJ百家乐的玩法技巧和规则| 皇冠百家乐官网代理网址| 大发888信誉| 如何打百家乐官网的玩法技巧和规则| 顶级赌场官方直营| 百家乐补牌规律| 拉萨市| 职业赌百家乐技巧| 百家乐官网声音不印网| 百家乐智能软件| 百家乐官网7杀6| 大发888怎么玩| 百家乐官网发牌| 徐汇区| 赌场百家乐是如何| 百家乐官网筹码盒| 二八杠怎么玩| 做生意什么花风水好| 百家乐官网千术道具| 红9百家乐的玩法技巧和规则| 百家乐官网和21点| 棋牌游戏中心| 澳门百家乐| 百家乐官网赌局| 任你博娱乐城|