{"id":92610,"date":"2021-01-29T23:17:07","date_gmt":"2021-01-29T17:17:07","guid":{"rendered":"http:\/\/rcl-radio.ru\/?p=92610"},"modified":"2022-01-08T15:06:36","modified_gmt":"2022-01-08T09:06:36","slug":"esp32-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-%d1%81%d0%ba%d0%b5%d1%82%d1%87%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-wi-fi","status":"publish","type":"post","link":"http:\/\/rcl-radio.ru\/?p=92610","title":{"rendered":"ESP32 &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi"},"content":{"rendered":"<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u0442\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ESP32 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 USB \u043a\u0430\u0431\u0435\u043b\u044c \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043a\u0435\u0442\u0447 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f USB \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0441\u043a\u0435\u0442\u0447\u0435 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f) \u0441\u043a\u0435\u0442\u0447\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0441\u043a\u0435\u0442\u0447\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0412\u0430\u0448\u0435\u0439 Wi-Fi \u0441\u0435\u0442\u0438:<\/p>\n<blockquote><p><span style=\"color: #00979c;\">const<\/span> <span style=\"color: #00979c;\">char<\/span><span style=\"color: #434f54;\">*<\/span> <span style=\"color: #000000;\">host<\/span> <span style=\"color: #434f54;\">=<\/span> <span style=\"color: #005c5f;\">&#171;esp32-webupdate&#187;<\/span><span style=\"color: #000000;\">; \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442-\u0432\u0430<\/span><\/p>\n<p><span style=\"color: #00979c;\">const<\/span> <span style=\"color: #00979c;\">char<\/span><span style=\"color: #434f54;\">*<\/span> <span style=\"color: #000000;\">ssid<\/span> <span style=\"color: #434f54;\">=<\/span> <span style=\"color: #005c5f;\">&#171;\u0418\u041c\u042f_WI-FI_\u0441\u0435\u0442\u0438&#187;<\/span><span style=\"color: #000000;\">;<\/span><\/p>\n<p><span style=\"color: #00979c;\">const<\/span> <span style=\"color: #00979c;\">char<\/span><span style=\"color: #434f54;\">*<\/span> <span style=\"color: #000000;\">password<\/span> <span style=\"color: #434f54;\">=<\/span> <span style=\"color: #005c5f;\">&#171;\u041f\u0410\u0420\u041e\u041b\u042c&#187;<\/span><span style=\"color: #000000;\">;<\/span><\/p><\/blockquote>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u043a\u0435\u0442\u0447 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435:<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;WiFi.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;WiFiClient.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;WebServer.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;ESPmDNS.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;Update.h&gt;<\/span>\r\n\u00a0\r\nconst char<span style=\"color: #66cc66;\">*<\/span> host = <span style=\"color: #ff0000;\">\"esp32-webupdate\"<\/span>;\r\nconst char<span style=\"color: #66cc66;\">*<\/span> ssid = <span style=\"color: #ff0000;\">\"\u0418\u041c\u042f_WI-FI_\u0441\u0435\u0442\u0438\"<\/span>;\r\nconst char<span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #0066cc;\">password<\/span> = <span style=\"color: #ff0000;\">\"\u041f\u0410\u0420\u041e\u041b\u042c\"<\/span>;\r\n\u00a0\r\nWebServer server<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">80<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\nconst char<span style=\"color: #66cc66;\">*<\/span> serverIndex = <span style=\"color: #ff0000;\">\"&lt;form method='POST' action='\/update' enctype='multipart\/form-data'&gt;\"<\/span>\r\n                          <span style=\"color: #ff0000;\">\"&lt;input type='file' name='update'&gt;&lt;input type='submit' value='Update'&gt;&lt;\/form&gt;\"<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> setup<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  Serial.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">9600<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  WiFi.<span style=\"color: #006600;\">mode<\/span><span style=\"color: #66cc66;\">(<\/span>WIFI_AP_STA<span style=\"color: #66cc66;\">)<\/span>;\r\n  WiFi.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span>ssid, <span style=\"color: #0066cc;\">password<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>WiFi.<span style=\"color: #006600;\">waitForConnectResult<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> == WL_CONNECTED<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    MDNS.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span>host<span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">on<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"\/\"<\/span>, HTTP_GET, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    server.<span style=\"color: #006600;\">sendHeader<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Connection\"<\/span>, <span style=\"color: #ff0000;\">\"close\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">send<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span>, <span style=\"color: #ff0000;\">\"text\/html\"<\/span>, serverIndex<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">on<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"\/update\"<\/span>, HTTP_POST, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    server.<span style=\"color: #006600;\">sendHeader<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Connection\"<\/span>, <span style=\"color: #ff0000;\">\"close\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">send<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span>, <span style=\"color: #ff0000;\">\"text\/plain\"<\/span>, <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #006600;\">hasError<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> ? <span style=\"color: #ff0000;\">\"FAIL\"<\/span> : <span style=\"color: #ff0000;\">\"OK\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    ESP.<span style=\"color: #006600;\">restart<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n      HTTPUpload<span style=\"color: #66cc66;\">&amp;<\/span> upload = server.<span style=\"color: #006600;\">upload<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n      <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_START<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        Serial.<span style=\"color: #006600;\">setDebugOutput<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">true<\/span><span style=\"color: #66cc66;\">)<\/span>;Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update: %s<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #006600;\">filename<\/span>.<span style=\"color: #006600;\">c_str<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>Update.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span> <span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_WRITE<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #006600;\">write<\/span><span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #006600;\">buf<\/span>, upload.<span style=\"color: #006600;\">currentSize<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">!<\/span>= upload.<span style=\"color: #006600;\">currentSize<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>Update.<span style=\"color: #006600;\">printError<\/span><span style=\"color: #66cc66;\">(<\/span>Serial<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span> \r\n        <span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_END<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #0066cc;\">end<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">true<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update Success: %u<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>Rebooting...<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #006600;\">totalSize<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #66cc66;\">{<\/span>Update.<span style=\"color: #006600;\">printError<\/span><span style=\"color: #66cc66;\">(<\/span>Serial<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>Serial.<span style=\"color: #006600;\">setDebugOutput<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">false<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update Failed Unexpectedly (likely broken connection): status=%d<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #0066cc;\">status<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    MDNS.<span style=\"color: #006600;\">addService<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"http\"<\/span>, <span style=\"color: #ff0000;\">\"tcp\"<\/span>, <span style=\"color: #cc66cc;\">80<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"http:\/\/%s.local <span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, host<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span><span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">println<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"WiFi Failed\"<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> loop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  server.<span style=\"color: #006600;\">handleClient<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  delay<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<\/pre>\n<div id=\"marketWidget\"><\/div>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 ESP32 \u043a\u043d\u043e\u043f\u043a\u0443 EN (RESET), \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u043f\u043e\u0440\u0442\u0430 \u0412\u044b \u0443\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-225047.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-92611\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-225047.png\" alt=\"\" width=\"326\" height=\"323\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-225047.png 326w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-225047-200x198.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-225047-45x45.png 45w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/a><\/p>\n<p>\u0413\u0434\u0435 <strong>http:\/\/esp32-webupdate.local<\/strong> \u044d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 ESP32 (\u0432 \u0441\u043a\u0435\u0442\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439).<\/p>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0412\u044b \u0443\u0432\u0435\u0434\u0438\u0442\u0435 \u0444\u043e\u0440\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043a\u0435\u0442\u0447\u0430:<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235042.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-92612\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235042.png\" alt=\"\" width=\"454\" height=\"108\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235042.png 454w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235042-200x48.png 200w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <strong>bin<\/strong>. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Wi-Fi \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u043a\u0435\u0442\u0447 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 Wi-Fi, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0443 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0435\u0442\u0447 BLINK (\u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 ESP32) \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Wi-Fi:<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;WiFi.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;WiFiClient.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;WebServer.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;ESPmDNS.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;Update.h&gt;<\/span>\r\n\u00a0\r\nconst char<span style=\"color: #66cc66;\">*<\/span> host = <span style=\"color: #ff0000;\">\"esp32-webupdate\"<\/span>; \r\nconst char<span style=\"color: #66cc66;\">*<\/span> ssid = <span style=\"color: #ff0000;\">\"\u0418\u041c\u042f_WI-FI_\u0441\u0435\u0442\u0438\"<\/span>; \r\nconst char<span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #0066cc;\">password<\/span> = <span style=\"color: #ff0000;\">\"\u041f\u0410\u0420\u041e\u041b\u042c\"<\/span>;\r\n\u00a0\r\nWebServer server<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">80<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\nconst char<span style=\"color: #66cc66;\">*<\/span> serverIndex = <span style=\"color: #ff0000;\">\"&lt;form method='POST' action='\/update' enctype='multipart\/form-data'&gt;\"<\/span>\r\n                          <span style=\"color: #ff0000;\">\"&lt;input type='file' name='update'&gt;&lt;input type='submit' value='Update'&gt;&lt;\/form&gt;\"<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> setup<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <strong>pinMode<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,OUTPUT<span style=\"color: #66cc66;\">)<\/span>;<\/strong>\r\n\u00a0\r\n  Serial.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">9600<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  WiFi.<span style=\"color: #006600;\">mode<\/span><span style=\"color: #66cc66;\">(<\/span>WIFI_AP_STA<span style=\"color: #66cc66;\">)<\/span>;\r\n  WiFi.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span>ssid, <span style=\"color: #0066cc;\">password<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>WiFi.<span style=\"color: #006600;\">waitForConnectResult<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> == WL_CONNECTED<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    MDNS.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span>host<span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">on<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"\/\"<\/span>, HTTP_GET, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    server.<span style=\"color: #006600;\">sendHeader<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Connection\"<\/span>, <span style=\"color: #ff0000;\">\"close\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">send<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span>, <span style=\"color: #ff0000;\">\"text\/html\"<\/span>, serverIndex<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">on<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"\/update\"<\/span>, HTTP_POST, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    server.<span style=\"color: #006600;\">sendHeader<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Connection\"<\/span>, <span style=\"color: #ff0000;\">\"close\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #0066cc;\">send<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span>, <span style=\"color: #ff0000;\">\"text\/plain\"<\/span>, <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #006600;\">hasError<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> ? <span style=\"color: #ff0000;\">\"FAIL\"<\/span> : <span style=\"color: #ff0000;\">\"OK\"<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    ESP.<span style=\"color: #006600;\">restart<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>, <span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n      HTTPUpload<span style=\"color: #66cc66;\">&amp;<\/span> upload = server.<span style=\"color: #006600;\">upload<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n      <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_START<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        Serial.<span style=\"color: #006600;\">setDebugOutput<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">true<\/span><span style=\"color: #66cc66;\">)<\/span>;Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update: %s<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #006600;\">filename<\/span>.<span style=\"color: #006600;\">c_str<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>Update.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span> <span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_WRITE<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #006600;\">write<\/span><span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #006600;\">buf<\/span>, upload.<span style=\"color: #006600;\">currentSize<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">!<\/span>= upload.<span style=\"color: #006600;\">currentSize<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>Update.<span style=\"color: #006600;\">printError<\/span><span style=\"color: #66cc66;\">(<\/span>Serial<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span> \r\n        <span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>upload.<span style=\"color: #0066cc;\">status<\/span> == UPLOAD_FILE_END<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n        <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span>Update.<span style=\"color: #0066cc;\">end<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">true<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update Success: %u<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>Rebooting...<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #006600;\">totalSize<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #66cc66;\">{<\/span>Update.<span style=\"color: #006600;\">printError<\/span><span style=\"color: #66cc66;\">(<\/span>Serial<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>Serial.<span style=\"color: #006600;\">setDebugOutput<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #000000; font-weight: bold;\">false<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n        <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"Update Failed Unexpectedly (likely broken connection): status=%d<span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, upload.<span style=\"color: #0066cc;\">status<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    server.<span style=\"color: #006600;\">begin<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    MDNS.<span style=\"color: #006600;\">addService<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"http\"<\/span>, <span style=\"color: #ff0000;\">\"tcp\"<\/span>, <span style=\"color: #cc66cc;\">80<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    Serial.<span style=\"color: #006600;\">printf<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"http:\/\/%s.local <span style=\"color: #000099; font-weight: bold;\">\\n<\/span>\"<\/span>, host<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span><span style=\"color: #66cc66;\">{<\/span>Serial.<span style=\"color: #006600;\">println<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"WiFi Failed\"<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> loop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  server.<span style=\"color: #006600;\">handleClient<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #808080; font-style: italic;\">\/\/ delay(1);<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ BLINK \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<strong>  delay<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1000<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  digitalWrite<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,HIGH<span style=\"color: #66cc66;\">)<\/span>;\r\n  delay<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1000<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  digitalWrite<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,LOW<span style=\"color: #66cc66;\">)<\/span>;<\/strong> \r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043a\u0435\u0442\u0447 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043f\u0435\u0440\u0432\u043e\u043c\u0443, \u043d\u043e \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u0441\u043a\u0435\u0442\u0447\u0430 (\u043a\u043e\u0434 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 ESP32):<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #0066cc;\">void<\/span> setup<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{\r\n<\/span>  pinMode<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,OUTPUT<span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> loop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  delay<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1000<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  digitalWrite<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,HIGH<span style=\"color: #66cc66;\">)<\/span>;\r\n  delay<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1000<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  digitalWrite<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span>,LOW<span style=\"color: #66cc66;\">)<\/span>; \r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 Arduino IDE \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 &#171;<strong>\u0421\u043a\u0435\u0442\u0447<\/strong>&#171;, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 &#171;<strong>\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/strong>&#171;. \u041f\u043e\u0441\u043b\u0435 \u0441\u043a\u0435\u0442\u0447 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441\u043e \u0441\u043a\u0435\u0442\u0447\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <strong>bin<\/strong>.<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-232408.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-92618\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-232408.png\" alt=\"\" width=\"574\" height=\"255\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-232408.png 574w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-232408-200x89.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-29-232408-500x222.png 500w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/a><\/p>\n<p>\u0412 \u043e\u043d\u043b\u0430\u0439\u043d \u0444\u043e\u0440\u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Update&#187;.<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235059.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-92613\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235059.png\" alt=\"\" width=\"438\" height=\"114\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235059.png 438w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235059-200x52.png 200w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/a>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043a\u0435\u0442\u0447\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235132.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-92614\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235132.png\" alt=\"\" width=\"383\" height=\"130\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235132.png 383w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-01-28-235132-200x68.png 200w\" sizes=\"auto, (max-width: 383px) 100vw, 383px\" \/><\/a><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi, \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <strong>http:\/\/esp32-webupdate.local<\/strong> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435) \u0441\u043a\u0435\u0442\u0447\u0430.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043a\u0435\u0442\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 Wi-Fi \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u0442\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ESP32 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 USB \u043a\u0430\u0431\u0435\u043b\u044c \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043a\u0435\u0442\u0447 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f USB \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0441\u043a\u0435\u0442\u0447\u0435 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":92613,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[239],"tags":[],"class_list":["post-92610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino"],"views":5249,"_links":{"self":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/92610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=92610"}],"version-history":[{"count":6,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/92610\/revisions"}],"predecessor-version":[{"id":111172,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/92610\/revisions\/111172"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/media\/92613"}],"wp:attachment":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=92610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=92610"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=92610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}