[其他ST产品] 基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

[复制链接]
3602|59
 楼主| 家有两宝呀 发表于 2022-1-27 18:00 | 显示全部楼层
 楼主| 家有两宝呀 发表于 2022-1-27 18:01 | 显示全部楼层
数据流收到物联网终端上传的信息。
5249661f26d8e2810b.png
 楼主| 家有两宝呀 发表于 2022-1-27 21:56 | 显示全部楼层
查看设计的网页界面:
3382361f2a4913000c.png


 楼主| 家有两宝呀 发表于 2022-1-27 21:59 | 显示全部楼层
 楼主| 家有两宝呀 发表于 2022-1-27 22:01 | 显示全部楼层
 楼主| 家有两宝呀 发表于 2022-1-27 22:03 | 显示全部楼层
五、程序下载介绍

8234261f2a633ddde5.png
 楼主| 家有两宝呀 发表于 2022-1-27 22:05 | 显示全部楼层
点击开始编程之后,按下开发板上的RST按钮,即可启动下载。

六、STM32设备端代码
7055661f2a6bd2d4fb.png
 楼主| 家有两宝呀 发表于 2022-1-27 22:07 | 显示全部楼层
6.1 esp8266.c

  1. #include "esp8266.h"

  2. struct ESP8266_WIFI esp8266_wifi;


  3. /*
  4. 函数功能: 配置ESP8266WIFI为AP模式+TCP服务器模式
  5. 函数参数:
  6.         char *ssid  :将要创建的WIFI热点名称(英文字母)
  7.         char *password :将要创建的WIFI热点密码(最短长度8位)
  8.         u16 port :TCP服务器的端口号(0~65535)
  9. 返 回 值:0表示成功,其他值表示失败
  10. */
  11. u8 ESP8266_AP_TCP_ServerMode(const char *ssid,const char *password,u16 port)
  12. {
  13.     u8 i;
  14.     char *find_str=NULL;
  15.     char cmd_buffer[100];
  16.     /*1. 发送测试指令,检测WIFI是否正常*/
  17.     printf("发送测试指令,检测WIFI是否正常...\n");
  18.     if(ESP8266_SendCmd("AT\r\n"))return 1;
  19.     /*2. 关闭回显*/
  20.     printf("关闭回显...\n");
  21.     if(ESP8266_SendCmd("ATE0\r\n"))return 2;
  22.     /*3. 设置当前WIFI的模式为AP模式*/
  23.     printf("设置当前WIFI的模式为AP模式...\n");
  24.     if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
  25.     /*4. 复位模块,设置的模式必须复位之后才会生效*/
  26.     printf("复位模块...\n");
  27.     if(ESP8266_SendCmd("AT+RST\r\n"))return 4;
  28.     DelayMs_72M(1000);
  29.     DelayMs_72M(1000);
  30.     DelayMs_72M(1000);
  31.     DelayMs_72M(1000);
  32.     /*5. 关闭回显*/
  33.     printf("关闭回显...\n");
  34.     if(ESP8266_SendCmd("ATE0\r\n"))return 5;
  35.     /*6. 设置创建的热点信息*/
  36.     printf("设置创建的热点信息...\n");
  37.     snprintf(cmd_buffer,100,"AT+CWSAP="%s","%s",1,4\r\n",ssid,password);
  38.     if(ESP8266_SendCmd(cmd_buffer))return 6;
  39.     /*7. 开启多连接,在服务器模式下才可开启*/
  40.     printf("开启多连接...\n");
  41.     if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
  42.     /*8. 设置端口号(0~65535)*/
  43.     printf("设置端口号...\n");
  44.     snprintf(cmd_buffer,100,"AT+CIPSERVER=1,%d\r\n",port);
  45.     if(ESP8266_SendCmd(cmd_buffer))return 8;
  46.     /*9.查询本地IP地址*/
  47.     printf("查询本地IP地址...\n");
  48.     if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
  49.    
  50.     /*10. 保存WIFI的信息*/
  51.     esp8266_wifi.port=port;
  52.     strcpy(esp8266_wifi.mode,"AP");
  53.    
  54.     //提取IP地址
  55.     /*
  56.     IP地址=+CIFSR:APIP,"192.168.4.1"
  57.            +CIFSR:APMAC,"86:f3:eb:17:e6:86"
  58.     */
  59.     find_str=strstr((char*)USART3_RX_BUFF,"APIP");
  60.     if(find_str) //判断是否查找成功
  61.     {
  62.         find_str+=6;
  63.         for(i=0;*find_str!='"';i++)
  64.         {
  65.             esp8266_wifi.ip[i]=*find_str;
  66.             find_str++;
  67.         }
  68.         esp8266_wifi.ip[i]='\0';
  69.     }
  70.     USART3_RX_FLAG=0;
  71.     USART3_RX_CNT=0;
  72.    
  73.     printf("当前WIFI模式:%s\n",esp8266_wifi.mode);
  74.     printf("当前网络协议类型:%s\n","TCP");
  75.     printf("当前网络通信模式:%s\n","server");
  76.     printf("当前网络端口号:%d\n",esp8266_wifi.port);
  77.     printf("本地网络IP地址:%s\n",esp8266_wifi.ip);
  78.     return 0;
  79. }

  80. /*
  81. 函数功能:向ESP8266wifi发送指令
  82. 说明:该函数只是适用于成功后返回OK的指令
  83. 返回值: 0表示成功 1表示失败
  84. */
  85. u8 ESP8266_SendCmd(char *cmd)
  86. {
  87.    u8 i,j;
  88.    for(i=0;i<5;i++) //测试的总次数
  89.    {
  90.       USART3_RX_FLAG=0;
  91.       USART3_RX_CNT=0;
  92.       USART_X_SendString(USART3,cmd);
  93.       for(j=0;j<200;j++) //等待的时间(ms单位)
  94.       {
  95.           if(USART3_RX_FLAG)
  96.           {
  97.               USART3_RX_BUFF[USART3_RX_CNT]='\0';
  98.                                                         printf("USART3_RX_BUFF=%s\r\n",USART3_RX_BUFF);
  99.               if(strstr((char*)USART3_RX_BUFF,"OK\r\n"))
  100.               {
  101.                   return 0;
  102.               }
  103.               else break;
  104.           }
  105.           DelayMs_72M(2); //一次的时间
  106.       }
  107.    }
  108.    return 1;
  109. }

  110. /*
  111. 函数功能:ESP8266wifi处于TCP服务器模式下的数据发送函数
  112. 函数参数:
  113.         u8 id      :已经连接服务器的客户端ID号
  114.         char *data :将要发送数据(字符串)
  115. 返回值: 0表示成功 1表示失败
  116. 说明:只有在TCP服务器模式下才可使用该函数
  117. OK
  118. >
  119. Recv 12 bytes
  120. SEND OK
  121. */
  122. u8 ESP8266_ServerSendData(u8 id,char *data)
  123. {
  124.    u32 i,j,n;
  125.    char cmd[100];
  126.    snprintf(cmd,1024,"AT+CIPSEND=%d,%d\r\n",id,strlen(data));
  127.    for(i=0;i<5;i++) //测试的总次数
  128.    {
  129.       USART3_RX_FLAG=0;
  130.       USART3_RX_CNT=0;
  131.       USART_X_SendString(USART3,cmd);
  132.       for(j=0;j<200;j++) //等待的时间(ms单位)
  133.       {
  134.           if(USART3_RX_FLAG)
  135.           {
  136.               USART3_RX_BUFF[USART3_RX_CNT]='\0';
  137.               if(strstr((char*)USART3_RX_BUFF,">")) //开始发送数据
  138.               {
  139.                   USART3_RX_FLAG=0;
  140.                   USART3_RX_CNT=0;
  141.                   USART_X_SendString(USART3,data); //发送数据
  142.                   for(n=0;n<10000;n++)
  143.                   {
  144.                       if(USART3_RX_FLAG)
  145.                       {
  146.                           USART3_RX_BUFF[USART3_RX_CNT]='\0';
  147.                           if(strstr((char*)USART3_RX_BUFF,"SEND OK")) //开始发送数据
  148.                           {
  149.                               USART3_RX_FLAG=0;
  150.                               USART3_RX_CNT=0;
  151.                               return 0;
  152.                           }
  153.                           else return 1;
  154.                       }
  155.                       DelayMs_72M(1); //一次的时间
  156.                   }
  157.               }
  158.               else break;
  159.           }
  160.           DelayMs_72M(5); //一次的时间
  161.       }
  162.    }
  163.    return 1;
  164. }

  165. /*
  166. 函数功能: 设置STA模式下连接的热点信息
  167. 返 回 值: 0表示成功,1表示失败
  168. 连接成功的提示符:
  169. WIFI DISCONNECT
  170. WIFI CONNECTED
  171. WIFI GOT IP
  172. OK
  173. */
  174. u8 ESP8266_STA_ModeConnectWIFI(char *cmd)
  175. {
  176.    u32 i,j;
  177.    for(i=0;i<3;i++) //测试的总次数
  178.    {
  179.       USART3_RX_FLAG=0;
  180.       USART3_RX_CNT=0;
  181.       USART_X_SendString(USART3,cmd);
  182.       for(j=0;j<30000;j++) //等待的时间(ms单位)
  183.       {
  184.           if(USART3_RX_FLAG)
  185.           {
  186.               USART3_RX_BUFF[USART3_RX_CNT]='\0';
  187.               if(strstr((char*)USART3_RX_BUFF,"OK"))
  188.               {
  189.                   return 0;
  190.               }
  191.               else
  192.               {
  193.                   memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
  194.                   USART3_RX_FLAG=0;
  195.                   USART3_RX_CNT=0;
  196.               }              
  197.           }
  198.           DelayMs_72M(1); //一次的时间
  199.       }
  200.    }
  201.    return 1;
  202. }


  203. /*
  204. 函数功能: 用于在客户端模式下,连接服务器
  205. 返 回 值: 0表示成功,1表示失败
  206. 连接成功的提示符:CONNECT
  207. */
  208. u8 ESP8266_ConnectServer(char *cmd)
  209. {
  210.    u32 i,j;
  211.    for(i=0;i<5;i++) //测试的总次数
  212.    {
  213.       USART3_RX_FLAG=0;
  214.       USART3_RX_CNT=0;
  215.       USART_X_SendString(USART3,cmd);
  216.       for(j=0;j<10000;j++) //等待的时间(ms单位)
  217.       {
  218.           if(USART3_RX_FLAG)
  219.           {
  220.               USART3_RX_BUFF[USART3_RX_CNT]='\0';
  221.               if(strstr((char*)USART3_RX_BUFF,"CONNECT"))
  222.               {
  223.                   return 0;
  224.               }
  225.               else
  226.               {
  227.                   memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
  228.                   USART3_RX_FLAG=0;
  229.                   USART3_RX_CNT=0;
  230.               }              
  231.           }
  232.           DelayMs_72M(1); //一次的时间
  233.       }
  234.    }
  235.    return 1;
  236. }


  237. /*
  238. 函数功能: 配置ESP8266WIFI为STA模式+TCP客户端模式
  239. 函数参数:
  240.         char *ssid  :将要连接的WIFI热点名称(英文字母)
  241.         char *password :将要连接的WIFI热点密码(最短长度8位)
  242.         u16 port :TCP服务器的端口号(0~65535)
  243. 返 回 值:0表示成功,其他值表示失败
  244. */
  245. u8 ESP8266_STA_TCP_ClientMode(const char *ssid,const char *password,char *server_ip,u16 port)
  246. {
  247.     u8 i;
  248.     char *find_str=NULL;
  249.     char cmd_buffer[100];
  250.     /*1. 发送测试指令,检测WIFI是否正常*/
  251.     printf("发送测试指令,检测WIFI是否正常...\n");   
  252.     for(i=0;i<10;i++)
  253.     {
  254.         if(ESP8266_SendCmd("AT\r\n")) //可能WIFI正处于透传模式,无法接收指令
  255.         {
  256.            USART_X_SendString(USART3,"+++"); //退出透传模式
  257.            DelayMs_72M(80); //等待退出透传模式
  258.         }
  259.         else break;
  260.     }
  261.     if(i==10)return 1; //检测失败
  262.    
  263.     /*2. 关闭回显*/
  264.     printf("关闭回显...\n");
  265.     if(ESP8266_SendCmd("ATE0\r\n"))return 2;
  266.     /*3. 设置当前WIFI的模式为STA模式*/
  267.     printf("设置当前WIFI的模式为STA模式...\n");
  268.     if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;
  269.     /*4. 复位模块,设置的模式必须复位之后才会生效*/
  270.     printf("复位模块...\n");
  271.     if(ESP8266_SendCmd("AT+RST\r\n"))return 4;
  272.     DelayMs_72M(1000);
  273.     DelayMs_72M(1000);
  274.     DelayMs_72M(1000);
  275.     DelayMs_72M(1000);
  276.     /*5. 关闭回显*/
  277.     printf("关闭回显...\n");
  278.     if(ESP8266_SendCmd("ATE0\r\n"))return 5;
  279.     /*6. 设置连接的热点信息*/
  280.     printf("设置连接的热点信息...\r\n");
  281.                
  282.     snprintf(cmd_buffer,100,"AT+CWJAP="%s","%s"\r\n",ssid,password);
  283.                 printf("cmd_buffer=%s",cmd_buffer);
  284.     if(ESP8266_STA_ModeConnectWIFI(cmd_buffer))return 6;
  285.    
  286.     /*7. 开启单连接,在客户端模式下才可开启*/
  287.     printf("开启单连接...\n");
  288.     if(ESP8266_SendCmd("AT+CIPMUX=0\r\n"))return 8;
  289.    
  290.     /*8.查询本地IP地址*/
  291.     printf("查询本地IP地址...\n");
  292.     if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 7;
  293.    
  294.     /*9. 保存WIFI的信息*/
  295.     esp8266_wifi.port=port;
  296.     strcpy(esp8266_wifi.mode,"STA");
  297.    
  298.     //提取IP地址
  299.     /*
  300.     +CIFSR:STAIP,"192.168.1.115"
  301.     +CIFSR:STAMAC,"84:f3:eb:17:e6:86"
  302.     */
  303.     find_str=strstr((char*)USART3_RX_BUFF,"STAIP");
  304.     if(find_str) //判断是否查找成功
  305.     {
  306.         find_str+=7;
  307.         for(i=0;*find_str!='"';i++)
  308.         {
  309.             esp8266_wifi.ip[i]=*find_str;
  310.             find_str++;
  311.         }
  312.         esp8266_wifi.ip[i]='\0';
  313.     }
  314.    
  315.     /*10. 连接服务器*/
  316.     printf("开始连接服务器...\n");
  317.     snprintf(cmd_buffer,100,"AT+CIPSTART="TCP","%s",%d\r\n",server_ip,port);
  318.     if(ESP8266_ConnectServer(cmd_buffer))return 9;
  319.    
  320.     /*11. 开启透传模式*/
  321.     printf("开启透传模式...\n");
  322.     if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 10;
  323.    
  324.     /*12. 开始透传*/
  325.     printf("开始透传...\n");
  326.     if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 11;
  327.    
  328.     printf("当前WIFI模式:%s\r\n",esp8266_wifi.mode);
  329.     printf("当前网络协议类型:%s\r\n","TCP");
  330.     printf("当前网络通信模式:%s\r\n","Client");
  331.     printf("连接的服务器端口号:%d\r\n",esp8266_wifi.port);
  332.     printf("连接的服务器IP地址:%s\r\n",server_ip);
  333.     printf("本地的IP地址:%s\r\n",esp8266_wifi.ip);
  334.     return 0;
  335. }
 楼主| 家有两宝呀 发表于 2022-1-27 22:09 | 显示全部楼层
