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 />

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>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>UART2ReadBuf</ItemText>
<ItemText>DevParam,0x0A</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>DevParam,0x0A</ItemText>
<ItemText>Usart3ReadBuf</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>1</WinNumber>
<ItemText>PublishData</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>
<ItemText>UART3ReadFlag</ItemText>
</Ww>
</WatchWindow1>
<Tracepoint>

View File

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

View File

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

View File

@@ -15,8 +15,7 @@ void Bat_GetWorkInfor(void)
DevParam.BatCheck++;
/***获取电池电压***/
DevParam.BatVoltage = ADC_GetSimpleData();
if(DevParam.BatVoltage >= 3.58)
{
if(DevParam.BatVoltage >= 3.58) {
/***转换电池容量***/
if(DevParam.BatVoltage>=4.16)
DevParam.ShortBatSOC = 100;
@@ -66,7 +65,7 @@ void Show_BatIconShapeRefresh(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
uint8_t i = 0;

View File

@@ -9,6 +9,7 @@ void Dev_ScanExtIndicate(void) {
Delay_ms(200);
if(Read_BootKey())
{
Power_3V3(1);
while(Read_BootKey());
DevParam.ShortRunPhase = RunPhase_Runing;
}
@@ -26,14 +27,13 @@ void Dev_ScanExtIndicate(void) {
Delay_ms(200);
if(Read_BootKey())
{
while(Read_BootKey());
while(Read_BootKey());
DevParam.ShortRunPhase = RunPhase_Runing;
}
}
}
// 运行模式
if(DevParam.RunPhase==RunPhase_Runing)
{
if(DevParam.RunPhase==RunPhase_Runing) {
if(Read_BootKey())
{
Delay_ms(200);
@@ -56,20 +56,20 @@ void Dev_SwitchWorkMode(void)
{
if(DevParam.RunPhase!=DevParam.ShortRunPhase)
{
if(DevParam.ShortRunPhase == RunPhase_Runing)
if(DevParam.ShortRunPhase == RunPhase_Runing)
{
// 显示初始化
#ifdef Device_LCD
Power_3V3(1);
Power_LCD(0);
/*显示部分,基础外形刷新*/
Show_BasicShapeRefresh();
/*显示部分,电池图标外形刷新*/
if(DevParam.RunPhase == 0)
Show_BatIconShapeRefresh();
else
Power_LCD(1);
#endif
// 侧边跳动初始化
@@ -78,9 +78,11 @@ void Dev_SwitchWorkMode(void)
/*空气检测仪初始化*/
PMD4_Init();
Power_LCD(1);
DevParam.RunPhase = RunPhase_Runing;
}
if(DevParam.ShortRunPhase == RunPhase_Standby)
if(DevParam.ShortRunPhase == RunPhase_Standby)
{
Power_PMD4(0);
@@ -90,7 +92,9 @@ void Dev_SwitchWorkMode(void)
if(DevParam.RunPhase==0)
{
/*显示部分,电池图标外形刷新*/
Show_BatIconShapeRefresh();
Show_BatIconShapeRefresh();
Power_LCD(1);
}
else if(DevParam.RunPhase==RunPhase_Runing)
{
@@ -113,9 +117,13 @@ void Dev_SwitchWorkMode(void)
if(DevParam.ShortRunPhase == RunPhase_Close)
{
Delay_ms(1000);
Power_PMD4(0);
Power_LCD(0);
Power_3V3(0);
DevParam.RunPhase = RunPhase_Close;
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+CIPMODE=1\r\n",(uint8_t *)"OK",200));
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
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+CIPMODE=1\r\n",(uint8_t *)"OK",200));
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;
memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf));
return 0;

View File

@@ -26,6 +26,7 @@ uint8_t NetWorkFlow = 1;
uint8_t Wssid[20] = "";
uint8_t Wpassword[20] = "";
#ifdef MQTT_SCode
char MQTT_ServerIP[20] = "106.12.9.213";
uint32_t MQTT_ServerPort = 1883;
@@ -33,6 +34,15 @@ static char MQTT_DeviceID[20] = "E8DB84933299";
static char MQTT_ClientID[100] = "user";
static char MQTT_Username[20] = "test";
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};
int len = 0;
@@ -173,8 +183,7 @@ void ESP8266_NetWorkFlow(void) {
/********************************/
/********************************/
#ifdef MQTT_AT
if(DevParam.MQTTSendTime >= 5000)
{
if(DevParam.MQTTSendTime >= 5000) {
// 定时发布设备状态
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",\

View File

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