Altium Designer画的空气检测仪电路原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "Delay.h"
- #include "SYS.h"
- #include "USART_1.h"
- #include "USART_2.h"
- #include "USART_3.h"
- #include "BMP280.h"
- #include "R8025AC.h"
- #include "AM2320.h"
- #include "BH1750.h"
- #include "ff.h"
- #include "IIC.h"
- #include "LED.h"
- #include "ESP8266.h"
- //#include "usb_lib.h"
- //#include "hw_config.h"
- //#include "usb_pwr.h"
- #include "Timer.h"
- #include "KEY.h"
- #include "SPI.h"
- #include "string.h"
- #include "extra_fun.h"
- extern u16 PM1_0,PM2_5,PM10;
- float Temperature,Humi;
- u16 Lux;
- s32 Pressure;
- void BSP_Init()
- {
- delay_init();
- IIC_Init();
- //uart_init(115200);
- USART2_Init();
- USART3_Init();
- SPI1_Init();
- KEY_Init();
- LED_Init();
- SD_Record_Init();
- R8025AC_Init();
- BMP280_Init();
-
- delay_ms(1000);//等待ESP8266初始化完成
- delay_ms(1000);//等待ESP8266初始化完成
- delay_ms(1000);//等待ESP8266初始化完成
- delay_ms(1000);//等待ESP8266初始化完成
- delay_ms(1000);//等待ESP8266初始化完成
-
- if(ESP8266_Init())
- {
- Set_LED2(1);
- USART3_BUF_Clear();//清除缓存
- while(!strstr((const char *)USART3_BUF, "WIFI GOT IP")){}//等待wifi配置
- Set_LED2(0);
- }
- USART3_Write("AT+CIPMODE=1\r\n", 14);//透传模式
- delay_ms(1000);
- USART3_Write("AT+CIPMUX=0\r\n", 13);//单连接
- delay_ms(1000);
-
- R8025AC_Get_NTPtime();//获取NTP时间
-
- TIM3_Int_Init(9,7199);
- Set_LED3(1);
- }
- int main(void)
- {
- u8 Flag_BH1750;
-
- BSP_Init();
-
- while(1)
- {
- if(Time_200ms>200)
- {
- Time_200ms=0;
-
- if(Flag_BH1750==0)
- {
- Flag_BH1750=1;
-
- BH1750_Wake();//启动BH1750
- }else
- {
- Flag_BH1750=0;
-
- BH1750_Get(&Lux);//读取BH1750
- }
-
- BMP280_Get(&Temperature, &Pressure);//读取BMP280
- }
-
- if(Time_1000ms>60000)//SD卡1分钟记录一次
- {
- Time_1000ms=0;
-
- SD_Record(PM1_0, PM2_5, PM10, Temperature, Humi, Pressure, Lux);
- }
-
- if(Time_3000ms>3000)//3秒钟一次
- {
- Time_3000ms=0;
-
- AM2320_Get(&Humi);//读取AM2320
- }
-
- if(Time_20000ms>20000)
- {
- Time_20000ms=0;
-
- Set_LED2(1);
- ESP8266_SendDate(PM1_0, PM2_5, PM10, Temperature, Humi, Pressure, Lux);//上传数据
- Set_LED2(0);
- }
-
- if(key_flag)//是否有按键按下
- {
- if(key_flag==1)
- {
- key_flag=0;
- R8025AC_Get_NTPtime();//获取NTP时间
- }else if(key_flag==2)
- {
- key_flag=0;
- USART3_Write("AT+RESTORE\r\n", 12);//恢复出厂设置
- while(1)
- {
- Set_LED1(0);
- Set_LED2(0);
- Set_LED3(0);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数据手册.rar
(4.56 MB, 下载次数: 51)
电路图.rar
(602.38 KB, 下载次数: 61)
程序.rar
(1.06 MB, 下载次数: 71)
|