打印
[应用相关]

烟雾报警器

[复制链接]
1026|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuxh|  楼主 | 2020-1-11 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神帮忙,一个基于stm32的烟雾报警器,用蜂鸣器报警,MQ-2的传感器和继电器,主要是源程序,有仿真更好

使用特权

评论回复
沙发
morrisk| | 2020-1-11 22:03 | 只看该作者
可以项目外包啊;

使用特权

评论回复
板凳
ousj| | 2020-1-11 22:07 | 只看该作者
就是驱动一个继电器就可以。

使用特权

评论回复
地板
kangzj| | 2020-1-11 22:11 | 只看该作者
使用什么芯片呢

使用特权

评论回复
5
juventus9554| | 2020-1-11 22:17 | 只看该作者
所有的传感器都可以实现的。

使用特权

评论回复
6
dingy| | 2020-1-11 22:20 | 只看该作者
好像stm32没有仿真的。

使用特权

评论回复
7
ousj| | 2020-1-11 22:22 | 只看该作者
ADC采样MQ-2烟雾传感器

使用特权

评论回复
8
yinxiangh| | 2020-1-11 22:25 | 只看该作者

void adc_init()  
{  
    GPIO_InitTypeDef GPIO_InitStructure;  
    ADC_InitTypeDef ADC_InitStructure;  
    DMA_InitTypeDef DMA_InitStructure;  
      
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);  
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;        
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;  
    GPIO_Init(GPIOC,&GPIO_InitStructure);  
      
    DMA_DeInit(DMA1_Channel1);  
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;//ADC地址  
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue; //内存地址(要传输的变量的指针)  
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //方向(从内存到外设)  
    DMA_InitStructure.DMA_BufferSize = 1; //传输内容的大小  
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址固定  
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; //内存地址固定  
    DMA_InitStructure.DMA_PeripheralDataSize =   
    DMA_PeripheralDataSize_HalfWord ; //外设数据单位  
    DMA_InitStructure.DMA_MemoryDataSize =   
    DMA_MemoryDataSize_HalfWord ;    //内存数据单位  
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular  ; //DMA模式:循环传输  
    DMA_InitStructure.DMA_Priority = DMA_Priority_High ; //优先级:高  
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;   //禁止内存到内存的传输  
      
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);  //配置DMA1的1通道  
      
    DMA_Cmd(DMA1_Channel1,ENABLE);  
   
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独立ADC模式  
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;  //禁止扫描方式  
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//开启连续转换模式   
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //不使用外部触发转换  
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //采集数据右对齐  
    ADC_InitStructure.ADC_NbrOfChannel = 1; //要转换的通道数目  
    ADC_Init(ADC1, &ADC_InitStructure);  
      
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);//配置ADC时钟,为PCLK2的8分频,即9Hz  
    ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);//配置ADC1通道11为55.5个采样周期   
        ADC_DMACmd(ADC1,ENABLE);  
    ADC_Cmd(ADC1,ENABLE);  
  
    ADC_ResetCalibration(ADC1);//复位校准寄存器  
    while(ADC_GetResetCalibrationStatus(ADC1));//等待校准寄存器复位完成  
  
    ADC_StartCalibration(ADC1);//ADC校准  
    while(ADC_GetCalibrationStatus(ADC1));//等待校准完成  
  
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);//由于没有采用外部触发,所以使用软件触发ADC转换  
}  

使用特权

评论回复
9
kangzj| | 2020-1-11 22:27 | 只看该作者
你有什么项目需求吗

使用特权

评论回复
10
pengf| | 2020-1-11 22:30 | 只看该作者
硬件设计好了吗?            

使用特权

评论回复
11
pangb| | 2020-1-11 22:32 | 只看该作者
源程序是弄个框架吗

使用特权

评论回复
12
zwll| | 2020-1-11 22:36 | 只看该作者

具体描述一下你要使用的IO口。

使用特权

评论回复
13
xxmmi| | 2020-1-11 22:39 | 只看该作者

考虑硬件了吗?

使用特权

评论回复
14
zhaoxqi| | 2020-1-11 22:42 | 只看该作者

extern __IO uint16_t ADC_ConvertedValue;   
float ADC_ConvertedValueLocal;   
int main(void)  
{   
    adc_init();  
    printf_init();  
        SysTick_Init();   //配置SysTick为1ms中断一次  
    while(1)  
    {   
            ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3;   
            printf("The current AD value =0x%04X\n",ADC_ConvertedValue);   
            printf("The current AD value =%f V\n",ADC_ConvertedValueLocal);   
      
            Delay_ms(1000);      
        }  
      
}  

使用特权

评论回复
15
chenjunt| | 2020-1-11 22:44 | 只看该作者
使用一个比较器就可以实现。

使用特权

评论回复
16
chuxh|  楼主 | 2020-1-11 22:49 | 只看该作者
三极管就可以完成。

使用特权

评论回复
17
houcs| | 2020-1-11 22:52 | 只看该作者
就是读取数据后直接驱动继电器。

使用特权

评论回复
18
jiajs| | 2020-1-11 22:57 | 只看该作者
这个应该是ADC读取数据吧。

使用特权

评论回复
19
chuxh|  楼主 | 2020-1-11 23:00 | 只看该作者
只有传感器根本无法实现这个的。

使用特权

评论回复
20
stly| | 2020-1-11 23:04 | 只看该作者
在21ic外包也可以实现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