This commit is contained in:
yueming
2021-09-06 15:06:35 +08:00
parent f23caa6742
commit b0605eb980
11 changed files with 1583 additions and 1860 deletions

View File

@@ -1,6 +1,6 @@
### 一、项目简介 ### 一、项目简介
**本项目主要实现配网以及通过MQTT连接服务器的程。 本项目实现设备端从进行小程序配网到通过mqtt连接服务器的整个流程。
<br /> <br />

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -180,87 +180,17 @@
<Ww> <Ww>
<count>0</count> <count>0</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>UART2ReadBuf</ItemText> <ItemText>DevParam,0x0A</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>1</count> <count>1</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>DevParam,0x0A</ItemText> <ItemText>Usart3ReadBuf</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>2</count> <count>2</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>PublishData</ItemText> <ItemText>UART3ReadFlag</ItemText>
</Ww>
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>StringData</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>NetWorkFlow,0x0A</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>cmd</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>1</WinNumber>
<ItemText>UART2ReadBuf</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>1</WinNumber>
<ItemText>ret</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>haystack</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>1</WinNumber>
<ItemText>needle</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>1</WinNumber>
<ItemText>i,0x0A</ItemText>
</Ww>
<Ww>
<count>11</count>
<WinNumber>1</WinNumber>
<ItemText>j,0x0A</ItemText>
</Ww>
<Ww>
<count>12</count>
<WinNumber>1</WinNumber>
<ItemText>StringData</ItemText>
</Ww>
<Ww>
<count>13</count>
<WinNumber>1</WinNumber>
<ItemText>NewSite,0x0A</ItemText>
</Ww>
<Ww>
<count>14</count>
<WinNumber>1</WinNumber>
<ItemText>byte2,0x10</ItemText>
</Ww>
<Ww>
<count>15</count>
<WinNumber>1</WinNumber>
<ItemText>wait,0x10</ItemText>
</Ww>
<Ww>
<count>16</count>
<WinNumber>1</WinNumber>
<ItemText>byte1</ItemText>
</Ww> </Ww>
</WatchWindow1> </WatchWindow1>
<Tracepoint> <Tracepoint>

View File

@@ -67,8 +67,6 @@ void BSP_UART3Init(uint32_t bound){
} }
// 读取USARTx->SR能避免莫名其妙的错误 // 读取USARTx->SR能避免莫名其妙的错误
uint8_t Usart3ReadBuf[60] = {0};
uint16_t Usart3ReadFlag = 0;
void USART3_IRQHandler(void) void USART3_IRQHandler(void)
{ {
uint8_t res = 0; uint8_t res = 0;
@@ -77,13 +75,12 @@ void USART3_IRQHandler(void)
res = USART_ReceiveData(USART3); res = USART_ReceiveData(USART3);
// 是否存在数据没有处理 // 是否存在数据没有处理
if( (Usart3ReadFlag&0x8000)==0 ) if( (UART3ReadFlag&0x8000)==0 )
{ {
Usart3ReadBuf[Usart3ReadFlag] = res; UART3ReadBuf[UART3ReadFlag++] = res;
Usart3ReadFlag++; if(UART3ReadFlag>=59)
if(Usart3ReadFlag>=59)
{ {
Usart3ReadFlag |= (1 << 15); UART3ReadFlag |= (1 << 15);
} }
} }
} }

View File

