在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于RA6M5的智能煙霧感應吸除系統設計

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 2023-11-06 12:21 ? 次閱讀

今日分享野火瑞薩創意氛圍賽選手的作品——基于RA6M5的智能煙霧感應吸除系統。

該系統是基于野火啟明RA6M5開發板制作的一款智能煙霧感應裝置。創作背景是作者在手工焊接電子元器件或電路板時候,常常會因為長時間吸入焊接產生的煙霧而導致身體不適。因此趁著野火創意氛圍賽提供的學習機會,在啟明開發板上實現感應煙霧并利用風扇吸除的功能,經過初步驗證,該系統能較好的達到理想控制狀態。

一、項目簡介

該系統使用的開發板是野火啟明RA6M5,使用到的額外外設模塊有一路繼電器、7.4V電池模塊、煙霧傳感器。是基于瑞薩FSP庫完成軟件程序的編寫,由于時間原因,所有電路連接采用杜邦線完成。

二、項目說明

該系統有兩個工作模式,可通過野火啟明RA6M5上板載按鍵2切換工作模式。其中工作模式一是通過按鍵手動控制風扇轉動。工作模式二是通過煙霧傳感器感應煙霧從而發送信號驅動風扇轉動。

三、系統方案

由于該系統結構比較簡單,因此無需給出系統框圖。簡述過程就是利用GPIO輸出功能去驅動繼電器打開,將風扇與7.4V模塊導通轉動。利用GPIO輸入功能識別煙霧傳感器電平信號從而驅動繼電器。

四、硬件方案展示

1.風扇模塊

模塊介紹:該模塊額定電壓為12V,工作電壓為7~12V由于作者手上沒有12V直流電池,因此用7.4V電池模塊替代。

2.繼電器模塊

模塊介紹:由于風扇模塊工作電壓遠高于單片機工作電壓3.3V,因此利用繼電器特性,可實現GPIO輸出功能控制風扇轉動或停止。

3.煙霧傳感器 aee00b72-7c59-11ee-939d-92fbcf53809c.png

模塊介紹:MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫 (SnO2)。當傳感器所處環境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大。使用簡單的電路即可將電導率的變化轉換為與該氣體濃度相對應的輸出信號。可以用于該系統中煙霧監測裝置,傳感器特設M3固定安裝孔,使用寬電壓LM393比較器,信號干凈,波形好,驅動能力強,超過15mA,配可調精密電位器調節靈敏度。

4.杜邦線連接介紹

繼電器信號引腳連接P500,煙霧傳感器信號線連接P200,按鍵、LED燈均使用板載外設,因此不再聲明。

五、軟件配置(RASC)

與程序編寫

1.RASC部分

(一)系統時鐘配置

系統時鐘使用默認設置200M

(二)LED燈配置

af05ee50-7c59-11ee-939d-92fbcf53809c.jpg

啟動板載LED燈用來顯示當前工作狀態

(三)按鍵配置

af2c000e-7c59-11ee-939d-92fbcf53809c.jpg

配置按鍵用于切換功能

(四)煙霧傳感器輸入檢測配置

af5351d6-7c59-11ee-939d-92fbcf53809c.jpg

和按鍵配置同理

(五)繼電器配置

af7c307e-7c59-11ee-939d-92fbcf53809c.jpg

2.KEIL程序編寫部分

(一)系統框圖

afb1bdde-7c59-11ee-939d-92fbcf53809c.jpg

(二)LED部分

bsp_led.c代碼

左右滑動查看更多

#include "bsp_led.h"


void Led_init(void)
{
    //調用 R_IOPORT_Open 函數來初始化 IOPORT 模塊
    R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}

bsp_led.h代碼

左右滑動查看更多

#ifndef _BSP_LED_H
#define _BSP_LED_H


#include "hal_data.h"


#define LED1_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_00 & 0xFF)
#define LED2_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_03 & 0xFF)
#define LED3_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_04 & 0xFF)


#define LED1_ON R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_00,BSP_IO_LEVEL_LOW);
#define LED2_ON R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_03,BSP_IO_LEVEL_LOW);
#define LED3_ON R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_04,BSP_IO_LEVEL_LOW);


#define LED1_OFF R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_00,BSP_IO_LEVEL_HIGH);
#define LED2_OFF R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_03,BSP_IO_LEVEL_HIGH);
#define LED3_OFF R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_04_PIN_04,BSP_IO_LEVEL_HIGH);


void Led_init(void);


#endif

(三)按鍵部分
bsp_key.c代碼

左右滑動查看更多

#include "bsp_key.h"


/* 定義宏 KEY_ON 表示按鍵按下
定義宏 KEY_OFF 表示按鍵沒有按下
*/


