1.主函数代码
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_delay.h"
#include "bsp_usart1.h"
#include "bsp_timer.h"
#include "bsp_usart2.h"
#include "bsp_dht11.h"
#include "bsp_adc.h"
#include "bsp_oled_iic.h"
#include "bsp_key.h"
#include "bsp_FMQ.h"
#include "gizwits_product.h"
#include "gizwits_protocol.h"
DHT11_Data_TypeDef DHT11_Data;
uint8_t Temp = 0;
extern uint16_t ADC_ConvertedValue[NOFCHANEL];
uint8_t MqValue = 0;
char oledbuf_temp[16];
char oledbuf_mqvalue[16];
uint8_t MqValue_Last = 0;
extern uint32_t WIFI_Status;
uint16_t MQ_yuzhi = 0;
uint16_t Temp_yuzhi = 0;
uint8_t Alarmflag = 0;
extern uint16_t TimeMs;
void HardwareInit()
{
LED_GPIO_Config();
DHT11_Init ();
USART1_Config();
Delay_Init();
ADCx_Init();
OLED_Init();
OLED_Clear();
HZ=GB16_NUM();
OLED_ShowCH(10,0,"烟雾报警系统");
FMQ_Init();
}
void GizwitConfig()
{
USART2_Config();
GENERAL_TIM_Init();
KEY_Init();
gizwitsInit();
}
void SetupNet()
{
if(KEY1 == RESET)
{
DelayMs(10);
if(KEY1 == RESET)
{
gizwitsSetMode(WIFI_SOFTAP_MODE);
printf("SOFTAP_MODE Set OK\n");
}
}
}
void OLED_show()
{
sprintf(oledbuf_temp,"Temp:%d.%d", DHT11_Data.temp_int,DHT11_Data.temp_deci);
OLED_ShowCH(10,3,(u8*)oledbuf_temp);
sprintf(oledbuf_mqvalue,"MQ:%d%%", MqValue);
OLED_ShowCH(10,5,(u8*)oledbuf_mqvalue);
}
void ReportStatus()
{
if(WIFI_Status == 1)
{
currentDataPoint.valuemqvalue = MqValue;
currentDataPoint.valueTemp = Temp;
currentDataPoint.valuebuzzer = Alarmflag;
}
}
void SmokeAlarm()
{
MQ_yuzhi = currentDataPoint.valuemq_yuzhi;
Temp_yuzhi = currentDataPoint.valueTemp_yuzhi;
if(Temp > Temp_yuzhi || MqValue > MQ_yuzhi)
{
if(Alarmflag == 1)
{
if(TimeMs == 1)
{
GPIO_SetBits(FMQ1_GPIO_PORT, FMQ1_GPIO_PIN);
GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
}
else
{
GPIO_ResetBits(FMQ1_GPIO_PORT, FMQ1_GPIO_PIN);
GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
}
}
else
{
GPIO_ResetBits(FMQ1_GPIO_PORT, FMQ1_GPIO_PIN);
GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
}
}
else
{
GPIO_ResetBits(FMQ1_GPIO_PORT, FMQ1_GPIO_PIN);
GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
}
}
int main()
{
HardwareInit();
GizwitConfig();
while(1)
{
SetupNet();
ReportStatus();
SmokeAlarm();
gizwitsHandle((dataPoint_t*)¤tDataPoint);//ÐÒé´¦Àí
if(DHT11_Read_TempAndHumidity(&DHT11_Data) == 1)
{
Temp = DHT11_Data.temp_int;
MqValue = (ADC_ConvertedValue[0]/40.96);
}
OLED_show();
}
}