@@ -34,7 +34,7 @@ int main()
while(1) while(1)
{ {
// 网络配网部分 // 网络配网部分
ESP8266_NetWorkFlow(); //ESP8266_NetWorkFlow();
// 网络数据接收处理 // 网络数据接收处理
ESP8266_NetReceiveInfor(); ESP8266_NetReceiveInfor();

View File

@@ -15,8 +15,7 @@ void Bat_GetWorkInfor(void)
DevParam.BatCheck++; DevParam.BatCheck++;
/***获取电池电压***/ /***获取电池电压***/
DevParam.BatVoltage = ADC_GetSimpleData(); DevParam.BatVoltage = ADC_GetSimpleData();
if(DevParam.BatVoltage >= 3.58) if(DevParam.BatVoltage >= 3.58) {
{
/***转换电池容量***/ /***转换电池容量***/
if(DevParam.BatVoltage>=4.16) if(DevParam.BatVoltage>=4.16)
DevParam.ShortBatSOC = 100; DevParam.ShortBatSOC = 100;
@@ -66,7 +65,7 @@ void Show_BatIconShapeRefresh(void)
/*显示部分,电池图标刷新*/ /*显示部分,电池图标刷新*/
void Show_BatIconRefresh(void) void Show_BatIconRefresh(void)
{ {
if((DevParam.BatIconRefreshTime>=500)&&(DevParam.BatCheck>=2)) if((DevParam.BatIconRefreshTime>=500)&&(DevParam.BatCheck>=2)&&(DevParam.RunPhase!=0))
{ {
#ifdef Device_LCD #ifdef Device_LCD
uint8_t i = 0; uint8_t i = 0;

View File

@@ -9,6 +9,7 @@ void Dev_ScanExtIndicate(void) {
Delay_ms(200); Delay_ms(200);
if(Read_BootKey()) if(Read_BootKey())
{ {
Power_3V3(1);
while(Read_BootKey()); while(Read_BootKey());
DevParam.ShortRunPhase = RunPhase_Runing; DevParam.ShortRunPhase = RunPhase_Runing;
} }
@@ -32,8 +33,7 @@ void Dev_ScanExtIndicate(void) {
} }
} }
// 运行模式 // 运行模式
if(DevParam.RunPhase==RunPhase_Runing) if(DevParam.RunPhase==RunPhase_Runing) {
{
if(Read_BootKey()) if(Read_BootKey())
{ {
Delay_ms(200); Delay_ms(200);
@@ -60,6 +60,8 @@ void Dev_SwitchWorkMode(void)
{ {
// 显示初始化 // 显示初始化
#ifdef Device_LCD #ifdef Device_LCD
Power_3V3(1);
Power_LCD(0); Power_LCD(0);
/*显示部分,基础外形刷新*/ /*显示部分,基础外形刷新*/
@@ -68,8 +70,6 @@ void Dev_SwitchWorkMode(void)
/*显示部分,电池图标外形刷新*/ /*显示部分,电池图标外形刷新*/
if(DevParam.RunPhase == 0) if(DevParam.RunPhase == 0)
Show_BatIconShapeRefresh(); Show_BatIconShapeRefresh();
else
Power_LCD(1);
#endif #endif
// 侧边跳动初始化 // 侧边跳动初始化
@@ -78,6 +78,8 @@ void Dev_SwitchWorkMode(void)
/*空气检测仪初始化*/ /*空气检测仪初始化*/
PMD4_Init(); PMD4_Init();
Power_LCD(1);
DevParam.RunPhase = RunPhase_Runing; DevParam.RunPhase = RunPhase_Runing;
} }
if(DevParam.ShortRunPhase == RunPhase_Standby) if(DevParam.ShortRunPhase == RunPhase_Standby)
@@ -91,6 +93,8 @@ void Dev_SwitchWorkMode(void)
{ {
/*显示部分,电池图标外形刷新*/ /*显示部分,电池图标外形刷新*/
Show_BatIconShapeRefresh(); Show_BatIconShapeRefresh();
Power_LCD(1);
} }
else if(DevParam.RunPhase==RunPhase_Runing) else if(DevParam.RunPhase==RunPhase_Runing)
{ {
@@ -113,9 +117,13 @@ void Dev_SwitchWorkMode(void)
if(DevParam.ShortRunPhase == RunPhase_Close) if(DevParam.ShortRunPhase == RunPhase_Close)
{ {
Delay_ms(1000); Delay_ms(1000);
Power_PMD4(0); Power_PMD4(0);
Power_LCD(0); Power_LCD(0);
Power_3V3(0); Power_3V3(0);
DevParam.RunPhase = RunPhase_Close; DevParam.RunPhase = RunPhase_Close;
while(1); while(1);
} }

View File

@@ -184,18 +184,13 @@ uint8_t ESP8266_STAConnect(char *name, char *password){
while(ESP8266_SendCMD((uint8_t *)"AT+CIPSTART=\"TCP\",\"192.168.0.102\",8086\r\n",(uint8_t *)"OK",200)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPSTART=\"TCP\",\"192.168.0.102\",8086\r\n",(uint8_t *)"OK",200));
while(ESP8266_SendCMD((uint8_t *)"AT+CIPMODE=1\r\n",(uint8_t *)"OK",200)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPMODE=1\r\n",(uint8_t *)"OK",200));
while(ESP8266_SendCMD((uint8_t *)"AT+CIPSEND\r\n",(uint8_t *)"OK",20)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPSEND\r\n",(uint8_t *)"OK",20));
UART2ReadFlag = 0;
memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf));
return 0;
#elif UDP_Mode #elif UDP_Mode
while(ESP8266_SendCMD((uint8_t *)"AT+CIPMUX=0\r\n",(uint8_t *)"OK",200)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPMUX=0\r\n",(uint8_t *)"OK",200));
while(ESP8266_SendCMD((uint8_t *)"AT+CIPSTART=\"UDP\",\"192.168.1.6\",8086,8086,0\r\n",(uint8_t *)"OK",200)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPSTART=\"UDP\",\"192.168.1.6\",8086,8086,0\r\n",(uint8_t *)"OK",200));
while(ESP8266_SendCMD((uint8_t *)"AT+CIPMODE=1\r\n",(uint8_t *)"OK",200)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPMODE=1\r\n",(uint8_t *)"OK",200));
while(ESP8266_SendCMD((uint8_t *)"AT+CIPSEND\r\n",(uint8_t *)"OK",20)); while(ESP8266_SendCMD((uint8_t *)"AT+CIPSEND\r\n",(uint8_t *)"OK",20));
UART2ReadFlag = 0;
memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf));
return 0;
#endif #endif
UART2ReadFlag = 0; UART2ReadFlag = 0;
memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf)); memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf));
return 0; return 0;

View File

@@ -26,6 +26,7 @@ uint8_t NetWorkFlow = 1;
uint8_t Wssid[20] = ""; uint8_t Wssid[20] = "";
uint8_t Wpassword[20] = ""; uint8_t Wpassword[20] = "";
#ifdef MQTT_SCode
char MQTT_ServerIP[20] = "106.12.9.213"; char MQTT_ServerIP[20] = "106.12.9.213";
uint32_t MQTT_ServerPort = 1883; uint32_t MQTT_ServerPort = 1883;
@@ -33,6 +34,15 @@ static char MQTT_DeviceID[20] = "E8DB84933299";
static char MQTT_ClientID[100] = "user"; static char MQTT_ClientID[100] = "user";
static char MQTT_Username[20] = "test"; static char MQTT_Username[20] = "test";
static char MQTT_Password[20] = "123456"; static char MQTT_Password[20] = "123456";
#elif MQTT_AT
char MQTT_ServerIP[20] = "106.12.9.213";
uint32_t MQTT_ServerPort = 1883;
static char MQTT_DeviceID[20] = "E8DB84933299";
static char MQTT_ClientID[100] = "user";
static char MQTT_Username[20] = "test";
static char MQTT_Password[20] = "123456";
#endif
uint8_t PublishData[500] = {0}; uint8_t PublishData[500] = {0};
int len = 0; int len = 0;
@@ -173,8 +183,7 @@ void ESP8266_NetWorkFlow(void) {
/********************************/ /********************************/
/********************************/ /********************************/
#ifdef MQTT_AT #ifdef MQTT_AT
if(DevParam.MQTTSendTime >= 5000) if(DevParam.MQTTSendTime >= 5000) {
{
// 定时发布设备状态 // 定时发布设备状态
memset((void *)PublishData, 0, sizeof(PublishData)); memset((void *)PublishData, 0, sizeof(PublishData));
sprintf((char *)PublishData,"AT+MQTTPUB=0,\"%s\",\"{\\\"deviceNum\\\":\\\"%s\\\"\\,\\\"isOnline\\\":1\\,\\\"rssi\\\":-73\\,\\\"airTemperature\\\":%d\\,\\\"remark\\\":\\\"\\\"}\",0,0\r\n",\ sprintf((char *)PublishData,"AT+MQTTPUB=0,\"%s\",\"{\\\"deviceNum\\\":\\\"%s\\\"\\,\\\"isOnline\\\":1\\,\\\"rssi\\\":-73\\,\\\"airTemperature\\\":%d\\,\\\"remark\\\":\\\"\\\"}\",0,0\r\n",\

View File

@@ -21,10 +21,13 @@ uint8_t PMD4_CheckSum(uint8_t *data) {
} }
// PM 初始化 // PM 初始化
void PMD4_Init(void) { void PMD4_Init(void) {
Power_PMD4(1);
Delay_ms(200);
BSP_UART3Init(9600); BSP_UART3Init(9600);
Power_PMD4(1); Delay_ms(200);
Delay_ms(20);
} }
// 请求获取空气信息 // 请求获取空气信息
@@ -71,7 +74,7 @@ void PMD4_GetAirInfor(void)
} }
if(DevParam.AirInforGetTime >= 2000) if(DevParam.AirInforGetTime >= 2000)
{ {
PMD4_ReqGetAirInfor(0xE2); //PMD4_ReqGetAirInfor(0xE2);
DevParam.AirInforGetTime = 0; DevParam.AirInforGetTime = 0;
} }
/**********显示实时空气信息*****************/ /**********显示实时空气信息*****************/
@@ -133,8 +136,7 @@ void PMD4_GetAirInfor(void)
#endif #endif
} }
/*显示部分,基础外形刷新*/ /*显示部分,基础外形刷新*/
void Show_BasicShapeRefresh(void) void Show_BasicShapeRefresh(void) {
{
#ifdef Device_LCD #ifdef Device_LCD
uint16_t x = 0, y = 0; uint16_t x = 0, y = 0;