娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于stm32的多功能時鐘7——報警模塊設計

發布者:GoldenSunrise最新更新時間:2025-01-14 來源: jianshu關鍵字:stm32  多功能時鐘 手機看文章 掃描二維碼
隨時隨地手機看文章

        自上一章《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  多功能時鐘 引用地址:基于stm32的多功能時鐘7——報警模塊設計

上一篇:基于stm32的多功能時鐘5——LCD12864庫函數的建立
下一篇:為什么STM32中運行的C程序執行某些函數時死機?

推薦閱讀最新更新時間:2025-04-23 14:44

STM32 x Arduino 通信 —— nRF24L01
Arduino 配置 /* * nRF24L01_RX.ino * * * ====== Pin Connection ====== * * -------------------------- * GND - GND ■■ VCC - 3V3 | * D9 - CE ■■ CSN - D10 | * D13 - SLCK ■■ MOSI - D11 | * D12 - MISO ■■ IRQ - NC | * -------------------------- * * ============================ */
[單片機]
STM32電源框圖解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的區別)
STM32的工作電壓(VDD )為2.0~3.6V,通過內置的電壓調節器提供所需的1.8V電源,當主電源VDD 掉電后,通過VBAT 腳為實時時鐘(RTC)和備份寄存器提供電源(下圖為STM32F1**系列電源框架圖,STM32基本大同小異)。 1、名詞解析 可以看到上圖有VDD、VSS、VDDA、VSSA、VREF+等標識,這些是什么意思呢?有什么特點呢?如何看懂STM32系統的電源框架圖呢? 首先對名詞進行解析,如下所示: VCC電路的供電正電壓VDDD芯片的工作數字正電壓 GND電路的供電負電壓VSSD芯片的工作數字正電壓 VDD芯片的工作正電壓VREF+ADC基準參考正電壓 VSS芯片的工作負電壓VREF-ADC基
[單片機]
STM32的ISP方式和IAP方式下載程序有什么區別
都可以通過串口來下載啊 ISP方式:需要將BOOT管腳配置成上電從System Memory啟動,System Memory中有一段BOOTLOADER來接收串口來的數據,把它們燒寫到FLASH中。 IAP方式:是用戶自己寫一段燒寫程序,通過ISP或者仿真器事先燒寫到用戶FLASH中,使用時通過某種方式觸發這段程序,再來從串口接收數據,然后燒到相應的FLASH中,不需要改變BOOT管腳配置。
[單片機]
STM32 FreeRTOS Keil環境搭建
由于FreeRTOS的官方已經支持STM32F1X系列的Cortex-M3的移植,所以只需要在Keil IDE中設置相關即可了; 在Keil中新建一工程,在工程中新建3個組,分別對應3個目錄用來存放:user、rtos、stmlib user中添加用戶自己的代碼和頭文件; rtos中添加rots的文件主要有:list.c、task.c、queue.c、head_2.c、port.c stmlib中添加STM32官方提供的STM32操作的lib庫(注意stm32f10x_md.s中的內容和替換為FreeRTOS Demo 中的STM32F10X.s否則系統調度不能正常工作) 另外需要把FreeRTOS/source/inc
[單片機]
stm32庫函數FSMC_NORSRAMInit()解析
這是一段對nor存儲器的時序進行編程的函數,函數形式為void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct),里面只有一個參數,這個參數為指針類型,指向一段數據結構,這個數據結構就保存著對時序進行配置的的各個參數,這個結構的詳細內容為 typedef struct { uint32_t FSMC_Bank;//nor被分為四塊,其中這個參數是說明對那個塊編程 uint32_t FSMC_DataAddressMux;//地址數據是否復用 uint32_t FSMC_MemoryType;//存儲器類型 uint3
[單片機]
STM32點LED燈
一、建立項目模板 這里的user中重復引用了system_stm32f10x.c Output中選擇Create HEXFile,并且可以選擇輸出路徑。 Listing中可以選擇輸出路徑。 然后在C/C++中加入兩個宏: STM32F10X_MD,USE_STDPERIPH_DRIVER 并且還要勾選One ELF Section per Function,加入頭文件路徑: 在Debug中,使用J-Link,并設置 在Utilities,選擇J-Link并Setting中: 二、寫點LED代碼 GPIO初始化: /**8位的LED的IO口***/ #define PIN_LED (GPIO_Pin_8 | GP
[單片機]
<font color='red'>STM32</font>點LED燈
對比STM32各系列產品特性和外設兼容性
在考慮更換STM32,且跨系列更換,可以看看下面各系列的對比圖。 STM32產品系列特性比較 下面是STM32F0、F1、F2、F4、L1各產品系列的特性進行對比: 3 外設兼容性分析對比 對STM32進行過研究的朋友,特別是使用過寄存器開發的朋友應該很明白STM32片上外設,進行過對比的朋友,會發現,各系列MCU的片上外設很多相似之處,甚至完全一樣。 下面將F1分別和F0、F2、F4、L1對比一下,大家看看有哪些差異。 1.STM32 F1 與 F0 系列外設兼容性分析對比 2.STM32 F1 與 F2 系列外設兼容性分析對比 3.STM32 F1 與 F4 系列外設兼容性分析對比 4.STM32 F
[單片機]
對比<font color='red'>STM32</font>各系列產品特性和外設兼容性
stm32任務調度和管理
STM32F103ZE的AHB時鐘為72MHz,通過HSE的8M倍頻到72M,然后APB1預分頻系數為2,所以TIM2-7時鐘為2*36M。由于定時器是16位,PSC寄存器最大為65536,不支持71999,所以只能以0.1ms計數。 整個系統在獲取時間的累增時,定義64位變量,即可運行很久的時間,不用擔心溢出或者死機。定義64位變量有2個方法,一就是用long long 直接定義,通過sizeof測試為8個字節;二就是利用”stdint.h”,typedef uint64_t u64。 一般情況下,定時器計時結果算法公式為:Tout = (ARR+1)(PSC+1)/Tclk。Tclk即為時鐘頻率。 準備工作 1)
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 太谷县| 湖南省| 马公市| 法库县| 九龙县| 庄河市| 日喀则市| 商洛市| 吉首市| 铜山县| 青河县| 调兵山市| 科技| 文水县| 枣阳市| 蚌埠市| 林芝县| 大关县| 闻喜县| 华池县| 神木县| 习水县| 堆龙德庆县| 大田县| 湖州市| 尖扎县| 芷江| 泸州市| 漾濞| 富民县| 沙湾县| 大悟县| 浪卡子县| 长宁县| 扶风县| 锦州市| 黎城县| 双鸭山市| 阿克苏市| 昌平区| 汕尾市|