{"id":1633,"date":"2026-06-08T18:18:42","date_gmt":"2026-06-08T10:18:42","guid":{"rendered":"https:\/\/hali.life\/?p=1633"},"modified":"2026-06-08T18:21:11","modified_gmt":"2026-06-08T10:21:11","slug":"%e3%80%90esp32%e3%80%91%e5%88%b6%e4%bd%9c%e8%b7%a8%e5%a2%83%e7%94%b5%e5%95%86%e7%bd%91%e7%bb%9c%e8%b4%a8%e9%87%8f%e6%a3%80%e6%b5%8b%e5%99%a8","status":"publish","type":"post","link":"https:\/\/hali.life\/?p=1633","title":{"rendered":"\u3010ESP32\u3011\u5236\u4f5c\u8de8\u5883\u7535\u5546\u7f51\u7edc\u8d28\u91cf\u68c0\u6d4b\u5668"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u7b80\u4ecb<\/h1>\n\n\n\n<p>\u6211\u6709\u5f88\u591a\u4e2aWiFi\u8282\u70b9\uff0c\u81ea\u7136\u6709\u5f88\u591a\u53f0\u624b\u673a\uff0c\u5f88\u4e2a\u8d26\u53f7\u3002\u5982\u679c\u7ed9\u6bcf\u4e2a\u624b\u673a\u914d\u4e00\u4e2a\u8fd9\u4e2aWiFi\u8d28\u91cf\u68c0\u6d4b\u5668\uff0cTK\u4e3b\u64ad\u5728\u76f4\u64ad\u7684\u65f6\u5019\uff0c\u5c31\u53ef\u4ee5\u5f88\u76f4\u89c2\u7684\u89c2\u5bdf\u81ea\u5df1\u7684\u7f51\u7edc\u60c5\u51b5\uff0c\u4fe1\u53f7\u5f3a\u5ea6\u5982\u4f55\uff0c\u5ef6\u8fdf\u662f\u5426\u8fc7\u9ad8\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-1024x768.jpg\" alt=\"\" class=\"wp-image-1637\" srcset=\"https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-1024x768.jpg 1024w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-300x225.jpg 300w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-768x576.jpg 768w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-1536x1152.jpg 1536w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-2048x1536.jpg 2048w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-520x390.jpg 520w, https:\/\/hali.life\/wp-content\/uploads\/2026\/06\/IMG20260608180732-940x705.jpg 940w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">ESP-32<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u76f8\u5173\u4e0b\u8f7d<\/h1>\n\n\n\n<p>\u4e0b\u8f7d\u94fe\u63a5\uff1a<a href=\"https:\/\/pan.quark.cn\/s\/51fd68b6100a\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"><strong>https:\/\/pan.quark.cn\/s\/51fd68b6100a<\/strong><\/mark><\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>esp32wifi.zip\uff08\u9879\u76ee\u4ee3\u7801\uff09<\/li>\n\n\n\n<li>CH341SER.EXE \uff08esp32\u9a71\u52a8\uff09<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u8bbe\u5907\u578b\u53f7<\/h1>\n\n\n\n<p>ESP-32 CP2102 TYPE-C USB\u63a5\u53e3 WIFI \u84dd\u7259 \u65e0\u7ebf\u6a21\u5757 \uff08\u5c4f\u5e55 OLED \u5355\u8272\u5c4f\uff09<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">ESP32\u5c4f\u5e55\u94fe\u63a5\u65b9\u5f0f<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>OLED\uff08\u5c4f\u5e55\uff09<\/th><th>ESP32\u5f15\u811a<\/th><\/tr><\/thead><tbody><tr><td>VCC<\/td><td>3v3<\/td><\/tr><tr><td>GND<\/td><td>GND<\/td><\/tr><tr><td>SDA<\/td><td><strong>D21<\/strong><\/td><\/tr><tr><td>SCL<\/td><td><strong>D22<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u6559\u7a0b<\/h1>\n\n\n\n<p>1\u3001vscode Ctrl + Shift + X \u6dfb\u52a0\u63d2\u4ef6\uff1aPlaftormio IDE<\/p>\n\n\n\n<p>2\u3001\u5bfc\u5165\u9879\u76ee\u4ee3\u7801<\/p>\n\n\n\n<p>3\u3001\u628aesp32\u7528\u6570\u636e\u7ebf\u8fde\u63a5\u5230\u7535\u8111\uff0c\u5e76\u5728\u8bbe\u5907\u7ba1\u7406\u5668\u4e2d\u67e5\u770b\u8fde\u63a5\u5230\u4e86\u7b2c\u51e0\u4e2aCOM<\/p>\n\n\n\n<p>4\u3001\u628a\u9879\u76ee\u6587\u4ef6\u4e2d\u7684plaftormio.ini \u4e2d\u7684upload_port\u53c2\u6570\u6539\u4e3a\u5bf9\u5e94\u7684com<\/p>\n\n\n\n<p>5\u3001\u5728vscode\u5e95\u90e8\u680f\uff1a Plaftormio  Build \uff0cPlaftormio Upload<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6838\u5fc3\u4ee3\u7801\u5c55\u793a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;Arduino.h&gt;\n#include &lt;WiFi.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;Adafruit_GFX.h&gt;\n#include &lt;Adafruit_SSD1306.h&gt;\n#include &lt;ESP32Ping.h&gt;\n#include &lt;HTTPClient.h&gt;\n#include &lt;ArduinoJson.h&gt;\n\n\n#define SCREEN_WIDTH 128\n#define SCREEN_HEIGHT 64\n\nAdafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;Wire, -1);\n \nconst char* ssid = \"TK01\";\nconst char* password = \"Abcd1234\";\n  \nString publicIP = \"N\/A\";\nString country = \"N\/A\";\n  \n\/\/ ====================== \u83b7\u53d6\u516c\u7f51IP + \u56fd\u5bb6 ======================\nvoid updateIPInfo() {\n  HTTPClient http;\n\n  http.begin(\"http:\/\/ip-api.com\/json\/?fields=status,countryCode,query\");\n\n  int httpCode = http.GET();\n\n  if (httpCode &gt; 0) {\n    String payload = http.getString();\n\n    Serial.println(payload); \/\/ \u8c03\u8bd5\u7528\uff08\u5efa\u8bae\u4fdd\u7559\uff09\n\n    StaticJsonDocument&lt;512&gt; doc;\n    DeserializationError error = deserializeJson(doc, payload);\n\n    if (!error) {\n      String status = doc&#91;\"status\"].as&lt;String&gt;();\n\n      if (status == \"success\") {\n        publicIP = doc&#91;\"query\"].as&lt;String&gt;();\n        country = doc&#91;\"countryCode\"].as&lt;String&gt;();\n      } else {\n        publicIP = \"FAIL\";\n        country = \"N\/A\";\n      }\n    } else {\n      publicIP = \"JSON ERR\";\n      country = \"ERR\";\n    }\n  } else {\n    publicIP = \"HTTP ERR\";\n    country = \"ERR\";\n  }\n\n  http.end();\n}\n\n\/\/ ====================== \u521d\u59cb\u5316 ======================\nvoid setup() {\n  Serial.begin(115200);\n\n  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {\n    Serial.println(\"OLED\u521d\u59cb\u5316\u5931\u8d25\");\n    while (true);\n  }\n\n  display.clearDisplay();\n  display.setTextSize(1);\n  display.setTextColor(WHITE);\n\n  display.setCursor(0, 0);\n  display.println(\"Connecting WiFi...\");\n  display.display();\n\n  WiFi.begin(ssid, password);\n\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(500);\n  }\n\n  display.clearDisplay();\n  display.setCursor(0, 0);\n  display.println(\"WiFi Connected!\");\n  display.display();\n\n  delay(1000);\n\n  \/\/ \u83b7\u53d6\u4e00\u6b21\u516c\u7f51\u4fe1\u606f\n  updateIPInfo();\n}\n\n\n\/\/ ====================== \u4e3b\u5faa\u73af ======================\nvoid loop() {\n  display.clearDisplay();\n\n  int rssi = WiFi.RSSI();\n  String wifiName = WiFi.SSID();\n\n  \/\/ ===== SSID =====\n  display.setCursor(0, 0);\n  display.setTextColor(WHITE);\n  display.print(\"SSID: \");\n  display.println(wifiName);\n\n  \/\/ ===== IP + \u56fd\u5bb6 =====\n  display.setCursor(0, 12);\n  display.print(\"IP: \");\n  display.print(publicIP);\n  display.print(\"(\");\n  display.print(country);\n  display.println(\")\");\n\n  \/\/ ===== WiFi\u4fe1\u53f7 =====\n  display.setCursor(0, 24);\n  display.print(\"WiFi: \");\n  display.print(rssi);\n  display.println(\" dBm\");\n\n  \/\/ ===== TikTok\u68c0\u6d4b =====\n  HTTPClient http;\n\n  unsigned long start = millis();\n  http.begin(\"https:\/\/www.tiktok.com\");\n  int httpCode = http.GET();\n  unsigned long duration = millis() - start;\n\n  \/\/ ===== TikTok\u5ef6\u8fdf =====\n  display.setCursor(0, 36);\n\n  if (httpCode &gt; 0) {\n    display.print(\"TK: \");\n    display.print(duration);\n    display.println(\" ms\");\n  } else {\n    display.println(\"TK: FAIL\");\n  }\n\n  \/\/ ===== LIVE\u72b6\u6001 =====\n  display.setCursor(0, 52);\n\n  if (httpCode &lt;= 0) {\n    display.println(\"LIVE: BLOCKED\");\n  }\n  else if (duration &lt; 100 &amp;&amp; rssi &gt; -60) {\n    display.println(\"LIVE: PERFECT\");\n  }\n  else if (duration &lt; 200 &amp;&amp; rssi &gt; -70) {\n    display.println(\"LIVE: GOOD\");\n  }\n  else if (duration &lt; 400) {\n    display.println(\"LIVE: OK\");\n  }\n  else {\n    display.println(\"LIVE: BAD\");\n  }\n\n  http.end();\n\n  display.display();\n\n  \/\/ \u6bcf30\u79d2\u66f4\u65b0\u4e00\u6b21IP\u4fe1\u606f\uff08\u907f\u514d\u9891\u7e41\u8bf7\u6c42\uff09\n  static unsigned long lastUpdate = 0;\n  if (millis() - lastUpdate &gt; 30000) {\n    updateIPInfo();\n    lastUpdate = millis();\n  }\n\n  delay(5000);\n}\n <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb \u6211\u6709\u5f88\u591a\u4e2aWiFi\u8282\u70b9\uff0c\u81ea\u7136\u6709\u5f88\u591a\u53f0\u624b\u673a\uff0c\u5f88\u4e2a\u8d26\u53f7\u3002\u5982\u679c\u7ed9\u6bcf\u4e2a\u624b\u673a\u914d\u4e00\u4e2a\u8fd9\u4e2aWiFi\u8d28\u91cf\u68c0\u6d4b\u5668\uff0cTK\u4e3b\u64ad&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1634,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"views":34,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/posts\/1633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hali.life\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1633"}],"version-history":[{"count":3,"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions"}],"predecessor-version":[{"id":1639,"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions\/1639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hali.life\/index.php?rest_route=\/wp\/v2\/media\/1634"}],"wp:attachment":[{"href":"https:\/\/hali.life\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hali.life\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hali.life\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}