基于STM32的殘疾人智能家居安全保障系統_第1頁
基于STM32的殘疾人智能家居安全保障系統_第2頁
基于STM32的殘疾人智能家居安全保障系統_第3頁
基于STM32的殘疾人智能家居安全保障系統_第4頁
基于STM32的殘疾人智能家居安全保障系統_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章總體設計2.1功能說明基于STM32的殘疾人智能家居安全保障系統旨在為殘疾人提供一個安全、便捷、舒適的家居環境。該系統通過傳感器采集環境數據,結合STM32單片機的處理能力,實現對家居設備的智能控制和異常情況的實時監測與報警。主要使用以下器件并實現以下功能:(1)溫濕度傳感器主要用于監測室內的溫濕度,當溫度過高或過低、濕度過大或過小時,自動調節空調、加濕器的運行;(2)光照傳感器主要用于監測室內的光照強度,根據室內光照強度自動調節窗簾和燈光的開關;(3)煙霧傳感器主要用于監測室內的煙霧,一旦檢測到異常,立即發出警報,并向殘疾人的緊急聯系人發送報警信息;(4)心率血氧傳感器主要用于監測殘疾人的心率和血氧,根據系統設定閾值判斷殘疾人健康狀況,若監測到異常,立即發出警報;(5)跌倒檢測傳感器主要用于檢測殘疾人是否跌倒,一旦檢測到摔倒,立即觸發報警系統,并通知相關人員;(6)配有語音識別模塊實現語音指令的識別和處理,讓殘疾人可以通過語音控制智能家居設備;(7)使用0.96寸的OLED顯示屏,用于顯示系統的溫濕度、光照強度、煙霧濃度、心率、血氧和殘疾人定時吃藥時間,方便殘疾人查看;(8)配有GSM模塊用于發送短信,實現緊急呼救和報警功能;(9)配有藍牙模塊實現系統與手機APP之間的無線通信,方便遠程控制和數據傳輸。2.2總體框圖通過對于系統的功能分析,將系統分為四個模塊,主要包括傳感器模塊、執行模塊、交互模塊和通信模塊,各模塊之間協同工作,完成一系列復雜而有序的過程。傳感器模塊主要包括溫濕度傳感模塊、光照傳感模塊、煙霧傳感模塊、心率血氧傳感器和跌倒檢測傳感模塊,分別實現對室內的溫濕度、光照、煙霧、心率血氧進行實時監測,以及檢測殘疾人是否跌倒;通信模塊主要包括藍牙模塊和GSM模塊,藍牙模塊使用藍牙連接手機APP,進行遠程控制燈、窗簾、空調的開關,GSM模塊在緊急情況下,給緊急聯系人發送短信進行報警;執行模塊主要包括繼電器模塊和電機驅動模塊,分別用于控制空調和窗簾的開關;交互模塊主要包括顯示模塊和語音識別模塊,顯示模塊實時展示溫濕度、光照強度、煙霧濃度、心率、血氧和殘疾人定時吃藥時間,語音識別模塊通過語音指令控制燈、窗簾、空調的開關。系統總體模塊框圖如圖2-1所示。圖2-1總體模塊框圖2.3可行性分析2.3.1技術可行性分析硬件層面,本系統使用STM32單片機,該單片機性能強大、外設豐富,擁有多種型號可適配不同功能需求,且開發工具齊全、資料豐富,開發者可便捷獲取資源,利于系統開發與優化。系統涵蓋環境、安全、健康監測等多種類型的傳感器,技術成熟、性能可靠,能精準采集數據,同時這些傳感器可通過UART、I2C、SPI等標準接口與STM32輕松連接,實現高效數據傳輸。系統采用繼電器、舵機等常見執行器,可滿足家電控制、設備驅動等多種功能需求,搭配成熟的驅動電路,STM32能夠精準控制執行器動作,實現智能化操作。此外,還支持藍牙無線通信技術,既滿足近距離控制,也支持遠程監控與設備組網,確保系統靈活交互。軟件開發方面,本系統采用C語言編程,并借助Keil編譯器實現代碼的高效編譯。Keil編譯器憑借簡潔友好的編輯環境,為開發者帶來高效便捷的編程體驗。開發者可以方便地編寫和修改C語言代碼,快速定位到需要修改的部分。Keil編譯器對C語言代碼的編譯優化能力強,能夠生成高效、精簡的機器碼,充分利用STM32單片機的資源。它可以對代碼進行語法檢查和錯誤提示,幫助開發者及時發現并解決代碼中的問題。綜上所述,從硬件選型到軟件實現,基于STM32的殘疾人智能家居安全保障系統在技術上具備成熟方案與落地能力,能夠滿足功能需求并適應未來迭代升級。在技術與理論的雙重保障下,本系統的技術方案是合理且高度可行的。2.3.2經濟可行性分析STM32單片機及外圍傳感器、執行器價格親民,批量采購成本更低。例如,基礎款STM32F103芯片單價僅幾元,DHT11溫濕度傳感器成本不足1元,整體硬件成本較低。成熟的開發工具與開源資源縮短了軟件研發時間,降低人力成本。同時,模塊化設計便于后期功能擴展,減少二次開發費用。隨著老齡化加劇與對殘障群體關注度提升,智能家居市場需求旺盛。該系統作為細分領域產品,可通過差異化競爭獲取利潤,具備良好的商業前景。從經濟可行性來看,該方案確實可行。2.4本章小結本章從系統的功能說明出發,明確說明系統使用的器件及功能。根據功能分析,構建出層次清晰、模塊化的總體框圖,明確說明了各個功能模塊,涵蓋環境監測、家電控制、安全預警、健康監測等關鍵功能。各功能模塊相互協作,通過傳感器實時獲取環境和人體信息,經過STM32處理后,依據預設規則實現家電自動化控制和安全報警。最后,從多個角度對系統進行可行性分析。第3章系統硬件設計第3章系統硬件設計3.1單片機整體說明本系統將STM32F103單片機作為核心控制模塊,負責整體系統的邏輯運算與指令調度。這款STM32單片機具有卓越的性能和低功耗特性,在實時監測環境、智能化控制及數據分析方面展現出其核心價值。作為智能管理的核心中樞,STM32負責精準調控各傳感器和執行器,其高效的數據處理能力和多樣化的外設接口確保了系統運行的流暢性和穩定性。通過實時收集和分析來自各類傳感器的數據,STM32能夠迅速識別環境異常,并觸發相應措施,如在火災預警場景中,通過煙霧濃度數據,STM32能快速分析判斷是否存在火災風險,及時觸發報警機制,以確保殘疾人能夠及時得到救助。此外,STM32的低功耗設計和豐富的外設兼容性,為系統長時間穩定運行和功能的進一步拓展提供了堅實基礎。因此,選擇STM32單片機作為殘疾人智能家居安全保障系統的主控單元,能夠提供出色的使用體驗,并推動系統智能化管理和高效運作的實現。3.2傳感器模塊3.2.1溫濕度傳感模塊溫濕度傳感模塊采用DHT11溫濕度傳感器,DHT11溫濕度傳感器憑借良好的長期穩定性,能夠在一定時間內保持較為準確的測量結果,不易受外界干擾而出現大幅度波動。該模塊主要實現對室內的溫濕度的監測,并根據預設條件自動調節空調和加濕器。STM32單片機通過DATA引腳與DHT11傳感器相連,用于傳輸采集的溫濕度數據。STM32單片機需初始化連接DHT11的GPIO口,先設為輸出模式發送起始信號,后切換為輸入模式接收傳感器響應和數據,STM32單片機將接收到的溫濕度數據與預設閾值比較,判斷是否超出適宜范圍,進而控制空調、加濕器工作。電路原理圖如圖3-1所示。圖3-1溫濕度傳感模塊電路原理圖3.2.2光照傳感模塊光照傳感模塊采用KY01光敏電阻,KY01光敏電阻對光照強度的變化非常敏感,能夠檢測到微小的光線變化,即使是微弱的光線變化也能引起其電阻值的明顯改變。該模塊主要實現對室內的光照強度的監測,并根據光照強度自動調節窗簾和燈光。光敏電阻主要基于內光電效應,當光敏電阻受到光照時,其內部的電子被激發,從而使電阻值發生變化。光照傳感模塊通常將光敏電阻與其他電路元件組合在一起,通過對光敏電阻兩端電壓的測量和處理,將光信號轉換為電信號,以便于單片機進行讀取和處理,從而實現對環境光照強度的監測功能。電路原理圖如圖3-2所示。圖3-2光照傳感模塊電路原理圖3.2.3煙霧傳感模塊煙霧傳感模塊采用MQ2煙霧傳感器,MQ2煙霧傳感器具有良好的靈敏度和快速的響應特性,能夠在較短時間內對煙霧濃度的變化做出反應。該模塊主要實現對室內的煙霧的監測,一旦存在火災隱患,立即觸發報警系統,并發送短信給緊急聯系人。調理信號將煙霧傳感器信號調理后的輸出端連接到STM32單片機的ADC引腳,準確采集煙霧濃度對應的電壓信號。把報警裝置驅動電路的控制端連接到STM32單片機GPIO引腳,對該GPIO引腳進行初始化,設置為輸出模式。當采集的煙霧濃度信號超閾值,單片機控制該引腳輸出相應電平驅動報警裝置。電路原理圖如圖3-3所示。圖3-3煙霧傳感模塊電路原理圖3.2.4心率血氧傳感模塊心率血氧傳感模塊采用MAX30102心率血氧傳感器,MAX30102心率血氧傳感器采用先進的光學設計和信號處理算法,能夠精確輸出心率和血氧飽和度數值。該模塊主要實現對殘疾人心率和血氧的監測,一旦存在異常,立即觸發報警系統。MAX30102通過發射660nm紅光和880nm紅外光,經血液反射后由光電二極管接收并轉為電信號,再經模擬前端放大、濾波和模數轉換,數字信號在芯片內處理后通過I2C接口輸出給主控芯片。電路原理圖如圖3-4所示。圖3-4心率血氧傳感模塊電路原理圖3.2.5跌倒檢測傳感模塊跌倒檢測傳感模塊采用MPU6050加速度傳感器,加速度計和陀螺儀都具有較高的測量精度,能夠準確地檢測到微小的運動變化和姿態調整。該模塊主要檢測殘疾人是否跌倒,一旦檢測到跌倒,立即觸發報警系統,并發送短信給緊急聯系人。將I2C接口與STM32單片機通信,將其SDA和SCL引腳分別連接到STM32單片機的I2C接口引腳。將MPU6050的中斷引腳(INT),將其連接到STM32單片機的一個GPIO引腳,用于在檢測到特定事件(運動狀態改變)時向單片機發送中斷信號。電路原理圖如圖3-5所示。圖3-5跌倒檢測傳感模塊電路原理圖3.3執行模塊3.3.1繼電器模塊繼電器模塊采用HK小型繼電器,HK小型繼電器體積小,但卻能實現對較大電流或高電壓電路的控制。該模塊主要用于控制空調,通過STM32單片機輸出的控制信號,控制繼電器的吸合和斷開,從而實現對設備的遠程控制。把STM32單片機的GPIO引腳作為連接點,與繼電器驅動電路的控制端相連。在單片機程序中,對該GPIO引腳進行初始化,設置為輸出模式。通過控制引腳電平高低,實現對繼電器的開關控制。電路原理圖如圖3-6所示。圖3-6繼電器模塊電路原理圖3.3.2電機驅動模塊電機驅動模塊采用SG90舵機,SG90舵機從接收到控制信號到輸出軸完成轉動的響應時間較短,一般在幾十毫秒到幾百毫秒之間,并且通過PWM信號精確控制輸出軸的轉動角度,能夠實現較為準確的位置控制。該模塊主要用于控制窗簾的開關。將STM32單片機的GPIO引腳作為連接端口,與電機驅動芯片的控制引腳建立連接。在單片機程序中,對這些GPIO引腳進行初始化配置,設置為輸出模式,通過輸出不同電平信號來控制電機的運行狀態。電路原理圖如圖3-7所示。圖3-7電機驅動模塊電路原理圖3.4交互模塊3.4.1顯示模塊顯示模塊采用0.96寸OLED顯示屏,OLED顯示屏刷新率高,適合動態畫面展示,啟動時間短,幾乎無延遲。顯示屏上會顯示溫濕度、光照強度、煙霧濃度、心率、血氧和殘疾人定時吃藥時間,方便了殘疾人查看。OLED顯示屏常見工作電壓為3.3V,將其VCC引腳連接到系統的3.3V電源,GND引腳接地。OLED顯示屏采用I2C接口,將其SDA和SCL引腳分別連接到STM32單片機的I2C接口引腳。電路原理圖如圖3-8所示。圖3-8顯示模塊電路原理圖3.4.2語音識別模塊語音識別模塊采用SU03T型號,SU03T語音識別模塊不依賴云端服務,直接在設備上進行語音識別和合成,在響應速度、穩定性和安全性方面表現出色,該模塊主要實現語音指令的識別和處理,使殘疾人可以通過語音指令控制家電設備,使殘疾人有一個便捷的居住環境。從系統的電源模塊引出相應的電源線連接到模塊的VCC引腳GND引腳接地,為其提供穩定的電源。語音識別模塊具備串口通信能力,需把該模塊的TXD引腳與STM32單片機的RXD引腳相連,模塊的RXD引腳與單片機的TXD引腳相連。并且,必須保證兩者的串口通信參數相同。電路原理圖如圖3-9所示。圖3-9語音識別模塊電路原理圖3.5通信模塊3.5.1GSM模塊GSM模塊采用的是ML307R型號,ML307R短信模塊功耗大幅降低,聯網時瞬時只需500mA,待機和休眠狀態下僅為9uA和0.9mA。該模塊主要用于發送短信給緊急聯系人,實現緊急求助。該模塊可以連接移動通信網絡,發送短信給預設號碼及時告知緊急聯系人以便他們能夠迅速采取行動。選擇STM32單片機的一個空閑串口,將其TXD和RXD引腳分別與短信模塊的RXD和TXD引腳相連。在單片機程序中,對串口進行初始化配置,設置波特率、數據格式等參數,實現與短信模塊的數據通信。通過串口,單片機向短信模塊發送AT指令,控制短信的發送、接收等操作;同時接收短信模塊返回的狀態信息和數據。電路原理圖如圖3-10所示。圖3-10GSM模塊電路原理圖3.5.2藍牙模塊藍牙模塊采用HC05型號,HC05藍牙模塊可以與多種具有藍牙功能的設備進行連接,而且能夠保持穩定的藍牙連接,數據傳輸的誤碼率還低。該模塊主要實現系統與APP之間的無線通信,方便了殘疾人或其家屬遠程控制和數據傳輸。選擇STM32單片機的一個空閑串口,將其TXD和RXD引腳分別與藍牙模塊的RXD和TXD引腳相連。在單片機程序里,要對串口進行初始化配置,設置好波特率、數據格式等參數,以便實現與藍牙模塊的數據通信。電路原理圖如圖3-11所示。圖3-11藍牙模塊電路原理圖3.6本章小結本章按照模塊化架構設計,將系統分為四個模塊進行詳細說明,包含傳感器模塊、執行模塊、交互模塊和通信模塊。傳感器模塊主要實現環境監測和安全檢測,執行模塊主要實現對家居的控制,交互模塊主要實現顯示數據和語音控制,通信模塊主要實現無線通信和緊急求助。各模塊協同運作,通過精密的信號傳遞與功能聯動,實現家居環境實時監測、異常預警和智能控制一體化。第4章系統軟件設計第4章系統軟件設計4.1主程序設計系統軟件選用C語言作為編程語言,在設計層面遵循模塊化的設計思想加以實現。軟件架構覆蓋了多個核心模塊,包括傳感器模塊程序設計、執行模塊程序設計、交互模塊程序設計和通信模塊程序設計,主程序流程圖如圖4-1所示。系統啟動,對STM32單片機及連接的各模塊進行初始化設置,傳感器模塊開始采集數據,STM32單片機對接收的數據進行處理,通過將處理好的數據與預先設定的閾值相比較,來確定是否存在異常情況。若無異常,返回數據采集步驟,繼續實時監測;若有異常,將控制指令發送出去,執行器模塊接收到指令后執行相應動作,顯示模塊顯示當前系統狀態和異常信息,并回到數據采集步驟,循環工作。圖4-1主程序流程圖4.2傳感器模塊程序設計4.2.1溫濕度傳感模塊程序設計如下圖4-2所示為溫濕度傳感模塊程序流程圖,STM32單片機先向溫濕度傳感器發送采集命令,判斷傳感器是否響應,若不響應,回到上一步;若響應,傳感器開始采集環境中的溫濕度數據。接著傳感器內部的敏感元件感知環境參數,將溫濕度信息轉換為電信號。然后對采集到的微弱電信號進行放大處理,提高信號的強度,并進行濾波操作,去除信號中的噪聲干擾,保證數據的準確性。最后,將模擬電信號通過A/D轉換器轉換成數字信號,為單片機的處理工作做好準備。圖4-2溫濕度傳感模塊流程圖當dht11_temp大于max_value[0]時,說明當前環境溫度過高,此時調用