/* 按鍵初始化函數 */
void Key_Init(void)
{
  /* 初始化配置引腳(這里重復初始化了,可以注釋掉) */
  //R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}


uint32_t Key_Scan(bsp_io_port_pin_t key)
{
    bsp_io_level_t state;
    // 讀取按鍵引腳電平
    R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);
    if (BSP_IO_LEVEL_HIGH == state)
    {
        return KEY_OFF; //按鍵沒有被按下
    }
    else
    {
    do //等待按鍵釋放
    {
        R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);
    } while (BSP_IO_LEVEL_LOW == state);
    }
    return KEY_ON; //按鍵被按下了
}

bsp_key.h代碼

左右滑動查看更多

#ifndef _BSP_KEY_H
#define _BSP_KEY_H


#include "hal_data.h"


#define KEY_ON 1
#define KEY_OFF 0


#define KEY1_SW2_PIN BSP_IO_PORT_00_PIN_04
#define KEY2_SW3_PIN BSP_IO_PORT_00_PIN_05


#define FAN_TOGGLE R_PORT5->PODR ^= 1<<(BSP_IO_PORT_05_PIN_00 & 0xFF)//繼電器狀態翻轉


void Key_Init(void);
uint32_t Key_Scan(bsp_io_port_pin_t key);


#endif

(四)系統滴答定時器部分
bsp_SysTick.c代碼

左右滑動查看更多

#include "bsp_SysTick.h"


static __IO uint32_t IT_nums; //延時需要觸發中斷的次數
static uint32_t IT_Period; //中斷周期(單位為時鐘節拍數)


uint32_t Mode_mstick;
uint32_t Systick_mstick;


/**
* @brief 啟動系統滴答計時器 SysTick
* @param IT_frequency: 滴答計時器每秒的中斷次數
* @retval 無
*/
void SysTick_Init(uint32_t IT_frequency)
{
  /* SystemFrequency在這里默認為200M
   * SystemFrequency / 1000  1ms中斷一次
   * SystemFrequency / 100000 10us中斷一次
   * SystemFrequency / 1000000 1us中斷一次
   */
  IT_Period = SystemCoreClock / IT_frequency;//個人理解:設置分頻
  uint32_t err = SysTick_Config (IT_Period);//把分頻設置進系統
  assert(err==0); //capture error
}


/**
* @brief 延時程序
* @param delay: 延時的單位時間
* @param unit: 延時的單位
* @retval 無
*/
void SysTick_Delay(uint32_t delay, sys_delay_units_t unit)
{
    uint32_t SumTime = delay * unit; //計算總延時時間 (單位為時鐘節拍數)
    IT_nums = SumTime/IT_Period;//計算次數,比如1ms一次中斷,設置1000,就是1s
    while (IT_nums != 0);//中斷進去一次-一次,直到為0跳出
}


/**
 * @brief SysTick的中斷服務函數
 * @param 無
 * @retval 無
 * @attention 用e2 studio編譯會出現警告,但是沒有影響,不需要管
 */


void SysTick_Handler(void)
{
  Systick_mstick++;
}


/*********************************************END OF FILE**********************/

bsp_Systick.h代碼

左右滑動查看更多

#ifndef _BSP_SYSTICK_H
#define _BSP_SYSTICK_H


#include "hal_data.h"


typedef enum
{
  SYS_DELAY_UNITS_SECONDS   = 200000000, ///< Requested delay amount is in seconds
 ? ?SYS_DELAY_UNITS_MILLISECONDS = 200000, ? ?///< Requested delay amount is in milliseconds
 ? ?SYS_DELAY_UNITS_MICROSECONDS = 200 ? ? ? ?///< Requested delay amount is in microseconds
} sys_delay_units_t;


void SysTick_Init(uint32_t IT_frequency);
void SysTick_Delay(uint32_t delay, sys_delay_units_t unit);


#endif

(五)煙霧傳感器部分
bsp_sensor.c代碼

左右滑動查看更多

#include "bsp_sensor.h"
    
void Eensor_Init(void)
{
    //調用 R_IOPORT_Open 函數來初始化 IOPORT 模塊
    R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}

bsp_sensor.h代碼

左右滑動查看更多

#ifndef _BSP_SENSOR_H
#define _BSP_SENSOR_H


#include "hal_data.h"


#define Fan_PIN BSP_IO_PORT_02_PIN_00
#define FAN_ON R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_05_PIN_00,BSP_IO_LEVEL_HIGH);
#define FAN_OFF R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_05_PIN_00,BSP_IO_LEVEL_LOW);


extern uint32_t Mode_mstick;
extern uint32_t Systick_mstick;


void Eensor_Init(void);


#endif

(六)主函數部分

