基于51單片機的藍牙煙霧溫度報警系統設計
摘要
隨著現代社會的發展,智能家居技術逐漸應用于日常生活中。煙霧和溫度報警系統作為家庭安全系統的重要組成部分,能夠有效地保護家庭成員的生命安全。本文設計了一種基于51單片機的藍牙煙霧溫度報警系統。該系統通過煙霧傳感器和溫度傳感器檢測環境中的煙霧濃度和溫度變化,并通過藍牙模塊將報警信息傳送到手機或其他智能設備,從而及時報警并提供遠程監控的功能。系統設計包括硬件原理圖、電路設計、嵌入式軟件編程以及參考文獻。通過實驗,驗證了系統的有效性和穩定性。
1. 引言
隨著科技的進步,智能家居和物聯網技術得到了廣泛的應用,家庭安全問題越來越受到人們的關注。煙霧報警器和溫度報警器作為家庭安全的基礎設施,能夠在火災發生初期發出警報,及時發現火源,從而有效地避免災難的發生。傳統的報警器僅能在本地發出聲音或通過有線傳輸信號,而基于藍牙和單片機的無線報警系統,具有遠程監控、實時報警和智能化控制等優勢。
本設計的目標是開發一套基于51單片機的藍牙煙霧溫度報警系統,通過藍牙模塊與手機或計算機進行無線通信,實時監控環境中的煙霧濃度和溫度,并在危險情況下發送報警信息。本文將詳細介紹該系統的設計原理、硬件實現、嵌入式編程和系統測試結果。
2. 系統設計
2.1 系統功能要求
該系統的主要功能包括:
煙霧檢測:通過煙霧傳感器檢測空氣中煙霧的濃度,若濃度超過設定閾值,系統應觸發報警。
溫度檢測:溫度傳感器實時監控環境溫度,當溫度超過預設報警值時,系統應發出警報。
藍牙通訊:通過藍牙模塊,將檢測到的煙霧濃度和溫度數據傳送至手機或其他智能設備,并在危險情況下發出報警通知。
報警功能:當系統檢測到煙霧或溫度異常時,通過蜂鳴器發出聲音警報,同時通過藍牙將報警信息發送給遠程設備。
2.2 系統硬件設計
本系統的硬件主要包括以下模塊:
51單片機:作為控制核心,負責讀取傳感器數據、處理信號并通過藍牙模塊與外部設備通信。
煙霧傳感器:如MQ-2氣體傳感器,用于檢測環境中的煙霧濃度。
溫度傳感器:如DS18B20溫度傳感器,用于檢測環境溫度。
藍牙模塊:如HC-05藍牙模塊,用于與智能手機或計算機通信,傳輸數據和報警信息。
蜂鳴器:當系統檢測到危險信號時,蜂鳴器發出聲音警報。
電源模塊:為系統提供穩定的電力支持。
2.2.1 51單片機模塊
本系統采用STC89C52系列51單片機作為控制核心。該單片機具有較高的性能和穩定性,能夠完成對傳感器數據的采集與處理,同時通過串口與藍牙模塊通信,傳送報警信號。STC89C52具有8位的處理能力,32KB的Flash存儲器和1KB的RAM,足以支持本系統的實時監控任務。
2.2.2 煙霧傳感器模塊
MQ-2氣體傳感器是一種常用的煙霧和可燃氣體傳感器,具有較高的靈敏度,能夠檢測到空氣中CO、酒精、煙霧等多種氣體。該傳感器能夠通過模擬量輸出信號,經過ADC轉換后,由單片機進行數字信號處理。
2.2.3 溫度傳感器模塊
DS18B20是一款常見的數字溫度傳感器,具有單總線接口,能夠方便地與單片機進行通信。其測量范圍為-55°C到+125°C,精度為±0.5°C。DS18B20采用單總線通信協議,可以通過1-Wire總線與51單片機連接,簡化了系統的硬件設計。
2.2.4 藍牙模塊
HC-05藍牙模塊是一種藍牙串口通信模塊,能夠與智能手機、平板電腦等設備進行數據交換。它支持主從模式,方便實現與51單片機的無線通信。HC-05模塊通過串口與單片機通信,可以實時傳送傳感器數據及報警信息。
2.3 系統工作原理
本系統的工作原理可以分為以下幾個步驟:
初始化階段:當系統通電后,51單片機通過初始化配置煙霧傳感器和溫度傳感器。DS18B20溫度傳感器通過1-Wire協議讀取當前環境溫度,MQ-2氣體傳感器通過ADC轉換獲取煙霧濃度。
數據采集:系統通過不斷讀取傳感器的數據,對環境中的煙霧濃度和溫度進行實時監測。
數據處理:51單片機根據預設的閾值,對采集到的數據進行處理。如果煙霧濃度或溫度超過預定報警閾值,系統觸發報警機制。
報警階段:當系統檢測到異常時,蜂鳴器發出聲音警報。同時,51單片機通過串口將報警信息發送給藍牙模塊,藍牙模塊通過無線通信將報警信息傳送至手機等終端設備。
遠程監控:用戶通過手機APP接收到報警信息,能夠實時監控當前環境的煙霧濃度和溫度。
2.4 系統電路原理圖
以下是本系統的主要電路原理圖:
煙霧傳感器連接:MQ-2傳感器的模擬輸出端連接至51單片機的ADC輸入端。通過ADC轉換后,單片機獲取煙霧濃度的數值。
溫度傳感器連接:DS18B20的單總線接口連接到51單片機的IO端口。通過1-Wire協議,單片機定期讀取溫度數據。
藍牙模塊連接:HC-05藍牙模塊通過串口與51單片機進行通信,TX和RX分別連接到單片機的串口引腳。
蜂鳴器連接:蜂鳴器通過數字IO口控制,當煙霧或溫度異常時,輸出高電平驅動蜂鳴器發出聲音。
3. 嵌入式軟件設計
3.1 軟件框架
本系統的軟件設計基于C語言,主要包括以下模塊:
硬件初始化模塊:配置單片機的I/O口,初始化ADC、串口等硬件接口。
傳感器數據采集模塊:實現煙霧傳感器和溫度傳感器的數據讀取,進行ADC轉換和溫度采集。
數據處理模塊:對采集到的煙霧濃度和溫度數據進行處理,判斷是否超過設定的報警閾值。
報警模塊:當煙霧濃度或溫度異常時,觸發報警,啟動蜂鳴器并通過藍牙發送報警信息。
藍牙通信模塊:通過串口與HC-05模塊通信,發送數據到手機或其他終端設備。
3.2 代碼實現
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
// 定義蜂鳴器連接口
sbit buzzer = P2^0;
// 定義串口初始化函數
void UART_Init()
{
TMOD = 0x20; // 定時器1,工作模式2
TH1 = 0xFD; // 設置波特率為9600
TL1 = 0xFD;
TR1 = 1; // 啟動定時器
SCON = 0x50; // 串口工作在模式1
}
// 發送數據到藍牙
void UART_Send(uchar data)
{
SBUF = data; // 將數據發送到串口
while(TI == 0); // 等待發送完成
TI = 0;
}
// 溫度傳感器讀取函數
float Read_Temperature()
{
// DS18B
// 溫度讀取函數
float Read_Temperature()
{
// DS18B20的溫度采集流程
// 這里只是偽代碼實現,具體需要根據DS18B20協議編寫
float temperature = 0.0;
// 模擬讀取溫度值
temperature = 25.5; // 示例值
return temperature;
}
// 煙霧傳感器讀取函數
uint Read_Smoke()
{
// 模擬讀取MQ-2的煙霧濃度值
uint smoke_value = 0;
// 模擬ADC轉換
smoke_value = 300; // 示例值
return smoke_value;
}
// 報警處理函數
void Alarm_Trigger()
{
buzzer = 1; // 打開蜂鳴器
UART_Send('A'); // 發送報警信息,標識"A"代表警報
}
// 主函數
void main()
{
float temperature;
uint smoke_level;
UART_Init(); // 初始化串口
buzzer = 0; // 初始化蜂鳴器為關閉狀態
while (1)
{
temperature = Read_Temperature(); // 讀取溫度值
smoke_level = Read_Smoke(); // 讀取煙霧濃度
if (temperature > 50.0 || smoke_level > 500)
{
// 如果溫度或煙霧濃度超標,觸發報警
Alarm_Trigger();
}
else
{
// 環境安全,關閉報警
buzzer = 0;
}
// 模擬數據發送,監控當前狀態
UART_Send((uchar)temperature);
UART_Send((uchar)smoke_level);
// 延時一段時間,避免頻繁觸發報警
Delay_ms(500);
}
}
// 延時函數
void Delay_ms(uint time)
{
uint i, j;
for (i = time; i > 0; i--)
for (j = 110; j > 0; j--);
}