relay.set()

函數將空調打開。當

dht11_temp

小于等于

max_value[0]

時,說明當前環境溫度在正常范圍內,調用

relay.set()

函數將空調關閉,0

通常表示關閉狀態。當dht11_humi

小于max_value[1]

時,說明當前環境濕度太低,此時調用cold_ptc.set()

函數將加濕器打開。當

dht11_humi

大于等于

max_value[1]

時,說明當前環境濕度在正常范圍內,調用

cold_ptc.set()

函數將加濕器關閉,0

表示關閉狀態。執行代碼如下:If(!mode_flag){ if(dht11_temp>max_value[0]){ relay.set(&relay,1); }elserelay.set(&relay,0); if(dht11_humi<max_value[1]){ cold_ptc.set(&cold_ptc,1); }elsecold_ptc.set(&cold_ptc,0);4.2.2光照傳感模塊程序設計如下圖4-3所示為光照傳感模塊程序流程圖,STM32單片機先向光照傳感器發送采集命令,判斷傳感器是否響應,若不響應,回到上一步;若響應,傳感器開始采集環境中的光照強度數據。接著傳感器內部的光敏元件感知環境參數,將光照強度信息轉換為電信號。然后對采集到的微弱電信號進行放大處理,提高信號的強度,并進行濾波操作,去除信號中的噪聲干擾,保證數據的準確性。最后,將模擬電信號通過A/D轉換器轉換成數字信號,為單片機的處理工作做好準備。圖4-3光照傳感模塊流程圖在主循環中,依據光照強度值

light_lv

和預設的閾值max_value[3]

進行比較,從而控制舵機和LED燈的狀態。若光照強度低于閾值,將舵機角度設為0,并打開LED燈;若光照強度高于閾值,將舵機角度設為

servo_angle,并關閉LED燈。執行代碼如下:if(light_lv<max_value[3]){servo.set(&servo,0); led.set(&led,1);}else{ servo.set(&servo,servo_angle); led.set(&led,0);}4.2.3煙霧傳感模塊程序設計如下圖4-4所示為煙霧傳感模塊程序流程圖,STM32單片機先向煙霧傳感器發送采集命令,判斷傳感器是否響應,若不響應,回到上一步;若響應,傳感器開始采集環境中的煙霧濃度數據。接著傳感器內部的氣敏元件感知環境參數,將煙霧濃度信息轉換為電信號。然后對采集到的微弱電信號進行放大處理,提高信號的強度,并進行濾波操作,去除信號中的噪聲干擾,保證數據的準確性。最后,將模擬電信號通過A/D轉換器轉換成數字信號,為單片機的處理工作做好準備。圖4-4煙霧傳感模塊流程圖當

mode_flag

為0時,如果煙霧濃度

fsmoke

超過預設的閾值

max_value[2],則計數器

ct

加1。當

ct

達到2時,將

sos_flag

置為2,表示發生煙霧警報,并觸發相應的短信發送等操作。如果煙霧濃度未超過閾值,則將計數器

ct

清零。執行代碼如下:if(!mode_flag){if(fsmoke>max_value[2]){ct++;if(ct==2){sos_flag=2;}}elsect=0;}4.2.4心率血氧傳感模塊程序設計如下圖4-5所示為心率血氧傳感模塊程序流程圖,STM32單片機先向心率血氧傳感器發送采集命令,判斷傳感器是否響應,若不響應,回到上一步;若響應,傳感器開始采集心率血氧光信號,將光信號轉換為電信號。然后對采集到的微弱電信號進行放大處理,提高信號的強度,并進行濾波操作,去除信號中的噪聲干擾,保證數據的準確性。最后,將模擬電信號通過A/D轉換器轉換成數字信號,為單片機的處理工作做好準備。圖4-5心率血氧傳感模塊流程圖當

mode_flag

0

時,如果當前時間與預設的時間匹配,或者心率超過

max_value[4],或者血氧低于

max_value[5],或者檢測到摔倒(fall_flag

1),則會控制蜂鳴器發聲(beep.set(&beep,0)),否則關閉蜂鳴器(beep.set(&beep,1))。執行代碼如下:if(!mode_flag){if((time_h==ds1302_time.hour&&time_m==ds1302_time.min&&time_s==ds1302_time.sec)||heartrate>max_value[4]||o2<max_value[5]||fall_flag){beep.set(&beep,0);//蜂鳴器開關控制}elsebeep.set(&beep,1);//蜂鳴器開關控制4.2.5跌倒檢測傳感模塊程序設計如下圖4-6所示為跌倒檢測傳感模塊程序流程圖,STM32單片機先向跌倒檢測傳感器發送采集命令,判斷傳感器是否響應,若不響應,回到上一步;若響應,傳感器開始采集加速度數據,將加速度信息轉換為電信號。然后對采集到的微弱電信號進行放大處理,提高信號的強度,并進行濾波操作,去除信號中的噪聲干擾,保證數據的準確性。最后,將模擬電信號通過A/D轉換器轉換成數字信號,為單片機的處理工作做好準備。圖4-6跌倒檢測傳感模塊流程圖若

angle[0](X軸角度)或

angle[1](Y軸角度)的絕對值大于50,就判定為可能發生了跌倒,將

fall_flag

置為

1,同時

cnt

計數器加1。當

cnt

達到3時,意味著連續三次檢測到可能跌倒的狀態,將

sos_flag

置為

1,可能觸發后續的報警或短信通知操作。若X軸和Y軸的傾斜角度都未超過50,就把

cnt

清零,fall_flag

置為

0,表示處于正常狀態。執行代碼如下:if(fabs(angle[0])>50||fabs(angle[1])>50){ //x軸和y軸傾斜角度過大判斷為跌倒fall_flag=1;cnt++;if(cnt==3)sos_flag=1;}else{cnt=0;fall_flag=0;}4.3執行模塊程序設計4.3.1繼電器模塊程序設計如下圖4-7所示為繼電器模塊程序流程圖,系統啟動后,初始化STM32單片機和繼電器,等待接受信號。若未接收到信號,回到上一步;若接收到信號,分為自動模式和手動模式。當手動模式時,直接打開或關閉空調;當自動模式時,判斷溫度是否大于閾值。若溫度大于閾值,打開空調;若溫度小于閾值,關閉空調。圖4-7繼電器模塊流程圖通過比較

dht11_temp(從DHT11傳感器獲取的溫度值)與

max_value[0](設定的溫度閾值),來決定是否打開繼電器。如果溫度超過閾值(dht11_temp>max_value[0]),則調用

relay.set(&relay,1);

將繼電器設置為打開狀態;否則調用

relay.set(&relay,0);

將繼電器設置為關閉狀態。在手動模式下(mode_flag

1),根據

kong_flag

的值來控制繼電器。如果

kong_flag

為真(kong_flag

1),則打開繼電器;否則關閉繼電器。執行代碼如下:if(!mode_flag){//自動模式if(dht11_temp>max_value[0]){relay.set(&relay,1);//繼電器開關控制}elserelay.set(&relay,0);}else{//手動模式if(kong_flag){relay.set(&relay,1);}elserelay.set(&relay,0);}4.3.2電機驅動模塊程序設計如下圖4-8所示為電機驅動模塊程序流程圖,系統啟動后,初始化STM32單片機和舵機,等待接受信號。若未接收到信號,回到上一步;若接收到信號,分為自動模式和手動模式。當手動模式時,直接打開或關閉窗簾;當自動模式時,判斷光照強度是否大于閾值。若光照強度大于閾值,打開窗簾,關閉燈;若光照強度小于閾值,關閉窗簾,打開燈。圖4-8電機驅動模塊流程圖在自動模式下(mode_flag

0),通過比較環境光線強度(light_lv)與設定的閾值(max_value[3])來決定舵機的角度。如果光照強度低于閾值,調用

servo.set(&servo,0);

將舵機角度設置為

0

度,并打開LED(led.set(&led,1););否則,將舵機設置為之前保存的目標角度

servo_angle,并關閉LED。在手動模式下(mode_flag

1),根據

server_flag

的值來控制舵機。如果

server_flag

為真(server_flag

1),將舵機設置為目標角度

servo_angle;否則,將舵機設置為

0

度。執行代碼如下:if(!mode_flag){//自動模式if(light_lv<max_value[3]){servo.set(&servo,0);//設置舵機角度為0;led.set(&led,1);}else{servo.set(&servo,servo_angle);//設置舵機角度為servo_angle;led.set(&led,0);}}else{//手動模式if(server_flag){servo.set(&servo,servo_angle);}elseservo.set(&servo,0);}4.4交互模塊程序設計4.4.1顯示模塊程序設計如下圖4-9所示為顯示模塊程序流程圖,系統啟動后,初始化STM32單片機和傳感器,收集溫濕度、光照、煙霧、心率血氧傳感器數據,并進行數據處理,在顯示屏上顯示數據。圖4-9顯示模塊流程圖在OLED_Display_6x8_8x16函數調用中,用于將各種信息顯示在OLED屏上。通過函數參數傳遞要顯示的文本內容,可以將粉塵數據、垃圾量狀態、異味狀態信息顯示在OLED屏上。執行代碼如下:if(page_flag!=last_flag){last_flag=page_flag;oled.clear(&oled);}if(page_flag==0){oled.show(&oled,0,0,16,"溫度:%d濕度:%d",dht11_temp,dht11_humi);//顯示溫度和濕度oled.show(&oled,0,2,16,"煙霧:%.f",fsmoke);oled.show(&oled,0,4,16,"1光強:%.f血氧:%d",light_lv,o2);if(!mode_flag)oled.show(&oled,80,6,16,"自動");elseoled.show(&oled,80,6,16,"遠程");oled.show(&oled,0,6,16,"心率:%d",heartrate);}elseif(page_flag==1){oled.show(&oled,0,0,16,"吃藥時間設置",dht11_temp,dht11_humi);oled.show(&oled,0,2,16,"%d:%d:%d",ds1302_time.hour,ds1302_time.min,ds1302_time.sec);oled.show(&oled,0,4,16,"%d:%d:%d",time_h,time_m,time_s);}elseif(page_flag==2){oled.show(&oled,0,0,16,"溫度:%d濕度:%d",max_value[0],max_value[1]);oled.show(&oled,0,2,16,"煙霧:%d",max_value[2]);oled.show(&oled,0,4,16,"光強:%d",max_value[3]);oled.show(&oled,0,6,16,"心率:%d血氧:%d",max_value[4],max_value[5]);} 4.4.2語音識別模塊程序設計如下圖4-10所示為語音識別模塊程序流程圖,系統啟動后,初始化STM32單片機和語音識別模塊,輸入語音,采集和處理語音。把采集到的語音轉換為數字信號并提取特征。進行語音識別,判斷語音內容并生成對應的指令編碼,最后接收指令并執行。圖4-10語音識別模塊流程圖檢查接收到的數據長度

data_len

是否大于0,如果是,則將接收到的第一個字節數據賦值給

su03t_cmd,即獲取語音識別的指令代碼。然后根據

mode_flag

的值,對

su03t_cmd

的值進行判斷:執行代碼如下: //接收語音指令進行判斷處理voidsu03t_interrupt(void*param,uint8_t*data,uint16_tdata_len){if(data_len>0)su03t_cmd=data[0]; if(mode_flag){ if(su03t_cmd==0x01) server_flag=1; elseif(su03t_cmd==0x02) server_flag=0; elseif(su03t_cmd==0x05) kong_flag=1; elseif(su03t_cmd==0x06) kong_flag=0; elseif(su03t_cmd==0x07) led_flag=1; elseif(su03t_cmd==0x08) led_flag=0;} }4.5通信模塊4.5.1GSM模塊程序設計如下圖4-11所示為GSM模塊程序流程圖,系統啟動后,初始化STM32單片機和GSM模塊,判斷是否滿足短信發送條件。若未滿足條件,重新初始化;若滿足條件,發送短信,手機接收短信。圖4-11GSM模塊流程圖當

sos_flag

等于1

時,表示檢測到老人跌倒,觸發跌倒報警機制,并發送短信。當

sos_flag

等于

2

時,表示檢測到火災,觸發火災報警機制,并發送短信。執行代碼如下://跌倒報警短信發送If(sos_flag==1){sos_flag=0;memset(text,0,sizeof(text));sprintf(text,"Oldmanfallsdown!!!");sim800.send_message(&sim800,sim800_num,text);}//火災報警短信發送elseif(sos_flag==2){sos_flag=0;memset(text,0,sizeof(text));sprintf(text,"warningfire!!!");sim800.send_message(&sim800,sim800_num,text);}4.5.2藍牙模塊程序設計如下圖4-12所示為藍牙模塊程序流程圖,系統啟動后,初始化STM32單片機和藍牙模塊,對附近藍牙設備進行搜索,連接上目標藍牙設備之后,發送對應數據,最后斷開藍牙連接。圖4-12藍牙模塊流程圖在主循環中,每隔一定的時間(sys_cnt%100==0),程序會把采集到的環境數據(如溫度、濕度、煙霧濃度等)打包成

"AT+DATA"

格式的字符串,存儲在

bt_buf

數組中,然后通過

my_uart.send

函數將數據經藍牙模塊發送出去。執行代碼如下:memset(bt_buf,0,sizeof(bt_buf));sprintf(bt_buf,"AT+DATA=%d,%d,%.f,%.f,%d,%d,\r\n",dht11_temp,dht11_humi,fsmoke,light_lv,heartrate,o2);my_uart.send(MY_UART3,(uint8_t*)bt_buf,strlen(bt_buf));//藍牙模塊發送數據4.6本章小結本章從系統的兩個方面入手來敘述,先敘述系統的主程序流程,再采用模塊化設計思想,將不同功能劃分為獨立模塊進行敘述,主要包括傳感器模塊程序設計、通信模塊程序設計、執行模塊程序設計、交互模塊程序設計、通信模塊程序設計。各模塊通過統一的接口規范與主程序進行交互,降低模塊間耦合度,提高系統的可維護性和擴展性。第5章系統測試第5章系統測試5.1測試方案殘疾人智能家居安全保障系統在實現過程中為了便于后臺維護管理,采用了模塊化開發的設計思想。因此對于本系統的系統測試,首先要對傳感器模塊,執行模塊,交互模塊、通信模塊等模塊進行測試,最后將這些模塊集成進行殘疾人智能家居安全保障系統綜合性能的全面檢驗,以確保各模塊間協同運作無礙。通過模塊化測試策略,旨在確保系統在模擬的真實使用場景下,各模塊間能夠協同作業,無礙運作。5.2模塊測試 5.2.1傳感器模塊測試(1)溫濕度傳感模塊測試:使用空調和加濕器改變室內溫濕度,檢查系統的溫濕度傳感器能否實時、準確地采集溫濕度數據,并在顯示屏上正確顯示。測試系統在溫濕度超出適宜范圍時自動調節空調、加濕器等設備的功能。如圖5-1所示,溫濕度成功顯示在顯示屏上,溫度為28,濕度為47,符合預期結果。圖5-1溫濕度傳感模塊運行結果圖如圖5-2所示,當溫濕度超出適宜范圍時,自動調節空調和加濕器,空調打開(燈亮),加濕器開始噴霧,符合預期結果。圖5-2溫濕度傳感模塊運行結果圖(2)光照傳感模塊測試:使用燈光通過改變室內光照強度來觀察光照傳感器能否在顯示屏上準確顯示,并能根據閾值能自動調節燈、窗簾的開關。如圖5-3所示,光照強度成功顯示在顯示屏上,光照強度為100,符合預期結果。圖5-3光照傳感模塊運行結果圖如圖5-4所示,當光照強度超出適宜范圍時,自動調節燈和窗簾,窗簾打開(舵機旋轉90度),燈關閉,符合預期結果。圖5-4光照傳感模塊運行結果圖(3)煙霧傳感模塊測試:使用打火機增加煙霧濃度,觀察煙霧濃度能否準確顯示在顯示屏上,觀察系統是否能在煙霧濃度達到預設閾值時及時發出警報,檢查手機APP是否能收到準確的火災報警信息,并且發送短信給緊急聯系人。如圖5-5所示,煙霧濃度成功顯示在顯示屏上,煙霧濃度為4,符合預期結果。圖5-5煙霧傳感模塊運行結果圖如圖5-6所示,當煙霧濃度超過閾值時,及時發出警報并發送短信給緊急聯系人,符合預期結果。圖5-6煙霧傳感模塊運行結果圖(4)心率血氧傳感模塊測試:不斷調手與心率血氧傳感器的距離,改變心率血氧,看顯示屏上顯示的是否準確。如圖5-7所示,心率血氧成功顯示在顯示屏上,心率為97,血氧為96,符合預期結果。圖5-7心率血氧傳感模塊運行結果圖(5)跌倒檢測傳感模塊測試:將系統豎起來模擬殘疾人跌倒動作,觀察系統的加速度傳感器是否能準確檢測到跌倒事件,及時發出警報,并發送短信通知緊急聯系人。如圖5-8所示,加速度傳感器成檢測到跌倒事件,及時發出警報,并發送短信給緊急聯系人,符合預期結果。圖5-8跌倒檢測傳感模塊運行結果圖5.2.2執行模塊測試(1)繼電器模塊測試:使用空調改變室內溫度,當溫度超過閾值時,觀察空調能否成功打開。如圖5-9所示,空調成功打開(紅燈亮),符合預期結果。圖5-9繼電器模塊運行結果圖(2)電機驅動模塊測試:使用燈光改變室內光照強度,當光照強度超過閾值時,觀察窗簾是否打開。如圖5-10所示,窗簾成功打開(舵機旋轉90度),符合預期結果。圖5-10電機驅動模塊運行結果圖5.2.3交互模塊測試(1)顯示模塊測試:通過多次更改環境溫濕度、光照強度、煙霧濃度、心率血氧,看顯示屏顯示的是否準確;通過不斷調手與心率血氧傳感器的距離,改變心率血氧,看顯示屏顯示的是否準確。如圖5-11所示,顯示屏準確顯示所有數據,溫度為28,濕度為47,光照強度為100,煙霧濃度為4,心率為97,血氧為96,符合預期結果。圖5-11顯示模塊運行結果圖(2)語音識別模塊測試:通過換人進行語音指令,讓系統打開窗簾,看語音識別模塊是否都能成功識別指令。如圖5-12所示,窗簾成功打開(舵機旋轉90度),符合預期結果。圖5-12語音識別模塊運行結果圖5.2.4通信模塊測試(1)GSM模塊測試:使用打火機增加煙霧濃度,當煙霧濃度超過閾值時,觀察能否成功發送短信。如圖5-13所示,手機成功接受到短信,符合預期結果。圖5-13GSM模塊運行結果圖(2)藍牙模塊測試:經過多次嘗試連接藍牙,觀察能否配對成功并連接穩定。如圖5-14所示,藍牙成功搜到,符合預期結果。圖5-14藍牙模塊運行結果圖如圖5-15所示,藍牙成功連接,打開APP,符合預期結果。圖5-15藍牙模塊運行結果圖5.3整體測試 (1)測試要點:測試殘疾人智能家居安全保障系統運行的穩定性,考察各組成模塊間的協同作業能力,確保設計規劃的所有功能得以全面實現;(2)測試方法:在系統完成初始配置后,深入監測各模塊執行任務的流暢度與精確性;(3)測試結果:OLED屏幕顯示的內容的動態實時更新,各模塊運作順暢,所有功能均符合預期結果。如圖5-16所示為實物整體運行情況,數據顯示正常,隨環境變化而改變,符合預期結果。圖5-16系統整體運行結果圖5.4本章小結在完成基于STM32的殘疾人智能家居安全保障系統開發后,為確保系統功能的可靠性、穩定性與實用性,對系統進行了全面且深入的測試。本章系統測試采用模塊化的測試方法,由局部到整體進行測試。先測試了各個模塊是否能正常運行,又測試了系統的整體運行情況,符合預期結果。結論結論本研究成功構建并部署了一款殘疾人智能家居安全保障系統。該系統對殘疾人智能家居安全保障問題進行了詳細研究,并借助物聯網技術,為這些問題提供了全面且創新的解決方案。核心控制單元選用STM32單片機,系統架構采用模塊化方式,分為傳感器模塊、執行模塊、交互模塊和通信模塊。傳感器模塊主要包括溫濕度傳感器、光照傳感器、煙霧傳感器、心率血氧傳感器、跌倒檢測傳感器等多種傳感器,用于實時監測室內的溫濕度、光照強度、煙霧濃度、心率血氧等關鍵參數和檢測殘疾人的日常活動狀態。執行器分為繼電器模塊和電機驅動模塊,用于控制空調和窗簾。交互模塊分為顯示模塊和語音識別模塊,用于顯示環境參數和語音控制。通信模塊分為GSM模塊和藍牙模塊,用于實現緊急求助和手機APP遠程控制等實用功能。系統結構精簡且運行穩定,通過多輪測試,已驗證其具備可靠性與適用性。它能夠有效滿足殘疾人智能家居安全保障需求,極大地提升了殘疾人的生活質量和安全保障。然而,本系統在某些特定場景下,如信號遮擋嚴重的室內環境或周邊存在強電磁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論