其余部分均為默認程序,在這里不進行展示。至此,硬件和軟件部分均介紹完成。

左右滑動查看更多

#include "hal_data.h"
#include "led/bsp_led.h"
#include "key/bsp_key.h"
#include "SysTick/bsp_SysTick.h"
#include "sensor/bsp_sensor.h"


FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER


void Fan_Proc(void);//系統運行函數
bsp_io_level_t Fan_flag;//風扇開啟變量,0-關閉,1-打開
uint8_t Work_Mode = 0;//工作模式 0-手動模式 1-煙霧傳感器模式
/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used. This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
  /* TODO: add your own code here */
    Led_init();//LED燈初始化
    Key_Init();//按鍵初始化
    Eensor_Init();//傳感器初始化
    SysTick_Init(1000);//滴答定時器1ms
    
    while(1){
        Fan_Proc();
    }
    
#if BSP_TZ_SECURE_BUILD
  /* Enter non-secure code */
  R_BSP_NonSecureEnter();
#endif
}


void Fan_Proc(void)
{
    if(Systick_mstick-Mode_mstick <= 50)return;
 ? ? ? ? ? ? ? ?Mode_mstick = Systick_mstick;
 ? ? ? ?
 ? ? ? ?if( Key_Scan(KEY1_SW2_PIN) == KEY_ON && Work_Mode == 0) //掃描按鍵1
 ? ? ? ?{
 ? ? ? ? ? ? ? ?LED1_TOGGLE; //翻轉 LED1 狀態
 ? ? ? ? ? ? ? ?FAN_TOGGLE; //開啟風扇
 ? ? ? ?}
 ? ? ? ?if( Key_Scan(KEY2_SW3_PIN) == KEY_ON ) //掃描按鍵2
 ? ? ? ?{
 ? ? ? ? ? ? ? ?LED3_TOGGLE; //翻轉 LED3 狀態
 ? ? ? ? ? ? ? ?Work_Mode ^= 1;//反轉模式
 ? ? ? ?}
 ? ? ? ?if(Work_Mode == 1)
 ? ? ? ?{
 ? ? ? ? ? ? ? ?R_IOPORT_PinRead(&g_ioport_ctrl, Fan_PIN, &Fan_flag);
 ? ? ? ? ? ? ? ?if(Fan_flag == BSP_IO_LEVEL_LOW)
 ? ? ? ? ? ? ? ?{
 ? ? ? ? ? ? ? ? ? ? ? ?LED2_ON; //打開
 ? ? ? ? ? ? ? ? ? ? ? ?FAN_ON;//風扇開啟
 ? ? ? ? ? ? ? ?}
 ? ? ? ? ? ? ? ?else if(Fan_flag == BSP_IO_LEVEL_HIGH)
 ? ? ? ? ? ? ? ?{
 ? ? ? ? ? ? ? ? ? ? ? ?LED2_OFF; //關閉
 ? ? ? ? ? ? ? ? ? ? ? ?FAN_OFF;//風扇關閉
 ? ? ? ? ? ? ? ?}
 ? ? ? ?}
}

六、總結

此次項目由于時間緊迫,整體設計較為簡單,主要原因是由于本人前期一直在準備電子設計競賽,直到14號綜測結束才開始學習瑞薩啟明RA6M5開發板,在學習野火瑞薩開發板中,我領略到了不同于意法半導體系列開發板的魅力。我認為瑞薩半導體是一個非常值得學習的芯片系列,其圖形化配置有良好的生態,在學習野火編寫的教學文檔中也受益匪淺。在此,再次感謝野火舉辦創意氛圍賽,讓我有機會接觸瑞薩開發板。如果有機會參與下一期創意氛圍賽,我會努力創造更有特色的產品

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

    關注

    132

    文章

    5363

    瀏覽量

    149628
  • 單片機
    +關注

    關注

    6044

    文章

    44624

    瀏覽量

    638949
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17356

    瀏覽量

    352788
  • 瑞薩
    +關注

    關注

    35

    文章

    22312

    瀏覽量

    86821
  • 開發板
    +關注

    關注

    25

    文章

    5128

    瀏覽量

    98323

