功能介绍:采用stm32单片机作为主控CPU,采用MQ2传感器采集烟雾浓度,采用MQ4传感器采集可燃气体浓度,采用dht11传感器采集温湿度,当烟雾浓度或者可燃气体浓度超过阈值(可以程序里面进行随意设定),蜂鸣器会进行报警提醒,并且OLED显示相关数据,通过WiFi模块(ESP8266)将数据上传到onenet云平台,可以远程进行查下相关数据,程序有中文注释,新手容易看懂,文末有资料分享:

下面是实物演示视频和相关实物图片

64-基于stm32单片机烟雾可燃气体温湿度检测上传Onenet云平台(程序+原理图+元器件清单全套资料)

下面是程序部分展示(程序有中文注释,新手容易看懂)

void Hardware_Init(void){  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级    delay_init();      //延时函数初始化    Usart1_Init(115200);  //串口1初始化为115200  Usart2_Init(115200);   //串口2,驱动ESP8266用  LED_Init();        //LED初始化}
void Net_Init(){  ESP8266_Init();          //初始化ESP8266    while(OneNet_DevLink())      //接入OneNET    delay_ms(500);    LED = 0;            //入网成功}
int main(void){  unsigned char *dataPtr = NULL;  unsigned short timeCount = 30;  //发送间隔变量  u32 sgp30_dat;    LED_Init();    BEEP_Init();  Q1=BEEP=IN1=IN2=1;  Hardware_Init();        //初始化外围硬件  Net_Init();              //网络初始化      OLED_Init();    OLED_ColorTurn(0);    OLED_DisplayTurn(0);    OLED_ShowString(0,0," TEMP:",16);   OLED_ShowString(70,0,"C",16);OLED_ShowString(110,0,"%",16);  OLED_ShowString(0,32,"  MQ4:",16);OLED_ShowNum(50,32,000,3,16);     OLED_ShowString(80,32,"PPM",16);  OLED_ShowString(0,48,"  MQ2:",16);OLED_ShowNum(50,48,000,3,16);     OLED_ShowString(80,48,"PPM",16);      OLED_Refresh();  DHT11_Init();  Adc_Init();
  while(1)  {  
    delay_ms(10);    timeCount ++;//  printf("\r\n***************************** 串口测试 *****************************\r\n");        if(timeCount >= 30)  //发送间隔    {        OneNet_SendData();  //发送数据            timeCount = 0;      ESP8266_Clear();    }        dataPtr = ESP8266_GetIPD(0);    if(dataPtr != NULL)    {      OneNet_RevPro(dataPtr);    }

程序打开办法:特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

下面是原理图,采用【AD】altium designer打开,文件中有安装包

下面是资料包里面包含的相关文件展示

百度云盘资料下载链接

更多推荐