6.2 esp8266.h

  1. #ifndef ESP8266_H
  2. #define ESP8266_H
  3. #include "stm32f10x.h"
  4. #include "usart.h"
  5. #include "key.h"
  6. #include "led.h"
  7. #include <string.h>
  8. #include <stdlib.h>


  9. u8 ESP8266_SendCmd(char *cmd);
  10. u8 ESP8266_AP_TCP_ServerMode(const char *ssid,const char *password,u16 port);
  11. u8 ESP8266_ServerSendData(u8 id,char *data);
  12. u8 ESP8266_STA_TCP_ClientMode(const char *ssid,const char *password,char *server_ip,u16 port);

  13. struct ESP8266_WIFI
  14. {
  15.    u16 port;
  16.    char mode[10]; //sta/ap
  17.    char ip[10];   //ip地址
  18. };
  19. extern struct ESP8266_WIFI esp8266_wifi;
  20. #endif
 楼主| 家有两宝呀 发表于 2022-1-27 22:14 | 显示全部楼层
3.3 main.c

  1. #include "stm32f10x.h"
  2. #include "led.h"
  3. #include "key.h"
  4. #include "usart.h"
  5. #include <string.h>
  6. #include "adc.h"
  7. #include "esp8266.h"
  8. #include "timer.h"
  9. #include "rtc.h"
  10. #include "dht11.h"
  11. //网络协议层
  12. #include "onenet.h"
  13. //协议封装文件
  14. #include "dStream.h"

  15. /*WIFI信息配置---将要连接的WIFI信息*/
  16. #define WIFI_NAME "Xiaomi_meizi6"
  17. #define WIFI_PASSWORD "12170307yu"

  18. /*Onenet服务器地址:固定的*/
  19. #define SERVER_IP "183.230.40.39"
  20. #define SERVER_PORT 6002

  21. //产品ID
  22. const char OneNetPROID[]="332761";
  23. //鉴权信息 access_key
  24. const char OneNetAUTH_INFO[]="1234567890";
  25. //设备ID
  26. char OneNetDEVID[]="590592359";
  27. //ApiKey
  28. char OneNetAPI_KEY[]="fTgT3L9k3gyalPDMeojEEPrwzlo=";

  29. //onenet数据点定义
  30. DATA_STREAM data_stream[]=
  31. {
  32.         {"DHT11_T","66",TYPE_STRING,1}, //温度
  33.         {"DHT11","66",TYPE_STRING,1}, //湿度
  34.         {"Light","66",TYPE_STRING,1}, //光照强度
  35.         {"MQ2","66",TYPE_STRING,1}, //烟雾浓度
  36.         {"MQ5","66",TYPE_STRING,1}, //液化气浓度
  37. };

  38. char *WIFI_STAT; //WIFI状态指针
  39. //u8 temp,humi;
  40. char DisplayDataBuffer[20];
  41. u8 GL5637_Info[10];                          //光敏传感器信息
  42. u8 TEMP_Info[10];
  43. u8 HUMI_Info[10];
  44. u8 MQ2_Info[10];
  45. u8 MQ5_Info[10];

  46. /*
  47. 工程内容介绍: 物联网开发平台全功能测试代码! 支持上位机控制
  48. 编写日期    : 20200403
  49. 版本        : v4.0
  50. */
  51. int main(void)
  52. {       
  53.     int cnt_OneNet_time=0;
  54.     u32 time_cnt=0; //记录时间
  55.     u16 GL5637_temp=0; //光敏信息
  56.     u8 ESP8266_Stat;
  57.     u8 temp,humi;
  58.     u16 mq2_temp,mq5_temp;

  59.     LedInit();
  60.     KeyInit();
  61.     USART_X_Init(USART1,72,115200);
  62.     USART_X_Init(USART3,36,115200); //WIFI的波特率为115200
  63.     ADC1_Init();                                 //ADC初始化
  64.     Timer2Init(72,10000);                     //10ms中断一次,辅助串口3接收数据--WIFI数据
  65.     printf("DHT11=%d\r\n",DHT11_Init());
  66.     //连接至指定的WIFI
  67.     ESP8266_Stat=ESP8266_STA_TCP_ClientMode(WIFI_NAME,WIFI_PASSWORD,SERVER_IP,SERVER_PORT);
  68.     if(ESP8266_Stat)
  69.     {
  70.          printf("ESP8266_Stat=%d\r\n",ESP8266_Stat);
  71.          WIFI_STAT="WIFIConnectERROR";
  72.     }
  73.     else
  74.     {
  75.             WIFI_STAT="WIFI Connect OK";
  76.             //接入OneNET
  77.             while(OneNet_DevLink())
  78.             {
  79.                  printf("Connect OneNet..\r\n");
  80.                  DelayMs_72M(500);
  81.                  LED=!LED;
  82.             }
  83.             
  84.     }
  85.     while(1)
  86.     {  
  87.         cnt_OneNet_time++;//用于控制向服务器上传数据点的频率                       
  88.         /*轮询扫描数据*/
  89.         if(USART3_RX_FLAG)
  90.         {
  91.             USART3_RX_BUFF[USART3_RX_CNT]='\0';
  92.             //解析平台返回的数据
  93.             OneNet_RevPro(USART3_RX_BUFF);
  94.             USART3_RX_CNT=0;
  95.             USART3_RX_FLAG=0;
  96.             memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
  97.         }
  98.         
  99.             /*获取光敏数据*/
  100.             GL5637_temp=ADC1_GetCHxVal(8);
  101.             sprintf((char*)GL5637_Info,"%d",GL5637_temp); //保存光敏传感器信息,上传给上位机
  102.           /*获取烟雾浓度数据*/
  103.             mq2_temp=ADC1_GetCHxVal(1);
  104.             sprintf((char*)MQ2_Info,"%d",mq2_temp); //保存MQ2传感器信息,上传给上位机
  105.           /*获取液化气浓度数据*/
  106.             mq5_temp=ADC1_GetCHxVal(2);
  107.             sprintf((char*)MQ5_Info,"%d",mq5_temp); //保存MQ5传感器信息,上传给上位机
  108.             /*获取温湿度*/
  109.             if(DHT11_Read_Data(&temp,&humi)==0)
  110.             {
  111.                 sprintf((char*)TEMP_Info,"%d",temp); //保存温度传感器信息,上传给上位机
  112.                 sprintf((char*)HUMI_Info,"%d",humi); //保存温度传感器信息,上传给上位机
  113.             }
  114.             DelayMs_72M(1); //延时1ms
  115.             time_cnt++;
  116.             if(cnt_OneNet_time>=200 &&ESP8266_Stat==0)
  117.             {
  118.                 cnt_OneNet_time=0; //清0
  119.                 data_stream[0].dataPoint=TEMP_Info;
  120.                 data_stream[1].dataPoint=HUMI_Info;
  121.                 data_stream[2].dataPoint=GL5637_Info;
  122.                 data_stream[3].dataPoint=MQ2_Info;
  123.                 data_stream[4].dataPoint=MQ5_Info;
  124.                 printf("GL5637_Info=%s\r\n",GL5637_Info);
  125.                 printf("temp=%s,humi=%s\r\n",TEMP_Info,HUMI_Info);
  126.                 printf("MQ2_Info=%s\r\n",MQ2_Info);
  127.                 printf("MQ5_Info=%s\r\n",MQ5_Info);
  128.                 //向OneNet云端服务器上传数据点
  129.                 OneNet_SendData(FORMAT_TYPE1,OneNetDEVID,OneNetAPI_KEY,data_stream,5);
  130.                 printf("发送成功\r\n");
  131.             }
  132.             /*轮询扫描数据*/
  133.             if(USART3_RX_FLAG)
  134.             {
  135.                 USART3_RX_BUFF[USART3_RX_CNT]='\0';
  136.                 //解析平台返回的数据
  137.                 OneNet_RevPro(USART3_RX_BUFF);
  138.                 USART3_RX_CNT=0;
  139.                 USART3_RX_FLAG=0;
  140.                 memset(USART3_RX_BUFF,0,sizeof(USART3_RX_BUFF));
  141.             }
  142.     }
  143. }
quickman 发表于 2022-2-15 22:32 | 显示全部楼层
STM32设计的智能家居怎么样   
kkzz 发表于 2022-2-21 12:02 | 显示全部楼层
智能家居应用还是比较广阔的  
pklong 发表于 2022-2-21 17:30 | 显示全部楼层
ESP8266+OneNet云平台的速度很快吗
robertesth 发表于 2022-2-21 18:10 | 显示全部楼层
OneNet云平台是免费的吗
mmbs 发表于 2022-2-21 20:06 | 显示全部楼层
可不可以一键配网呢?  
hilahope 发表于 2022-2-21 20:54 | 显示全部楼层
STM32+ESP8266怎么样?
bartonalfred 发表于 2022-2-21 21:21 | 显示全部楼层
这个下载需要积分的,能不能放在论坛上呢  
hudi008 发表于 2022-2-21 21:50 | 显示全部楼层
ESP8266是不是可以独立开发呢
robertesth 发表于 2022-2-21 22:17 | 显示全部楼层
使用串口驱动ESP8266吗   
乐鑫芯片模组 发表于 2022-4-23 23:43 | 显示全部楼层
乐鑫技术 有搞不懂的可以提供技术支持
+  WYCG_GUO
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部