[STM32F1]

烟雾报警器

[复制链接]
3703|41
手机看帖
扫描二维码
随时随地手机跟帖
lalabai|  楼主 | 2018-5-21 13:18 | 显示全部楼层 |阅读模式
求大神帮忙,一个基于stm32的烟雾报警器,用蜂鸣器报警,MQ-2的传感器和继电器,主要是源程序,有仿真更好
评论
xch 2018-5-22 21:55 回复TA
你搞错传感器了吧? MQ-2是可燃气传感器。 
mmuuss586| | 2018-5-21 21:58 | 显示全部楼层
可以项目外包啊;

使用特权

评论回复
gygp| | 2018-5-21 22:38 | 显示全部楼层
就是驱动一个继电器就可以。

使用特权

评论回复
chenci2013| | 2018-5-21 22:39 | 显示全部楼层
使用什么芯片呢

使用特权

评论回复
chenci2013| | 2018-5-21 22:40 | 显示全部楼层
所有的传感器都可以实现的。

使用特权

评论回复
biechedan| | 2018-5-21 22:43 | 显示全部楼层
好像stm32没有仿真的。

使用特权

评论回复
wangdezhi| | 2018-5-21 22:43 | 显示全部楼层
ADC采样MQ-2烟雾传感器

使用特权

评论回复
评论
lalabai 2018-5-30 10:45 回复TA
怎么做呢 
isseed| | 2018-5-21 22:44 | 显示全部楼层
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转换  
}  

使用特权

评论回复
评论
lalabai 2018-5-30 10:46 回复TA
谢谢 
xietingfeng| | 2018-5-21 22:45 | 显示全部楼层
你有什么项目需求吗

使用特权

评论回复
suzhanhua| | 2018-5-21 22:45 | 显示全部楼层
硬件设计好了吗?            

使用特权

评论回复
mituzu| | 2018-5-21 22:45 | 显示全部楼层
源程序是弄个框架吗

使用特权

评论回复
hellosdc| | 2018-5-21 22:46 | 显示全部楼层
具体描述一下你要使用的IO口。

使用特权

评论回复
uiint| | 2018-5-21 22:46 | 显示全部楼层
考虑硬件了吗?

使用特权

评论回复
isseed| | 2018-5-21 22:46 | 显示全部楼层
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);      
        }  
      
}  

使用特权

评论回复
wangdezhi| | 2018-5-21 22:46 | 显示全部楼层
使用一个比较器就可以实现。

使用特权

评论回复
gygp| | 2018-5-21 22:46 | 显示全部楼层
三极管就可以完成。

使用特权

评论回复
chenci2013| | 2018-5-21 22:47 | 显示全部楼层
就是读取数据后直接驱动继电器。

使用特权

评论回复
biechedan| | 2018-5-21 22:47 | 显示全部楼层
这个应该是ADC读取数据吧。

使用特权

评论回复
hellosdc| | 2018-5-21 22:47 | 显示全部楼层
只有传感器根本无法实现这个的。

使用特权

评论回复
xietingfeng| | 2018-5-21 22:47 | 显示全部楼层
在21ic外包也可以实现。

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