赞
踩
本设计由STM32F103C8T6单片机核心板电路+温湿度传感器电路+烟雾传感器+ESP8266 WIFI模块+光照传感器BH1750构成。
STM32单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。
单片机最小系统原理图如下图所示:
1、ESP8266 简介(无线通信模块WIFI模块)
2、ESP8266相关功能:
实物图如下图所示:
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"); } }
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的回应
}
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 输出高
}
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();
}
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"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。