原文標題:【瑞薩RA MCU創意氛圍賽作品賞析】項目12——智能煙霧感應吸除系統

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于瑞薩RA6M5/RA2L1和百度語音云的語音識別控制與無線通信控制系統

    整個系統由兩個野火瑞薩啟明開發板組成,大的RA6M5開發板接入W5500網口模塊.
    的頭像 發表于 02-26 13:54 ?1788次閱讀
    基于瑞薩<b class='flag-5'>RA6M5</b>/<b class='flag-5'>RA</b>2L1和百度語音云的語音識別控制與無線通信控制<b class='flag-5'>系統</b>

    瑞薩RA6M5中的QSPI可以用作普通SPI使用嗎?

    各位大佬,請教一個問題,瑞薩RA6M5中的QSPI可以用作普通SPI使用嗎?有沒有相關教程
    發表于 12-18 08:53

    RA6M5的QSPI可以作為普通SPI使用嗎?

    RA6M5的QSPI可以作為普通SPI使用嗎?有沒有相關教程
    發表于 12-18 08:55

    【野火啟明6M5開發板體驗】1 RA6M5開發環境搭建

    的 Secure Crypto Engine (SCE) 配合使用,可實現安全芯片的功能。 RA6M5采用高效的 40nm 工藝,由靈活配置軟件包 (FSP) 這個開放且靈活的生態系統概念提供支持,FSP
    發表于 12-21 22:49

    RA6M5數據手冊(英)

    RA6M5數據手冊(英)
    發表于 11-07 19:49 ?1次下載
    <b class='flag-5'>RA6M5</b>數據手冊(英)

    RA6M5硬件用戶手冊(英)

    RA6M5硬件用戶手冊(英)
    發表于 11-07 19:49 ?2次下載
    <b class='flag-5'>RA6M5</b>硬件用戶手冊(英)

    RA6M5數據手冊(中英)

    RA6M5數據手冊(中英)
    發表于 11-07 19:49 ?0次下載
    <b class='flag-5'>RA6M5</b>數據手冊(中英)

    RA6M5硬件用戶手冊(中英)

    RA6M5硬件用戶手冊(中英)
    發表于 11-07 19:50 ?2次下載
    <b class='flag-5'>RA6M5</b>硬件用戶手冊(中英)

    RA6M5 組 數據表

    RA6M5 組 數據表
    發表于 01-09 19:01 ?0次下載
    <b class='flag-5'>RA6M5</b> 組 數據表

    RA6M5 組 用戶手冊: 硬件

    RA6M5 組 用戶手冊: 硬件
    發表于 01-09 19:02 ?1次下載
    <b class='flag-5'>RA6M5</b> 組 用戶手冊: 硬件

    RA6M5 組 數據表

    RA6M5 組 數據表
    發表于 06-30 18:41 ?0次下載
    <b class='flag-5'>RA6M5</b> 組 數據表

    RA6M5 組 用戶手冊: 硬件

    RA6M5 組 用戶手冊: 硬件
    發表于 06-30 18:42 ?1次下載
    <b class='flag-5'>RA6M5</b> 組 用戶手冊: 硬件

    RA6M5硬件手冊

    RA6M5User'sManualHardware
    發表于 03-23 14:56 ?13次下載

    使用RA6M5開發板的簡易熱成像儀設計

    本項目是使用RA6M5開發板搭載RTThread系統+LVGL圖形庫實現的一個簡易熱成像儀。其中傳感器使用的是mlx90640,屏幕是320*240的電容觸摸屏,整個交互由觸摸完成。
    的頭像 發表于 01-02 13:50 ?885次閱讀
    使用<b class='flag-5'>RA6M5</b>開發板的簡易熱成像儀設計

    基于RA6M5 MCU組的云套件數據手冊

    電子發燒友網站提供《基于RA6M5 MCU組的云套件數據手冊.rar》資料免費下載
    發表于 05-17 17:06 ?0次下載
    基于<b class='flag-5'>RA6M5</b> MCU組的云套件數據手冊
    主站蜘蛛池模板: 亚洲黄色一区 | 九色在线看 | 亚洲成年人影院 | 一级毛片不收费 | 一级aa 毛片高清免费看 | 奇米影视欧美 | 国产一卡二卡3卡4卡四卡在线 | 久久就是精品 | 在线观看视频一区二区三区 | 在线电影你懂得 | 午夜视频网站在线观看 | 尤物蜜芽福利国产污在线观看 | 99精品热女视频专线 | 欧美成人猛男性色生活 | 欧美freesex交| 精品国产午夜久久久久九九 | 天天摸天天做 | 久久天天躁综合夜夜黑人鲁色 | 日本黄色录象 | 色天天综合网 | 老湿司午夜爽爽影院榴莲视频 | 久99频这里只精品23热 视频 | 日本黄色大片网站 | 狠狠干亚洲色图 | 色老头综合免费视频 | 人人艹人人草 | 欧美一级免费在线观看 | 69国产| a级毛片免费观看网站 | 午夜欧美| 男女艹逼软件 | 免费观看激色视频网站bd | 手机在线观看你懂的 | 国产三级三级三级 | 韩国精品视频 | 日本黄色大片在线播放视频免费观看 | 天天操天天搞 | 欧美色网络 | 欧美a色 | 成年人黄色大片大全 | 免费视频久久看 |