{"id":1147,"date":"2024-10-19T01:05:37","date_gmt":"2024-10-18T16:05:37","guid":{"rendered":"https:\/\/tatuiyo.xyz\/?p=1147"},"modified":"2026-03-26T11:28:03","modified_gmt":"2026-03-26T02:28:03","slug":"esp32%e3%81%a7%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%81%8b%e3%82%89%e6%93%8d%e4%bd%9c%e5%8f%af%e8%83%bd%e3%81%aa%e8%b5%a4%e5%a4%96%e7%b7%9a%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3","status":"publish","type":"post","link":"https:\/\/tatuiyo.xyz\/?p=1147","title":{"rendered":"ESP32\u3067\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304b\u3089\u64cd\u4f5c\u53ef\u80fd\u306a\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u3092\u4f5c\u3063\u305f"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/tatuiyo.xyz\/?p=1147\/#%E6%A6%82%E8%A6%81\" >\u6982\u8981<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/tatuiyo.xyz\/?p=1147\/#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0\" >\u30d7\u30ed\u30b0\u30e9\u30e0<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/tatuiyo.xyz\/?p=1147\/#ESP32\" >ESP32<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/tatuiyo.xyz\/?p=1147\/#%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E5%81%B4%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3\" >\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074(\u30ea\u30e2\u30b3\u30f3)<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%A6%82%E8%A6%81\"><\/span>\u6982\u8981<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>ESP32\u3067\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u3092\u4f5c\u308a\u307e\u3059\u3002\u524d\u4f5c\u3063\u305f\u30e9\u30ba\u30d1\u30a4\u30ea\u30e2\u30b3\u30f3\u304b\u3089\u90e8\u54c1\u306f\u5168\u3066\u6d41\u7528\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-tatuiyowebserver wp-block-embed-tatuiyowebserver\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"vajYa43dkp\"><a href=\"https:\/\/tatuiyo.xyz\/?p=867\">Raspberry Pi\u3068\u8d64\u5916\u7ddaLED\u3067\u30a8\u30a2\u30b3\u30f3\u3092\u81ea\u52d5\u64cd\u4f5c<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Raspberry Pi\u3068\u8d64\u5916\u7ddaLED\u3067\u30a8\u30a2\u30b3\u30f3\u3092\u81ea\u52d5\u64cd\u4f5c&#8221; &#8212; \u305f\u3064\u308d\u3050 | tatuiyoWebServer\" src=\"https:\/\/tatuiyo.xyz\/?p=867&#038;embed=true#?secret=0sY3shnVJP#?secret=vajYa43dkp\" data-secret=\"vajYa43dkp\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0\"><\/span>\u30d7\u30ed\u30b0\u30e9\u30e0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"ESP32\"><\/span>ESP32<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u8d64\u5916\u7dda\u306e\u30b3\u30fc\u30c9\u81ea\u4f53\u306fESP32\u306b\u4fdd\u5b58\u305b\u305a\u3001POST\u30ea\u30af\u30a8\u30b9\u30c8\u3067ESP32\u306b\u9001\u308a\u3064\u3051\u308b\u611f\u3058\u306b\u3057\u307e\u3059\u3002<br>\u3053\u308c\u3067\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3054\u3068\u306b\u66f8\u304d\u8fbc\u307e\u306a\u304f\u3066\u6e08\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-c\" data-lang=\"C\"><code>#include &lt;Arduino.h&gt;\n#include &lt;WiFi.h&gt;\n#include &lt;IRremoteESP8266.h&gt;\n#include &lt;IRsend.h&gt;\n#include &lt;WebServer.h&gt;\n#include &lt;ArduinoJson.h&gt;\n\n\/\/ WiFi credentials\nconst char* ssid = &quot;SSID&quot;;  \/\/ Replace with your SSID\nconst char* password = &quot;Pass&quot;;  \/\/ Replace with your Password\nconst IPAddress ip(192, 168, 100, 51); \/\/ \u597d\u304d\u306aIP\u306b\u5909\u3048\u3066\nconst IPAddress gateway(192, 168, 100, 1);\nconst IPAddress subnet(255, 255, 255, 0);\nconst IPAddress dns1(192, 168, 100, 1);\n\n\/\/ Webserver\nWebServer server(80);\n\n\/\/ LED\nconst uint16_t kIrLed = 4; \/\/ LED\u3092\u523a\u3057\u305f\u30d4\u30f3\nIRsend irsend(kIrLed);\n\n\/\/ \u30b3\u30fc\u30c9\u53d7\u3051\u53d6\u3063\u3066\u767a\u4fe1\nvoid sendIrCode(JsonArray rawData) {\n  uint16_t rawArray[rawData.size()];\n  for (size_t i = 0; i &lt; rawData.size(); i++) {\n    rawArray[i] = rawData[i];\n  }\n  Serial.println(&quot;Sending IR code...&quot;);\n  irsend.sendRaw(rawArray, rawData.size(), 38);  \/\/ 38kHz\u3067\u9001\u4fe1\n}\n\n\/\/ POST\u3067\u9001\u3089\u308c\u3066\u304d\u305fIR\u30b3\u30fc\u30c9\u3092\u51e6\u7406\nvoid handleSendIR() {\n  if (server.hasArg(&quot;plain&quot;)) {\n    String jsonString = server.arg(&quot;plain&quot;);\n\n    \/\/ JSON\u30d1\u30fc\u30b9\n    DynamicJsonDocument doc(1024);\n    DeserializationError error = deserializeJson(doc, jsonString);\n\n    if (error) {\n      server.sendHeader(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;); \/\/ CORS\u5bfe\u5fdc\n      server.send(400, &quot;application\/json&quot;, &quot;{\\&quot;error\\&quot;:\\&quot;Invalid JSON\\&quot;}&quot;);\n      return;\n    }\n\n    \/\/ JSON\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\n    JsonArray rawData = doc[&quot;code&quot;];\n    sendIrCode(rawData);\n\n    server.sendHeader(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;); \/\/ CORS\u5bfe\u5fdc \u3053\u3053\u3089\u3078\u3093\u304c\u306a\u3044\u3068HTML\u3067POST\u3067\u304d\u306a\u3044(CURL\u304b\u3089\u306f\u306a\u304f\u3066\u3082\u3067\u304d\u305f)\n    server.send(200, &quot;application\/json&quot;, &quot;{\\&quot;status\\&quot;:\\&quot;IR code sent\\&quot;}&quot;);\n  } else {\n    server.sendHeader(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;); \/\/ CORS\u5bfe\u5fdc\n    server.send(400, &quot;application\/json&quot;, &quot;{\\&quot;error\\&quot;:\\&quot;No data provided\\&quot;}&quot;);\n  }\n}\n\n\/\/ CORS\u5bfe\u5fdc\u306e\u30d7\u30ea\u30d5\u30e9\u30a4\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\uff08OPTIONS\uff09\u30cf\u30f3\u30c9\u30e9\nvoid handleOptions() {\n  server.sendHeader(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);\n  server.sendHeader(&quot;Access-Control-Allow-Methods&quot;, &quot;POST, GET, OPTIONS&quot;);\n  server.sendHeader(&quot;Access-Control-Allow-Headers&quot;, &quot;Content-Type&quot;);\n  server.send(204);\n}\n\nvoid setup() {\n\n  \/\/ Connect to WiFi\n  if (!WiFi.config(ip,gateway,subnet,dns1)){\n    Serial.println(&quot;Failed to configure!&quot;);\n  }\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {\n      delay(1000);\n      Serial.println(&quot;Connecting to WiFi...&quot;);\n  }\n  Serial.println(&quot;Connected to WiFi&quot;);\n\n  \/\/ IR init\n  irsend.begin();\n\n  \/\/ POST\u3067JSON\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\n  server.on(&quot;\/send_ir&quot;, HTTP_POST, handleSendIR);\n\n  \/\/ CORS\u5bfe\u5fdc\u306e\u30d7\u30ea\u30d5\u30e9\u30a4\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\uff08OPTIONS\uff09\u3092\u51e6\u7406\n  server.on(&quot;\/send_ir&quot;, HTTP_OPTIONS, handleOptions);\n\n  \/\/ \u30b5\u30fc\u30d0\u30fc\u3092\u958b\u59cb\n  server.begin();\n  Serial.println(&quot;Server started&quot;);\n\n}\n\nvoid loop() {\n\u00a0 server.handleClient();\n\n\u00a0 delay(100); \/\/\u6700\u4f4e\u9650\u306edelay\u3092\u5165\u308c\u305f\u307b\u3046\u304c\u3044\u3044\n}\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E5%81%B4%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3\"><\/span>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074(\u30ea\u30e2\u30b3\u30f3)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>RawData\u3092json\u5f62\u5f0f\u3067POST\u3059\u308c\u3070\u767a\u4fe1\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>$ curl -X POST http:\/\/192.168.100.51\/send_ir -H &quot;Content-Type: application\/json&quot; -d &#39;{&quot;code&quot;:[3499, 1736, 447, 424, 447, 424, 447, 1303, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447]}&#39;<\/code><\/pre><\/div>\n\n\n\n<p>HTML\u3067POST\u3059\u308b\u306a\u3089\u6b21\u306e\u3088\u3046\u306a\u611f\u3058\u3002\u30d5\u30a9\u30fc\u30e0\u306b\u51fa\u3066\u304d\u305f[]\u5185\u306bRawData\u66f8\u3044\u3066\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n  &lt;meta charset=&quot;UTF-8&quot;&gt;\n  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;\n  &lt;title&gt;IR Code Sender&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;h1&gt;Send IR Code to ESP32&lt;\/h1&gt;\n\n  &lt;form id=&quot;irForm&quot;&gt;\n    &lt;label for=&quot;irCode&quot;&gt;Enter IR Code (JSON format):&lt;\/label&gt;&lt;br&gt;\n    &lt;textarea id=&quot;irCode&quot; rows=&quot;10&quot; cols=&quot;50&quot;&gt;\n{&quot;code&quot;:[]}\n    &lt;\/textarea&gt;&lt;br&gt;&lt;br&gt;\n    &lt;button type=&quot;submit&quot;&gt;Send IR Code&lt;\/button&gt;\n  &lt;\/form&gt;\n\n  &lt;p id=&quot;response&quot;&gt;&lt;\/p&gt;\n\n  &lt;script&gt;\n    document.getElementById(&#39;irForm&#39;).addEventListener(&#39;submit&#39;, function(event) {\n      event.preventDefault();\n\n      const irCode = document.getElementById(&#39;irCode&#39;).value;\n      const url = &#39;http:\/\/192.168.100.51\/send_ir&#39;;  \/\/ ESP32\u306eIP\u30a2\u30c9\u30ec\u30b9\u306b\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\n\n      fetch(url, {\n        method: &#39;POST&#39;,\n        headers: {\n          &#39;Content-Type&#39;: &#39;application\/json&#39;,\n        },\n        body: irCode,\n      })\n      .then(response =&gt; response.json())\n      .then(data =&gt; {\n        document.getElementById(&#39;response&#39;).innerText = &#39;Response: &#39; + JSON.stringify(data);\n      })\n      .catch(error =&gt; {\n        document.getElementById(&#39;response&#39;).innerText = &#39;Error: &#39; + error;\n      });\n    });\n  &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre><\/div>\n\n\n\n<p>\u5373\u6642\u306b\u5b9f\u884c\u3057\u3066\u81ea\u52d5\u3067\u30da\u30fc\u30b8\u9589\u3058\u3066\u307b\u3057\u3044\u306a\u3089\u3053\u3063\u3061<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;\n    &lt;title&gt;ESP32 IR Sender&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Sending IR Code...&lt;\/h1&gt;\n\n    &lt;script&gt;\n        \/\/ \u30da\u30fc\u30b8\u3092\u958b\u3044\u305f\u6642\u306b\u3059\u3050\u306b\u5b9f\u884c\u3055\u308c\u308b\n        window.onload = function() {\n            \/\/ \u9001\u4fe1\u3059\u308bIR\u30b3\u30fc\u30c9\n            const irCode = [3499, 1736, 447, 424, 447, 424, 447, 1303, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 30170, 3499, 1736, 447, 424, 447, 424, 447, 1303, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447, 424, 447, 424, 447, 424, 447, 424, 447, 424, 447, 1303, 447];\n\n            \/\/ ESP32\u306bPOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\n            fetch(&#39;http:\/\/192.168.100.51\/send_ir&#39;, {  \/\/ ESP32\u306eIP\u30a2\u30c9\u30ec\u30b9\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\n                method: &#39;POST&#39;,\n                headers: {\n                    &#39;Content-Type&#39;: &#39;application\/json&#39;\n                },\n                body: JSON.stringify({\n                    code: irCode\n                })\n            })\n            .then(response =&gt; {\n                if (response.ok) {\n                    return response.json();\n                } else {\n                    throw new Error(&#39;Network response was not ok.&#39;);\n                }\n            })\n            .then(data =&gt; {\n                console.log(&quot;IR code sent successfully:&quot;, data);\n                \/\/ \u6210\u529f\u3057\u305f\u3089\u30da\u30fc\u30b8\u3092\u9589\u3058\u308b\n                window.close();\n            })\n            .catch(error =&gt; {\n                console.error(&quot;There was a problem with the fetch operation:&quot;, error);\n                \/\/ \u30a8\u30e9\u30fc\u304c\u3042\u3063\u3066\u3082\u30da\u30fc\u30b8\u3092\u9589\u3058\u308b\n                window.close();\n            });\n        };\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"461\" height=\"1024\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/262354-461x1024.jpg\" alt=\"\" class=\"wp-image-1682\" srcset=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/262354-461x1024.jpg 461w, https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/262354-135x300.jpg 135w, https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/262354.jpg 486w\" sizes=\"(max-width: 461px) 100vw, 461px\" \/><\/figure>\n\n\n\n<p>\u97f3\u58f0\u8a8d\u8b58\u3068\u7d44\u307f\u5408\u308f\u305b\u308c\u3070\u3082\u3063\u3068\u4fbf\u5229\u306b\u306a\u308a\u305d\u3046\u3002\u507dAlexa\u3092\u4f5c\u308a\u305f\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/173307.jpg\" alt=\"\" class=\"wp-image-1148\"\/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 ESP32\u3067\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u3092\u4f5c\u308a\u307e\u3059\u3002\u524d\u4f5c\u3063\u305f\u30e9\u30ba\u30d1\u30a4\u30ea\u30e2\u30b3\u30f3\u304b\u3089\u90e8\u54c1\u306f\u5168\u3066\u6d41\u7528\u3057\u307e\u3057\u305f\u3002 \u30d7\u30ed\u30b0\u30e9\u30e0 ESP32 \u8d64\u5916\u7dda\u306e\u30b3\u30fc\u30c9\u81ea\u4f53\u306fESP32\u306b\u4fdd\u5b58\u305b\u305a\u3001POST\u30ea\u30af\u30a8\u30b9\u30c8\u3067ESP32\u306b\u9001\u308a\u3064\u3051\u308b\u611f\u3058\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u3067\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3054\u3068\u306b\u66f8\u304d\u8fbc\u307e\u306a\u304f\u3066\u6e08\u307f\u307e\u3059\u3002 &#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1208,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50,4,7,23,35],"tags":[],"class_list":["post-1147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-4","category-7","category-23","category-35"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1147"}],"version-history":[{"count":8,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1147\/revisions"}],"predecessor-version":[{"id":1683,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1147\/revisions\/1683"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/media\/1208"}],"wp:attachment":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}