基于STM32的OneNet物联网环境检测系统毕业设计

基于STM32的OneNet物联网环境检测系统

  • 1、项目简介
  • 1.1 系统构成
  • 1.2 系统功能
  • 1.3 演示视频
  • 2、部分电路设计
  • 2.1 STM32单片机核心系统电路设计
  • 2.2 ESP8266简介
  • 3、部分代码展示
  • 3.1 发送数据到OneNET物联网云平台
  • 3.2 温湿度传感器DHT11初始化
  • 3.3 光照传感器BH1750初始化
  • 3.4 烟雾传感器初始化
  • 3.4 ESP8266初始化
  • 1、项目简介

    1.1 系统构成

    本设计由STM32F103C8T6单片机核心板电路+温湿度传感器电路+烟雾传感器+ESP8266 WIFI模块+光照传感器BH1750构成。

    1.2 系统功能

  • 通过stm32单片机,实时采集温湿度、光照强度、烟雾浓度数据,并将数据实时上传至OneNet物联网云平台。
  • 1.3 演示视频

  • 视频简介中包含资料
  • https://www.bilibili.com/video/BV1rW421A7Pk
  • 2、部分电路设计

    2.1 STM32单片机核心系统电路设计

    STM32单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。

    单片机最小系统原理图如下图所示:

    2.2 ESP8266简介

    1、ESP8266 简介(无线通信模块WIFI模块)

  • ESP8266 系列模组是安信可(Ai-thinker)公司采用乐鑫ESP8266芯片开发的一系列wifi 模组模块。
  • 2、ESP8266相关功能:

  • 将客户端发来的数据转发到串口;
  • 串口数据转发给所有客户端
  • 可连接4个客户端
  • 可设置静态IP地址
  • 指示灯闪烁表示无客户端连接,灯亮代表有客户端连接
  • 实物图如下图所示:

    3、部分代码展示

    3.1 发送数据到OneNET物联网云平台

    void OneNet_SendData(void)
    {
    	
    	MQTT_PACKET_STRUCTURE mqttPacket = {NULL, 0, 0, 0};												//协议包
    	
    	char buf[256];
    	
    	short body_len = 0, i = 0;
    	
    	UsartPrintf(USART_DEBUG, "Tips:	OneNet_SendData-MQTT\r\n");
    	
    	memset(buf, 0, sizeof(buf));
    	
    	body_len = OneNet_FillBuf(buf);																	//获取当前需要发送的数据流的总长度
    	
    	if(body_len)
    	{
    		if(MQTT_PacketSaveData(DEVID, body_len, NULL, 5, &mqttPacket) == 0)							//封包
    		{
    			for(; i < body_len; i++)
    				mqttPacket._data[mqttPacket._len++] = buf[i];
    			
    			ESP8266_SendData(mqttPacket._data, mqttPacket._len);									//上传数据到平台
    			UsartPrintf(USART_DEBUG, "Send %d Bytes\r\n", mqttPacket._len);
    			
    			MQTT_DeleteBuffer(&mqttPacket);															//删包
    		}
    		else
    			UsartPrintf(USART_DEBUG, "WARN:	EDP_NewBuffer Failed\r\n");
    	}
    	
    }
    

    3.2 温湿度传感器DHT11初始化

    u8 DHT11_Init(void)
    {	 
     	GPIO_InitTypeDef  GPIO_InitStructure;
     	
     	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能PG端口时钟
    	
     	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //PA4端口配置
     	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
     	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     	GPIO_Init(GPIOA, &GPIO_InitStructure);				 //初始化IO口
     	GPIO_SetBits(GPIOA,GPIO_Pin_5);						 //PG11 输出高
    			    
    	DHT11_Rst();  //复位DHT11
    	return DHT11_Check();//等待DHT11的回应
    } 
    

    3.3 光照传感器BH1750初始化

    void bh1750_iic_init(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOB, ENABLE );	//使能GPIOB时钟
    	   
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOB, &GPIO_InitStructure);
    	GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9); 	//PB6,PB7 输出高
    }
    

    3.4 烟雾传感器初始化

    void Smog_Init(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTF时钟	
    	
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;			//PA1 anolog输入
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		//模拟输入引脚
    	GPIO_Init(GPIOA, &GPIO_InitStructure);	
    	Adc_Init();
    }
    

    3.4 ESP8266初始化

    void ESP8266_Init(void)
    {
      GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_RESET);
      delay_ms(250);
      GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET);
      delay_ms(500);
    
      ESP8266_Clear();
    
      UsartPrintf(USART_DEBUG, "1. AT\r\n");
      while(ESP8266_SendCmd("AT\r\n", "OK"))
      delay_ms(500);
    
      UsartPrintf(USART_DEBUG, "2. CWMODE\r\n");
      while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
      delay_ms(500);
    
      UsartPrintf(USART_DEBUG, "3. CWJAP\r\n");
      while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
      delay_ms(500);
    
      UsartPrintf(USART_DEBUG, "4. CIPSTART\r\n");
      while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
      delay_ms(500);
    
      UsartPrintf(USART_DEBUG, "5. ESP8266 Init OK\r\n");
    }
    

    作者:嵌入式基地

    物联沃分享整理
    物联沃-IOTWORD物联网 » 基于STM32的OneNet物联网环境检测系统毕业设计

    发表回复