{"id":1817,"date":"2025-09-02T09:06:00","date_gmt":"2025-09-02T01:06:00","guid":{"rendered":"https:\/\/www.640629.xyz\/?p=1817"},"modified":"2025-09-23T09:45:28","modified_gmt":"2025-09-23T01:45:28","slug":"wifi%e7%95%b6%e7%86%b1%e9%bb%9e%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.640629.xyz\/?p=1817","title":{"rendered":"WiFi\u7df4\u7fd2\uff1a\u71b1\u9ede\u6a21\u5f0f"},"content":{"rendered":"\n<p>\u71b1\u9ede\u6a21\u5f0f(Access Point)\u53ef\u8b93\u5176\u4ed6\u88dd\u7f6e\u900f\u904eWiFi\u9023\u63a5\u5230 ESP32\uff0c\u4e5f\u7a31\u70ba <strong>SoftAP(Software Access Point)\u6a21\u5f0f<\/strong>\uff0c\u5e38\u61c9\u7528\u65bc\u9ede\u5c0d\u9ede\u7684\u672c\u5730\u901a\u8a0a\u63a7\u5236\u3002\u71b1\u9ede\u6a21\u5f0f\u958b\u555f\u7684\u57fa\u672c\u7bc4\u4f8b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ ------------------------------------------------\n#include &lt;WiFi.h&gt;             \/\/ \u5f15\u7528WiFi\u51fd\u5f0f\u5eab\nconst char *ssid=\"SSID\";      \/\/ \u71b1\u9ede\u540d\u7a31\nconst char *password=\"\u5bc6\u78bc\";  \/\/ \u71b1\u9ede\u5bc6\u78bc\n\/\/ ------------------------------------------------\n\nvoid setup() {\n\n  Serial.begin(9600);    \/\/ \u555f\u7528\u4e32\u5217\u57e0\u76e3\u770b\u8996\u7a97\n\n  \/\/ -------------------------------------------------------------------------------------------\n  \/*\n  IPAddress local_ip(192,168,1,1);    \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684IP\u4f4d\u5740\n  IPAddress gateway(192,168,1,1);     \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684\u9598\u9053\u4f4d\u5740\n  IPAddress subnet(255,255,255,0);    \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684\u5b50\u7db2\u8def\u906e\u7f69\u4f4d\u5740\n  WiFi.softAPConfig(local_ip, gateway, subnet); \/\/ \u8a2d\u5b9a\u71b1\u9ede\u53c3\u6578(\u672a\u8a2d\u5b9a\u6642\uff0c\u71b1\u9edeIP\u4f4d\u5740\u9810\u8a2d\u70ba192.168.4.1)\n  *\/\n  while(!WiFi.softAP(ssid, password)) \/\/ \u82e5\u71b1\u9ede\u5c1a\u672a\u555f\u52d5\uff0c\u5247\u6bcf0.5\u79d2\u5370\u51fa\u4e00\u500b\u9ede\n  {\n    delay(500);\n    Serial.print(\".\");\n  }\n  Serial.println(\"\\n----------------------------------\");\n  Serial.println(\"\u71b1\u9ede\u555f\u52d5\u6210\u529f\");\n  Serial.print(\"IP Address: \");\n  Serial.println(WiFi.softAPIP());    \/\/ \u5370\u51fa\u71b1\u9ede\u7684IP\u4f4d\u5740\n  \/\/ -------------------------------------------------------------------------------------------\n}\n\nvoid loop() {\n}<\/code><\/pre>\n\n\n\n<p>\u5c07\u4e0a\u8ff0\u958b\u555f\u71b1\u9ede\u6a21\u5f0f\u5beb\u6210\u526f\u7a0b\u5f0fstartAP()\uff0c\u5f15\u7528esp_wifi\u51fd\u5f0f\u5eab\uff0c\u900f\u904eWiFi\u4e8b\u4ef6\u8655\u7406\u51fd\u5f0f\uff0c\u53ef\u5c07\u9023\u7dda\u5230ESP32\u7684\u88dd\u7f6e\u6e05\u55ae\u5370\u51fa\uff0c\u5982\u4ee5\u4e0b\u7684\u7bc4\u4f8b\u7a0b\u5f0f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/-------------------------------------------------------------------------------------------------------------------------\n#include &lt;WiFi.h>             \/\/ \u5f15\u7528WiFi\u51fd\u5f0f\u5eab\nconst char *ssid=\"SSID\";      \/\/ \u71b1\u9ede\u540d\u7a31\nconst char *password=\"\u5bc6\u78bc\";  \/\/ \u71b1\u9ede\u5bc6\u78bc\n\/\/-------------------------------------------------------------------------------------------------------------------------\nvoid startAP()  \/\/ \u555f\u7528\u71b1\u9ede\n{\n  \/*\n  IPAddress local_ip(192,168,1,1);    \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684IP\u4f4d\u5740\n  IPAddress gateway(192,168,1,1);     \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684\u9598\u9053\u4f4d\u5740\n  IPAddress subnet(255,255,255,0);    \/\/ \u8a2d\u5b9a\u71b1\u9ede\u7684\u5b50\u7db2\u8def\u906e\u7f69\u4f4d\u5740\n  WiFi.softAPConfig(local_ip, gateway, subnet); \/\/ \u8a2d\u5b9a\u71b1\u9ede\u53c3\u6578(\u672a\u8a2d\u5b9a\u6642\uff0c\u71b1\u9edeIP\u4f4d\u5740\u9810\u8a2d\u70ba192.168.4.1)\n  *\/\n  while(!WiFi.softAP(ssid, password)) \/\/ \u82e5\u71b1\u9ede\u5c1a\u672a\u555f\u52d5\uff0c\u5247\u6bcf0.5\u79d2\u5370\u51fa\u4e00\u500b\u9ede\n  {\n    delay(500);\n    Serial.print(\".\");\n  }\n  Serial.println(\"\\n----------------------------------\");\n  Serial.println(\"\u71b1\u9ede\u555f\u52d5\u6210\u529f\");\n  Serial.print(\"IP Address: \");\n  Serial.println(WiFi.softAPIP());    \/\/ \u5370\u51fa\u71b1\u9ede\u7684IP\u4f4d\u5740\n}\n\/\/-------------------------------------------------------------------------------------------------------------------------\n#include &lt;esp_wifi.h>         \/\/ \u5f15\u7528esp_wifi\u51fd\u5f0f\u5eab\nvoid WiFiEvent(WiFiEvent_t event, arduino_event_info_t info)  \/\/ WiFi\u4e8b\u4ef6\u8655\u7406\u51fd\u5f0f\n{\n  uint8_t* mac = nullptr;     \/\/ \u5ba3\u544aMAC\u4f4d\u5740\u6307\u6a19\n  char macStr[18] = {0};      \/\/ \u5132\u5b58\u683c\u5f0f\u5316MAC\u4f4d\u5740\u7684\u5b57\u4e32\u7de9\u885d\u5340\n\n  switch (event)\n  {\n    case ARDUINO_EVENT_WIFI_AP_STACONNECTED:      \/\/ \u88dd\u7f6e\u5df2\u9023\u7dda\n      \/\/ \u5f9e\u4e8b\u4ef6\u8cc7\u8a0a\u4e2d\u63d0\u53d6MAC\u4f4d\u5740\uff0c\u4e26\u5c07MAC\u4f4d\u5740\u683c\u5f0f\u5316\u70ba\u5b57\u4e32(XX:XX:XX:XX:XX:XX)\n      mac = info.wifi_ap_staconnected.mac;\n      snprintf(macStr, sizeof(macStr), \"%02X:%02X:%02X:%02X:%02X:%02X\", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);\n      Serial.println(\"\\n[\u4e8b\u4ef6] \u88dd\u7f6e\u5df2\u9023\u7dda\");\n      Serial.print(\"MAC: \");\n      Serial.println(macStr);\n      listConnectedStations();  \/\/ \u66f4\u65b0\u4e26\u986f\u793a\u7576\u524d\u9023\u7dda\u88dd\u7f6e\u6e05\u55ae\n      break;\n\n    case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED:   \/\/ \u88dd\u7f6e\u65b7\u958b\u9023\u7dda\n      \/\/ \u5f9e\u4e8b\u4ef6\u8cc7\u8a0a\u4e2d\u63d0\u53d6MAC\u4f4d\u5740\uff0c\u4e26\u5c07MAC\u4f4d\u5740\u683c\u5f0f\u5316\u70ba\u5b57\u4e32(XX:XX:XX:XX:XX:XX)\n      mac = info.wifi_ap_stadisconnected.mac;\n      snprintf(macStr, sizeof(macStr), \"%02X:%02X:%02X:%02X:%02X:%02X\", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);\n      Serial.println(\"\\n[\u4e8b\u4ef6] \u88dd\u7f6e\u5df2\u65b7\u958b\u9023\u7dda\");\n      Serial.print(\"MAC: \");\n      Serial.println(macStr);\n      listConnectedStations();  \/\/ \u66f4\u65b0\u4e26\u986f\u793a\u7576\u524d\u9023\u7dda\u88dd\u7f6e\u6e05\u55ae\n      break;\n  }\n}\n\/\/-------------------------------------------------------------------------------------------------------------------------\nvoid listConnectedStations()  \/\/ \u5370\u51fa\u5df2\u9023\u7dda\u88dd\u7f6e\u6e05\u55ae\n{\n  wifi_sta_list_t station_list;             \/\/ \u5132\u5b58\u9023\u7dda\u88dd\u7f6e\u5217\u8868\u7684\u7d50\u69cb\n  esp_wifi_ap_get_sta_list(&amp;station_list);  \/\/ \u7372\u53d6\u7576\u524d\u9023\u63a5\u5230AP\u7684\u6240\u6709\u88dd\u7f6e\u5217\u8868\n  \n  Serial.println(\"--------- \u7576\u524d\u9023\u7dda\u88dd\u7f6e\u6e05\u55ae ---------\");\n  Serial.print(\"\u9023\u7dda\u88dd\u7f6e\u6578\u91cf: \");\n  Serial.println(station_list.num);\n  Serial.println(\"----------------------------------\");\n  \n  if (station_list.num > 0) {\n    Serial.println(\"\u7de8\u865f       MAC \u4f4d\u5740       IP \u4f4d\u5740\");\n    Serial.println(\"----------------------------------\");\n    \n    for (int i = 0; i &lt; station_list.num; i++) {\n      wifi_sta_info_t station = station_list.sta[i];\n      \n      \/\/ \u53d6\u5f97 MAC \u4f4d\u5740\n      char macStr[18];\n      snprintf(macStr, sizeof(macStr), \"%02X:%02X:%02X:%02X:%02X:%02X\",station.mac[0], station.mac[1], station.mac[2], station.mac[3], station.mac[4], station.mac[5]);\n      \n      \/\/ \u53d6\u5f97 IP \u4f4d\u5740 (\u9700\u8981\u900f\u904e DHCP \u79df\u7d04\u5217\u8868)\n      IPAddress ip = WiFi.softAPIP();\n      ip[3] = i + 2; \/\/ \u9810\u8a2d\u5206\u914d\u5f9e .2 \u958b\u59cb\n      \n      \/\/ \u986f\u793a\u88dd\u7f6e\u8cc7\u8a0a\n      Serial.printf(\"%2d  %s  %s\\n\", i + 1, macStr, ip.toString().c_str());\n    }\n  } else {\n    Serial.println(\"\u76ee\u524d\u6c92\u6709\u88dd\u7f6e\u9023\u7dda\");\n  }\n  \n  Serial.println(\"----------------------------------\");\n}\n\/\/-------------------------------------------------------------------------------------------------------------------------\n\nvoid setup() {\n  Serial.begin(9600);       \/\/ \u555f\u7528\u4e32\u5217\u57e0\u76e3\u770b\u8996\u7a97\n  startAP();                \/\/ \u555f\u7528\u71b1\u9ede\n  WiFi.onEvent(WiFiEvent);  \/\/ \u555f\u7528WiFi\u4e8b\u4ef6\u8655\u7406\n  listConnectedStations();  \/\/ \u5370\u51fa\u5df2\u9023\u7dda\u88dd\u7f6e\u6e05\u55ae\n}\n\nvoid loop() {\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u71b1\u9ede\u6a21\u5f0f(Access Point)\u53ef\u8b93\u5176\u4ed6\u88dd\u7f6e\u900f\u904eWiFi\u9023\u63a5\u5230 ESP32\uff0c\u4e5f\u7a31\u70ba SoftAP(Soft<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1817","post","type-post","status-publish","format-standard","hentry","category-microcontroller-practice"],"_links":{"self":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1817"}],"version-history":[{"count":23,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1817\/revisions"}],"predecessor-version":[{"id":1912,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1817\/revisions\/1912"}],"wp:attachment":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}