完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
实验材料
STM32F03(我这里用的是正点原子的战舰) 火焰传感器 还有个蜂鸣器,我这个开发板自带,也是可外接的 火焰传感器介绍 工作原理 传感器模块在环境火焰光谱或者光源达不到设定阈值时,DO 口输出低电平,当外界环境火焰光谱或者光源超过设定阈值时,模块 DO口输出高电平 引脚说明(这个传感器有三个引脚的也有两个引脚的)我这里介绍三个引脚的 原理图 实验测试 思路:我们可以根据工作原理加上蜂鸣器的配合,当有火焰靠近时,DO引脚输出的高电平,然后让蜂鸣器响。这样就能大致模仿火灾报警。 连线 配置蜂鸣器的模块(时钟、输出模式、引脚初始化) 我这里是让传感器的DO引脚接STM32的PA1引脚 fire.h #include “stm32f10x.h” #define GPIO_FIRE_RCC RCC_APB2Periph_GPIOA #define GPIO_FIRE_PORT GPIOA//选择GPIOA寄存器 #define GPIO_FIRE_PIN GPIO_Pin_1 //引脚1 void FIRE_CONFIG(void ); fire.c #include “fire.h” #include “stm32f10x.h” void FIRE_CONFIG(void) { GPIO_InitTypeDef GPIO_FIRE; /*配置时钟*/ //RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); RCC_APB2PeriphClockCmd(GPIO_FIRE_RCC,ENABLE); GPIO_FIRE.GPIO_Pin = GPIO_FIRE_PIN; GPIO_FIRE.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入模式 /*配置GPIO 输入*/ //void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); GPIO_Init(GPIO_FIRE_PORT,&GPIO_FIRE); } 通过原理图我们查出蜂鸣器的输出引脚是PB8 配置蜂鸣器的模块(时钟、输出模式、引脚初始化) beep.h #include “stm32f10x.h” #define GPIO_BEEP_RCC RCC_APB2Periph_GPIOB #define GPIO_BEEP_PORT GPIOB//选择GPIOB寄存器 #define GPIO_BEEP_PIN GPIO_Pin_8 //引脚8 void BEEP_CONFIG(void); beep.c #include “beep.h” #include “stm32f10x.h” void BEEP_CONFIG(void) { GPIO_InitTypeDef GPIO_BEEP; /*配置时钟*/ //void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); RCC_APB2PeriphClockCmd(GPIO_BEEP_RCC,ENABLE); GPIO_BEEP.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出 GPIO_BEEP.GPIO_Pin = GPIO_BEEP_PIN; GPIO_BEEP.GPIO_Speed = GPIO_Speed_50MHz; /*配置GPIO 输出*/ //void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); GPIO_Init(GPIO_BEEP_PORT,&GPIO_BEEP); } main.c #include “stm32f10x.h” #include “fire.h” #include “beep.h” //毫秒级的延时 void delay_ms(u16 time){ u16 i=0; while(time--){ i=12000; //自己定义 while(i--) ; } } int main(void) { /*初始化火焰传感器*/ FIRE_CONFIG(); /*初始化蜂鸣器感器*/ BEEP_CONFIG(); GPIO_ResetBits(GPIO_BEEP_PORT,GPIO_BEEP_PIN);//一上电蜂鸣器不响 //delay_ms(2000); while(1){ /*如果检测到低电平则蜂鸣器报警*/ //uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); if(GPIO_ReadInputDataBit(GPIO_FIRE_PORT,GPIO_FIRE_PIN)){ //void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); GPIO_ResetBits(GPIO_BEEP_PORT,GPIO_BEEP_PIN);//否则就报警 }else{ //void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); GPIO_SetBits(GPIO_BEEP_PORT,GPIO_BEEP_PIN);//没有检测到低电平蜂鸣器不响 } } return 0; } 注意事项 火焰传感器对火焰敏感,对普通光也是有反应的,一般用作火焰报警灯用途; 传感器模块在环境火焰光谱或者光源达不到设定阈值时,DO 口输出高电平,当外界环境火焰光谱或者光源超过设定阈值时,模块 DO口输出低电平; 传感与火焰保持一定距离,以免高温损坏传感器,打火机测试距离为80cm,火焰越大,可响应的有效距离越远。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1754 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1667 浏览 2 评论
1927浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
712浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
562浏览 3评论
584浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 08:33 , Processed in 0.754969 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号