<nav id="kmsh7"><code id="kmsh7"><nobr id="kmsh7"></nobr></code></nav>
    <sub id="kmsh7"></sub>

    <big id="kmsh7"></big>
    <sub id="kmsh7"></sub>
    <form id="kmsh7"></form>
    <nav id="kmsh7"></nav>

          侵權投訴

          完善資料讓更多小伙伴認識你,還能領取20積分哦, 立即完善>

          3天內不再提示

          STM32+ESP8266連接騰訊IOT微信小程序一鍵配網

          DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-03-18 09:20 ? 次閱讀

          ?

          一、環境介紹

          編程軟件:keil5

          主控MCU:STM32F103C8T6

          WIFI: ESP8266

          協議: MQTT

          二、前言

          這里的 WIFI型號不重要、主控MCU不重要,連接的物聯網平臺也不重要。

          要完成本章節的內容,只要會熟悉某款單片機的編程、了解基本的網絡編程,明白MQTT協議、能讀懂每個物聯網云平臺的幫助文檔都可以完成最終的效果。

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          三、功能介紹

          前面有幾篇內容都介紹了如何使用在騰訊物聯網平臺創建設備,完成微信小程序與設備進行交互;這些設備代碼里的連接的WIFI名稱和密碼都是固定,只能通過每次修改程序、編譯、下載才能更改。一個正常的物聯網智能設備,這樣操作肯定是不合理的,所以這篇內容就完成如何使用微信小程序一鍵配網,完成設備的WIFI切換、連接。

          現在我們購買的智能設備都有自己的配網方式,比如: 小米的很多設備,小愛音箱,攝像頭,掃地機器人等。這些設備買回來之后,用戶可以參考說明書,完成對設備的配置,讓設備連接上家里的WIFI,完成網絡連接。

          本次我以智能鎖為產品模型,在騰訊物聯網平臺創建一個設備,使用STM32F103系統板+ESP8266+LED燈完成智能鎖產品的模擬開發;用戶設備端可以按下指定的按鍵進入配網模式,打開騰訊官方的微信小程序,掃描產品二維碼,根據步驟完成對設備的配網操作。

          騰訊物聯網支持了好幾種配網模式,我這里選擇的是“softAP”模式來完成配網操作。

          softAP 模式配網的原理介紹: 正常情況下我們買回來的新設備內部是沒有我們自己家WIFI的信息的,也就是說這個設備上電之后自己不知道該連接哪一個WIFI;這時我們就需要想辦法把我們自己家里的WIFI名稱、WIFI密碼告訴這個設備,這個設備就可以去連接了。 那問題是怎么去告訴設備這些信息? 設備一般都有進入配網模式的按鈕,進入配網模式之后,會將設備內部的WIFI設置成“softAP”模式,也就是設備自己會創建一個WIFI熱點出來并創建UDP服務器監聽連接,這時我們打開騰訊官方的微信小程序,按照指引去連接這個WIFI,連上之后,微信小程序會通過UDP協議將WIFI的配置信息傳輸給設備WIFI,設備WIFI收到之后,再切換模式為STA模式,去連接目標WIFI,連接成功之后,登錄云平臺,綁定設備,完成配網。 這其中的交互協議,后面再細說。

          四、在騰訊云平臺上創建智能鎖

          本章節只會展示幾個關鍵步驟,如果之前沒有使用過騰訊物聯網云平臺可以參考這里學習一遍:STM32+ESP8266+MQTT協議連接騰訊物聯網開發平臺_DS小龍哥的博客-CSDN博客

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          功能很簡單,只有一個屬性,就是鎖的開關狀態。

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          這里可以配置微信小程序的詳細參數,配網的設置也這個頁面上:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          下面進行配網設置:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          選擇配網模式:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          這個頁面比較重要,需要將設備進入配網的方法告訴用戶,引導用戶去操作,完成進入配網模式:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          保存之后,打開微信小程序“騰訊連連”,掃描右下角的這個二維碼,進行配網,完成設備添加。(一般正常產品,會將這個二維碼打印出來,貼在設備上,方便用戶掃描)

          (提示: 做這一步,要先設計好設備端的程序,設備上電能正常的運行,才能做)

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          下面是手機上的截圖: (根據頁面上的提示操作設備)

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          按下開發板子上的S2進入配網模式:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          在串口上也可以看到提示信息。

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          這時繼續操作微信小程序上的步驟,選擇設備的WIFI進行連接: 之后在下一個頁面會自動等待配網成功(沒有截圖),設備配網成功之后會出現提示,這時設備就已經在線了

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          ?

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          打開控制臺已經看到設備上線了:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          這時進入小程序頁面,就可以對智能鎖進行操作了:

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          到此,配網已經完成,接下來就介紹設備端的代碼。

          五、STM32設備端代碼--這才是核心

          關于配網的流程,在騰訊官網有詳細介紹,看這里:物聯網開發平臺 softAP 配網開發 - 設備端開發指南 - 文檔中心 - 騰訊云

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?

          由于關聯代碼較多,這里只提供主要的邏輯代碼,其他的代碼可以自己下載完整源碼查看:基于STM32+ESP8266設計智能鎖(支持微信小程序一鍵配網連接騰訊云平臺).7z_STM32+ESP8266-嵌入式文檔類資源-CSDN下載

          完整項目源碼下載地址:https://download.csdn.net/download/xiaolong1126626497/19137788

          main.c 代碼:

          #include "stm32f10x.h"
          #include "led.h"
          #include "delay.h"
          #include "key.h"
          #include "usart.h"
          #include 
          #include "timer.h"
          #include "bluetooth.h"
          #include "esp8266.h"
          #include "mqtt.h"
          
          /*
          智能鎖(自己的設備)
          
          MQTT服務器地址: 106.55.124.154
          MQTT服務器端口: 1883
          MQTT客戶端ID: 3XM7FNOG4Llock
          MQTT用戶名: 3XM7FNOG4Llock;12010126;F8Q4P;1624710719
          MQTT登錄密碼: 5d87e9a5bf8ae6295493c263b91aaebc4311f3e95763efe7f31be76c8578f9ec;hmacsha256
          
          訂閱主題: $thing/down/property/3XM7FNOG4L/lock
          發布主題: $thing/up/property/3XM7FNOG4L/lock
          發布消息: {"method":"report","clientToken":"123","params":{"lock":1}}
          */
          
          #define SERVER_IP "106.55.124.154"http://服務器IP
          #define SERVER_PORT 1883 //端口號
          
          #define CONNECT_WIFI  "_CMCC-Cqvn"   //將要連接的路由器名稱 --不要出現中文、空格等特殊字符
          #define CONNECT_PASS "_99pu58cb"     //將要連接的路由器密碼
          
          //騰訊物聯網服務器的設備信息
          #define MQTT_ClientID "3XM7FNOG4Llock"
          #define MQTT_UserName "3XM7FNOG4Llock;12010126;F8Q4P;1624710719"
          #define MQTT_PassWord "5d87e9a5bf8ae6295493c263b91aaebc4311f3e95763efe7f31be76c8578f9ec;hmacsha256"
          
          //訂閱與發布的主題
          #define SET_TOPIC  "$thing/down/property/3XM7FNOG4L/lock"  //訂閱
          #define POST_TOPIC "$thing/up/property/3XM7FNOG4L/lock"  //發布
          
          //微信小程序配網數據訂閱與發布
          #define SET_WEIXIN_TOPIC  "$thing/down/service/3XM7FNOG4L/lock"http://訂閱
          #define POST_WEIXIN_TOPIC "$thing/up/service/3XM7FNOG4L/lock"http://發布
          
          char mqtt_message[200];//上報數據緩存區
          
          int main()
          {
             u32 time_cnt=0;
             u32 i;
             u8 key;
             u8 stat=0;
              
             //1.初始化需要使用的硬件
             LED_Init();
             BEEP_Init();
             KEY_Init();
              
             //2. 初始化串口1(打印調試信息)與串口3(與WIFI通信)
             USART1_Init(115200);
             TIMER1_Init(72,20000); //超時時間20ms
             USART3_Init(115200);//串口-WIFI
             TIMER3_Init(72,20000); //超時時間20ms
             USART1_Printf("正在初始化WIFI請稍等.\n");
            
             //3. 檢測WIFI硬件 
             while(1)
             {
                  //如果硬件有問題. 蜂鳴器以300ms的頻率報警
                  if(ESP8266_Init())
                  {
                    delay_ms(300);
                    BEEP=!BEEP;
                    USART1_Printf("ESP8266硬件檢測錯誤.\n");  
                  }
                  else
                  {
                      BEEP=0; //關閉蜂鳴器
                      break;  //硬件沒有問題. 退出檢測
                  }
             }       
            
             //4. 上電如果檢測到S2按鍵按下就表示需要進入配網狀態
              if(KEY_S2)
              {
                  delay_ms(100);
                  if(KEY_S2)
                  {
                      while(1)//連接服務器
                      {
                          printf("進入配網模式.....\n");
                          BEEP=1;
                          delay_ms(100);
                          BEEP=0;
                          
                          //清除之前的WIFI連接信息(連接個無效的WIFI),防止默認連接上 上次的WIFI,導致配網錯誤
                          ESP8266_SendCmd("AT+CWJAP="666","12345678"\r\n");
                          delay_ms(200);
                          
                          stat=Esp8266_STA_TCPclinet_Init((u8 *)SERVER_IP,SERVER_PORT);
                          if(stat==0 || stat==0x80)break;
                          delay_ms(500);
                          printf("stat=%d\r\n",stat);
                      }
                  }
                  else
                  {
                      stat=0xFF;
                  }
              }
              else
              {
                  stat=0xFF;
              }
              
              //連接默認WIFI
              if(stat==0xFF)
              {
                  printf("連接默認的WIFI.\n");
                   //非加密端口
                  USART1_Printf("WIFI:%d\n",ESP8266_STA_TCP_Client_Mode(CONNECT_WIFI,CONNECT_PASS,SERVER_IP,SERVER_PORT,1));
              }
              
              //2. MQTT協議初始化	
              MQTT_Init(); 
              //3. 連接OneNet服務器        
              while(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord))
              {
                  USART1_Printf("服務器連接失敗,正在重試...\n");
                  delay_ms(500);
              }
              USART1_Printf("服務器連接成功.\n");
              
              //3. 訂閱主題
              if(MQTT_SubscribeTopic(SET_TOPIC,0,1))
              {
                  USART1_Printf("主題訂閱失敗.\n");
              }
              else
              {
                  USART1_Printf("主題訂閱成功.\n");
              }        
             
              
              if(stat==0x80)//進入配網模式需要給微信小程序返回token值
              {
                    //訂閱微信topic
                   if(MQTT_SubscribeTopic(SET_WEIXIN_TOPIC,0,1))printf("訂閱失敗\r\n"); 
                  //返回平臺數據,告知微信連連連接服務器成功
                  snprintf(mqtt_message,sizeof(mqtt_message),"{"method":"app_bind_token","clientToken":"client-1234","params": {"token":"%s"}}",esp8266_info.token);
                  MQTT_PublishData(POST_WEIXIN_TOPIC,mqtt_message,0);
                  //Smart_home{"method":"app_bind_token_reply","clientToken":"client-1234","code":0,"status":"success"} 配網成功后微信小程序返回數據
              }
              
              while(1)
              {    
                  key=KEY_Scan(0);
                  if(key==2)
                  {
                      time_cnt=0;
                      sprintf(mqtt_message,"{"method":"report","clientToken":"123","params":{"lock":1}}");
                      MQTT_PublishData(POST_TOPIC,mqtt_message,0);
                      USART1_Printf("開鎖.\r\n");
                  }
                  else if(key==3)
                  {
                      time_cnt=0;
                      sprintf(mqtt_message,"{"method":"report","clientToken":"123","params":{"lock":0}}");
                      MQTT_PublishData(POST_TOPIC,mqtt_message,0);
                      USART1_Printf("關鎖\r\n");
                  }  
          
                  if(USART3_RX_FLAG)
                  {
                      USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                      for(i=0;i
          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ESP8266的核心代碼:

          //存放ESP8266的詳細信息
          struct ESP8266 esp8266_info;
          
          /*SoftAP配網*/
          u8 ESP8266_SoftAP_MOde(void)
          {
              u8 token[]="{"cmdType":2,"productId":"3XM7FNOG4L","deviceName":"lock","protoVersion":"2.0"}\r\n";//連接狀態信息
              char *p=NULL;
              char data[256];
              char buff[100];
              u8 i=0;
              u32 time1=0,time2=0;
              USART3_RX_CNT=0;
              USART3_RX_FLAG=0;
              while(1)
              {
                  if(USART3_RX_FLAG)
                  {
                      USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                      printf("rx=%s",USART3_RX_BUFFER);
                      //+IPD,97,192.168.4.2,52021:{"cmdType":1,"ssid":"wbyq_wifi","password":"12345678","token":"df4a4c90abee98c9a443ae8ffd8cc16b"
                      p=strstr((char *)USART3_RX_BUFFER,"+IPD");
                      if(p)
                      {
                          strcpy(data,p);//將接收到的數據拷貝一份保存
                          p+=strlen("+IPD");
                          p+=1;
                          while(*p!=',' && *p!='\0')p++;
                          p++;//跳過字符',',獲取到IP地址起始位置
                          i=0;
                          //IP地址解析
                          while(*p!=',' && *p!='\0')
                          {
                             buff[i++]=*p++;
                          }
                          buff[i]='\0';
                          strcpy((char *)esp8266_info.esp8266_ip,buff);
                          //端口號解析
                          p++;
                          i=0;
                          while(*p!=':' && *p!='\0')
                          {
                             buff[i++]=*p++; 
                          }
                          buff[i]='\0';
                          esp8266_info.esp8266_prot=atoi(buff);//字符串轉整數
                          //printf("ip=%s:%d\r\n",esp8266_info.esp8266_ip,esp8266_info.esp8266_prot);
                          printf("ret:%d\r\n",Esp8266_UDP_SendData((u8*)esp8266_info.esp8266_ip,esp8266_info.esp8266_prot,token));//上報連接狀態
                      }
                     ESP8266_GetData(data,(char *)esp8266_info.esp8266_name,"ssid");//WIFI名
                     ESP8266_GetData(data,(char *)esp8266_info.esp8266_key,"password");//密碼
                     ESP8266_GetData(data,(char *)esp8266_info.token,"token");//token數據,需要返回給平臺
                     printf("wifi_name:%s\r\n",esp8266_info.esp8266_name);
                     printf("wifi_key:%s\r\n",esp8266_info.esp8266_key); 
                     printf("wifi_token:%s\r\n",esp8266_info.token);            
                     LED1=1;
                     return 0;
                  }
                  delay_ms(1);
                  time1++;
                  time2++;
                  if(time2>=100)
                  {
                     time2=0;
                     LED1=!LED1;
                  }  
                  if(time1>=1000*300)
                  {
                      LED1=1;
                      break;//超時退出
                  }
              }
              return 1;
          }
          
          
          /*******************************************************************************************************************
          **形參: wifi_name --WIFI名
          **      password  --密碼
          **      remote_ip  --遠端IP地址(255.255.255.255為廣播地址)
          **      remote_prot  --遠端端口號
          **      localhost    ---本地端口號
          **返回值:0 --成功,
          **       其它值 --失敗
          **示例:ESP8266_UDP_STA_Mode("360WIFI_123","12345678","172.20.7.2",10500,8080);
          *********************************************************************************************************************/
          u8 ESP8266_UDP_STA_Mode(u8 *wifi_name,u8 *password,u8 *remote_ip,u16 remote_prot,u16 localprot)
          {
              char buff[100];
              USARTx_StringSend(USART3,"+++"); //退出透傳模式
              delay_ms(1000);
              
              printf("重啟模塊.......\r\n");
              USARTx_StringSend(USART3,"AT+RST\r\n");
              delay_ms(1000);
              delay_ms(1000); 
              printf("關回顯.......\r\n");
              if(ESP8266_SendCmd("ATE0\r\n"))return 2; 
              printf("設置為STA模式.......\r\n");
              if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;   
              printf("連接WIFI.......\r\n");
              snprintf(buff,sizeof(buff),"AT+CWJAP="%s","%s"\r\n",wifi_name,password);
              if(ESP8266_SendCmd(buff))return 5;   
              printf("查詢IP.......\r\n");
              if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 6; 
              printf("建立UDP連接.....\r\n");
              snprintf(buff,sizeof(buff),"AT+CIPSTART="UDP","%s",%d,%d,0\r\n",remote_ip,remote_prot,localprot);
              if(ESP8266_SendCmd(buff))return 7; 
              printf("設置透傳.......\r\n");
              if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 8; 
              printf("發送數據.......\r\n");
              USARTx_StringSend(USART3,"AT+CIPSEND\r\n");
              return 0;
          }
          
          
          /****************STA+TCPclinet初始化*************
          **
          **
          const char *STA_TCPCLINET[]=
          {
          	"AT\r\n",//測試指令
          	"ATE0\r\n",//關回顯
          	"AT+CWMODE=1\r\n",//設置STA模式
          	"AT+RST\r\n",//模塊復位
          	"ATE0\r\n",//關回顯
          	"AT+CWJAP="HUAWEIshui","asdfghjkl12"\r\n",//連接wifi
          	"AT+CIPMUX=0\r\n",//設置單連接
          	"AT+CIFSR\r\n",//查詢IP
          	"AT+CIPSTART="TCP","192.168.43.204",8080\r\n",//連接服務器
          	"AT+CIPMODE=1\r\n",//設置透傳模式
          	"AT+CIPSEND\r\n",//開始發送數據
          };
          返回值: 0x7f --退出透傳模式失敗
          **      0x80 --進入配網模式正常退出
          **      0    --未進入配網模式正常退出
          **      其他值  --異常退出
          *****************************************************/
          u8 Esp8266_STA_TCPclinet_Init(u8 *server_ip,u16 server_port)
          {
          	char buff[100];
          	/*退出透傳模式*/
          	u8 i=0;
              u8 stat=0;
              u32 id;
          	for(i=0;i<5;i++)
          	{
          		USARTx_StringSend(USART3,"+++");//退出透傳模式
          		delay_ms(100);
          		if(Esp8266_SendCmdCheckStat("AT\r\n","OK\r\n")==0)
          		{
          			i=0;
          			break;
          		}
          	}
          	if(i!=0)
          	{
          		printf("退出透傳模式失敗\r\n");
          		return 0x7f;
          	}
          	printf("1.模塊復位\r\n");
          	if(Esp8266_SendCmdCheckStat("AT+RST\r\n","OK\r\n"))return 1;	
          	delay_ms(1000);
          	delay_ms(1000);
          	printf("2.關回顯\r\n");
          	if(Esp8266_SendCmdCheckStat("ATE0\r\n","OK\r\n"))return 2;  
              if(ESP8266_GetWifi_Stat())//查詢WIFI連接狀態,未連接成功則進入配網模式
              {
                  BEEP=1;
                  delay_ms(100);
                  BEEP=0;
                  delay_ms(100);
                  BEEP=1;
                  delay_ms(100);
                  BEEP=0;
                  stat=1;//進入配網模式標志位 
                  //查詢IP地址  
                  printf("3.設置模式AP\r\n");
                  if(Esp8266_SendCmdCheckStat("AT+CWMODE=2\r\n","OK\r\n"))return 3;	
                  printf("4.設置IP地址\r\n");
                  if(Esp8266_SendCmdCheckStat("AT+CIPAP=\"192.168.4.1\",\"192.168.4.1\",\"255.255.255.0\"\r\n","OK"))return 4;
                  printf("4.設置熱點信息\r\n");
                  id=*(vu32*)(0x1FFFF7E8);//使用STM32的ID作為WIFI名
                  snprintf((char *)esp8266_info.esp8266_name,sizeof(esp8266_info.esp8266_name),"wbyq_%d",id);
                  snprintf(buff,sizeof(buff),"AT+CWSAP=\"%s\",\"12345678\",1,4\r\n",esp8266_info.esp8266_name);
                  printf("wif_name:%s\r\n",esp8266_info.esp8266_name);
                  
                  if(Esp8266_SendCmdCheckStat(buff,"OK\r\n"))return 5; 
                  printf("5.顯示端口.......\r\n");
                  if(Esp8266_SendCmdCheckStat("AT+CIPDINFO=1\r\n","OK"))return 6;     
                  printf("6.設置要連接的UDP\r\n"); 
                  if(Esp8266_SendCmdCheckStat("AT+CIPSTART=\"UDP\",\"192.168.4.255\",8266,8266,0\r\n","OK\r\n"))return 7; 
                  printf("7.獲取微信小程序傳遞過來的熱點信息\r\n");
                  if(ESP8266_SoftAP_MOde())return 8;
                  printf("8.設置模式STA\r\n");
                  if(Esp8266_SendCmdCheckStat("AT+CWMODE=1\r\n","OK\r\n"))return 9;	
                  printf("9.模塊復位\r\n");
                  if(Esp8266_SendCmdCheckStat("AT+RST\r\n","OK\r\n"))return 10;	
                  delay_ms(1000);
                  delay_ms(1000);
                  printf("10.連接WIFI\r\n");
                  snprintf((char *)buff,sizeof(buff),"AT+CWJAP=\"%s\",\"%s\"\r\n",esp8266_info.esp8266_name,esp8266_info.esp8266_key);//字符串拼接
                  if(Esp8266_SendCmdCheckStat(buff,"WIFI GOT IP"))return 11;        
              }
          	printf("11.設置單連接\r\n");
          	if(Esp8266_SendCmdCheckStat("AT+CIPMUX=0\r\n","OK"))return 12;		
          	snprintf(buff,sizeof(buff),"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",server_ip,server_port);
          //	printf("buff:%s\r\n",buff);
          	printf("12.連接服務器\r\n");
          	if(Esp8266_SendCmdCheckStat(buff,"OK"))return 13;	
          	printf("13.配置透傳模式\r\n");
          	if(Esp8266_SendCmdCheckStat("AT+CIPMODE=1\r\n","OK\r\n"))return 14;	
          	printf("14.開始發送數據\r\n");
          	if(Esp8266_SendCmdCheckStat("AT+CIPSEND\r\n",">"))return 15;	
          	if(stat)return 0x80;//進入配網模式并且正常退出
              else return 0;//未進入配網模式,正常退出
          }
          
          /**************************獲取WIFI連接狀態信息***************************/
          u8 ESP8266_GetWifi_Stat(void)
          {
              u16 i=0;
              u16 time=0;
              u16 time2=0;
              USART3_RX_CNT=0;
              USART3_RX_FLAG=0;
              USARTx_StringSend(USART3,"AT+CWJAP?\r\n");//查詢WIFI連接狀態
              while(1)
              {
                 if(USART3_RX_FLAG)
                 {
                     USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                     printf("rx=%s\r\n",USART3_RX_BUFFER);
                     if(strstr((char *)USART3_RX_BUFFER,"+CWJAP") || strstr((char *)USART3_RX_BUFFER,"WIFI GOT IP"))
                     {
                          USART3_RX_CNT=0;
                          USART3_RX_FLAG=0;
                          LED1=1;
                          return 0;
                     }
                     else
                     {
                        USART3_RX_CNT=0;
                        USART3_RX_FLAG=0;
                        memset(USART3_RX_BUFFER,0,sizeof(USART3_RX_BUFFER));
                     }
                 }
                 delay_ms(10);
                 i++;
                 time++;
                 time2++;
                 if(time>=1000)
                 {
                      time=0;
                      USARTx_StringSend(USART3,"AT+CWJAP?\r\n");
                 }
                 if(time2>=300)
                 {
                      LED1=!LED1;
                     time2=0;
                 }
                 if(i>=100*60)
                 {
                     LED1=1;
                     break;
                 }
              }
              return 1;
          }
          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

          ?


          ?

          收藏 人收藏

            評論

            相關推薦

            兆易創新GD32L233系列主流型低功耗MCU簡介

            隨著5G、人工智能、物聯網等新興技術和傳統行業快速融合,設計人員為滿足智能化的市場需求,集成各種功能....
            的頭像 電子發燒友網 發表于 03-26 11:59 ? 74次 閱讀

            ST再發漲價函;ASML發出產能預警,未來幾年無法順利交付所有訂單

            意法半導體再發漲價函,功率、模擬、MCU供應緊張情緒恐延續 ? 3月24日,繼2月份英飛凌漲價函后,....
            的頭像 21克888 發表于 03-26 06:26 ? 246次 閱讀
            ST再發漲價函;ASML發出產能預警,未來幾年無法順利交付所有訂單

            雅特力AT32F425系列MCU獲百佳泰實驗室COMPLIANCE PROGRAM USB2.0測試認證

            雅特力AT32F425系列MCU在百佳泰測試認證實驗室通過USB 2.0一致性測試,并取得“USB2....
            發表于 03-25 17:52 ? 382次 閱讀
            雅特力AT32F425系列MCU獲百佳泰實驗室COMPLIANCE PROGRAM USB2.0測試認證

            國產 RISC-V架構內核MCU 廠商 大盤點(二)

            大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是國內RISC-V內核MCU廠商。上一期《國內RISC-V內...
            發表于 03-25 17:33 ? 673次 閱讀
            國產 RISC-V架構內核MCU 廠商 大盤點(二)

            國產 RISC-V架構內核MCU 廠商 大盤點(一)

            雖然RISC-V風潮已經吹了好幾年,但2019年才是其真正進入主流市場的元年,最近國內大量芯片公司崛起,其中有很多公司想在RI...
            發表于 03-25 17:16 ? 727次 閱讀
            國產 RISC-V架構內核MCU 廠商 大盤點(一)

            RT-Thread實戰筆記資料匯總

            1、SPI 通訊協議介紹 SPI(Serial Peripheral Interface,串行外設接口)是一種高速、全雙工、同步通信總線,常用于...
            發表于 03-25 15:54 ? 579次 閱讀

            HTTP及MQTT比較分析

            MQTT(消息隊列遙測傳輸)是ISO標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的....
            的頭像 廈門市物聯網行業協會 發表于 03-25 14:00 ? 113次 閱讀

            STM32CubeProgrammer和STM32CubeMonitor的新功能

            ST 近期推出新版本的 STM32CubeProgrammer、STM32CubeMonitor、S....
            的頭像 MCU開發加油站 發表于 03-25 11:29 ? 155次 閱讀

            國密算法成員介紹

            極海APM32F407系列MCU,結合當前環境要求,設計出了支持國密算法(SM2,SM3,SM4)的....
            的頭像 MCU開發加油站 發表于 03-25 11:25 ? 133次 閱讀

            NV040D語音芯片在充電柜上的應用

            電動車已經成為市民的主要出行工具,據官方數據統計,目前中國電動自行車保有量超過2.5億輛,而年產量達....
            的頭像 九芯電子語音IC 發表于 03-25 11:24 ? 99次 閱讀

            嵌入式 STM32的GPIO系統

            嵌入式 STM32的GPIO系統,格式為ppt,有需要的同學可以下載。 ...
            發表于 03-25 10:25 ? 704次 閱讀

            第二代低功耗MCU—RJM8L151S系列

            瑞納捷半導體發布了第二代低功耗MCU—RJM8L151S系列,該系列是第一代RJM8L151系列的全....
            發表于 03-25 10:13 ? 146次 閱讀
            第二代低功耗MCU—RJM8L151S系列

            STM32+BH1750光敏傳感器獲取光照強度

            使用IIC模擬時序驅動,方便移植到其他平臺,采集的光照度比較靈敏. 合成的光照度返回值范圍是 0~....
            的頭像 DS小龍哥-嵌入式技術 發表于 03-25 09:26 ? 74次 閱讀
            STM32+BH1750光敏傳感器獲取光照強度

            【畢業設計】STM32的智慧空調系統

            摘要:在悶熱的夏天,外出回家就能享受涼爽的室內環境是每個人都期盼的,基于此想法設計了以STM32為控制器, esp8266為無線通信模...
            發表于 03-24 18:07 ? 1625次 閱讀

            迅為STM32MP157開發板使用手冊更新啦

            最新版本為1.2版本。后續資料會不斷更新,不斷完善,幫助大家快速入門,大大提升研發速度。 本次更新包括配套網盤資料和配套開...
            發表于 03-24 16:39 ? 463次 閱讀
            迅為STM32MP157開發板使用手冊更新啦

            精品分享:基于STM32 的 Open-watch 手工智能手表(附原理圖代碼)

            Open-Watch:一款開源的手工智能手表 Open-Watch 是為我們的 B.Sc 開發的開源智能手表項目。畢業論文。這款智能手表可以測...
            發表于 03-24 16:09 ? 2422次 閱讀
            精品分享:基于STM32 的 Open-watch 手工智能手表(附原理圖代碼)

            CA51F2系列MCU中文用戶手冊

              CA51F2系列芯片是基于1T8051內核的8位Flash微控制器,通常情況下,運行速度比傳統的....
            發表于 03-24 15:23 ? 15次 閱讀

            emwin開發教程免費下載

            emwin開發教程免費下載.用于窗口開發,st-emwin
            發表于 03-24 15:09 ? 9次 閱讀

            基于ARM內核的32位高級MCU的stm32f407中文手冊

              本參考手冊面向應用開發人員,提供有關使用 STM32F405xx/07xx、STM32F415x....
            發表于 03-24 15:07 ? 17次 閱讀

            C語言和STM32學習的一些學習筆記

            自己總結的一些C語言和STM32F1學習的一些筆記,適合想快速了解學習C語言和STM32單片機的同學
            發表于 03-24 14:53 ? 32次 閱讀

            4軸芯片運動控制芯片MCX514運動控制器設計方案

            運動控制4軸芯片MCX514,電源電壓3.3V±10%,可做定位(positioning contr....
            的頭像 inr999 發表于 03-24 14:34 ? 933次 閱讀

            RT-Thread實現分布式溫度監控系統的教程合集

            分布式溫度監控系統基于 STM32 系類芯片開發,支持采集多達六個分節點的溫度數據,網關節點收集分節點的數據并通過 WIFI...
            發表于 03-24 11:00 ? 541次 閱讀

            SEGGER_RTT是什么?如何去使用它

            SEGGER_RTT 本文目標人群 開發的時候經常采用 jlink 的硬件調試器進行調試(ST-LINK 也可以刷成 JLINK)...
            發表于 03-24 10:06 ? 447次 閱讀

            BMS專題之BMS基礎功能模塊特性參數上海航芯解讀

            BMS(電池管理系統)的功能模塊由微控制器(MCU)的控制模塊和模擬前端(AFE)的傳感模塊組成。 ....
            的頭像 TEL15286334923 發表于 03-23 20:33 ? 1857次 閱讀
            BMS專題之BMS基礎功能模塊特性參數上海航芯解讀

            ST推Stellar E系列電動汽車專用微控制器

            Stellar E系列電動汽車專用微控制器,促進集中式電氣架構發展 簡化車載充電機高能效功率模塊和數....
            的頭像 半導體芯科技SiSC 發表于 03-23 19:36 ? 537次 閱讀

            MCU芯片的定義、原理及應用

            MCU芯片是業內人士的專業術語。如果是外行,可能沒聽說過MCU芯片。即使你聽說過這個名字,你也不知道....
            的頭像 Forwordye 發表于 03-23 16:26 ? 308次 閱讀

            WBx系列低功耗嵌入式Wi-Fi+BLE雙協議模組簡介

            WBx 系列模組是由杭州涂鴉信息技術有限公司開發的一款低功耗嵌入式 Wi-Fi+BLE 雙協議模組。....
            的頭像 xinling技術 發表于 03-23 16:07 ? 1815次 閱讀
            WBx系列低功耗嵌入式Wi-Fi+BLE雙協議模組簡介

            愛普特加速推進全國產MCU產業戰略布局

              近日,深圳市愛普特微電子有限公司(以下簡稱“愛普特”)成功完成了戰略融資。本輪融資新增股東上海華....
            的頭像 科技新思路 發表于 03-23 15:52 ? 759次 閱讀

            復旦微電推出MCU新品系列FM33FR0,具備Touch功能

            FM33FR0系列基于32位 ARM Cortex-M0內核,最高主頻為48MHz,提供最大384K....
            發表于 03-23 15:01 ? 564次 閱讀
            復旦微電推出MCU新品系列FM33FR0,具備Touch功能

            請問rtthread是一個os時鐘中斷調度一次嗎?

            比如我用stm32,systick 1ms中斷一次 那么每個線程最少得運行1ms,再去systick中斷里檢查線程優先級和等待資源超時 同樣,某個...
            發表于 03-23 11:38 ? 349次 閱讀

            中國移動首款RISC-V內核MCU芯片CM32M4xxR亮相

            中國移動旗下專業芯片子公司,中移芯昇(芯昇科技有限公司)攜中國移動首款基于 RISC-V 內核的 M....
            發表于 03-23 09:32 ? 20次 閱讀

            四維圖新MineData獲兩項認證 瑞薩電子推出RA6T2 MCU

              近日,四維圖新旗下數字孿生城市生態服務商世紀高通運營實施的位置大數據平臺MineData憑借數據....
            的頭像 牽手一起夢 發表于 03-22 14:32 ? 277次 閱讀

            安森美推出新的高功率圖騰柱PFC控制器,滿足具挑戰的能效標準

            安森美(onsemi,美國納斯達克股票代號:ON),推出最新的混合信號控制器,專用于無橋圖騰柱功率因....
            發表于 03-22 13:46 ? 480次 閱讀
            安森美推出新的高功率圖騰柱PFC控制器,滿足具挑戰的能效標準

            基于R7F0C802 MCU的溫濕度測量系統

            無論日常生活,還是工業生產,溫度和濕度都市十分重要的技術指標,需要快速、準確測量才能保障生活與工作的....
            發表于 03-22 10:35 ? 4次 閱讀
            基于R7F0C802 MCU的溫濕度測量系統

            如何使用STM32G031開發板實現雙通道示波器

            開啟Single后,無觸發時,正常顯示波形;觸發一次后,波形與頻譜均固定,并不會更新,但可以調整負時....
            的頭像 電子森林 發表于 03-22 09:57 ? 172次 閱讀

            MCU市場發展格局及未來趨勢

            電子發燒友網報道(文/程文智)3月初Yole發布了一個MCU市場報告,數據顯示2021年MCU市場銷....
            的頭像 電子發燒友網 發表于 03-22 09:57 ? 224次 閱讀

            國民技術MCU在機器人應用上的優勢

            在制造業轉型升級的大背景下,機器人產業正迎來發展新機遇期,步入發展快車道。前不久,工信部會同發改委等....
            的頭像 電子發燒友網 發表于 03-22 09:38 ? 190次 閱讀

            STM32 HAL庫與標準庫的區別

            ??相比較早幾年使用標準庫開發來講,最近幾年HAL庫的使用是越來越多,那么我們開發應當使用哪一種呢,....
            的頭像 STM32嵌入式開發 發表于 03-22 09:13 ? 170次 閱讀

            工業增強級MCU優勢賦能,國民技術加快布局機器人控制領域“新藍?!?!

            機器人在位置、速度、動作順序等控制方式上更加復雜、精細和智能化,這對機器人控制器的功能、性能和接口提....
            發表于 03-22 09:09 ? 1034次 閱讀
            工業增強級MCU優勢賦能,國民技術加快布局機器人控制領域“新藍?!?!

            如何在不見硝煙的智能水表市場搶先機? 看看Open CPU水表解決方案

            2022年新冠疫情再度肆虐,深圳華強北被封,香港作為重要芯片貿易中心單日確診超過6000人,給我國半....
            的頭像 利爾達科技集團 發表于 03-21 19:10 ? 856次 閱讀
            如何在不見硝煙的智能水表市場搶先機? 看看Open CPU水表解決方案

            利爾達與ST聯合發布STM32MP1開發板新品 利爾達硬核實力托底

            近日,致力于提供物聯網產品研發、技術應用、服務落地一站式解決方案的國家高新技術企業利爾達與ST意法半....
            的頭像 利爾達科技集團 發表于 03-21 19:04 ? 892次 閱讀
            利爾達與ST聯合發布STM32MP1開發板新品 利爾達硬核實力托底

            單片機自學筆記 51單片機自學好找工作嗎

            自學不是說不可以,速成的話還是找一對一的比較好,建議學完51學STM32,51單片機也并不是很難,利....
            發表于 03-21 17:54 ? 68次 閱讀
            單片機自學筆記 51單片機自學好找工作嗎

            STM32F103rct6標準版的電路原理圖

            本文檔的主要內容詳細介紹的是STM32F103rct6標準版的電路原理圖免費下載。
            發表于 03-21 14:56 ? 48次 閱讀

            GD的抗干擾能力為何不如STM32

            GD32是國內開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出....
            的頭像 電子工程世界 發表于 03-21 13:42 ? 385次 閱讀

            STM32+ULN2003驅動28BYJ4步進電機(正反轉)

            STM32驅動UL2003控制步進電機正反轉,根據角度轉動。
            的頭像 DS小龍哥-嵌入式技術 發表于 03-21 09:26 ? 997次 閱讀
            STM32+ULN2003驅動28BYJ4步進電機(正反轉)

            從MCU產品料號數量,看MCU市場發展格局及未來發展趨勢

            3月初Yole發布了一個MCU市場報告,數據顯示2021年MCU市場銷售額位189.1億美元,預計今....
            的頭像 荷葉塘 發表于 03-21 08:00 ? 1184次 閱讀
            從MCU產品料號數量,看MCU市場發展格局及未來發展趨勢

            中穎EEPROM存儲器的操作原則

            EEPROM(Electrically Erasable Programmable readonly....
            的頭像 中穎電子 發表于 03-20 14:37 ? 676次 閱讀

            瑞薩電子P9261-3C-CRBv2參考設計概述及關鍵特性

            全球半導體解決方案供應商瑞薩電子集團(TSE:6723)宣布,推出用于車載無線充電、且經WPC Qi....
            的頭像 瑞薩電子 發表于 03-20 13:02 ? 345次 閱讀

            關于超低功耗32位RX140微控制器(MCU)產品群

            利用人體和電極之間產生的靜電電容進行工作的電容式觸摸開關,應用范圍已經從智能手機擴展到家電產品、工業....
            的頭像 瑞薩電子 發表于 03-20 12:52 ? 326次 閱讀

            基于兆易創新GD32F303系列MCU

            前 言 便攜式移動儲能系統是一種安全、便攜、穩定、環保的小型儲能系統,可以為您遠離室內時提供便攜的可....
            的頭像 GD32MCU 發表于 03-19 14:30 ? 553次 閱讀

            瑞薩電子推出SIL3認證解決方案

            新聞快訊 全球半導體解決方案供應商瑞薩電子集團(TSE:6723)宣布,為其RA產品家族微控制器提供....
            的頭像 瑞薩電子 發表于 03-19 11:02 ? 281次 閱讀

            航順SoC再次通過AEC車規認證并完成ISO 26262 2022年度簽約

            熱烈祝賀:航順車規級SoC HK32AUTO39A家族再次通過AEC-Q100認證且大批量應用于各大....
            發表于 03-18 15:47 ? 567次 閱讀
            航順SoC再次通過AEC車規認證并完成ISO 26262 2022年度簽約

            安謀科技XPU戰略落地智能汽車產業,芯馳科技加入戰略合作

            安謀科技(中國)有限公司(以下簡稱“安謀科技”)與國內領先的車規芯片企業芯馳科技達成戰略合作伙伴關系....
            發表于 03-18 11:19 ? 996次 閱讀

            基于MSP430G MCU的電動牙刷方案

            本設計采用內置LDO的低壓H橋馬達驅動器,一個超低功耗MCU,通過2-5.5V范圍輸入實現了一個長壽....
            發表于 03-18 09:46 ? 16次 閱讀
            基于MSP430G MCU的電動牙刷方案

            四維圖新旗下杰發科技首款功能安全MCU–AC7840x提前回片

            近日,四維圖新旗下杰發科技首款功能安全MCU–AC7840x提前回片,并成功啟動點亮。AC7840x....
            的頭像 四維圖新NavInfo 發表于 03-18 08:59 ? 366次 閱讀

            如何攻克國產MCU高可靠性能難關

            根據IC Insights報告,2021年全球MCU市場總銷售額破190億美元,而中國市場增速遠遠領....
            的頭像 科技新思路 發表于 03-17 14:49 ? 375次 閱讀

            大聯大世平集團推出基于NXP產品的汽車通用評估板方案

            大聯大控股宣布,其旗下世平推出基于恩智浦(NXP)S32K1xx系列的汽車通用評估板方案。
            發表于 03-17 14:47 ? 1761次 閱讀
            大聯大世平集團推出基于NXP產品的汽車通用評估板方案

            32位基于ARM微控制器STM32F101xx與STM32F103xx的固件函數庫

             本手冊介紹了32位基于ARM微控制器STM32F101xx與STM32F103xx的固件函數庫。
            發表于 03-17 14:42 ? 29次 閱讀

            HOLTEK推出觸控式RF發射器MCU_科士達充電樁獲中國充電設施行業十大創新品牌

            Holtek推出全新觸控式Sub-1GHz OOK/FSK RF發射器Flash MCU BC66F....
            的頭像 電子魔法師 發表于 03-17 11:38 ? 744次 閱讀

            TMS320F28076 TMS320F2807x Piccolo 微控制器

            C2000?32位微控制器在處理,傳感和驅動方面進行了優化,可提高實時控制應用中的閉環性能,例如工業電機驅動,光伏逆變器和數字電源,電動車輛與運輸,電機控制以及傳感和信號處理.C2000產品線包括Delfino?高端性能系列和Piccolo?入門級性能系列。 TMS320F2807x微控制器平臺屬于Piccolo?系列,適用于高級閉環控制應用,例如工業電機驅動,光伏逆變器和數字電源,電動車輛與運輸以及傳感和信號處理。數字電源和工業驅動器的完整開發包作為powerSUITE和DesignDRIVE方案的一部分提供。 F2807x是基于TI行業領先的C28x內核的32位浮點微控制器。此內核的性能通過三角運算硬件加速器得到了提升,該加速器利用CPU指令(如正弦,余弦和反正切函數)提高了轉矩環路和位置計算中常見的基于三角運算的算法性能。 F2807x微控制器系列采用一個CLA實時控制協處理器.CLA是一款獨立的32位浮點處理器,運行速度與主CPU相同。該CLA會對外設觸發器作響響應,并與主C28x CPU同時執行代碼。這種并行處理功能可有效加倍實時控制系統的計算性能。通過利用CLA執行時間關鍵型功能,主C28x CPU可以得到釋放,以便用于執行通信和診斷等其...
            發表于 01-08 17:49 ? 863次 閱讀
            TMS320F28076 TMS320F2807x Piccolo 微控制器

            CC3200MOD SimpleLink Wi-Fi CC3200 片上因特網無線 MCU 模塊

            使用業界首款可編程FCC,IC,CE和Wi-Fi認證無線微控制器(MCU)模塊,內置Wi-Fi,開始您的設計連接。 SimpleLink CC3200MOD專為物聯網(IoT)而創建,是一個集成了ARM Cortex-M4 MCU的無線MCU模塊,允許客戶使用單個設備開發整個應用程序。憑借片上Wi-Fi,互聯網和強大的安全協議,無需先前的Wi-Fi體驗即可加快開發速度。 CC3200MOD將所有必需的系統級硬件組件(包括時鐘,SPI閃存,RF開關和無源元件)集成到LGA封裝中,以便于組裝和低成本PCB設計。 CC3200MOD作為完整的平臺解決方案提供,包括軟件,樣本應用,工具,用戶和編程指南,參考設計以及TI E2E支持社區。 應用MCU子系統包含行業標準的ARM Cortex- M4內核以80 MHz運行。 該器件包括各種外設,包括快速并行相機接口,I2S,SD /MMC,UART,SPI,I2C和四通道ADC。 CC3200系列包括用于代碼和數據的靈活嵌入式RAM;帶外部串行閃存引導程序和外設驅動程序的ROM;用于Wi-Fi網絡處理器服務包,Wi-Fi證書和憑證的SPI閃存。 Wi-Fi網絡處理器子系統具有Wi-Fi片上網絡,并包含一個附加功能專用的ARM...
            發表于 08-20 17:53 ? 551次 閱讀
            CC3200MOD SimpleLink Wi-Fi CC3200 片上因特網無線 MCU 模塊
            中文字幕一本性无码 - 永久三级网站在线观看 - 影音先锋中文字幕亚洲资源站 - 337p大尺度啪啪人体午夜