{"id":391514,"date":"2024-06-29T09:52:02","date_gmt":"2024-06-29T09:52:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=391514"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=391514","title":{"rendered":"<span>\u0427\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 esp-idf \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Esp32<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443, ESP32?<\/strong><\/p>\n<p>Esp32 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Xtensa \u0441 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439. \u042d\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0413\u0430\u0440\u0432\u0430\u0440\u0434\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u0430\u044f \u0430\u0436 \u0432 1997 \u0433\u043e\u0434\u0443. \u0417\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 240\/160 \u041c\u0413\u0446.<\/p>\n<p>\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 80 \u041c\u0413\u0446<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e\u0435 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0441\u043d\u0430\u00bb \u2014 \u0430\u0436 \u00a05-2,5 \u043c\u043a\u0410.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 STM32, \u0441\u043a\u0430\u0436\u0435\u043c  \u0441\u0442\u043e\u044f\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435. \u0414\u0430, 400 \u041c\u0413\u0446, \u0434\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u041d\u043e, \u0441\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 STM32F407 \u0441\u0442\u043e\u0438\u0442 \u043e\u043a\u043e\u043b\u043e 1000 \u0440\u0443\u0431\u043b\u0435\u0439 \u043d\u0430 \u0410\u043b\u0438\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441\u0435.<\/p>\n<p>\u0418 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0438 \u0431\u044b \u00ab\u043d\u0430 \u0431\u043e\u0440\u0442\u0443\u00bb Bluetooth \u0438 Wi-Fi \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e 150-200 \u0440\u0443\u0431\u043b\u0435\u0439.<\/p>\n<p>\u0423\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043f\u0430\u0439\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u00ab\u043d\u0430 \u0431\u043e\u0440\u0442\u0443\u00bb<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 esp-idf VSCode \u0438 Eclipse?<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/espressif\/esp-idf\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/esp-idf<\/a><\/p>\n<p>ESP-IDF \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a Espressif IoT Development Framework \u2014 \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 IoT (\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0412\u0435\u0449\u0435\u0439). \u041f\u043b\u0430\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Esp32 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0412\u0435\u0449\u0435\u0439.<\/p>\n<p>\u0410 \u0442\u0430\u043a \u0436\u0435, \u0441 \u044d\u0442\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c Bluetooth Low Energy \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438, \u0441\u043a\u0430\u0436\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a WiFi \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Ethernet.<\/p>\n<p>\u0414\u0430, \u0446\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 <strong>Arduino IDE<\/strong>, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435. \u0414\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 DIY (\u0421\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0438\u043b\u0438 \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb (\u0430\u043d\u0433\u043b.\u00a0<strong>DIY<\/strong>\u00a0\u2014 Do It Yourself), \u2014 \u0432\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0434\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f), \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u041d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0436\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b FreeRTOS \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043c\u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438, \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u0447\u0435\u043c void setup() \u0438 void loop(). \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a LL \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (Low Level Layer Function)<\/p>\n<p>\u0422\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u00ab\u043f\u043e\u0434\u043d\u044f\u0442\u044c\u00bb BLE GATT Server \u043d\u0430 Arduino IDE, \u043d\u043e \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 esp-idf \u043e\u043d \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e.<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c I. \u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/h2>\n<p>\u0421\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 IDE Visual Studio Code \u0438 Eclipse \u043f\u043e\u0434 Linux \u0438 Windows \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043e\u043d\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433-\u0434\u0440\u0443\u0433\u0430. \u042d\u0442\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438 Eclipse \u0438 Visual Studio Code \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 Espressif Framework \u0438 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 toolchain. \u0420\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 <a href=\"https:\/\/github.com\/espressif\/vscode-esp-idf-extension\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/vscode-esp-idf-extension<\/a> \u0438 <a href=\"https:\/\/github.com\/espressif\/idf-eclipse-plugin\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/idf-eclipse-plugin<\/a> \u00ab\u0442\u0430\u0449\u0438\u0442\u00bb \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u043e\u0432\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0430\u043a\u0435\u0442\u0430 ESP-IDF \u0438 TOOLCHAIN. \u041a\u0430\u0436\u0434\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435, 3.3 \u0413\u0431, \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c.<\/p>\n<h2>Linux<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Ubuntu 21.04.<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043b\u044f deb \u0441\u0438\u0441\u0442\u0435\u043c:<\/p>\n<pre><code class=\"bash\">sudo apt update sudo apt upgrade sudo apt install python3-pip git cmake ninja-build<\/code><\/pre>\n<p>\u041d\u0443 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c cmake \u0438 ninja, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f snap<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b esp-idf \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b git, python3 \u0438 pip3. \u041f\u0440\u0438\u0447\u0451\u043c,  \u043d\u0430\u0434\u043e, \u0447\u0442\u043e\u0431\u044b python \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0441\u044f, \u043a\u0430\u043a python, \u0430 \u043d\u0435 python3 \u0438\u043b\u0438 python3.9 \u0438 \u0442.\u0434. \u0421\u043a\u0430\u0436\u0435\u043c, \u0432 Ubuntu 18.04, 20.10, 21.04 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a python \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0442. \u0415\u0441\u0442\u044c python3. \u0422\u0430\u043a, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043b\u0438\u0431\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u044f\u0433\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443:<\/p>\n<pre><code>mkdir ~\/.local\/bin ln -sf \/usr\/bin\/python3 ~\/.local\/bin\/python source ~\/.profile<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c Python Virtual Environment (<a href=\"https:\/\/docs.python.org\/3\/tutorial\/venv.html\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.python.org\/3\/tutorial\/venv.html<\/a>)<\/p>\n<pre><code>python3 -m venv ~\/python\/python3 code ~\/python\/python3\/bin\/activate<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u043e \u0434\u0430\u0436\u0435 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u044f\u0433\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0435\u0441\u0442\u044c \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u0432\u043e\u0445: \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 ~\/.local\/bin, \u0442\u043e .profile \u0435\u0433\u043e \u043d\u0435 \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>if [ -d \"$HOME\/.local\/bin\" ] ; then PATH=\"$PATH:$HOME\/.local\/bin\" fi<\/code><\/pre>\n<p>\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d, \u0435\u0433\u043e \u0432 \u043f\u0443\u0442\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c source ~\/.profile<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0435\u0431\u044f. \u0412\u044b\u0437\u043e\u0432\u0435\u043c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430:<\/p>\n<pre><code class=\"python\">$python Python 3.8.10 (default, Jun  2 2021, 10:49:15) [GCC 9.4.0] on linux Type \"help\", \"copyright\", \"credits\" or \"license\" for more information. >>> quit()<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c esp-idf. \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043e\u043c\u0430\u0448\u0435\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0432\u0440\u043e\u0434\u0435 ~\/espressif. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 Esp32, \u0430\u0436 \u0446\u0435\u043b\u044b\u0445 \u0442\u0440\u0438 \u2014 esp-adf, esp-idf, esp-mdf, \u0442\u0430\u043a \u0447\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u00ab\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0435\u00bb \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0441\u043b\u043e\u0436\u0438\u043c \u0438\u0445 \u0432 \u043e\u0434\u043d\u0443 \u043a\u0443\u0447\u0443. \u0418\u043c\u0435\u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432.<\/p>\n<pre><code class=\"bash\">mkdir ~\/espressif cd ~\/espressif git clone https:\/\/github.com\/espressif\/esp-idf.git --recursive<\/code><\/pre>\n<p>\u0418\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 .*rc-\u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f esp-idf. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ADF_PATH \u0438 MDF_PATH \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0430 \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0412\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Esp32 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0441\u0435\u0442\u0438 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442 Esp32.<\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u043b\u0438\u0430\u0441 idfexp. \u0422\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432 \u0441\u0440\u0435\u0434\u0443 IDF-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c, \u0441\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 ~\/espressif\/esp-idf\/export.sh<\/p>\n<pre><code class=\"bash\"># \u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f esp-idf, esp-adf, esp-mdf # ESP_PATH=\"$HOME\/espressif\" IDF_TOOLS_PATH=\"$HOME\/.espressif\"  if [ -d \"$ESP_PATH\/esp-idf\" ] ; then IDF_PATH=\"$ESP_PATH\/esp-idf\" export IDF_PATH if [ -f \"$IDF_PATH\/export.sh\" ] ; then alias idfexp=\"\\. $IDF_PATH\/export.sh\" fi fi  if [ -f \"$ESP_PATH\/esp-adf\" ] ; then ADF_PATH=\"$ESP_PATH\/esp-adf\" export ADF_PATH fi  if [ -f \"$ESP_PATH\/esp-mdf\" ] ; then MDF_PATH=\"$ESP_PATH\/esp-mdf\" export MDF_PATH fi  if [ -d \"$IDF_TOOLS_PATH\" ] ; then export IDF_TOOLS_PATH fi<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 ~\/.*rc-\u0444\u0430\u0439\u043b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 ~\/.bashrc (\\. \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f .*rc-\u0444\u0430\u0439\u043b\u043e\u0432 0644):<\/p>\n<pre><code class=\"bash\">if [ -f \"$HOME\/.idfrc\" ]; then        \\. \"$HOME\/.idfrc\" # This load Espressif environment  fi<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e toolchain \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 ~\/.espressif<\/p>\n<pre><code>cd ~\/espressif\/esp-idf .\/install.sh<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435 (\u0436\u0443\u0440\u043d\u0430\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d):<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>$ .\/install.sh <\/p>\n<p>WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the &#8216;\/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install &#8212;upgrade pip&#8217; command. All done! You can now run:<\/p>\n<p>  . .\/export.sh<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c venv:<\/p>\n<pre><code>WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the '\/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install --upgrade pip' command.<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"bash\">~\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install --upgrade pip pip<\/code><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 esp-idf \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e 2.2 \u0413\u0431, toolchain \u2014 1.2 \u0413\u0431. \u041d\u0443, \u0442\u0430\u043a \u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u043e\u0447\u043a\u0443:<\/p>\n<pre><code class=\"bash\">$du -hs ~\/espressif\/esp-idf 1.1G    esp-idf $du -hs ~\/.espressif 1.9G    .espressif<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 toolchain \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c source ~\/.idfrc \u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f ESP-IDF \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 idfexp \u0438\u043b\u0438<\/p>\n<pre><code class=\"bash\">. ~\/espressif\/esp-idf\/export.sh<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u043e\u0448\u043b\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>$ idfexp Detecting the Python interpreter Checking &#171;python&#187; &#8230; Python 3.8.10 &#171;python&#187; has been detected Adding ESP-IDF tools to PATH&#8230; Using Python interpreter in \/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python Checking if Python packages are up to date&#8230; Python requirements from \/home\/grandfatherpikhto\/espressif\/esp-idf\/requirements.txt are satisfied. Added the following directories to PATH:   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/esptool_py\/esptool   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/espcoredump   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/partition_table   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/app_update   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32s2-elf\/esp-2021r1-8.4.0\/xtensa-esp32s2-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32s3-elf\/esp-2021r1-8.4.0\/xtensa-esp32s3-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/riscv32-esp-elf\/esp-2021r1-8.4.0\/riscv32-esp-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/esp32ulp-elf\/2.28.51-esp-20191205\/esp32ulp-elf-binutils\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/esp32s2ulp-elf\/2.28.51-esp-20191205\/esp32s2ulp-elf-binutils\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/openocd-esp32\/v0.10.0-esp32-20210721\/openocd-esp32\/bin   \/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin   \/home\/grandfatherpikhto\/espressif\/esp-idf\/tools Done! You can now compile ESP-IDF projects. Go to the project directory and run:<\/p>\n<p>  idf.py build<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 ~\/espressif\/esp-idf\/examples, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c udev \u2014 \u043f\u0430\u043a\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u044f\u0434\u0440\u0430 Linux.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u00ab\u0441\u0431\u043e\u0440\u043d\u0443\u044e \u0441\u043e\u043b\u044f\u043d\u043a\u0443\u00bb \u0444\u0430\u0439\u043b\u0430 40-dfuse.rules \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043a\u043e\u043f\u0430\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 Esp32 (<a href=\"https:\/\/www.esp32.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.esp32.com\/<\/a>). \u0414\u0443\u043c\u0430\u044e, \u0432 \u043e\u0441\u043e\u0431\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u0445 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0441\u0442\u043e, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f idVendor \u0438 idProduct \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442 Esp32. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u00abrules\u00bb. \u0418\u043d\u0430\u0447\u0435, udev \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.<\/p>\n<pre><code class=\"bash\">SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"303a\", ATTRS{idProduct}==\"00??\", GROUP=\"plugdev\", MODE=\"0666\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6015\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"067b\", ATTRS{idProduct}==\"2303\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430:<\/p>\n<pre><code class=\"bash\">sudo su cp 40-dfuse.rules \/etc\/udev\/rules.d\/ systemctl restart udev.service udevadm control --reload-rules<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Esp32. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 Esp32 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u043d\u043e\u0432\u0430. \u0418\u043d\u0430\u0447\u0435, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 udev \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0423 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0433\u0438 \u043d\u0430\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ESP32-WROOM. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0448\u0438\u0442\u044c ~\/espressif\/esp-idf\/examples\/get-started\/hello_world. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, idf.py -p \/dev\/ttyUSB0 flash. \u041d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. idf.py \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0440\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Esp32 \u0438 \u043f\u0440\u043e\u0448\u044c\u0451\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u0443\u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>~\/Programs\/esp32\/hello_world  $ idf.py build<\/p>\n<p>Executing action: all (aliases: build)<\/p>\n<p>Running cmake in directory \/home\/denis\/Programs\/esp32\/hello_world\/build<\/p>\n<p>Executing &#171;cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 \/home\/denis\/Programs\/esp32\/hello_world&#187;&#8230;<\/p>\n<p>&#8212; IDF_TARGET not set, using default target: esp32<\/p>\n<p>&#8212; Found Git: \/usr\/bin\/git (found version &#171;2.32.0&#187;)<\/p>\n<p>&#8212; The C compiler identification is GNU 8.4.0<\/p>\n<p>&#8212; The CXX compiler identification is GNU 8.4.0<\/p>\n<p>&#8212; The ASM compiler identification is GNU<\/p>\n<p>&#8212; Found assembler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-gcc<\/p>\n<p>&#8212; Detecting C compiler ABI info<\/p>\n<p>&#8212; Detecting C compiler ABI info &#8212; done<\/p>\n<p>&#8212; Check for working C compiler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-gcc &#8212; skipped<\/p>\n<p>&#8212; Detecting C compile features<\/p>\n<p>&#8212; Detecting C compile features &#8212; done<\/p>\n<p>&#8212; Detecting CXX compiler ABI info<\/p>\n<p>&#8212; Detecting CXX compiler ABI info &#8212; done<\/p>\n<p>&#8212; Check for working CXX compiler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-g++ &#8212; skipped<\/p>\n<p>&#8212; Detecting CXX compile features<\/p>\n<p>&#8212; Detecting CXX compile features &#8212; done<\/p>\n<p>&#8212; Project is not inside a git repository, or git repository has no commits; will not use &#8216;git describe&#8217; to determine PROJECT_VER.<\/p>\n<p>&#8212; Building ESP-IDF components for target esp32<\/p>\n<p>&#8212; Project sdkconfig file \/home\/denis\/Programs\/esp32\/hello_world\/sdkconfig<\/p>\n<p>&#8212; Found PythonInterp: \/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python (found version &#171;3.9.6&#187;)<\/p>\n<p>&#8212; Found Perl: \/usr\/bin\/perl (found version &#171;5.32.1&#187;)<\/p>\n<p>&#8212; App &#171;hello-world&#187; version: 1<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/Programs\/esp32\/hello_world\/build\/esp-idf\/esp_system\/ld\/memory.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_system\/ld\/esp32\/sections.ld.in<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.api.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.libgcc.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.newlib-data.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.syscalls.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.newlib-funcs.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.newlib-time.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/soc\/esp32\/ld\/esp32.peripherals.ld<\/p>\n<p>&#8212; Components: app_trace app_update asio bootloader bootloader_support bt cbor cmock coap console cxx driver efuse esp-tls esp32 esp_adc_cal esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_ipc esp_lcd esp_local_ctrl esp_netif esp_phy esp_pm esp_ringbuf esp_rom esp_serial_slave_link esp_system esp_timer esp_websocket_client esp_wifi espcoredump esptool_py expat fatfs freemodbus freertos hal heap idf_test ieee802154 jsmn json libsodium log lwip main mbedtls mdns mqtt newlib nghttp nvs_flash openssl openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport tcpip_adapter tinyusb ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa<\/p>\n<p>&#8212; Component paths: \/home\/denis\/espressif\/esp-idf\/components\/app_trace \/home\/denis\/espressif\/esp-idf\/components\/app_update \/home\/denis\/espressif\/esp-idf\/components\/asio \/home\/denis\/espressif\/esp-idf\/components\/bootloader \/home\/denis\/espressif\/esp-idf\/components\/bootloader_support \/home\/denis\/espressif\/esp-idf\/components\/bt \/home\/denis\/espressif\/esp-idf\/components\/cbor \/home\/denis\/espressif\/esp-idf\/components\/cmock \/home\/denis\/espressif\/esp-idf\/components\/coap \/home\/denis\/espressif\/esp-idf\/components\/console \/home\/denis\/espressif\/esp-idf\/components\/cxx \/home\/denis\/espressif\/esp-idf\/components\/driver \/home\/denis\/espressif\/esp-idf\/components\/efuse \/home\/denis\/espressif\/esp-idf\/components\/esp-tls \/home\/denis\/espressif\/esp-idf\/components\/esp32 \/home\/denis\/espressif\/esp-idf\/components\/esp_adc_cal \/home\/denis\/espressif\/esp-idf\/components\/esp_common \/home\/denis\/espressif\/esp-idf\/components\/esp_eth \/home\/denis\/espressif\/esp-idf\/components\/esp_event \/home\/denis\/espressif\/esp-idf\/components\/esp_gdbstub \/home\/denis\/espressif\/esp-idf\/components\/esp_hid \/home\/denis\/espressif\/esp-idf\/components\/esp_http_client \/home\/denis\/espressif\/esp-idf\/components\/esp_http_server \/home\/denis\/espressif\/esp-idf\/components\/esp_https_ota \/home\/denis\/espressif\/esp-idf\/components\/esp_https_server \/home\/denis\/espressif\/esp-idf\/components\/esp_hw_support \/home\/denis\/espressif\/esp-idf\/components\/esp_ipc \/home\/denis\/espressif\/esp-idf\/components\/esp_lcd \/home\/denis\/espressif\/esp-idf\/components\/esp_local_ctrl \/home\/denis\/espressif\/esp-idf\/components\/esp_netif \/home\/denis\/espressif\/esp-idf\/components\/esp_phy \/home\/denis\/espressif\/esp-idf\/components\/esp_pm \/home\/denis\/espressif\/esp-idf\/components\/esp_ringbuf \/home\/denis\/espressif\/esp-idf\/components\/esp_rom \/home\/denis\/espressif\/esp-idf\/components\/esp_serial_slave_link \/home\/denis\/espressif\/esp-idf\/components\/esp_system \/home\/denis\/espressif\/esp-idf\/components\/esp_timer \/home\/denis\/espressif\/esp-idf\/components\/esp_websocket_client \/home\/denis\/espressif\/esp-idf\/components\/esp_wifi \/home\/denis\/espressif\/esp-idf\/components\/espcoredump \/home\/denis\/espressif\/esp-idf\/components\/esptool_py \/home\/denis\/espressif\/esp-idf\/components\/expat \/home\/denis\/espressif\/esp-idf\/components\/fatfs \/home\/denis\/espressif\/esp-idf\/components\/freemodbus \/home\/denis\/espressif\/esp-idf\/components\/freertos \/home\/denis\/espressif\/esp-idf\/components\/hal \/home\/denis\/espressif\/esp-idf\/components\/heap \/home\/denis\/espressif\/esp-idf\/components\/idf_test \/home\/denis\/espressif\/esp-idf\/components\/ieee802154 \/home\/denis\/espressif\/esp-idf\/components\/jsmn \/home\/denis\/espressif\/esp-idf\/components\/json \/home\/denis\/espressif\/esp-idf\/components\/libsodium \/home\/denis\/espressif\/esp-idf\/components\/log \/home\/denis\/espressif\/esp-idf\/components\/lwip \/home\/denis\/Programs\/esp32\/hello_world\/main \/home\/denis\/espressif\/esp-idf\/components\/mbedtls \/home\/denis\/espressif\/esp-idf\/components\/mdns \/home\/denis\/espressif\/esp-idf\/components\/mqtt \/home\/denis\/espressif\/esp-idf\/components\/newlib \/home\/denis\/espressif\/esp-idf\/components\/nghttp \/home\/denis\/espressif\/esp-idf\/components\/nvs_flash \/home\/denis\/espressif\/esp-idf\/components\/openssl \/home\/denis\/espressif\/esp-idf\/components\/openthread \/home\/denis\/espressif\/esp-idf\/components\/partition_table \/home\/denis\/espressif\/esp-idf\/components\/perfmon \/home\/denis\/espressif\/esp-idf\/components\/protobuf-c \/home\/denis\/espressif\/esp-idf\/components\/protocomm \/home\/denis\/espressif\/esp-idf\/components\/pthread \/home\/denis\/espressif\/esp-idf\/components\/sdmmc \/home\/denis\/espressif\/esp-idf\/components\/soc \/home\/denis\/espressif\/esp-idf\/components\/spi_flash \/home\/denis\/espressif\/esp-idf\/components\/spiffs \/home\/denis\/espressif\/esp-idf\/components\/tcp_transport \/home\/denis\/espressif\/esp-idf\/components\/tcpip_adapter \/home\/denis\/espressif\/esp-idf\/components\/tinyusb \/home\/denis\/espressif\/esp-idf\/components\/ulp \/home\/denis\/espressif\/esp-idf\/components\/unity \/home\/denis\/espressif\/esp-idf\/components\/usb \/home\/denis\/espressif\/esp-idf\/components\/vfs \/home\/denis\/espressif\/esp-idf\/components\/wear_levelling \/home\/denis\/espressif\/esp-idf\/components\/wifi_provisioning \/home\/denis\/espressif\/esp-idf\/components\/wpa_supplicant \/home\/denis\/espressif\/esp-idf\/components\/xtensa<\/p>\n<p>&#8212; Configuring done<\/p>\n<p>&#8212; Generating done<\/p>\n<p>&#8212; Build files have been written to: \/home\/denis\/Programs\/esp32\/hello_world\/build<\/p>\n<p>Running ninja in directory \/home\/denis\/Programs\/esp32\/hello_world\/build<\/p>\n<p>Executing &#171;ninja all&#187;&#8230;<\/p>\n<p>[8\/994] Generating ..\/..\/partition_table\/partition-table.bin<\/p>\n<p>Partition table binary generated. Contents:<\/p>\n<hr\/>\n<h2>ESP-IDF Partition Table<\/h2>\n<h2>Name, Type, SubType, Offset, Size, Flags<\/h2>\n<p>nvs,data,nvs,0x9000,24K,<\/p>\n<p>phy_init,data,phy,0xf000,4K,<\/p>\n<p>factory,app,factory,0x10000,1M,<\/p>\n<hr\/>\n<p>[210\/994] Performing configure step for &#8216;bootloader&#8217;<\/p>\n<p>&#8212; Found Git: \/usr\/bin\/git (found version &#171;2.32.0&#187;)<\/p>\n<p>&#8212; The C compiler identification is GNU 8.4.0<\/p>\n<p>&#8212; The CXX compiler identification is GNU 8.4.0<\/p>\n<p>&#8212; The ASM compiler identification is GNU<\/p>\n<p>&#8212; Found assembler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-gcc<\/p>\n<p>&#8212; Detecting C compiler ABI info<\/p>\n<p>&#8212; Detecting C compiler ABI info &#8212; done<\/p>\n<p>&#8212; Check for working C compiler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-gcc &#8212; skipped<\/p>\n<p>&#8212; Detecting C compile features<\/p>\n<p>&#8212; Detecting C compile features &#8212; done<\/p>\n<p>&#8212; Detecting CXX compiler ABI info<\/p>\n<p>&#8212; Detecting CXX compiler ABI info &#8212; done<\/p>\n<p>&#8212; Check for working CXX compiler: \/home\/denis\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin\/xtensa-esp32-elf-g++ &#8212; skipped<\/p>\n<p>&#8212; Detecting CXX compile features<\/p>\n<p>&#8212; Detecting CXX compile features &#8212; done<\/p>\n<p>&#8212; Building ESP-IDF components for target esp32<\/p>\n<p>&#8212; Project sdkconfig file \/home\/denis\/Programs\/esp32\/hello_world\/sdkconfig<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/soc\/esp32\/ld\/esp32.peripherals.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.api.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.libgcc.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/esp_rom\/esp32\/ld\/esp32.rom.newlib-funcs.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/bootloader\/subproject\/main\/ld\/esp32\/bootloader.ld<\/p>\n<p>&#8212; Adding linker script \/home\/denis\/espressif\/esp-idf\/components\/bootloader\/subproject\/main\/ld\/esp32\/bootloader.rom.ld<\/p>\n<p>&#8212; Components: bootloader bootloader_support efuse esp32 esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa<\/p>\n<p>&#8212; Component paths: \/home\/denis\/espressif\/esp-idf\/components\/bootloader \/home\/denis\/espressif\/esp-idf\/components\/bootloader_support \/home\/denis\/espressif\/esp-idf\/components\/efuse \/home\/denis\/espressif\/esp-idf\/components\/esp32 \/home\/denis\/espressif\/esp-idf\/components\/esp_common \/home\/denis\/espressif\/esp-idf\/components\/esp_hw_support \/home\/denis\/espressif\/esp-idf\/components\/esp_rom \/home\/denis\/espressif\/esp-idf\/components\/esp_system \/home\/denis\/espressif\/esp-idf\/components\/esptool_py \/home\/denis\/espressif\/esp-idf\/components\/freertos \/home\/denis\/espressif\/esp-idf\/components\/hal \/home\/denis\/espressif\/esp-idf\/components\/log \/home\/denis\/espressif\/esp-idf\/components\/bootloader\/subproject\/main \/home\/denis\/espressif\/esp-idf\/components\/bootloader\/subproject\/components\/micro-ecc \/home\/denis\/espressif\/esp-idf\/components\/newlib \/home\/denis\/espressif\/esp-idf\/components\/partition_table \/home\/denis\/espressif\/esp-idf\/components\/soc \/home\/denis\/espressif\/esp-idf\/components\/spi_flash \/home\/denis\/espressif\/esp-idf\/components\/xtensa<\/p>\n<p>&#8212; Configuring done<\/p>\n<p>&#8212; Generating done<\/p>\n<p>&#8212; Build files have been written to: \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader<\/p>\n<p>[272\/994] Performing build step for &#8216;bootloader&#8217;<\/p>\n<p>[1\/95] Generating project_elf_src_esp32.c<\/p>\n<p>[2\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/esp32\/esp_efuse_table.c.obj<\/p>\n<p>[3\/95] Building C object CMakeFiles\/bootloader.elf.dir\/project_elf_src_esp32.c.obj<\/p>\n<p>[4\/95] Building C object esp-idf\/hal\/CMakeFiles\/__idf_hal.dir\/mpu_hal.c.obj<\/p>\n<p>[5\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/lldesc.c.obj<\/p>\n<p>[6\/95] Building C object esp-idf\/hal\/CMakeFiles\/__idf_hal.dir\/cpu_hal.c.obj<\/p>\n<p>[7\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/adc_periph.c.obj<\/p>\n<p>[8\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/soc_include_legacy_warn.c.obj<\/p>\n<p>[9\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/dac_periph.c.obj<\/p>\n<p>[10\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/i2c_periph.c.obj<\/p>\n<p>[11\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/i2s_periph.c.obj<\/p>\n<p>[12\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/gpio_periph.c.obj<\/p>\n<p>[13\/95] Building C object esp-idf\/hal\/CMakeFiles\/__idf_hal.dir\/wdt_hal_iram.c.obj<\/p>\n<p>[14\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/interrupts.c.obj<\/p>\n<p>[15\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/lcd_periph.c.obj<\/p>\n<p>[16\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/rmt_periph.c.obj<\/p>\n<p>[17\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/ledc_periph.c.obj<\/p>\n<p>[18\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/mcpwm_periph.c.obj<\/p>\n<p>[19\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/rtc_io_periph.c.obj<\/p>\n<p>[20\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/sdmmc_periph.c.obj<\/p>\n<p>[21\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/pcnt_periph.c.obj<\/p>\n<p>[22\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/sigmadelta_periph.c.obj<\/p>\n<p>[23\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/sdio_slave_periph.c.obj<\/p>\n<p>[24\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/timer_periph.c.obj<\/p>\n<p>[25\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/uart_periph.c.obj<\/p>\n<p>[26\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/spi_periph.c.obj<\/p>\n<p>[27\/95] Building C object esp-idf\/soc\/CMakeFiles\/__idf_soc.dir\/esp32\/touch_sensor_periph.c.obj<\/p>\n<p>[28\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_clock_init.c.obj<\/p>\n<p>[29\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_common_loader.c.obj<\/p>\n<p>[30\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_mem.c.obj<\/p>\n<p>[31\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_common.c.obj<\/p>\n<p>[32\/95] Building C object esp-idf\/spi_flash\/CMakeFiles\/__idf_spi_flash.dir\/esp32\/spi_flash_rom_patch.c.obj<\/p>\n<p>[33\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_random.c.obj<\/p>\n<p>[34\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_random_esp32.c.obj<\/p>\n<p>[35\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_flash.c.obj<\/p>\n<p>[36\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/flash_partitions.c.obj<\/p>\n<p>[37\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/secure_boot.c.obj<\/p>\n<p>[38\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/flash_encrypt.c.obj<\/p>\n<p>[39\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/flash_qio_mode.c.obj<\/p>\n<p>[40\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_efuse_esp32.c.obj<\/p>\n<p>[41\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_utility.c.obj<\/p>\n<p>[42\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_flash_config_esp32.c.obj<\/p>\n<p>[43\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_console_loader.c.obj<\/p>\n<p>[44\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_init.c.obj<\/p>\n<p>[45\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/esp_image_format.c.obj<\/p>\n<p>[46\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_clock_loader.c.obj<\/p>\n<p>[47\/95] Building C object esp-idf\/micro-ecc\/CMakeFiles\/__idf_micro-ecc.dir\/uECC_verify_antifault.c.obj<\/p>\n<p>[48\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_panic.c.obj<\/p>\n<p>[49\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/bootloader_console.c.obj<\/p>\n<p>[50\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/esp32\/esp_efuse_fields.c.obj<\/p>\n<p>[51\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/esp32\/bootloader_sha.c.obj<\/p>\n<p>[52\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/esp32\/esp_efuse_utility.c.obj<\/p>\n<p>[53\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/src\/esp_efuse_api_key_esp32.c.obj<\/p>\n<p>[54\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/src\/esp_efuse_api.c.obj<\/p>\n<p>[55\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/src\/esp_efuse_fields.c.obj<\/p>\n<p>[56\/95] Building C object esp-idf\/esp_system\/CMakeFiles\/__idf_esp_system.dir\/esp_err.c.obj<\/p>\n<p>[57\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/compare_set.c.obj<\/p>\n<p>[58\/95] Building C object esp-idf\/bootloader_support\/CMakeFiles\/__idf_bootloader_support.dir\/src\/esp32\/bootloader_esp32.c.obj<\/p>\n<p>[59\/95] Building C object esp-idf\/efuse\/CMakeFiles\/__idf_efuse.dir\/src\/esp_efuse_utility.c.obj<\/p>\n<p>[60\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_clk_init.c.obj<\/p>\n<p>[61\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_pm.c.obj<\/p>\n<p>[62\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/cpu_util.c.obj<\/p>\n<p>[63\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_init.c.obj<\/p>\n<p>[64\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/chip_info.c.obj<\/p>\n<p>[65\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_sleep.c.obj<\/p>\n<p>[66\/95] Building C object esp-idf\/xtensa\/CMakeFiles\/__idf_xtensa.dir\/eri.c.obj<\/p>\n<p>[67\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_wdt.c.obj<\/p>\n<p>[68\/95] Building C object esp-idf\/esp_rom\/CMakeFiles\/__idf_esp_rom.dir\/patches\/esp_rom_crc.c.obj<\/p>\n<p>[69\/95] Building C object esp-idf\/xtensa\/CMakeFiles\/__idf_xtensa.dir\/xt_trax.c.obj<\/p>\n<p>[70\/95] Building ASM object esp-idf\/esp_rom\/CMakeFiles\/__idf_esp_rom.dir\/patches\/esp_rom_longjmp.S.obj<\/p>\n<p>[71\/95] Building C object esp-idf\/esp_rom\/CMakeFiles\/__idf_esp_rom.dir\/patches\/esp_rom_sys.c.obj<\/p>\n<p>[72\/95] Building C object esp-idf\/esp_common\/CMakeFiles\/__idf_esp_common.dir\/src\/esp_err_to_name.c.obj<\/p>\n<p>[73\/95] Building C object esp-idf\/esp_rom\/CMakeFiles\/__idf_esp_rom.dir\/patches\/esp_rom_uart.c.obj<\/p>\n<p>[74\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_time.c.obj<\/p>\n<p>[75\/95] Building C object esp-idf\/main\/CMakeFiles\/__idf_main.dir\/bootloader_start.c.obj<\/p>\n<p>[76\/95] Building C object esp-idf\/log\/CMakeFiles\/__idf_log.dir\/log_noos.c.obj<\/p>\n<p>[77\/95] Building C object esp-idf\/log\/CMakeFiles\/__idf_log.dir\/log_buffers.c.obj<\/p>\n<p>[78\/95] Building C object esp-idf\/log\/CMakeFiles\/__idf_log.dir\/log.c.obj<\/p>\n<p>[79\/95] Building C object esp-idf\/esp_hw_support\/CMakeFiles\/__idf_esp_hw_support.dir\/port\/esp32\/rtc_clk.c.obj<\/p>\n<p>[80\/95] Linking C static library esp-idf\/log\/liblog.a<\/p>\n<p>[81\/95] Linking C static library esp-idf\/esp_rom\/libesp_rom.a<\/p>\n<p>[82\/95] Linking C static library esp-idf\/esp_common\/libesp_common.a<\/p>\n<p>[83\/95] Linking C static library esp-idf\/xtensa\/libxtensa.a<\/p>\n<p>[84\/95] Linking C static library esp-idf\/esp_hw_support\/libesp_hw_support.a<\/p>\n<p>[85\/95] Linking C static library esp-idf\/esp_system\/libesp_system.a<\/p>\n<p>[86\/95] Linking C static library esp-idf\/efuse\/libefuse.a<\/p>\n<p>[87\/95] Linking C static library esp-idf\/bootloader_support\/libbootloader_support.a<\/p>\n<p>[88\/95] Linking C static library esp-idf\/spi_flash\/libspi_flash.a<\/p>\n<p>[89\/95] Linking C static library esp-idf\/micro-ecc\/libmicro-ecc.a<\/p>\n<p>[90\/95] Linking C static library esp-idf\/soc\/libsoc.a<\/p>\n<p>[91\/95] Linking C static library esp-idf\/hal\/libhal.a<\/p>\n<p>[92\/95] Linking C static library esp-idf\/main\/libmain.a<\/p>\n<p>[93\/95] Linking C executable bootloader.elf<\/p>\n<p>[94\/95] Generating binary image from built executable<\/p>\n<p>esptool.py v3.2-dev<\/p>\n<p>Merged 1 ELF section<\/p>\n<p>Generated \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader\/bootloader.bin<\/p>\n<p>[95\/95] cd \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader\/esp-idf\/esptool_py &amp;&amp; \/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python \/home\/denis\/espressif\/esp-idf\/components\/partition_table\/check_sizes.py &#8212;offset 0x8000 bootloader 0x1000 \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader\/bootloader.bin<\/p>\n<p>Bootloader binary size 0x6330 bytes. 0xcd0 bytes (13%) free.<\/p>\n<p>[993\/994] Generating binary image from built executable<\/p>\n<p>esptool.py v3.2-dev<\/p>\n<p>Merged 2 ELF sections<\/p>\n<p>Generated \/home\/denis\/Programs\/esp32\/hello_world\/build\/hello-world.bin<\/p>\n<p>[994\/994] cd \/home\/denis\/Programs\/esp32\/hello_world\/build\/esp-idf\/esptool_py &amp;&amp; \/home\/denis\/.espressif\/python_env\/idf&#8230;32\/hello_world\/build\/partition_table\/partition-table.bin \/home\/denis\/Programs\/esp32\/hello_world\/build\/hello-world.bin<\/p>\n<p>hello-world.bin binary size 0x28eb0 bytes. Smallest app partition is 0x100000 bytes. 0xd7150 bytes (84%) free.<\/p>\n<p>Project build complete. To flash, run this command:<\/p>\n<p>\/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python ..\/..\/..\/espressif\/esp-idf\/components\/esptool_py\/esptool\/esptool.py -p (PORT) -b 460800 &#8212;before default_reset &#8212;after hard_reset &#8212;chip esp32  write_flash &#8212;flash_mode dio &#8212;flash_size detect &#8212;flash_freq 40m 0x1000 build\/bootloader\/bootloader.bin 0x8000 build\/partition_table\/partition-table.bin 0x10000 build\/hello-world.bin<\/p>\n<p>or run &#8216;idf.py -p (PORT) flash&#8217;<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0431\u043e\u0440\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 esp. \u041f\u043e\u0440\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 idf.py \u043d\u0430\u0447\u043d\u0451\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b. \u041b\u0443\u0447\u0448\u0435, idf.py -p \/dev\/ttyUSB0 flash<\/p>\n<pre><code>idf.py flash<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>~\/Programs\/esp32\/hello_world  $ idf.py -p \/dev\/ttyUSB0 flash<\/p>\n<p>Executing action: flash<\/p>\n<p>Running ninja in directory \/home\/denis\/Programs\/esp32\/hello_world\/build<\/p>\n<p>Executing &#171;ninja flash&#187;&#8230;<\/p>\n<p>[1\/5] cd \/home\/denis\/Programs\/esp32\/hello_world\/build\/esp-idf\/esptool_py &amp;&amp; \/home\/denis\/.espressif\/python_env\/idf4.4_&#8230;32\/hello_world\/build\/partition_table\/partition-table.bin \/home\/denis\/Programs\/esp32\/hello_world\/build\/hello-world.bin<\/p>\n<p>hello-world.bin binary size 0x28eb0 bytes. Smallest app partition is 0x100000 bytes. 0xd7150 bytes (84%) free.<\/p>\n<p>[2\/5] Performing build step for &#8216;bootloader&#8217;<\/p>\n<p>[1\/1] cd \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader\/esp-idf\/esptool_py &amp;&amp; \/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python \/home\/denis\/espressif\/esp-idf\/components\/partition_table\/check_sizes.py &#8212;offset 0x8000 bootloader 0x1000 \/home\/denis\/Programs\/esp32\/hello_world\/build\/bootloader\/bootloader.bin<\/p>\n<p>Bootloader binary size 0x6330 bytes. 0xcd0 bytes (13%) free.<\/p>\n<p>[2\/3] cd \/home\/denis\/espressif\/esp-idf\/components\/esptool_py &amp;&amp; \/home\/denis\/.espressif\/tools\/cmake\/3.20.3\/bin\/cmake -&#8230;\/denis\/Programs\/esp32\/hello_world\/build&#187; -P \/home\/denis\/espressif\/esp-idf\/components\/esptool_py\/run_serial_tool.cmake<\/p>\n<p>esptool.py esp32 -p \/dev\/ttyUSB0 -b 460800 &#8212;before=default_reset &#8212;after=hard_reset write_flash &#8212;flash_mode dio &#8212;flash_freq 40m &#8212;flash_size 2MB 0x1000 bootloader\/bootloader.bin 0x10000 hello-world.bin 0x8000 partition_table\/partition-table.bin<\/p>\n<p>esptool.py v3.2-dev<\/p>\n<p>Serial port \/dev\/ttyUSB0<\/p>\n<p>Connecting&#8230;.<\/p>\n<p>Chip is ESP32-D0WDQ6 (revision 1)<\/p>\n<p>Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None<\/p>\n<p>Crystal is 40MHz<\/p>\n<p>MAC: 08:3a:f2:a9:a8:c0<\/p>\n<p>Uploading stub&#8230;<\/p>\n<p>Running stub&#8230;<\/p>\n<p>Stub running&#8230;<\/p>\n<p>Changing baud rate to 460800<\/p>\n<p>Changed.<\/p>\n<p>Configuring flash size&#8230;<\/p>\n<p>Flash will be erased from 0x00001000 to 0x00007fff&#8230;<\/p>\n<p>Flash will be erased from 0x00010000 to 0x00038fff&#8230;<\/p>\n<p>Flash will be erased from 0x00008000 to 0x00008fff&#8230;<\/p>\n<p>Compressed 25392 bytes to 15839&#8230;<\/p>\n<p>Writing at 0x00001000&#8230; (100 %)<\/p>\n<p>Wrote 25392 bytes (15839 compressed) at 0x00001000 in 0.7 seconds (effective 297.5 kbit\/s)&#8230;<\/p>\n<p>Hash of data verified.<\/p>\n<p>Compressed 167600 bytes to 88661&#8230;<\/p>\n<p>Writing at 0x00010000&#8230; (16 %)<\/p>\n<p>Writing at 0x0001ae43&#8230; (33 %)<\/p>\n<p>Writing at 0x000205e9&#8230; (50 %)<\/p>\n<p>Writing at 0x00025dcf&#8230; (66 %)<\/p>\n<p>Writing at 0x0002e3d4&#8230; (83 %)<\/p>\n<p>Writing at 0x000367a3&#8230; (100 %)<\/p>\n<p>Wrote 167600 bytes (88661 compressed) at 0x00010000 in 2.3 seconds (effective 593.9 kbit\/s)&#8230;<\/p>\n<p>Hash of data verified.<\/p>\n<p>Compressed 3072 bytes to 103&#8230;<\/p>\n<p>Writing at 0x00008000&#8230; (100 %)<\/p>\n<p>Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 546.2 kbit\/s)&#8230;<\/p>\n<p>Hash of data verified.<\/p>\n<p>Leaving&#8230;<\/p>\n<p>Hard resetting via RTS pin&#8230;<\/p>\n<p>Done<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre><code>idf.py -p \/dev\/ttyUSB0 monitor<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>~\/Programs\/esp32\/hello_world  $ idf.py -p \/dev\/ttyUSB0 monitor                                                                                                                                                                         127 \u21b5<\/p>\n<p>Executing action: monitor<\/p>\n<p>Running idf_monitor in directory \/home\/denis\/Programs\/esp32\/hello_world<\/p>\n<p>Executing &#171;\/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python \/home\/denis\/espressif\/esp-idf\/tools\/idf_monitor.py -p \/dev\/ttyUSB0 -b 115200 &#8212;toolchain-prefix xtensa-esp32-elf- &#8212;target esp32 &#8212;revision 0 \/home\/denis\/Programs\/esp32\/hello_world\/build\/hello-world.elf -m &#8216;\/home\/denis\/.espressif\/python_env\/idf4.4_py3.9_env\/bin\/python&#8217; &#8216;\/home\/denis\/espressif\/esp-idf\/tools\/idf.py&#8217; &#8216;-p&#8217; &#8216;\/dev\/ttyUSB0&#8242;&#187;&#8230;<\/p>\n<p>&#8212; idf_monitor on \/dev\/ttyUSB0 115200 &#8212;<\/p>\n<p>&#8212; Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H &#8212;<\/p>\n<p>ets Jun  8 2016 00:22:57<\/p>\n<p>rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)<\/p>\n<p>configsip: 0, SPIWP:0xee<\/p>\n<p>clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00<\/p>\n<p>mode:DIO, clock div:2<\/p>\n<p>load:0x3fff0030,len:6724<\/p>\n<p>load:0x40078000,len:14780<\/p>\n<p>load:0x40080400,len:3792<\/p>\n<p>0x40080400: _init at ??:?<\/p>\n<p>entry 0x40080694<\/p>\n<p>I (27) boot: ESP-IDF v4.4-dev-2740-gf65c8249af 2nd stage bootloader<\/p>\n<p>I (27) boot: compile time 23:51:51<\/p>\n<p>I (27) boot: chip revision: 1<\/p>\n<p>I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0<\/p>\n<p>I (39) boot.esp32: SPI Speed      : 40MHz<\/p>\n<p>I (43) boot.esp32: SPI Mode       : DIO<\/p>\n<p>I (48) boot.esp32: SPI Flash Size : 2MB<\/p>\n<p>I (52) boot: Enabling RNG early entropy source&#8230;<\/p>\n<p>I (58) boot: Partition Table:<\/p>\n<p>I (61) boot: ## Label            Usage          Type ST Offset   Length<\/p>\n<p>I (69) boot:  0 nvs              WiFi data        01 02 00009000 00006000<\/p>\n<p>I (76) boot:  1 phy_init         RF data          01 01 0000f000 00001000<\/p>\n<p>I (84) boot:  2 factory          factory app      00 00 00010000 00100000<\/p>\n<p>I (91) boot: End of partition table<\/p>\n<p>I (95) boot_comm: chip revision: 1, min. application chip revision: 0<\/p>\n<p>I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=07444h ( 29764) map<\/p>\n<p>I (122) esp_image: segment 1: paddr=0001746c vaddr=3ffb0000 size=0236ch (  9068) load<\/p>\n<p>I (126) esp_image: segment 2: paddr=000197e0 vaddr=40080000 size=06838h ( 26680) load<\/p>\n<p>I (139) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=147f8h ( 83960) map<\/p>\n<p>I (169) esp_image: segment 4: paddr=00034820 vaddr=40086838 size=04650h ( 18000) load<\/p>\n<p>I (177) esp_image: segment 5: paddr=00038e78 vaddr=50000000 size=00010h (    16) load<\/p>\n<p>I (183) boot: Loaded app from partition at offset 0x10000<\/p>\n<p>I (183) boot: Disabling RNG early entropy source&#8230;<\/p>\n<p>I (198) cpu_start: Pro cpu up.<\/p>\n<p>I (198) cpu_start: Starting app cpu, entry point is 0x40080fc4<\/p>\n<p>0x40080fc4: call_start_cpu1 at \/home\/denis\/espressif\/esp-idf\/components\/esp_system\/port\/cpu_start.c:156<\/p>\n<p>I (0) cpu_start: App cpu up.<\/p>\n<p>I (212) cpu_start: Pro cpu start user code<\/p>\n<p>I (212) cpu_start: cpu freq: 160000000<\/p>\n<p>I (212) cpu_start: Application information:<\/p>\n<p>I (217) cpu_start: Project name:     hello-world<\/p>\n<p>I (222) cpu_start: App version:      1<\/p>\n<p>I (227) cpu_start: Compile time:     Aug 24 2021 23:51:46<\/p>\n<p>I (233) cpu_start: ELF file SHA256:  e60ccc33c95bd333&#8230;<\/p>\n<p>I (239) cpu_start: ESP-IDF:          v4.4-dev-2740-gf65c8249af<\/p>\n<p>I (245) heap_init: Initializing. RAM available for dynamic allocation:<\/p>\n<p>I (253) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM<\/p>\n<p>I (259) heap_init: At 3FFB2C48 len 0002D3B8 (180 KiB): DRAM<\/p>\n<p>I (265) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D\/IRAM<\/p>\n<p>I (271) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D\/IRAM<\/p>\n<p>I (278) heap_init: At 4008AE88 len 00015178 (84 KiB): IRAM<\/p>\n<p>I (285) spi_flash: detected chip: generic<\/p>\n<p>I (288) spi_flash: flash io: dio<\/p>\n<p>W (292) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.<\/p>\n<p>I (307) cpu_start: Starting scheduler on PRO CPU.<\/p>\n<p>I (0) cpu_start: Starting scheduler on APP CPU.<\/p>\n<p>Hello world!<\/p>\n<p>This is esp32 chip with 2 CPU core(s), WiFi\/BT\/BLE, silicon revision 1, 2MB external flash<\/p>\n<p>Minimum free heap size: 294448 bytes<\/p>\n<p>Restarting in 10 seconds&#8230;<\/p>\n<p>Restarting in 9 seconds&#8230;<\/p>\n<p>Restarting in 8 seconds&#8230;<\/p>\n<p>Restarting in 7 seconds&#8230;<\/p>\n<p>Restarting in 6 seconds&#8230;<\/p>\n<p>Restarting in 5 seconds&#8230;<\/p>\n<p>Restarting in 4 seconds&#8230;<\/p>\n<p>Restarting in 3 seconds&#8230;<\/p>\n<p>Restarting in 2 seconds&#8230;<\/p>\n<p>Restarting in 1 seconds&#8230;<\/p>\n<p>Restarting in 0 seconds&#8230;<\/p>\n<p>Restarting now.<\/p>\n<p>ets Jun  8 2016 00:22:57<\/p>\n<\/div>\n<\/details>\n<p>\u0422.\u0435., \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u00ab\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439 \u041c\u0438\u0440!\u00bb \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b MCU, \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0438\u0445 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u0441\u0447\u0451\u0442 \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041a\u043e\u0433\u0434\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043d\u0443\u043b\u044f, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/p>\n<p>\u0423 \u0443\u0442\u0438\u043b\u0438\u0442\u044b idf.py \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0412\u044b \u0438\u0445 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 <\/p>\n<pre><code>idf.py --help<\/code><\/pre>\n<p>\u041c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430 \u043d\u0438\u0445 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c, \u0445\u043e\u0442\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0412\u044b \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>~\/Programs\/esp32\/hello_world  $ idf.py &#8212;help<\/p>\n<p>Usage: idf.py [OPTIONS] COMMAND1 [ARGS]&#8230; [COMMAND2 [ARGS]&#8230;]&#8230;<\/p>\n<p>  ESP-IDF CLI build management tool. For commands that are not known to idf.py an attempt to execute it as a build system target will be<\/p>\n<p>  made.<\/p>\n<p>Options:<\/p>\n<p>  &#8212;version                       Show IDF version and exit.<\/p>\n<p>  &#8212;list-targets                  Print list of supported targets and exit.<\/p>\n<p>  -C, &#8212;project-dir PATH          Project directory.<\/p>\n<p>  -B, &#8212;build-dir PATH            Build directory.<\/p>\n<p>  -w, &#8212;cmake-warn-uninitialized \/ -n, &#8212;no-warnings<\/p>\n<pre><code>                              Enable CMake uninitialized variable warnings for CMake files inside the project directory. (--no-                                warnings is now the default, and doesn't need to be specified.) The default value can be set with the                                IDF_CMAKE_WARN_UNINITIALIZED environment variable. <\/code><\/pre>\n<p>  -v, &#8212;verbose                   Verbose build output.<\/p>\n<p>  &#8212;preview                       Enable IDF features that are still in preview.<\/p>\n<p>  &#8212;ccache \/ &#8212;no-ccache          Use ccache in build. Disabled by default. The default value can be set with the IDF_CCACHE_ENABLE<\/p>\n<pre><code>                              environment variable. <\/code><\/pre>\n<p>  -G, &#8212;generator [Ninja|Unix Makefiles]<\/p>\n<pre><code>                              CMake generator. <\/code><\/pre>\n<p>  -D, &#8212;define-cache-entry TEXT   Create a cmake cache entry. This option can be used at most once either globally, or for one subcommand.<\/p>\n<p>  -b, &#8212;baud INTEGER              Baud rate for flashing. The default value can be set with the ESPBAUD environment variable. This option<\/p>\n<pre><code>                              can be used at most once either globally, or for one subcommand. <\/code><\/pre>\n<p>  -p, &#8212;port TEXT                 Serial port. The default value can be set with the ESPPORT environment variable. This option can be used<\/p>\n<pre><code>                              at most once either globally, or for one subcommand. <\/code><\/pre>\n<p>  &#8212;help                          Show this message and exit.<\/p>\n<p>Commands:<\/p>\n<p>  add-dependency           Add dependency to the manifest file. For now we only support adding dependencies on the default service.<\/p>\n<p>  all                      Aliases: build. Build the project.<\/p>\n<p>  app                      Build only the app.<\/p>\n<p>  app-flash                Flash the app only.<\/p>\n<p>  bootloader               Build only bootloader.<\/p>\n<p>  bootloader-flash         Flash bootloader only.<\/p>\n<p>  build-system-targets     Print list of build system targets.<\/p>\n<p>  clean                    Delete build output files from the build directory.<\/p>\n<p>  confserver               Run JSON configuration server.<\/p>\n<p>  create-component         Create a new component.<\/p>\n<p>  create-manifest          Create manifest for specified component.<\/p>\n<p>  create-project           Create a new project.<\/p>\n<p>  create-remote-component  Register a new component on the component service.<\/p>\n<p>  delete-version           Delete version in dist directory from the component service.<\/p>\n<p>  docs                     Open web browser with documentation for ESP-IDF<\/p>\n<p>  efuse_common_table       Generate C-source for IDF&#8217;s eFuse fields.<\/p>\n<p>  efuse_custom_table       Generate C-source for user&#8217;s eFuse fields.<\/p>\n<p>  encrypted-app-flash      Flash the encrypted app only.<\/p>\n<p>  encrypted-flash          Flash the encrypted project.<\/p>\n<p>  erase_flash              Erase entire flash chip.<\/p>\n<p>  erase_otadata            Erase otadata partition.<\/p>\n<p>  flash                    Flash the project.<\/p>\n<p>  fullclean                Delete the entire build directory contents.<\/p>\n<p>  gdb                      Run the GDB.<\/p>\n<p>  gdbgui                   GDB UI in default browser.<\/p>\n<p>  gdbtui                   GDB TUI mode.<\/p>\n<p>  menuconfig               Run &#171;menuconfig&#187; project configuration tool.<\/p>\n<p>  monitor                  Display serial output.<\/p>\n<p>  openocd                  Run openocd from current path<\/p>\n<p>  pack-component           Create component archive.<\/p>\n<p>  partition_table          Build only partition table.<\/p>\n<p>  partition_table-flash    Flash partition table only.<\/p>\n<p>  post_debug               Utility target to read the output of async debug action and stop them.<\/p>\n<p>  python-clean             Delete generated Python byte code from the IDF directory<\/p>\n<p>  read_otadata             Read otadata partition.<\/p>\n<p>  reconfigure              Re-run CMake.<\/p>\n<p>  set-target               Set the chip target to build.<\/p>\n<p>  show_efuse_table         Print eFuse table.<\/p>\n<p>  size                     Print basic size information about the app.<\/p>\n<p>  size-components          Print per-component size information.<\/p>\n<p>  size-files               Print per-source-file size information.<\/p>\n<p>  uf2                      Generate the UF2 binary with all the binaries included<\/p>\n<p>  uf2-app                  Generate an UF2 binary for the application only<\/p>\n<p>  upload-component         Upload component in dist directory to the component service.<\/p>\n<p>  upload-component-status  Check status of component upload<\/p>\n<\/div>\n<\/details>\n<h2>Windows<\/h2>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e %USERPROFILE% (\u041f\u0443\u0442\u044c \u043a \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f) \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432. \u0418\u043d\u0430\u0447\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f esp-idf \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0451. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u043a \u0438\u043b\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u0438\u0441\u043a\u0430 C:\\<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e, git.exe (<a href=\"https:\/\/git-scm.com\/downloads\" rel=\"noopener noreferrer nofollow\">https:\/\/git-scm.com\/downloads<\/a>) \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 %ProgramFiles%\/git\/bin. python.exe (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f Python3.9 \u2014 <a href=\"https:\/\/www.python.org\/downloads\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.python.org\/downloads\/<\/a>, \u041e\u0431\u044b\u0447\u043d\u043e, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 %ProgramFiles%\/Python39 ) <\/p>\n<p>\u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b ninja \u0438 cmake. \u041f\u0430\u043a\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Windows \u00ab\u0432\u044b\u0442\u044f\u043d\u0435\u0442\u00bb \u0441\u0430\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b git \u0438 python \u0431\u044b\u043b\u0438 \u0443\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 Path. \u041c\u043e\u0436\u043d\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/15b\/9ba\/87a\/15b9ba87a98d9e84d924a6017cc5d22f.png\" alt=\"\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Windows \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445\/\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b\" title=\"\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Windows \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445\/\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b\" width=\"434\" height=\"244\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15b\/9ba\/87a\/15b9ba87a98d9e84d924a6017cc5d22f.png\"\/><figcaption>\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Windows \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445\/\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b<\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043f\u043e\u0434 Windows, \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e IDF_PATH. \u041e\u0431\u044b\u0447\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e esp-idf \u0432 %USERPROFILE%\\espressif. \u041c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c IDF_TOOLS_PATH. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, esp-idf toolchain (\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 %USERPROFILE%\/.espressif. \u0414\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 vscode-esp-idf-extension \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e IDF_PATH_ENV_PATH \u2014 \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443, \u043a\u0443\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f python venv \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b esp-idf. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442  IDF_PYTHON_ENV_PATH=%USERPROFILE%\\.espressif\\python_env\\idf4.4_py3.9_env. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Python \u0438 ESP-IDF \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/19e\/414\/9db\/19e4149dbe800d34fb18b9a5bf6a3480.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f ESP-IDF, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d VSCode \u043c\u043e\u0433 \u0431\u044b \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u044c\u00bb \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442\" title=\"\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f ESP-IDF, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d VSCode \u043c\u043e\u0433 \u0431\u044b \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u044c\u00bb \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442\" width=\"591\" height=\"124\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/19e\/414\/9db\/19e4149dbe800d34fb18b9a5bf6a3480.png\"\/><figcaption>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f ESP-IDF, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d VSCode \u043c\u043e\u0433 \u0431\u044b \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u044c\u00bb \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442<\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043e\u0434 Windows \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c export.bat \u0438\u0437 \u041a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0421\u0442\u0440\u043e\u043a\u0438 (cmd.exe)<\/p>\n<pre><code class=\"bash\">mkdir %USERPROFILE%\\espressif cd %USERPROFILE%\\espressif git clone https:\/\/github.com\/espressif\/esp-idf --recursive .\\install.bat<\/code><\/pre>\n<p>\u0420\u0430\u0432\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0434\u043b\u044f PowerShell:<\/p>\n<pre><code class=\"powershell\">cd $env:USERPROFILE mkdir espressif git clone https:\/\/github.com\/espressif\/esp-idf.git --recursive cd .\\esp-idf\\ .\\install.ps1<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0443\u0432\u0438\u0434\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 (\u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d):<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>C:\\Users\\grand\\esp32\\hello_world>cd %USERPROFILE%\\espressif\\esp-idf<\/p>\n<p>C:\\Users\\grand\\espressif\\esp-idf>install.bat<\/p>\n<p>Installing ESP-IDF tools<\/p>\n<p>Selected targets are: esp32s2, esp32c3, esp32, esp32s3<\/p>\n<p>Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, xtensa-esp32s3-elf, riscv32-esp-elf, esp32ulp-elf, esp32s2ulp-elf, cmake, openocd-esp32, ninja, idf-exe, ccache, dfu-util<\/p>\n<p>Skipping <a href=\"mailto:xtensa-esp32-elf@esp-2021r1-8.4.0\" rel=\"noopener noreferrer nofollow\">xtensa-esp32-elf@esp-2021r1-8.4.0<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:xtensa-esp32s2-elf@esp-2021r1-8.4.0\" rel=\"noopener noreferrer nofollow\">xtensa-esp32s2-elf@esp-2021r1-8.4.0<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:xtensa-esp32s3-elf@esp-2021r1-8.4.0\" rel=\"noopener noreferrer nofollow\">xtensa-esp32s3-elf@esp-2021r1-8.4.0<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:riscv32-esp-elf@esp-2021r1-8.4.0\" rel=\"noopener noreferrer nofollow\">riscv32-esp-elf@esp-2021r1-8.4.0<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:esp32ulp-elf@2.28.51-esp-20191205\" rel=\"noopener noreferrer nofollow\">esp32ulp-elf@2.28.51-esp-20191205<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:esp32s2ulp-elf@2.28.51-esp-20191205\" rel=\"noopener noreferrer nofollow\">esp32s2ulp-elf@2.28.51-esp-20191205<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:cmake@3.20.3\" rel=\"noopener noreferrer nofollow\">cmake@3.20.3<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:openocd-esp32@v0.10.0-esp32-20210721\" rel=\"noopener noreferrer nofollow\">openocd-esp32@v0.10.0-esp32-20210721<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:ninja@1.10.2\" rel=\"noopener noreferrer nofollow\">ninja@1.10.2<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:idf-exe@1.0.1\" rel=\"noopener noreferrer nofollow\">idf-exe@1.0.1<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:ccache@4.3\" rel=\"noopener noreferrer nofollow\">ccache@4.3<\/a> (already installed)<\/p>\n<p>Skipping <a href=\"mailto:dfu-util@0.9\" rel=\"noopener noreferrer nofollow\">dfu-util@0.9<\/a> (already installed)<\/p>\n<p>Setting up Python environment<\/p>\n<p>Python 3.9.6<\/p>\n<p>pip 21.2.4 from C:\\Users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages\\pip (python 3.9)<\/p>\n<p>Installing Python packages from C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt<\/p>\n<p>Looking in indexes: <a href=\"https:\/\/pypi.org\/simple\" rel=\"noopener noreferrer nofollow\">https:\/\/pypi.org\/simple<\/a>, <a href=\"https:\/\/dl.espressif.com\/pypi\" rel=\"noopener noreferrer nofollow\">https:\/\/dl.espressif.com\/pypi<\/a><\/p>\n<p>Processing c:\\users\\grand\\espressif\\esp-idf\\tools\\kconfig_new\\esp-windows-curses<\/p>\n<p>  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use &#8212;use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.<\/p>\n<p>   pip 21.3 will remove support for this functionality. You can find discussion regarding this at <a href=\"https:\/\/github.com\/pypa\/pip\/issues\/7555\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/pypa\/pip\/issues\/7555<\/a>.<\/p>\n<p>Requirement already satisfied: setuptools>=21 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 4)) (57.4.0)<\/p>\n<p>Requirement already satisfied: click>=7.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 8)) (8.0.1)<\/p>\n<p>Requirement already satisfied: pyserial>=3.3 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 9)) (3.5)<\/p>\n<p>Requirement already satisfied: future>=0.15.2 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 10)) (0.18.2)<\/p>\n<p>Requirement already satisfied: cryptography>=2.1.4 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 11)) (3.4.7)<\/p>\n<p>Requirement already satisfied: pyparsing&lt;2.4.0,>=2.0.3 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 12)) (2.3.1)<\/p>\n<p>Requirement already satisfied: pyelftools>=0.22 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 13)) (0.27)<\/p>\n<p>Requirement already satisfied: gdbgui==0.13.2.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (0.13.2.0)<\/p>\n<p>Requirement already satisfied: pygdbmi&lt;=0.9.0.2 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 18)) (0.9.0.2)<\/p>\n<p>Requirement already satisfied: python-socketio&lt;5 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 21)) (4.6.1)<\/p>\n<p>Requirement already satisfied: kconfiglib==13.7.1 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 23)) (13.7.1)<\/p>\n<p>Requirement already satisfied: reedsolo&lt;=1.5.4,>=1.5.3 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 26)) (1.5.4)<\/p>\n<p>Requirement already satisfied: bitstring>=3.1.6 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 27)) (3.1.9)<\/p>\n<p>Requirement already satisfied: ecdsa>=0.16.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 28)) (0.17.0)<\/p>\n<p>Requirement already satisfied: construct==2.10.54 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from -r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 32)) (2.10.54)<\/p>\n<p>Requirement already satisfied: Flask-SocketIO&lt;3.0,>=2.9 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (2.9.6)<\/p>\n<p>Requirement already satisfied: gevent&lt;2.0,>=1.2.2 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (1.5.0)<\/p>\n<p>Requirement already satisfied: Flask-Compress&lt;2.0,>=1.4.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (1.10.1)<\/p>\n<p>Requirement already satisfied: Pygments&lt;3.0,>=2.2.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (2.10.0)<\/p>\n<p>Requirement already satisfied: Flask&lt;1.0,>=0.12.2 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (0.12.5)<\/p>\n<p>Requirement already satisfied: colorama in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from click>=7.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 8)) (0.4.4)<\/p>\n<p>Requirement already satisfied: cffi>=1.12 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from cryptography>=2.1.4->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 11)) (1.14.6)<\/p>\n<p>Requirement already satisfied: six>=1.9.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from python-socketio&lt;5->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 21)) (1.16.0)<\/p>\n<p>Requirement already satisfied: python-engineio&lt;4,>=3.13.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from python-socketio&lt;5->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 21)) (3.14.2)<\/p>\n<p>Requirement already satisfied: windows-curses in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from esp-windows-curses==0.1->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 38)) (2.2.0)<\/p>\n<p>Requirement already satisfied: pycparser in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from cffi>=1.12->cryptography>=2.1.4->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 11)) (2.20)<\/p>\n<p>Requirement already satisfied: itsdangerous>=0.21 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from Flask&lt;1.0,>=0.12.2->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (2.0.1)<\/p>\n<p>Requirement already satisfied: Werkzeug&lt;1.0,>=0.7 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from Flask&lt;1.0,>=0.12.2->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (0.16.1)<\/p>\n<p>Requirement already satisfied: Jinja2>=2.4 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from Flask&lt;1.0,>=0.12.2->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (3.0.1)<\/p>\n<p>Requirement already satisfied: brotli in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from Flask-Compress&lt;2.0,>=1.4.0->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (1.0.9)<\/p>\n<p>Requirement already satisfied: greenlet>=0.4.14 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from gevent&lt;2.0,>=1.2.2->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (1.1.1)<\/p>\n<p>Requirement already satisfied: MarkupSafe>=2.0 in c:\\users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\lib\\site-packages (from Jinja2>=2.4->Flask&lt;1.0,>=0.12.2->gdbgui==0.13.2.0->-r C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt (line 15)) (2.0.1)<\/p>\n<p>Building wheels for collected packages: esp-windows-curses<\/p>\n<p>  Building wheel for esp-windows-curses (setup.py) &#8230; done<\/p>\n<p>  Created wheel for esp-windows-curses: filename=esp_windows_curses-0.1-py3-none-any.whl size=1170 sha256=bdbf62d5861e86804fd97c0398bc76ab1a95cffea827b1215a340c406b564246<\/p>\n<p>  Stored in directory: c:\\users\\grand\\appdata\\local\\pip\\cache\\wheels\\c0\\a0\\63\\a4fd89175a7346f567d984c78f1f3749b6e026098b0098ef22<\/p>\n<p>Successfully built esp-windows-curses<\/p>\n<p>Installing collected packages: esp-windows-curses<\/p>\n<p>  Attempting uninstall: esp-windows-curses<\/p>\n<pre><code>Found existing installation: esp-windows-curses 0.1  Uninstalling esp-windows-curses-0.1:    Successfully uninstalled esp-windows-curses-0.1 <\/code><\/pre>\n<p>Successfully installed esp-windows-curses-0.1<\/p>\n<p>All done! You can now run:<\/p>\n<p>   export.bat<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c export.bat:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>C:\\Users\\grand\\espressif\\esp-idf>export.bat Setting IDF_PATH: C:\\Users\\grand\\espressif\\esp-idf<\/p>\n<p>Adding ESP-IDF tools to PATH&#8230; No directories added to PATH:<\/p>\n<p>C:\\Users\\grand.espressif\\tools\\xtensa-esp32-elf\\esp-2021r1-8.4.0\\xtensa-esp32-elf\\bin;C:\\Users\\grand.espressif\\tools\\xtensa-esp32s2-elf\\esp-2021r1-8.4.0\\xtensa-esp32s2-elf\\bin;C:\\Users\\grand.espressif\\tools\\xtensa-esp32s3-elf\\esp-2021r1-8.4.0\\xtensa-esp32s3-elf\\bin;C:\\Users\\grand.espressif\\tools\\riscv32-esp-elf\\esp-2021r1-8.4.0\\riscv32-esp-elf\\bin;C:\\Users\\grand.espressif\\tools\\esp32ulp-elf\\2.28.51-esp-20191205\\esp32ulp-elf-binutils\\bin;C:\\Users\\grand.espressif\\tools\\esp32s2ulp-elf\\2.28.51-esp-20191205\\esp32s2ulp-elf-binutils\\bin;C:\\Users\\grand.espressif\\tools\\cmake\\3.20.3\\bin;C:\\Users\\grand.espressif\\tools\\openocd-esp32\\v0.10.0-esp32-20210721\\openocd-esp32\\bin;C:\\Users\\grand.espressif\\tools\\idf-exe\\1.0.1;C:\\Users\\grand.espressif\\tools\\ccache\\4.3\\ccache-4.3-windows-64;C:\\Users\\grand.espressif\\tools\\dfu-util\\0.9\\dfu-util-0.9-win64;C:\\Users\\grand.espressif\\python_env\\idf4.4_py3.9_env\\Scripts;C:\\Users\\grand\\espressif\\esp-idf\\tools;C:\\ActiveTcl\\bin;C:\\Program Files (x86)\\Common Files\\Intel\\Shared Libraries\\redist\\intel64\\compiler;C:\\Program Files\\Python39\\Scripts;C:\\Program Files\\Python39;C:\\Program Files\\Common Files\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Program Files (x86)\\Calibre2;C:\\Program Files\\PuTTY;C:\\Program Files\\MiKTeX\\miktex\\bin\\x64;C:\\Program Files\\nodejs;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Polyspace\\R2021a\\runtime\\win64;C:\\Program Files\\Polyspace\\R2021a\\bin;C:\\Program Files\\Polyspace\\R2021a\\polyspace\\bin;C:\\Program Files\\Microchip\\xc8\\v2.31\\bin;C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\110\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\120\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\120\\DTS\\Binn;C:\\Program Files (x86)\\Windows Kits\\8.1\\Windows Performance Toolkit;C:\\Utils;C:\\Program Files\\dotnet;C:\\Program Files\\Python39;C:\\Program Files\\Notepad++;C:\\Program Files\\Git\\cmd;C:\\Users\\grand\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files\\Python39;C:\\Program Files\\Git\\bin;;C:\\Users\\grand\\AppData\\Local\\Programs\\Microsoft VS Code\\bin<\/p>\n<p>Checking if Python packages are up to date&#8230; Python requirements from C:\\Users\\grand\\espressif\\esp-idf\\requirements.txt are satisfied.<\/p>\n<p>Done! You can now compile ESP-IDF projects. Go to the project directory and run:<\/p>\n<p>  idf.py build<\/p>\n<\/div>\n<\/details>\n<p>\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 PowerShell:<\/p>\n<pre><code class=\"powershell\">$env:USERPROFILE\\espressif\\esp-idf\\install.ps1<\/code><\/pre>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e toolchain \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 %USERPROFILE%\\.espressif ($env:USERPROFILE\\.espressif)<\/p>\n<p>\u041d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Python Virtual Environment. \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"powershell\">$env:USERPROFILE\\.espressif\\python_env\\idf4.4_py3.9_env\\Scripts\\python.exe -m pip install --upgrade pip<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0440\u0435\u0434\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0435. \u041f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0435<code>SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe (\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/code> \u041f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a\u00bb. \u0412 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u044f\u0440\u043b\u044b\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c: <em>&#171;%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe&#187; -noexit -ExecutionPolicy Bypass -File %USERPROFILE%\\espressif\\esp-idf\\export.ps1<\/em>. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0438\u043a\u043e\u043d\u043a\u0443.<\/p>\n<p>\u041d\u0435\u043f\u043b\u043e\u0445\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, &#171;%USERPOFILE%\\esp32&#187;<\/p>\n<p>\u0418\u043b\u0438 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f cmd.exe \u2014 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a\u00bb, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443: %comspec% \/k &#171;%IDF_PATH%\\export.bat&#187;. \u0418, \u043e\u043f\u044f\u0442\u044c-\u0442\u0430\u043a\u0438, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <em>%USERPROFILE%\\esp32<\/em>) \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: idf.py build. \u0442.\u0435., \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u00abhello world\u00bb, \u0441\u043a\u0430\u0436\u0435\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 %USERPROFILE%\\esp32\\hello_world:<\/p>\n<pre><code class=\"powershell\">cd %USERPROFILE% mkdir esp32 mkdir hello_world copy  %USERPROFILE%\\espressif\\esp-idf\\examples\\get-started\\hello_world %USERPROFILE%\\esp32 cd .\\esp32\\hello_world idf.py build idf.py flash idf.py monitor<\/code><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 idf.py build \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, idf.py flash \u2014 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e (\u043f\u043b\u0430\u0442\u0430 \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443), idf.py \u2014 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0443\u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)<\/p>\n<p>configsip: 0, SPIWP:0xee<\/p>\n<p>clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00<\/p>\n<p>mode:DIO, clock div:2<\/p>\n<p>load:0x3fff0030,len:6388<\/p>\n<p>load:0x40078000,len:14252<\/p>\n<p>load:0x40080400,len:3820<\/p>\n<p>0x40080400: _init at ??:?<\/p>\n<p>entry 0x40080698<\/p>\n<p>I (27) boot: ESP-IDF v4.4-dev-2594-ga20df743f1 2nd stage bootloader<\/p>\n<p>I (27) boot: compile time 23:44:15<\/p>\n<p>I (27) boot: chip revision: 1<\/p>\n<p>I (31) boot_comm: chip revision: 1, min. bootloader chip revision: 0<\/p>\n<p>I (39) boot.esp32: SPI Speed      : 40MHz<\/p>\n<p>I (43) boot.esp32: SPI Mode       : DIO<\/p>\n<p>I (48) boot.esp32: SPI Flash Size : 2MB<\/p>\n<p>I (52) boot: Enabling RNG early entropy source&#8230;<\/p>\n<p>I (58) boot: Partition Table:<\/p>\n<p>I (61) boot: ## Label            Usage          Type ST Offset   Length<\/p>\n<p>I (69) boot:  0 nvs              WiFi data        01 02 00009000 00006000<\/p>\n<p>I (76) boot:  1 phy_init         RF data          01 01 0000f000 00001000<\/p>\n<p>I (83) boot:  2 factory          factory app      00 00 00010000 00100000<\/p>\n<p>I (91) boot: End of partition table<\/p>\n<p>I (95) boot_comm: chip revision: 1, min. application chip revision: 0<\/p>\n<p>I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=073dch ( 29660) map<\/p>\n<p>I (122) esp_image: segment 1: paddr=00017404 vaddr=3ffb0000 size=0236ch (  9068) load<\/p>\n<p>I (125) esp_image: segment 2: paddr=00019778 vaddr=40080000 size=068a0h ( 26784) load<\/p>\n<p>I (139) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=14808h ( 83976) map<\/p>\n<p>I (169) esp_image: segment 4: paddr=00034830 vaddr=400868a0 size=044e0h ( 17632) load<\/p>\n<p>I (177) esp_image: segment 5: paddr=00038d18 vaddr=50000000 size=00010h (    16) load<\/p>\n<p>I (183) boot: Loaded app from partition at offset 0x10000<\/p>\n<p>I (183) boot: Disabling RNG early entropy source&#8230;<\/p>\n<p>I (198) cpu_start: Pro cpu up.<\/p>\n<p>I (198) cpu_start: Starting app cpu, entry point is 0x40080fb4<\/p>\n<p>0x40080fb4: call_start_cpu1 at C:\/Users\/grand\/espressif\/esp-idf\/components\/esp_system\/port\/cpu_start.c:156<\/p>\n<p>I (185) cpu_start: App cpu up.<\/p>\n<p>I (213) cpu_start: Pro cpu start user code<\/p>\n<p>I (213) cpu_start: cpu freq: 160000000<\/p>\n<p>I (213) cpu_start: Application information:<\/p>\n<p>I (217) cpu_start: Project name:     hello-world<\/p>\n<p>I (222) cpu_start: App version:      1<\/p>\n<p>I (227) cpu_start: Compile time:     Aug 24 2021 23:44:00<\/p>\n<p>I (233) cpu_start: ELF file SHA256:  64100d65401fe87b&#8230;<\/p>\n<p>I (239) cpu_start: ESP-IDF:          v4.4-dev-2594-ga20df743f1<\/p>\n<p>I (246) heap_init: Initializing. RAM available for dynamic allocation:<\/p>\n<p>I (253) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM<\/p>\n<p>I (259) heap_init: At 3FFB2C48 len 0002D3B8 (180 KiB): DRAM<\/p>\n<p>I (265) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D\/IRAM<\/p>\n<p>I (271) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D\/IRAM<\/p>\n<p>I (278) heap_init: At 4008AD80 len 00015280 (84 KiB): IRAM<\/p>\n<p>I (285) spi_flash: detected chip: generic<\/p>\n<p>I (289) spi_flash: flash io: dio<\/p>\n<p>W (293) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.<\/p>\n<p>I (307) cpu_start: Starting scheduler on PRO CPU.<\/p>\n<p>I (0) cpu_start: Starting scheduler on APP CPU.<\/p>\n<p>Hello world!<\/p>\n<p>This is esp32 chip with 2 CPU core(s), WiFi\/BT\/BLE, silicon revision 1, 2MB external flash<\/p>\n<p>Minimum free heap size: 294448 bytes<\/p>\n<p>Restarting in 10 seconds&#8230;<\/p>\n<p>C:\\Users\\grand\\esp32\\hello_world><\/p>\n<\/div>\n<\/details>\n<p>\u0422.\u0435. \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u0434\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u0441\u0447\u0451\u0442 \u043e\u0442 10 \u0434\u043e 0 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0421\u0430\u043c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 %USERPROFILE%\\esp32\\hello_world\\main\\hello_world_main.c<\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 Esp32 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0449\u043d\u0430\u044f, \u0447\u0442\u043e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0447\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 Esp32 \u043e\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0435\u0432 STM32 \u0438\u043b\u0438 ATmega, \u044d\u0442\u043e \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0411\u044e\u0434\u0436\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430  FT2232HL \u043e\u0431\u043e\u0439\u0434\u0451\u0442\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u043e\u0434\u043d\u043e\u0439 \u0442\u044b\u0441\u044f\u0447\u0438 \u0440\u0443\u0431\u043b\u0435\u0439.<\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0440\u0435\u0434\u0443 \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 ~\/espressif\/esp-idf\/examples\/get-started\/hello_world\/main\/hello_world_main.c \u043c\u043e\u0436\u043d\u043e \u0445\u043e\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 notepad++. <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.  esp-idf \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u00ab\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0430\u0435\u0442\u00bb \u0441 Visual Studio Code \u0438 Eclipse.<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c II. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Visual Studio Code<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 VSCode \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 c <a href=\"https:\/\/code.visualstudio.com\/download\" rel=\"noopener noreferrer nofollow\">https:\/\/code.visualstudio.com\/download<\/a>.<\/p>\n<p>\u041f\u043e\u0434 Windows, \u043a\u0430\u0447\u0430\u0435\u043c User\/System Installer. \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e User Installer, \u0447\u0442\u043e\u0431\u044b VSCode \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0432 %USERPROFILE%. \u0423\u0432\u044b, \u0437\u0434\u0435\u0441\u044c \u0442\u0440\u044e\u043a \u0441 \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u041a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0421\u0442\u0440\u043e\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0430\u0434\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f IDF_PATH=%USERPROFILE%\\espressif\\esp-idf \u0438 IDF_PYTHON_ENV_PATH=%USERPROFILE%\\.espressif\\python_env\\idf4.4_py3.9_env<\/p>\n<p>\u042d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Ctrl+M, \u0432\u044b\u0437\u0432\u0430\u0432 set \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 %USERPROFILE%\\espressif\\esp-idf\\export.bat<\/p>\n<p>\u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043b\u044d\u0448\u0438 \u0432 \u043f\u0443\u0442\u0438!<\/p>\n<p>\u0414\u043b\u044f Linux \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 .tar.gz \u0430\u0440\u0445\u0438\u0432. \u0418\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0440\u0443\u0434\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 Linux, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0435 Visual Studio Code.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043d .tar.gz \u0430\u0440\u0445\u0438\u0432 \u043f\u043e\u0434 Linux \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 code-stable-x64-xxxxxxxxx-.tar.gz \u0430\u0440\u0445\u0438\u0432 \u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 ~\/IDE<\/p>\n<pre><code>mkdir ~\/IDE cd ~\/IDE cp ~\/\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0438\/code-stable-x64-xxxxx.tar.gz ~\/IDE\/ tar -zxvf code-stable-x64.tar.gz <\/code><\/pre>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u043c\u044f\u0433\u043a\u0443\u044e\u00bb \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 ~\/IDE\/VSCode-linux-x64\/bin\/code \u0432 ~\/.local\/bin. \u041f\u0440\u0438\u0447\u0451\u043c, \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u00ab\u043c\u044f\u0433\u043a\u043e\u0439\u00bb, \u0438\u043d\u0430\u0447\u0435, code \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 ~\/.local\/bin. \u0422\u0435\u043f\u0435\u0440\u044c, code \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.<\/p>\n<pre><code>ln -sf ~\/IDE\/VSCode-linux-x64\/bin\/code ~\/.local\/bin\/<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 GNOME desktop \u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c *.desktop \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 ~\/.local\/share\/applications\/vscode.desktop (\u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c) \u0438\u043b\u0438 \/usr\/share\/applications\/vscode.desktop. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c ${HOME} \u043d\u0430 \u043f\u0443\u0442\u044c \u043a \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443. destop \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442! \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u044b\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<pre><code>[Desktop Entry] Type=Application Exec=\"${HOME}\/IDE\/VSCode-linux-x64\/bin\/code\" %F Name=VSCode GenericName=The Microsoft IDE for C\/C++, Javascript, Python e.t.c. development. Icon=${HOME}\/IDE\/VSCode-linux-x64\/resources\/app\/resources\/linux\/code.png StartupWMClass=code Terminal=false Categories=Development;IDE;C\/C++;Python;Java;Java Script;Node;NodeJS MimeType=text\/x-c++src;text\/x-c++hdr;text\/x-xsrc;application\/x-designer; <\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0433\u0434\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d idfexp, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c code. \u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e code \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0433\u0434\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f esp-idf.<\/p>\n<pre><code class=\"bash\">. ~\/espressif\/esp-idf\/export.sh code <\/code><\/pre>\n<p>\u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0430\u043b\u0438\u0430\u0441:<\/p>\n<pre><code class=\"bash\">idfexp &amp;&amp; code<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 VSCode \u043f\u043e\u0434 Linux \u0438 Windows \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u0441\u0440\u0435\u0434\u0435 Linux \u0438\u043b\u0438 Windows \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, VSCode \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u0418\u0449\u0435\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 esp-idf \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/160\/937\/179\/1609371798386873272abc83ba24ad1f.png\" alt=\"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Espressif IDF\" title=\"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Espressif IDF\" width=\"1148\" height=\"537\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/160\/937\/179\/1609371798386873272abc83ba24ad1f.png\"\/><figcaption>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Espressif IDF<\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c F1 \u0438 \u0438\u0449\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab>ESP-IDF \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f ESP-IDF\u00bb. \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0443\u0432\u0438\u0434\u0438\u043c \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u00ab\u0448\u0442\u0430\u0442\u043d\u044b\u0435\u00bb \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u043f\u043b\u0430\u0433\u0438\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 eps-idf \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439) \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 esp-idf.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e39\/1cd\/1d5\/e391cd1d5bb92e2fa0ca7362c28f6897.png\" alt=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00abUSE EXISTING SETUP\u00bb\" title=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00abUSE EXISTING SETUP\u00bb\" width=\"1108\" height=\"539\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e39\/1cd\/1d5\/e391cd1d5bb92e2fa0ca7362c28f6897.png\"\/><figcaption>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00abUSE EXISTING SETUP\u00bb<\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e, \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Espressif IDF \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ab3\/565\/2ef\/ab35652ef77515aabe59b7418de114af.png\" alt=\"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Espressif IDF \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e\" title=\"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Espressif IDF \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e\" width=\"823\" height=\"182\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab3\/565\/2ef\/ab35652ef77515aabe59b7418de114af.png\"\/><figcaption>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Espressif IDF \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/figcaption><\/figure>\n<p>\u041c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u043a\u043e\u043c\u0430\u043d\u0434 \u00abF1\u00bb\/\u00abCtrl+Shift+P\u00bb\/\u00ab>ESP-IDF: \u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u00bb \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00abCtrl+E N\u00bb. \u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 esp-idf \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u00abCtrl+E\u00bb (\u0421\u043c. <a href=\"https:\/\/github.com\/espressif\/vscode-esp-idf-extension#Available-commands\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/vscode-esp-idf-extension#Available-commands<\/a> \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9fb\/7a8\/acf\/9fb7a8acfca100c54775316e14531e93.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" title=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" width=\"1207\" height=\"573\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9fb\/7a8\/acf\/9fb7a8acfca100c54775316e14531e93.png\"\/><figcaption>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/figcaption><\/figure>\n<p>\u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0435\u0441\u043b\u0438 \u0412\u044b \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443, \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u0421\u043e\u0439\u0434\u0451\u0442 \u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u00abtemplate-app\u00bb. \u042d\u0442\u043e \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043d\u0430\u043c \u00abHello World\u00bb, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0447\u0438\u043f\u0430, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u0441\u0447\u0451\u0442 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 Esp32.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e15\/1c8\/50b\/e151c850bd57d748e7d21362150d85ea.png\" alt=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" title=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" width=\"988\" height=\"222\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e15\/1c8\/50b\/e151c850bd57d748e7d21362150d85ea.png\"\/><figcaption>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/figcaption><\/figure>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0436\u0430\u0442\u044c \u00abCtrl+E D\u00bb (\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440). \u0412\u0438\u0434\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abHello World!\u00bb \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043e\u0442\u0441\u0447\u0451\u0442\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/627\/be3\/ea4\/627be3ea4d16012161bd516452090e76.png\" alt=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u044b Esp32\" title=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u044b Esp32\" width=\"939\" height=\"596\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/627\/be3\/ea4\/627be3ea4d16012161bd516452090e76.png\"\/><figcaption>\u041c\u043e\u043d\u0438\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u044b Esp32<\/figcaption><\/figure>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430, \u043e\u043f\u044f\u0442\u044c \u0442\u0430\u043a\u0438 \u043f\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448 \u00abCtrl+]\u00bb<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e, \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 ~\/espressif\/esp-idf\/examples. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c F1, \u0438 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab>ESP-IDF: \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432\u00bb. \u041f\u0440\u0430\u0432\u0434\u0430, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3b2\/fe5\/f1d\/3b2fe5f1df8dc20b0c5cb3ca43d721cf.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\" title=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\" width=\"1472\" height=\"333\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b2\/fe5\/f1d\/3b2fe5f1df8dc20b0c5cb3ca43d721cf.png\"\/><figcaption>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430<\/figcaption><\/figure>\n<p>\u0412\u0441\u0451. Visual Studio Code \u2014 \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Esp32 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, F2 \u0434\u043b\u044f \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430, F12 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442.\u0434.<\/p>\n<h2>Eclipse<\/h2>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Eclipse \u043f\u043e\u0434 Windows \u0438 Linux, \u0432\u043e\u043e\u0431\u0449\u0435, \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f. \u041a\u0430\u0447\u0430\u0435\u043c \u0441 <a href=\"https:\/\/www.eclipse.org\/downloads\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.eclipse.org\/downloads\/<\/a> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a Eclipse. \u041f\u043e\u0434 Windows \u0438 Linux \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d JDK: <a href=\"https:\/\/www.oracle.com\/ru\/java\/technologies\/javase-jdk16-downloads.html\" rel=\"noopener noreferrer nofollow\">https:\/\/www.oracle.com\/ru\/java\/technologies\/javase-jdk16-downloads.html<\/a><\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0438, \u0435\u0441\u043b\u0438 \u0432\u0438\u0434\u0438\u043c \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a.<\/p>\n<p>\u00ab\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Eclipse IDE for C\/C++ Developers\u00bb. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u00abHelp\/Market Place\u00bb \u0438 \u0438\u0449\u0435\u043c \u00abesp-idf\u00bb. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Eclipse \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u00abHelp\/Download and configure ESP-IDF\u00bb. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 esp-idf:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/973\/ab8\/5d8\/973ab85d8b43b5a054ef6a5acb663ade.png\" alt=\"\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a esp-idf\" title=\"\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a esp-idf\" width=\"883\" height=\"514\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/973\/ab8\/5d8\/973ab85d8b43b5a054ef6a5acb663ade.png\"\/><figcaption>\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a esp-idf<\/figcaption><\/figure>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Eclipse \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u0438 \u043a git \u0438\u043b\u0438 python. \u041d\u043e \u0438\u0445 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f05\/c88\/757\/f05c8875773ff244f88d8eed9e24f02e.png\" alt=\"\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c (\u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e)\" title=\"\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c (\u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e)\" width=\"709\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f05\/c88\/757\/f05c8875773ff244f88d8eed9e24f02e.png\"\/><figcaption>\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c (\u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e)<\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u00abFile\/New Project\/Espressif IDF Project\u00bb (\u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b IDF) <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u044d\u043a\u0440\u0430\u043d\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0436\u0430\u0442\u044c \u00abNext>\u00bb \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u00abCreate a project from using one of the templates\u00bb, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0432 esp-idf\/expamles.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 ESP-IDF \u0442\u0443\u043b\u0431\u0430\u0440\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e, \u044d\u0442\u043e esp32, \u0430 \u043d\u0435 esp32s2) \u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u00abon\u00bb \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0440\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f7f\/4ff\/895\/f7f4ff895307a11e1fadecc510981235.png\" alt=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\" title=\"\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\" width=\"515\" height=\"192\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f7f\/4ff\/895\/f7f4ff895307a11e1fadecc510981235.png\"\/><figcaption>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/figcaption><\/figure>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0443 \u043e\u043a\u043e\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0422\u0435\u043f\u0435\u0440\u044c, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u00abRun\u00bb. \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e, \u0432\u0438\u0434\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. ESP-IDF Terminal \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u0438\u043a\u043e\u043d\u043a\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043d\u0430 ESP-\u0442\u0443\u043b\u0431\u0430\u0440\u0435<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd3\/611\/be0\/dd3611be07aef502e8defe2e93554ad5.png\" alt=\"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Espressif IDF \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\" title=\"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Espressif IDF \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\" width=\"507\" height=\"539\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd3\/611\/be0\/dd3611be07aef502e8defe2e93554ad5.png\"\/><figcaption>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Espressif IDF \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u00abCtrl+]\u00bb \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ab\/11f\/284\/1ab11f28470d7a1e19b21e464dc8e161.png\" alt=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Espressif \u043d\u0430 Eclipse\" title=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Espressif \u043d\u0430 Eclipse\" width=\"753\" height=\"443\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ab\/11f\/284\/1ab11f28470d7a1e19b21e464dc8e161.png\"\/><figcaption>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Espressif \u043d\u0430 Eclipse<\/figcaption><\/figure>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>Espressif IDF \u2014 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043a IDE Visual Studio Code \u0438 Eclipse. \u0418, \u0443\u0432\u044b, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0433\u043e\u0432, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u0441 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u043d\u0430 \u0431\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u043b\u0430 \u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u00ab\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439\u00bb.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/575098\/\"> https:\/\/habr.com\/ru\/articles\/575098\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443, ESP32?<\/strong><\/p>\n<p>Esp32 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Xtensa \u0441 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439. \u042d\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0413\u0430\u0440\u0432\u0430\u0440\u0434\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u0430\u044f \u0430\u0436 \u0432 1997 \u0433\u043e\u0434\u0443. \u0417\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 240\/160 \u041c\u0413\u0446.<\/p>\n<p>\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 80 \u041c\u0413\u0446<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e\u0435 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0441\u043d\u0430\u00bb \u2014 \u0430\u0436 \u00a05-2,5 \u043c\u043a\u0410.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 STM32, \u0441\u043a\u0430\u0436\u0435\u043c  \u0441\u0442\u043e\u044f\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435. \u0414\u0430, 400 \u041c\u0413\u0446, \u0434\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u041d\u043e, \u0441\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 STM32F407 \u0441\u0442\u043e\u0438\u0442 \u043e\u043a\u043e\u043b\u043e 1000 \u0440\u0443\u0431\u043b\u0435\u0439 \u043d\u0430 \u0410\u043b\u0438\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441\u0435.<\/p>\n<p>\u0418 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0438 \u0431\u044b \u00ab\u043d\u0430 \u0431\u043e\u0440\u0442\u0443\u00bb Bluetooth \u0438 Wi-Fi \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e 150-200 \u0440\u0443\u0431\u043b\u0435\u0439.<\/p>\n<p>\u0423\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043f\u0430\u0439\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u00ab\u043d\u0430 \u0431\u043e\u0440\u0442\u0443\u00bb<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 esp-idf VSCode \u0438 Eclipse?<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/espressif\/esp-idf\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/esp-idf<\/a><\/p>\n<p>ESP-IDF \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a Espressif IoT Development Framework \u2014 \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 IoT (\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0412\u0435\u0449\u0435\u0439). \u041f\u043b\u0430\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Esp32 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0412\u0435\u0449\u0435\u0439.<\/p>\n<p>\u0410 \u0442\u0430\u043a \u0436\u0435, \u0441 \u044d\u0442\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c Bluetooth Low Energy \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438, \u0441\u043a\u0430\u0436\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a WiFi \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Ethernet.<\/p>\n<p>\u0414\u0430, \u0446\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 <strong>Arduino IDE<\/strong>, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435. \u0414\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 DIY (\u0421\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0438\u043b\u0438 \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb (\u0430\u043d\u0433\u043b.\u00a0<strong>DIY<\/strong>\u00a0\u2014 Do It Yourself), \u2014 \u0432\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0434\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f), \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u041d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0436\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b FreeRTOS \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043c\u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438, \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u0447\u0435\u043c void setup() \u0438 void loop(). \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a LL \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (Low Level Layer Function)<\/p>\n<p>\u0422\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u00ab\u043f\u043e\u0434\u043d\u044f\u0442\u044c\u00bb BLE GATT Server \u043d\u0430 Arduino IDE, \u043d\u043e \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 esp-idf \u043e\u043d \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e.<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c I. \u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/h2>\n<p>\u0421\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 IDE Visual Studio Code \u0438 Eclipse \u043f\u043e\u0434 Linux \u0438 Windows \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043e\u043d\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433-\u0434\u0440\u0443\u0433\u0430. \u042d\u0442\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438 Eclipse \u0438 Visual Studio Code \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 Espressif Framework \u0438 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 toolchain. \u0420\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 <a href=\"https:\/\/github.com\/espressif\/vscode-esp-idf-extension\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/vscode-esp-idf-extension<\/a> \u0438 <a href=\"https:\/\/github.com\/espressif\/idf-eclipse-plugin\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/espressif\/idf-eclipse-plugin<\/a> \u00ab\u0442\u0430\u0449\u0438\u0442\u00bb \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u043e\u0432\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0430\u043a\u0435\u0442\u0430 ESP-IDF \u0438 TOOLCHAIN. \u041a\u0430\u0436\u0434\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435, 3.3 \u0413\u0431, \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c.<\/p>\n<h2>Linux<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Ubuntu 21.04.<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043b\u044f deb \u0441\u0438\u0441\u0442\u0435\u043c:<\/p>\n<pre><code class=\"bash\">sudo apt update sudo apt upgrade sudo apt install python3-pip git cmake ninja-build<\/code><\/pre>\n<p>\u041d\u0443 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c cmake \u0438 ninja, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f snap<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b esp-idf \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b git, python3 \u0438 pip3. \u041f\u0440\u0438\u0447\u0451\u043c,  \u043d\u0430\u0434\u043e, \u0447\u0442\u043e\u0431\u044b python \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0441\u044f, \u043a\u0430\u043a python, \u0430 \u043d\u0435 python3 \u0438\u043b\u0438 python3.9 \u0438 \u0442.\u0434. \u0421\u043a\u0430\u0436\u0435\u043c, \u0432 Ubuntu 18.04, 20.10, 21.04 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a python \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0442. \u0415\u0441\u0442\u044c python3. \u0422\u0430\u043a, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043b\u0438\u0431\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u044f\u0433\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443:<\/p>\n<pre><code>mkdir ~\/.local\/bin ln -sf \/usr\/bin\/python3 ~\/.local\/bin\/python source ~\/.profile<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c Python Virtual Environment (<a href=\"https:\/\/docs.python.org\/3\/tutorial\/venv.html\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.python.org\/3\/tutorial\/venv.html<\/a>)<\/p>\n<pre><code>python3 -m venv ~\/python\/python3 code ~\/python\/python3\/bin\/activate<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u043e \u0434\u0430\u0436\u0435 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u044f\u0433\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0435\u0441\u0442\u044c \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u0432\u043e\u0445: \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 ~\/.local\/bin, \u0442\u043e .profile \u0435\u0433\u043e \u043d\u0435 \u00ab\u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>if [ -d \"$HOME\/.local\/bin\" ] ; then PATH=\"$PATH:$HOME\/.local\/bin\" fi<\/code><\/pre>\n<p>\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d, \u0435\u0433\u043e \u0432 \u043f\u0443\u0442\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c source ~\/.profile<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0435\u0431\u044f. \u0412\u044b\u0437\u043e\u0432\u0435\u043c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430:<\/p>\n<pre><code class=\"python\">$python Python 3.8.10 (default, Jun  2 2021, 10:49:15) [GCC 9.4.0] on linux Type \"help\", \"copyright\", \"credits\" or \"license\" for more information. >>> quit()<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c esp-idf. \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043e\u043c\u0430\u0448\u0435\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0432\u0440\u043e\u0434\u0435 ~\/espressif. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 Esp32, \u0430\u0436 \u0446\u0435\u043b\u044b\u0445 \u0442\u0440\u0438 \u2014 esp-adf, esp-idf, esp-mdf, \u0442\u0430\u043a \u0447\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u00ab\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0435\u00bb \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0441\u043b\u043e\u0436\u0438\u043c \u0438\u0445 \u0432 \u043e\u0434\u043d\u0443 \u043a\u0443\u0447\u0443. \u0418\u043c\u0435\u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432.<\/p>\n<pre><code class=\"bash\">mkdir ~\/espressif cd ~\/espressif git clone https:\/\/github.com\/espressif\/esp-idf.git --recursive<\/code><\/pre>\n<p>\u0418\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 .*rc-\u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f esp-idf. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ADF_PATH \u0438 MDF_PATH \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0430 \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0412\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Esp32 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0441\u0435\u0442\u0438 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442 Esp32.<\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u043b\u0438\u0430\u0441 idfexp. \u0422\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432 \u0441\u0440\u0435\u0434\u0443 IDF-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c, \u0441\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 ~\/espressif\/esp-idf\/export.sh<\/p>\n<pre><code class=\"bash\"># \u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f esp-idf, esp-adf, esp-mdf # ESP_PATH=\"$HOME\/espressif\" IDF_TOOLS_PATH=\"$HOME\/.espressif\"  if [ -d \"$ESP_PATH\/esp-idf\" ] ; then IDF_PATH=\"$ESP_PATH\/esp-idf\" export IDF_PATH if [ -f \"$IDF_PATH\/export.sh\" ] ; then alias idfexp=\"\\. $IDF_PATH\/export.sh\" fi fi  if [ -f \"$ESP_PATH\/esp-adf\" ] ; then ADF_PATH=\"$ESP_PATH\/esp-adf\" export ADF_PATH fi  if [ -f \"$ESP_PATH\/esp-mdf\" ] ; then MDF_PATH=\"$ESP_PATH\/esp-mdf\" export MDF_PATH fi  if [ -d \"$IDF_TOOLS_PATH\" ] ; then export IDF_TOOLS_PATH fi<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 ~\/.*rc-\u0444\u0430\u0439\u043b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 ~\/.bashrc (\\. \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f .*rc-\u0444\u0430\u0439\u043b\u043e\u0432 0644):<\/p>\n<pre><code class=\"bash\">if [ -f \"$HOME\/.idfrc\" ]; then        \\. \"$HOME\/.idfrc\" # This load Espressif environment  fi<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e toolchain \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 ~\/.espressif<\/p>\n<pre><code>cd ~\/espressif\/esp-idf .\/install.sh<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435 (\u0436\u0443\u0440\u043d\u0430\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d):<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>$ .\/install.sh <\/p>\n<p>WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the &#8216;\/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install &#8212;upgrade pip&#8217; command. All done! You can now run:<\/p>\n<p>  . .\/export.sh<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c venv:<\/p>\n<pre><code>WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the '\/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install --upgrade pip' command.<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"bash\">~\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python -m pip install --upgrade pip pip<\/code><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 esp-idf \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e 2.2 \u0413\u0431, toolchain \u2014 1.2 \u0413\u0431. \u041d\u0443, \u0442\u0430\u043a \u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u043e\u0447\u043a\u0443:<\/p>\n<pre><code class=\"bash\">$du -hs ~\/espressif\/esp-idf 1.1G    esp-idf $du -hs ~\/.espressif 1.9G    .espressif<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 toolchain \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c source ~\/.idfrc \u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f ESP-IDF \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 idfexp \u0438\u043b\u0438<\/p>\n<pre><code class=\"bash\">. ~\/espressif\/esp-idf\/export.sh<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u043e\u0448\u043b\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>$ idfexp Detecting the Python interpreter Checking &#171;python&#187; &#8230; Python 3.8.10 &#171;python&#187; has been detected Adding ESP-IDF tools to PATH&#8230; Using Python interpreter in \/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin\/python Checking if Python packages are up to date&#8230; Python requirements from \/home\/grandfatherpikhto\/espressif\/esp-idf\/requirements.txt are satisfied. Added the following directories to PATH:   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/esptool_py\/esptool   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/espcoredump   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/partition_table   \/home\/grandfatherpikhto\/espressif\/esp-idf\/components\/app_update   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32-elf\/esp-2021r1-8.4.0\/xtensa-esp32-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32s2-elf\/esp-2021r1-8.4.0\/xtensa-esp32s2-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/xtensa-esp32s3-elf\/esp-2021r1-8.4.0\/xtensa-esp32s3-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/riscv32-esp-elf\/esp-2021r1-8.4.0\/riscv32-esp-elf\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/esp32ulp-elf\/2.28.51-esp-20191205\/esp32ulp-elf-binutils\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/esp32s2ulp-elf\/2.28.51-esp-20191205\/esp32s2ulp-elf-binutils\/bin   \/home\/grandfatherpikhto\/.espressif\/tools\/openocd-esp32\/v0.10.0-esp32-20210721\/openocd-esp32\/bin   \/home\/grandfatherpikhto\/.espressif\/python_env\/idf4.4_py3.8_env\/bin   \/home\/grandfatherpikhto\/espressif\/esp-idf\/tools Done! You can now compile ESP-IDF projects. Go to the project directory and run:<\/p>\n<p>  idf.py build<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 ~\/espressif\/esp-idf\/examples, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c udev \u2014 \u043f\u0430\u043a\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u044f\u0434\u0440\u0430 Linux.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u00ab\u0441\u0431\u043e\u0440\u043d\u0443\u044e \u0441\u043e\u043b\u044f\u043d\u043a\u0443\u00bb \u0444\u0430\u0439\u043b\u0430 40-dfuse.rules \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043a\u043e\u043f\u0430\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 Esp32 (<a href=\"https:\/\/www.esp32.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.esp32.com\/<\/a>). \u0414\u0443\u043c\u0430\u044e, \u0432 \u043e\u0441\u043e\u0431\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u0445 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0441\u0442\u043e, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f idVendor \u0438 idProduct \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442 Esp32. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u00abrules\u00bb. \u0418\u043d\u0430\u0447\u0435, udev \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.<\/p>\n<pre><code class=\"bash\">SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"303a\", ATTRS{idProduct}==\"00??\", GROUP=\"plugdev\", MODE=\"0666\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6015\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\" SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"067b\", ATTRS{idProduct}==\"2303\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430:<\/p>\n<pre><code class=\"bash\">sudo su cp 40-dfuse.rules \/etc\/udev\/rules.d\/ systemctl restart udev.service udevadm control --reload-rules<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Esp32. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 Esp32 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u043d\u043e\u0432\u0430. \u0418\u043d\u0430\u0447\u0435, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 udev \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0423 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0433\u0438 \u043d\u0430\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ESP32-WROOM. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0448\u0438\u0442\u044c ~\/espressif\/esp-idf\/examples\/get-started\/hello_world. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-391514","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/391514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=391514"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/391514\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=391514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=391514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=391514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}