其实以前也做过一个类似的,这次也就是上次做的改进~
这个是自己脑海里的。。。实际上数据融合还在考虑中。。。毕竟没时间,老师就要求一个周的时间弄完,也是比较仓促,还要写文档。。。蓝牙用的是透传,你懂得~
谈一谈对“数据融合”的看法,其实自己并不了解数据融合,只是觉得自己要做的是把这些数据整合处理,通过MQ2采集到的数据设置一个阀值,然后是DHT11的温湿度阀值,通过计算将这三个数据设定一个同样的权值域,然后不同的域有不同的响应,可以理解为是一个安全级别数。
下面是传感器MQ2代码:
#include "adc.h"
#include "delay.h"
void Adc_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_CommonInitTypeDef ADC_CommonInitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ʹÄÜGPIOAʱÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //ʹÄÜADC1ʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PA5 ͨµÀ5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//Ä£ÄâÊäÈë
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;//²»´øÉÏÏÂÀ
GPIO_Init(GPIOB, &GPIO_InitStructure);//³õʼ»¯
RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE); //ADC1¸´Î»
RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE); //¸´Î»½áÊø
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//¶ÀÁ¢Ä£Ê½
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;//Á½¸ö²ÉÑù½×¶ÎÖ®¼äµÄÑÓ³Ù5¸öʱÖÓ
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; //DMAʧÄÜ
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;//Ô¤·ÖƵ4·ÖƵ¡£ADCCLK=PCLK2/4=84/4=21Mhz,ADCʱÖÓ×îºÃ²»Òª³¬¹ý36Mhz
ADC_CommonInit(&ADC_CommonInitStructure);//³õʼ»¯
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//12λģʽ
ADC_InitStructure.ADC_ScanConvMode = DISABLE;//·ÇɨÃèģʽ
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//¹Ø±ÕÁ¬Ðøת»»
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//½ûÖ¹´¥·¢¼ì²â£¬Ê¹ÓÃÈí¼þ´¥·¢
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ÓÒ¶ÔÆë
ADC_InitStructure.ADC_NbrOfConversion = 1;//1¸öת»»ÔÚ¹æÔòÐòÁÐÖÐ Ò²¾ÍÊÇֻת»»¹æÔòÐòÁÐ1
ADC_Init(ADC1, &ADC_InitStructure);//ADC³õʼ»¯
ADC_Cmd(ADC1, ENABLE);//¿ªÆôADת»»Æ÷
}
{
//ÉèÖÃÖ¸¶¨ADCµÄ¹æÔò×éͨµÀ£¬Ò»¸öÐòÁУ¬²ÉÑùʱ¼ä
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_480Cycles );