|
使用STM32F103開發板,采集溫濕度,光照,空氣質量,火焰,將數據通過USART3發到ESP8266,ESP8266用STA模式連接路由器將數據發到OneNET云服務器,手機APP用HTTP協議獲取環境參數信息。
內含安卓app的源碼
0.png (44.07 KB, 下載次數: 82)
下載附件
2018-5-29 18:47 上傳
stm32單片機源程序如下:
- //單片機頭文件
- #include "stm32f10x.h"
- //網絡協議層
- #include "onenet.h"
- //網絡設備
- #include "esp8266.h"
- //硬件驅動
- #include "delay.h"
- #include "led.h"
- #include "beep.h"
- #include "dht11.h"
- #include "key.h"
- #include "flame.h"
- #include "adc.h"
- #include "light.h"
- #include "usart.h"
- #include "warning.h"
- #include "st_timer3.h"
- //C庫
- #include <string.h>
- // ADC1 轉換的電壓值通過DMA方式傳到SRAM
- extern __IO uint32_t ADC_ConvertedValue[NOFCHANEL];
- int16_t temp_max = 40;
- int16_t temp_min = 0;
- uint16_t humi_max = 90;
- uint16_t humi_min = 0;
- uint16_t timeCount = 0; //發送間隔變量
- //硬件初始化
- void Hardware_Init(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); //中斷控制器分組設置
- SysTick_Init(); //系統滴答定時器初始化
- TIM3_Config(); //時鐘TIM3初始化
- Usart1_Init(115200); //串口1,打印信息用
- Usart3_Init(115200); //串口3,驅動ESP8266用
-
- Led_Init(); //LED初始化
- Beep_Init(); //蜂鳴器初始化
- Key_Init(); //按鍵初始化
-
- DHT11_Init(); //溫濕度傳感器初始化
- ADCx_Init(); //ADC1和ADC2初始化
- LIGHT_GPIO_Config(); //光敏電阻GPIO配置
- Fire_Init(); //火焰傳感器初始化
- UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
- }
- int main(void)
- {
- uint16_t ADC1_Value = 0; //ADC1的轉換數據
- uint16_t ADC2_Value = 0; //ADC2的轉換數據
- float Illuminance; //光照度
- float airquality; //空氣質量
- uint16_t fire = 1; //火焰狀態,1 - 代表無火焰, 0 - 代表有火焰
-
- unsigned char *dataPtr = NULL;
-
- DHT11_Data_TypeDef DHT11_Data; //結構體:用于存放溫濕度數據
-
- Hardware_Init(); //初始化外圍硬件
- ESP8266_Init(); //初始化WIFI模塊
-
- while(OneNet_DevLink()) //接入OneNET云平臺
- {
- Delay_ms(500);
- }
-
- Beep_Set(BEEP_ON); //鳴叫提示接入云平臺成功
- Delay_ms(250);
- Beep_Set(BEEP_OFF);
-
- ESP8266_Clear();
-
- while(1)
- {
- Fire_Check(&fire); //火焰狀態檢測
- LightStatus_Check(); //光照亮暗檢測
- DHT11_Check(&DHT11_Data, temp_max, temp_min, humi_max, humi_min);//溫濕度越限檢測
-
- if(timeCount >= 300) //發送間隔3s
- {
- ESP8266_Clear();
-
- DHT11_Read_TempAndHumidity(&DHT11_Data);//讀取溫濕度數據
-
- UsartPrintf(USART_DEBUG, "--------------監測數據--------------\r\n");
- UsartPrintf(USART_DEBUG, "溫度:%d ℃\r\n", DHT11_Data.temp_int);
- UsartPrintf(USART_DEBUG, "濕度:%d %RH\r\n", DHT11_Data.humi_int);
- UsartPrintf(USART_DEBUG, "最高溫度:%d\r\n", temp_max);
- UsartPrintf(USART_DEBUG, "最低溫度:%d\r\n", temp_min);
- UsartPrintf(USART_DEBUG, "最大濕度:%d\r\n", humi_max);
- UsartPrintf(USART_DEBUG, "最小濕度:%d\r\n", humi_min);
-
- //取出ADC1數據寄存器的高16位,這個是ADC2(光敏電阻傳感器)的轉換數據
- ADC2_Value = (ADC_ConvertedValue[0]&0XFFFF0000) >> 16;
-
- //取出ADC1數據寄存器的低16位,這個是ADC1(空氣質量傳感器)的轉換數據
- ADC1_Value = (ADC_ConvertedValue[0]&0XFFFF);
-
- UsartPrintf(USART_DEBUG, "Light轉換數值:%d \r\n", ADC2_Value);
- UsartPrintf(USART_DEBUG, "MQ135轉換數值:%d \r\n", ADC1_Value);
-
- Light_Check(ADC2_Value, &Illuminance); //光照度檢測
- MQ135_Check(ADC1_Value, &airquality); //空氣質量檢測
-
- //上傳數據到云平臺
- OneNet_SendData(&DHT11_Data,light_arr,air_arr,fire,Illuminance,airquality,temp_max,temp_min,humi_max,humi_min);
-
- timeCount = 0;
- ESP8266_Clear();
- }
- dataPtr = ESP8266_GetIPD(0);
- if(dataPtr != NULL)
- {
- OneNet_RevPro(dataPtr); //平臺返回數據檢測
- }
- }
- }
復制代碼
所有資料51hei提供下載:
Code.7z
(15.87 MB, 下載次數: 184)
2023-8-2 18:13 上傳
點擊文件名下載附件
STM32+Android 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|