自上一章《UI界面設計》后,我們的開發工作已經完成了60%左右了。這一章呢,小編將介紹報警模塊的設計。之前所做的工作,只是完成對環境參量的測量和顯示。現在要對所獲取的參量進行分析,即根據實際情況設置相關的閾值,判斷是否異常,若出現異常,則采取報警,同時提醒工作人員,并且系統也會采取一定的措施來解決問題。
在本制作中,只是象征性的做一下報警設計。舉個例子,假如濕度出現異常(過高),超出上限,報警,同時需要啟動抽濕機,當環境濕度達到正常值后,停止抽濕機,報警隨之停止。這才是一個真正的反饋控制系統。但本制作,由于材料有限,只有一個電機,雖然能夠有一定效果,但功能還是受限,所以就省略了。
因此,在報警模塊,我們這樣設計:當溫濕度超過閾值范圍(過大或過小),則蜂鳴器報警,報警指示燈亮;當空氣質量超過上限時,蜂鳴器報警,報警指示燈亮,同時啟動直流電機(代替空氣凈化裝置);當測量距離超過安全距離時,蜂鳴器報警,報警指示燈亮。
1.資源介紹
無源蜂鳴器可以產生不同頻率的聲音,而有源蜂鳴器,內部有振蕩電路,產生的聲音頻率固定,而此處我們只是簡單的報警,所以采用有源蜂鳴器。
報警指示燈采用LED燈即可,這里無須介紹。
關于空氣凈化裝置,我們這里用電機代替。這里,我們需要采用電機驅動電路,采用L298N電機驅動模塊。下面簡要介紹一下該模塊。
L298N電機驅動模塊:在模塊的電源部分,有VMS(12v)、VCC(5v)、GND3個接口。電源正極接VMS,電源負極接GND,這樣就給電機驅動模塊上電了。MotorA和MotorB的四個接口,分別接電機的端口,所以該模塊可驅動兩個電機。ENA和ENB分別是使能端,IN1、IN2、IN3和IN4分別是控制電機的端口,可驅動電機正反轉。這里我們只驅動1個電機,使用ENA,IN1,IN2和MotorA。
2.軟件編程
(1)蜂鳴器報警
首先,配置GPIO口,將PA6設置成推挽輸出模式,這里不再給出代碼,大家應該都會的。
然后編寫蜂鳴器報警代碼。
void buzzer(void)
{
u8 i;
for(i=0; i<100; i++)
{
Beep_L;
delay_ms(1);
Beep_H;
delay_ms(1);
}
}
這里,只需將蜂鳴器端口以一定的頻率上下振蕩,蜂鳴器就能發出聲音,頻率高,聲音相對大一些。
(2)LED報警燈
將相關的LED報警燈配置成推挽輸出模式即可。
(3)電機驅動模塊
將電機的ENA、IN1、IN2端口設置成推挽輸出模式,初始化不再給出。
void motorRun(void)
{
if(flag)//電機啟動/停止標志位
{
ENA_H;//使能端有效,電機轉動
}
else
{
ENA_L;//使能端無效,電機停止
}
IN1_H;
IN2_L;
}
這里,電機的啟動和停止,只需控制驅動電機的使能端,讓它使能或者失能即可。電機兩個端口分別給高、低電平即能轉起來了。
(4)編寫報警處理函數
/*報警函數*/
void alarm(void)
{
//溫度異常報警
if(temperature>=temper_H||temperature<=temper_L)
{
LED0_ON();
temper_sign = 1;
}
else
{
LED0_OFF();
temper_sign = 0;
}
//濕度異常報警
if(humidity>=humid_H||humidity<=humid_L)
{
LED1_ON();
humid_sign = 1;
}
else
{
LED1_OFF();
humid_sign = 0;
}
//空氣質量異常報警
if(value>=air_upperlimit)
{
LED2_ON();
air_sign = 1;
flag = 1;
}
else
{
LED2_OFF();
air_sign = 0;
flag = 0;
}
//距離異常報警
if(distance/100>=length)
{
LED3_ON();
length_sign = 1;
}
else
{
LED3_OFF();
length_sign = 0;
}
if(temper_sign==0&&humid_sign==0&&air_sign==0&&length_sign==0)
{
cancel = 0;//正常情況,關閉取消報警
}
if(temper_sign|humid_sign|air_sign|length_sign)
{
if(!cancel)
{
buzzer();
}
}
motorRun();
}
這里,判斷溫濕度、空氣質量、測量距離是否正常,然后分情況處理,同時設置好相關的標志位,比如監控顯示標志位,電機啟動/停止標志位。還有,如果都正常的話,將取消報警標志位置位。
UI界面報警部分:
監視界面(空氣質量異常)
監視界面(多處異常)
報警界面(已開啟報警)
報警界面(取消報警)
電機界面(空氣質量異常)
電機界面(強制開啟)
到目前為止,我們所做的都是基于stm32的下位機的開發。而在后面的章節中,小編將介紹如何將單片機采集的數據通過藍牙模塊傳輸給手機,實時地在手機界面上顯示,同時繪制一些相關的曲線。如果技術可行的話,還可以通過手機藍牙軟件實時監控我們的多功能時鐘,完成上位機與下位機的通信交互。
上一篇:基于stm32的多功能時鐘5——LCD12864庫函數的建立
下一篇:為什么STM32中運行的C程序執行某些函數時死機?
推薦閱讀最新更新時間:2025-04-23 14:44


設計資源 培訓 開發板 精華推薦
- LTC2946HDE 在 -48V 系統中使用低側檢測(1.5kHz I2C 接口)進行電源、電荷和能量監測的典型應用
- AD8311-EVAL,AD8311 評估板,50dB GSM PA 控制器
- LT6656BCDC-2.5、2.5V 升壓輸出電流電壓基準的典型應用
- IS-DEV KIT-5C、LCD 36x24 RGB 緊湊型開發套件演示了不同的智能開關、緊湊型和顯示器
- WIFI小車
- LT1952EGN 36V 至 72V 輸入、12V/20A 半穩壓總線轉換器的典型應用電路
- LT4276CIUFD LTPoE++ 70W 電源在正向模式下的典型應用電路
- LT3091IR GND 引腳參考 SHDN 信號的典型應用
- AM1/4S-0505SZ 5V 0.25 瓦 DC/DC 轉換器的典型應用
- 使用 Infineon Technologies AG 的 IRU3038 的參考設計
- 解決方案 | 芯佰微助力電動車安全:通用型OPA、LDO、RS485芯片,提升報警器性能
- ASML 技術高級副總裁:已攜手蔡司啟動 5nm 分辨率 Hyper NA 光刻機開發
- 搭載Integrity Guard安全架構的芯片交付量突破100億, 充分彰顯英飛凌在安全領域的領導地位
- QNX與Vector簽署諒解備忘錄,共同打造基礎性車輛軟件平臺
- 瑞薩電子放緩增長預期,200 億美元營收目標延后五年至 2035 年
- 消息稱小米玄戒 O2 芯片有望“上車”,自研四合一域控制器已在鋪路
- 優化電動汽車車載充電器瞬態電壓保護和浪涌保護
- 新能源汽車電子水泵溫控系統及靜電浪涌
- 車載顯示接口測試趨勢分析
- Arm+AWS實現AI定義汽車 基于Arm KleidiAI優化并由AWS提供支持