{"id":352104,"date":"2024-05-20T22:02:13","date_gmt":"2024-05-20T22:02:13","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=352104"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=352104","title":{"rendered":"<span>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u00ab\u042f\u0433\u043e\u0434\u043e\u0439\u00bb \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432: \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 ESP32 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 Raspberry Pi 4 Model B \u043f\u043e SPI<\/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<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0438 \u0441\u043b\u0443\u0436\u0438\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Raspberry Pi 4 Model B (&#171;\u042f\u0433\u043e\u0434\u0430&#187;), WEMOS WiFi &amp; Bluetooth ESP32 (&#171;ESP32&#187;) \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Serial Peripheral Interface (SPI). <\/p>\n<p>\u0425\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 <a class=\"mention\" href=\"\/users\/artuiu\">@Artuiu<\/a> \u0437\u0430 \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u043f\u043e\u043c\u043e\u0449\u044c<\/p>\n<p>P.S. \u042d\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0434\u0451\u043c \u043e\u0442 \u0412\u0430\u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0443!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c55\/b66\/f31\/c55b66f317c0f6187f51ef181b44ae67.png\" width=\"1020\" height=\"578\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c55\/b66\/f31\/c55b66f317c0f6187f51ef181b44ae67.png\"\/><\/figure>\n<h2>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/microtechnics.ru\/raspberry-pi-obmen-dannymi-po-interfejsu-spi\/\" rel=\"noopener noreferrer nofollow\">https:\/\/microtechnics.ru\/raspberry-pi-obmen-dannymi-po-interfejsu-spi\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/wiki.amperka.ru\/articles:rpi-interfaces\" rel=\"noopener noreferrer nofollow\">http:\/\/wiki.amperka.ru\/articles:rpi-interfaces<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/25\/uart-vs-i2c-vs-spi-communication-protocols-and-uses\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.seeedstudio.com\/blog\/2019\/09\/25\/uart-vs-i2c-vs-spi-communication-protocols-and-uses\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/\" rel=\"noopener noreferrer nofollow\">https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/wiki.amperka.ru\/articles:rpi-guide\" rel=\"noopener noreferrer nofollow\">http:\/\/wiki.amperka.ru\/articles:rpi-guide<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pinout.xyz\/pinout\/spi\" rel=\"noopener noreferrer nofollow\">https:\/\/pinout.xyz\/pinout\/spi<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<ul>\n<li>\n<p><strong>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/strong> WEMOS WiFi &amp; Bluetooth ESP32 &#8212; 5 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440<\/strong> Raspberry Pi 4 Model B &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430<\/strong> \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043c\u0430\u043c\u0430&#187; &#8212; 13 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430<\/strong> \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043f\u0430\u043f\u0430&#187; &#8212; 21 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> Ethernet &#8212; 1 \u0448\u0442. <\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> USB type c &#8212; 1 \u0448\u0442. <\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> USB micro USB &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0440\u0442\u0430<\/strong> \u043f\u0430\u043c\u044f\u0442\u0438 microSD 64 \u0413\u0431 &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440<\/strong> 18650 Li-ion &#8212; 5 \u0448\u0442. <\/p>\n<\/li>\n<\/ul>\n<h2>\u0422\u0435\u043e\u0440\u0438\u044f<\/h2>\n<p><strong>SPI<\/strong> (Serial Peripheral Interface) &#8212; \u044d\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438, \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430). <\/p>\n<p><strong>\u041f\u0438\u043d\u044b SPI:<\/strong> \u041d\u0430 Raspberry Pi \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e GPIO (General Purpose Input\/Output) \u043f\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f SPI, \u044d\u0442\u043e: <\/p>\n<p><strong>SCLK<\/strong> (Serial Clock): \u041f\u0438\u043d \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. <\/p>\n<p><strong>MISO<\/strong> (Master In Slave Out): \u041f\u0438\u043d \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 (Raspberry Pi). <\/p>\n<p><strong>MOSI<\/strong> (Master Out Slave In): \u041f\u0438\u043d \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443. <\/p>\n<p><strong>CS<\/strong> (Chip Select): \u041f\u0438\u043d \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044e\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>Raspberry Pi \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI &#8212; SPI0, SPI1 \u0438 SPI2. <\/p>\n<p>SPI0: \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GPIO \u043f\u0438\u043d\u0430\u0445 9 (MISO), 10 (MOSI), 11 (SCLK) \u0438 8 (CS0). \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a \u044d\u043a\u0440\u0430\u043d\u044b \u0438\u043b\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438. <\/p>\n<p>SPI1: \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GPIO \u043f\u0438\u043d\u0430\u0445 19 (MISO), 20 (MOSI), 21 (SCLK) \u0438 18 (CS1). \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u043c SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<p><strong>1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u041f\u041e &#171;Raspberry Pi OS&#187;<\/strong> \u043d\u0430 microSD \u0447\u0435\u0440\u0435\u0437 &#171;Raspberry Pi Imager&#187;. <br \/>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430: <a href=\"https:\/\/www.raspberrypi.com\/software\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.raspberrypi.com\/software\/<\/a>. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c &#171;Raspberry Pi Imager&#187;. \u0412\u044b\u0431\u0440\u0430\u0442\u044c <strong>Operating System > Raspberry Pi OS (32-bit)<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fb0\/976\/d54\/fb0976d546293aa18ce630014c9c42a2.png\" alt=\"&quot;Raspberry Pi Imager&quot; \u2014  \u0412\u044b\u0431\u043e\u0440 \u041f\u041e\" title=\"&quot;Raspberry Pi Imager&quot; \u2014  \u0412\u044b\u0431\u043e\u0440 \u041f\u041e\" width=\"1020\" height=\"680\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fb0\/976\/d54\/fb0976d546293aa18ce630014c9c42a2.png\"\/><\/p>\n<div><figcaption>&#171;Raspberry Pi Imager&#187; \u2014  \u0412\u044b\u0431\u043e\u0440 \u041f\u041e<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 microSD \u043a\u0430\u0440\u0442\u0443 \u0432 \u041f\u041a. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Storage<\/strong> \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c microSD \u043a\u0430\u0440\u0442\u0443 (\u0443 \u043d\u0430\u0441 \u044d\u0442\u043e Kingston 64 Gb). \u0421\u044e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0412\u0430\u0448\u0435 \u041f\u041e. <u>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u0412\u0430\u0441.<\/u><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f8\/025\/b1a\/3f8025b1a87fdcff2b144ec7a576ee7f.png\" alt=\"Raspberry Pi Imager \u2014  \u0412\u044b\u0431\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u041f\u041e\" title=\"Raspberry Pi Imager \u2014  \u0412\u044b\u0431\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u041f\u041e\" width=\"1020\" height=\"680\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f8\/025\/b1a\/3f8025b1a87fdcff2b144ec7a576ee7f.png\"\/><\/p>\n<div><figcaption>Raspberry Pi Imager \u2014  \u0412\u044b\u0431\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u041f\u041e<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u044c <strong>WRITE<\/strong> \u0438 \u0436\u0434\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c microSD \u0432 \u043b\u043e\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 &#171;\u042f\u0433\u043e\u0434\u0435&#187;.<\/p>\n<p><strong>2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Arduino IDE<\/strong> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 &#171;ESP32&#187;. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 <a href=\"https:\/\/www.arduino.cc\/en\/software\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.arduino.cc\/en\/software<\/u><\/a>, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c Arduino IDE \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. <br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c Arduino IDE. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 <strong>\u0424\u0430\u0439\u043b > \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/663\/def\/ba0\/663defba0776a5d4dc016d26f49a10bb.png\" width=\"1311\" height=\"999\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/663\/def\/ba0\/663defba0776a5d4dc016d26f49a10bb.png\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 json \u0444\u0430\u0439\u043b <a href=\"https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json<\/u><\/a> <br \/>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u043e\u043a\u043e\u0448\u043a\u043e \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u041e\u041a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da9\/fbb\/869\/da9fbb8698f8f8a0522fbf4754fd8dae.png\" alt=\"Arduino IDE \u2014 \u0414\u043e\u043f. \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043b\u0430\u0442\" title=\"Arduino IDE \u2014 \u0414\u043e\u043f. \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043b\u0430\u0442\" width=\"1257\" height=\"783\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da9\/fbb\/869\/da9fbb8698f8f8a0522fbf4754fd8dae.png\"\/><\/p>\n<div><figcaption>Arduino IDE \u2014 \u0414\u043e\u043f. \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043b\u0430\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b > \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438<\/strong>. <br \/>\u0423 \u0412\u0430\u0441 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0418\u0449\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <strong>esp32 \u043e\u0442 Espressif<\/strong> \u0432\u0435\u0440\u0441\u0438\u0438 <strong><u>1.0.6<\/u><\/strong> (\u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445) \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/693\/114\/d17\/693114d170ae7558dff60c1c52e21464.png\" alt=\"Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 esp32 \u043e\u0442 Espressif \u0432\u0435\u0440\u0441\u0438\u0438 1.0.6\" title=\"Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 esp32 \u043e\u0442 Espressif \u0432\u0435\u0440\u0441\u0438\u0438 1.0.6\" width=\"1020\" height=\"530\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/693\/114\/d17\/693114d170ae7558dff60c1c52e21464.png\"\/><\/p>\n<div><figcaption>Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 esp32 \u043e\u0442 Espressif \u0432\u0435\u0440\u0441\u0438\u0438 1.0.6<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043b\u0430\u0442\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b > \u041f\u043b\u0430\u0442\u0430 > ESP32 Arduino > WeMos WiFi &amp; Bluetooth Battery<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/37b\/b63\/80c\/37bb6380c9945a3ecc8f10dcf539dd74.png\" alt=\"Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442\u044b WeMos WiFi&amp;Bluetooth Battery\" title=\"Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442\u044b WeMos WiFi&amp;Bluetooth Battery\" width=\"880\" height=\"978\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/37b\/b63\/80c\/37bb6380c9945a3ecc8f10dcf539dd74.png\"\/><\/p>\n<div><figcaption>Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442\u044b WeMos WiFi&amp;Bluetooth Battery<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ESP32SPISlave.h <br \/>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/github.com\/hideakitai\/ESP32SPISlave?ysclid=ll6fdafeu2422870462\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/github.com\/hideakitai\/ESP32SPISlave?ysclid=ll6fdafeu2422870462<\/u><\/a><u><\/p>\n<p><\/u>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1ef\/f50\/ea6\/1eff50ea6eaec0fe8df3ae5b44bc0930.jpg\" width=\"700\" height=\"531\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ef\/f50\/ea6\/1eff50ea6eaec0fe8df3ae5b44bc0930.jpg\" data-blurred=\"true\"\/><\/figure>\n<p><strong>3. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 &#171;\u042f\u0433\u043e\u0434\u044b&#187;.<\/strong> \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;\u042f\u0433\u043e\u0434\u043e\u0439&#187; \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Virtual Network Computing (VNC). <br \/>\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043a \u201c\u042f\u0433\u043e\u0434\u0435\u201d \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u0430\u0431\u0435\u043b\u044f Ethernet. \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 &#171;<strong>Putty<\/strong>&#187; \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c <strong>raspberrypi.local \u0432 HostName<\/strong> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 <strong>SSH <\/strong>(\u043f\u043e\u0440\u0442 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 22).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c52\/b77\/21f\/c52b7721f363a41b6a0e1b03cf5c6b23.png\" alt=\"&quot;Putty&quot; \u2014 SSH \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a &quot;\u042f\u0433\u043e\u0434\u0435&quot;\" title=\"&quot;Putty&quot; \u2014 SSH \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a &quot;\u042f\u0433\u043e\u0434\u0435&quot;\" width=\"672\" height=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c52\/b77\/21f\/c52b7721f363a41b6a0e1b03cf5c6b23.png\"\/><\/p>\n<div><figcaption>&#171;Putty&#187; \u2014 SSH \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a &#171;\u042f\u0433\u043e\u0434\u0435&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0438 <strong>\u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0445\u043e\u0434\u0435<\/strong> \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <strong>\u0432\u0432\u0435\u0441\u0442\u0438 \u043b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c: pi\/raspberry<\/strong>. \u0421\u0440\u0430\u0437\u0443 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u041f\u041e          \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b  <\/p>\n<pre><code class=\"bash\">sudo apt-get update &amp;&amp; sudo apt-get upgrade -y<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0451\u043c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b  <\/p>\n<pre><code class=\"bash\">sudo raspi-config<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/741\/b11\/80c\/741b1180c33db21e66ff526ffbf807e1.png\" alt=\"\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\" title=\"\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\" width=\"842\" height=\"550\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/741\/b11\/80c\/741b1180c33db21e66ff526ffbf807e1.png\"\/><\/p>\n<div><figcaption>\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 <strong>Interface Options<\/strong> \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 VNC, \u0442\u0430\u043a\u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c SPI <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/974\/7b8\/f14\/9747b8f14a4e186bd4af12f13fb88d2c.png\" alt=\"\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f VNC \u0438 SPI\" title=\"\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f VNC \u0438 SPI\" width=\"842\" height=\"550\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/974\/7b8\/f14\/9747b8f14a4e186bd4af12f13fb88d2c.png\"\/><\/p>\n<div><figcaption>\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f VNC \u0438 SPI<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c &#171;YES&#187;. \u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 <strong>System Options > Boot\/Auto Login > Desktop Autologin<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c2c\/600\/149\/c2c600149ee859977d53f66c1a283702.png\" width=\"842\" height=\"550\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2c\/600\/149\/c2c600149ee859977d53f66c1a283702.png\"\/><\/figure>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Enter&#187;, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Tab&#187; \u0438 &#171;Enter&#187;. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0430\u0448 Raspberry Pi, \u0438 \u0441\u0435\u0430\u043d\u0441 SSH \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 &#171;Putty&#187; \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043a\u043d\u0430. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c VNC Viewer \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a, \u0441\u0441\u044b\u043b\u043a\u0430 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430: <a href=\"https:\/\/www.realvnc.com\/en\/connect\/download\/viewer\/\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.realvnc.com\/en\/connect\/download\/viewer\/<\/u><\/a>. <br \/>\u0412\u0432\u043e\u0434\u0438\u043c <strong>raspberrypi.local<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da9\/2e6\/dd0\/da92e6dd080986eaff031e77535bfc7b.png\" alt=\"&quot;VNC Viewer&quot; \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\" title=\"&quot;VNC Viewer&quot; \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\" width=\"1020\" height=\"358\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da9\/2e6\/dd0\/da92e6dd080986eaff031e77535bfc7b.png\"\/><\/p>\n<div><figcaption>&#171;VNC Viewer&#187; \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\/\u043f\u0430\u0440\u043e\u043b\u044c: pi\/raspberry.  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ca\/6d1\/4cd\/5ca6d14cda792187a1df92b111faa6f5.png\" alt=\"&quot;VNC Viewer&quot; \u2014 \u0412\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f\" title=\"&quot;VNC Viewer&quot; \u2014 \u0412\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f\" width=\"796\" height=\"636\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ca\/6d1\/4cd\/5ca6d14cda792187a1df92b111faa6f5.png\"\/><\/p>\n<div><figcaption>&#171;VNC Viewer&#187; \u2014 \u0412\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f55\/86d\/85c\/f5586d85c7dd8d7daded313f624b620c.png\" alt=\"\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &quot;\u042f\u0433\u043e\u0434\u044b&quot;\" title=\"\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &quot;\u042f\u0433\u043e\u0434\u044b&quot;\" width=\"796\" height=\"506\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f55\/86d\/85c\/f5586d85c7dd8d7daded313f624b620c.png\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187;<\/figcaption><\/div>\n<\/figure>\n<p><strong>4. \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/strong>.<strong> <\/strong>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e &#171;\u042f\u0433\u043e\u0434\u0430&#187; \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: SPI0-2. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 config.txt (\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 boot)<\/p>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c c\u0442\u0440\u043e\u0447\u043a\u0443 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c<\/p>\n<p>spi5 &#8212; \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/p>\n<p>2cs &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435<\/p>\n<pre><code class=\"bash\">dtoverlay=spi5-1cs<\/code><\/pre>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442: <a href=\"https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/\" rel=\"noopener noreferrer nofollow\">https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/<\/a><\/p>\n<h2>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h2>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 SPI \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f: 1 &#171;\u042f\u0433\u043e\u0434\u0430&#187;, 5 &#171;ESP32&#187;, 1 \u043d\u043e\u0443\u0442\u0431\u0443\u043a, 13 \u043a\u0430\u0431\u0435\u043b\u0435\u0439 \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043c\u0430\u043c\u0430&#187; \u0438 31 \u043a\u0430\u0431\u0435\u043b\u044c \u0442\u0438\u043f\u0430 &#171;\u043f\u0430\u043f\u0430-\u043c\u0430\u043c\u0430&#187;. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0438 &#171;ESP32&#187; \u0441 &#171;\u042f\u0433\u043e\u0434\u043e\u0439&#187;, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c 5 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 &#171;ESP32&#187;: <strong>MISO, MOSI, SCLK, SS, Ground(GND)<\/strong> <\/p>\n<p>\u0418 19 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 &#171;\u042f\u0433\u043e\u0434\u0435&#187;  <\/p>\n<p><strong>SPI0:<\/strong> MISO &#8212; 21 (GPIO 9), MOSI &#8212; 19 (GPIO 10), SCLK &#8212; 23 (GPIO 11), SS0 &#8212; 24 (GPIO 8), <br \/>SS1 &#8212; 26 (GPIO 7);<\/p>\n<p><strong>SPI1:<\/strong> MISO &#8212; 35 (GPIO 19), MOSI &#8212; 38 (GPIO 20), SCLK &#8212; 40 (GPIO 21), SS1 &#8212; 11 (GPIO 17), <br \/>SS2 &#8212; 36 (GPIO 16); <\/p>\n<p><strong>SPI5:<\/strong> MISO &#8212; 33 (GPIO 13), MOSI &#8212; 8 (GPIO 14), SCLK &#8212; 10 (GPIO 15), SS0 &#8212; 32 (GPIO 12)<\/p>\n<p>+1 GND \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 &#171;ESP32&#187;<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0438\u043d\u044b \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u0442\u043e \u0435\u0441\u0442\u044c <strong>MISO \u043a MISO, MOSI \u043a MOSI<\/strong> \u0438 \u0442.\u0434. <br \/>\u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f9c\/9be\/5c9\/f9c9be5c949194f8f3c728ff67fd71a3.png\" alt=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u043d\u043e\u0432\" title=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u043d\u043e\u0432\" width=\"2384\" height=\"2384\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9c\/9be\/5c9\/f9c9be5c949194f8f3c728ff67fd71a3.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u043d\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0442 \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u044f\u0442\u0438 &#171;ESP32&#187;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a9\/fe3\/9dd\/9a9fe39dd20aca86952a993a5224d319.png\" alt=\"\u041c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430\" title=\"\u041c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430\" width=\"716\" height=\"716\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a9\/fe3\/9dd\/9a9fe39dd20aca86952a993a5224d319.png\"\/><\/p>\n<div><figcaption>\u041c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e &#171;ESP32&#187; \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0431\u0435\u043b\u044c USB micro USB \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0443 \u0438 \u0447\u0435\u0440\u0435\u0437 Arduino IDE \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u0451\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 &#171;\u042f\u0433\u043e\u0434\u044b&#187;, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430, \u0438 \u0434\u0430\u043b\u0435\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 &#171;\u042f\u0433\u043e\u0434\u0443&#187;.  <\/p>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f Arduino: <\/p>\n<pre><code class=\"cpp\">#include \"ESP32SPISlave.h\"  ESP32SPISlave slave;   \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 static constexpr uint32_t BUFFER_SIZE {51}; uint8_t spi_slave_tx_buf[BUFFER_SIZE]; uint8_t spi_slave_rx_buf[BUFFER_SIZE];  void setup() {     Serial.begin(115200);     delay(2000);      \/\/ HSPI = CS: 15, CLK: 14, MOSI: 13, MISO: 12     \/\/ VSPI = CS: 5, CLK: 18, MOSI: 23, MISO: 19    \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0448\u0438\u043d\u044b SPI, \u0437\u0430\u0434\u0430\u0432\u0430\u044f     \/\/\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0430\u0437\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.     slave.setDataMode(SPI_MODE0);     slave.begin(VSPI);         \/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0431\u0443\u0444\u0435\u0440 \u043d\u0443\u043b\u044f\u043c\u0438     memset(spi_slave_tx_buf, 0, BUFFER_SIZE);     memset(spi_slave_rx_buf, 0, BUFFER_SIZE); }  \/\/ \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 int wd = 0;  void loop() {         \/\/ \u0435\u0441\u043b\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e     if (slave.remained() == 0) {         slave.queue(spi_slave_rx_buf, spi_slave_tx_buf, BUFFER_SIZE);     }     \/\/ \u0435\u0441\u043b\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u0438\u0437 master, \/\/ available() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \/\/ \u0438 \u0431\u0443\u0444\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f      while (slave.available()) {               Serial.println(micros() - wd);         wd = micros();         String receivedData;         \/\/ \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e receivedData         for (size_t i = 0; i &lt; slave.size(); ++i) {            receivedData += (char)spi_slave_rx_buf[i];         }         Serial.println(\"Received: \" + receivedData);          String sentData = \"0101010010101011010XCVASDFratatatata\";          \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 raspberry         size_t len = sentData.length();         memcpy(spi_slave_tx_buf, sentData.c_str(), len);          slave.pop();     } }  <\/code><\/pre>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u0438 \u0442\u0430\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0437 \u043f\u044f\u0442\u0438 &#171;ESP32&#187;<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 &#171;\u042f\u0433\u043e\u0434\u0443&#187; \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#171;Thonny&#187; \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430 Python. \u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 &#171;\u042f\u0433\u043e\u0434\u044b&#187; \u0438 \u043f\u0440\u0438\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u044f\u0442\u0438 &#171;ESP32&#187;. <\/p>\n<p>\u0417\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 spidev (\u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187; \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c pip install spidev)<\/p>\n<pre><code class=\"python\">import spidev # \u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 spidev \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SPI. spi0 = spidev.SpiDev() # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 spi0 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u0430 \u0448\u0438\u043d\u0435 0. spi0.open(0, 0) # \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0448\u0438\u043d\u044b 0 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c 0. spi0.max_speed_hz = 100000 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0438\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e. spi0.bits_per_word = 8   spi1 = spidev.SpiDev() # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 spi1 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u043c SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u0430 \u0448\u0438\u043d\u0435 1. spi1.open(1, 0) # \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0448\u0438\u043d\u044b 1 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c 0. spi1.max_speed_hz = 100000 spi1.bits_per_word = 8  spi5 = spidev.SpiDev() spi5.open(5, 0) spi5.max_speed_hz = 100000 spi5.bits_per_word = 8  rx_data_len = 10  while True: # \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f spi0. for dev in range(1): data_str = \"B\" * 10 data = data_str.encode() spi0.open(0, dev) spi0.writebytes(data) rx_data = spi0.readbytes(rx_data_len) received_data = bytes(rx_data) print(f\"B0 D{dev} R_Data: {received_data}\\n\") spi0.close()  for dev in range(1): # \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f spi1. data_str = \"A\" * 10 data = data_str.encode() spi1.open(1, dev) spi1.writebytes(data) rx_data = spi1.readbytes(rx_data_len) received_data = bytes(rx_data) print(f\"B1 D{dev} R_Data: {received_data}\\n\") spi1.close()  for dev in range(1): # \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f spi5. data_str = \"C\" * 10 data = data_str.encode() spi5.open(5, dev) spi5.writebytes(data) rx_data = spi5.readbytes(rx_data_len) received_data = bytes(rx_data) print(f\"B5 D{dev} R_Data: {received_data}\\n\") spi5.close()<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 &#171;\u042f\u0433\u043e\u0434\u0435&#187; \u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 &#171;Enable&#187; \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 &#171;ESP32&#187;. <\/p>\n<p>\u0412\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 SPI \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0432 &#171;ESP32&#187;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db3\/b59\/aa4\/db3b59aa45f260060dee4ea7778fe3d9.png\" alt=\"\u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\" title=\"\u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db3\/b59\/aa4\/db3b59aa45f260060dee4ea7778fe3d9.png\"\/><\/p>\n<div><figcaption>\u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0416\u0434\u0451\u043c \u0432\u0430\u0448\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0443!<\/p>\n<\/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\/754496\/\"> https:\/\/habr.com\/ru\/articles\/754496\/<\/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<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0438 \u0441\u043b\u0443\u0436\u0438\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Raspberry Pi 4 Model B (&#171;\u042f\u0433\u043e\u0434\u0430&#187;), WEMOS WiFi &amp; Bluetooth ESP32 (&#171;ESP32&#187;) \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Serial Peripheral Interface (SPI). <\/p>\n<p>\u0425\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 <a class=\"mention\" href=\"\/users\/artuiu\">@Artuiu<\/a> \u0437\u0430 \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u043f\u043e\u043c\u043e\u0449\u044c<\/p>\n<p>P.S. \u042d\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0434\u0451\u043c \u043e\u0442 \u0412\u0430\u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0443!<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/microtechnics.ru\/raspberry-pi-obmen-dannymi-po-interfejsu-spi\/\" rel=\"noopener noreferrer nofollow\">https:\/\/microtechnics.ru\/raspberry-pi-obmen-dannymi-po-interfejsu-spi\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/wiki.amperka.ru\/articles:rpi-interfaces\" rel=\"noopener noreferrer nofollow\">http:\/\/wiki.amperka.ru\/articles:rpi-interfaces<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/25\/uart-vs-i2c-vs-spi-communication-protocols-and-uses\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.seeedstudio.com\/blog\/2019\/09\/25\/uart-vs-i2c-vs-spi-communication-protocols-and-uses\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/\" rel=\"noopener noreferrer nofollow\">https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/wiki.amperka.ru\/articles:rpi-guide\" rel=\"noopener noreferrer nofollow\">http:\/\/wiki.amperka.ru\/articles:rpi-guide<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pinout.xyz\/pinout\/spi\" rel=\"noopener noreferrer nofollow\">https:\/\/pinout.xyz\/pinout\/spi<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<ul>\n<li>\n<p><strong>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/strong> WEMOS WiFi &amp; Bluetooth ESP32 &#8212; 5 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440<\/strong> Raspberry Pi 4 Model B &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430<\/strong> \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043c\u0430\u043c\u0430&#187; &#8212; 13 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430<\/strong> \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043f\u0430\u043f\u0430&#187; &#8212; 21 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> Ethernet &#8212; 1 \u0448\u0442. <\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> USB type c &#8212; 1 \u0448\u0442. <\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0431\u0435\u043b\u044c<\/strong> USB micro USB &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0440\u0442\u0430<\/strong> \u043f\u0430\u043c\u044f\u0442\u0438 microSD 64 \u0413\u0431 &#8212; 1 \u0448\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440<\/strong> 18650 Li-ion &#8212; 5 \u0448\u0442. <\/p>\n<\/li>\n<\/ul>\n<h2>\u0422\u0435\u043e\u0440\u0438\u044f<\/h2>\n<p><strong>SPI<\/strong> (Serial Peripheral Interface) &#8212; \u044d\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438, \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430). <\/p>\n<p><strong>\u041f\u0438\u043d\u044b SPI:<\/strong> \u041d\u0430 Raspberry Pi \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e GPIO (General Purpose Input\/Output) \u043f\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f SPI, \u044d\u0442\u043e: <\/p>\n<p><strong>SCLK<\/strong> (Serial Clock): \u041f\u0438\u043d \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. <\/p>\n<p><strong>MISO<\/strong> (Master In Slave Out): \u041f\u0438\u043d \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 (Raspberry Pi). <\/p>\n<p><strong>MOSI<\/strong> (Master Out Slave In): \u041f\u0438\u043d \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443. <\/p>\n<p><strong>CS<\/strong> (Chip Select): \u041f\u0438\u043d \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044e\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>Raspberry Pi \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 SPI &#8212; SPI0, SPI1 \u0438 SPI2. <\/p>\n<p>SPI0: \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GPIO \u043f\u0438\u043d\u0430\u0445 9 (MISO), 10 (MOSI), 11 (SCLK) \u0438 8 (CS0). \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a \u044d\u043a\u0440\u0430\u043d\u044b \u0438\u043b\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438. <\/p>\n<p>SPI1: \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GPIO \u043f\u0438\u043d\u0430\u0445 19 (MISO), 20 (MOSI), 21 (SCLK) \u0438 18 (CS1). \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u043c SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<p><strong>1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u041f\u041e &#171;Raspberry Pi OS&#187;<\/strong> \u043d\u0430 microSD \u0447\u0435\u0440\u0435\u0437 &#171;Raspberry Pi Imager&#187;. <br \/>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430: <a href=\"https:\/\/www.raspberrypi.com\/software\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.raspberrypi.com\/software\/<\/a>. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c &#171;Raspberry Pi Imager&#187;. \u0412\u044b\u0431\u0440\u0430\u0442\u044c <strong>Operating System > Raspberry Pi OS (32-bit)<\/strong>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>&#171;Raspberry Pi Imager&#187; \u2014  \u0412\u044b\u0431\u043e\u0440 \u041f\u041e<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 microSD \u043a\u0430\u0440\u0442\u0443 \u0432 \u041f\u041a. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Storage<\/strong> \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c microSD \u043a\u0430\u0440\u0442\u0443 (\u0443 \u043d\u0430\u0441 \u044d\u0442\u043e Kingston 64 Gb). \u0421\u044e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0412\u0430\u0448\u0435 \u041f\u041e. <u>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u0412\u0430\u0441.<\/u><\/p>\n<figure class=\"full-width\">\n<div><figcaption>Raspberry Pi Imager \u2014  \u0412\u044b\u0431\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u041f\u041e<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u044c <strong>WRITE<\/strong> \u0438 \u0436\u0434\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c microSD \u0432 \u043b\u043e\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 &#171;\u042f\u0433\u043e\u0434\u0435&#187;.<\/p>\n<p><strong>2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Arduino IDE<\/strong> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 &#171;ESP32&#187;. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 <a href=\"https:\/\/www.arduino.cc\/en\/software\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.arduino.cc\/en\/software<\/u><\/a>, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c Arduino IDE \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. <br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c Arduino IDE. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 <strong>\u0424\u0430\u0439\u043b > \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 json \u0444\u0430\u0439\u043b <a href=\"https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json<\/u><\/a> <br \/>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u043e\u043a\u043e\u0448\u043a\u043e \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u041e\u041a<\/p>\n<figure class=\"full-width\">\n<div><figcaption>Arduino IDE \u2014 \u0414\u043e\u043f. \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043b\u0430\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b > \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438<\/strong>. <br \/>\u0423 \u0412\u0430\u0441 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0418\u0449\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <strong>esp32 \u043e\u0442 Espressif<\/strong> \u0432\u0435\u0440\u0441\u0438\u0438 <strong><u>1.0.6<\/u><\/strong> (\u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445) \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 esp32 \u043e\u0442 Espressif \u0432\u0435\u0440\u0441\u0438\u0438 1.0.6<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043b\u0430\u0442\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b > \u041f\u043b\u0430\u0442\u0430 > ESP32 Arduino > WeMos WiFi &amp; Bluetooth Battery<\/strong>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>Arduino IDE \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442\u044b WeMos WiFi&amp;Bluetooth Battery<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ESP32SPISlave.h <br \/>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/github.com\/hideakitai\/ESP32SPISlave?ysclid=ll6fdafeu2422870462\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/github.com\/hideakitai\/ESP32SPISlave?ysclid=ll6fdafeu2422870462<\/u><\/a><u><\/p>\n<p><\/u>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p><strong>3. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 &#171;\u042f\u0433\u043e\u0434\u044b&#187;.<\/strong> \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;\u042f\u0433\u043e\u0434\u043e\u0439&#187; \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Virtual Network Computing (VNC). <br \/>\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043a \u201c\u042f\u0433\u043e\u0434\u0435\u201d \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u0430\u0431\u0435\u043b\u044f Ethernet. \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 &#171;<strong>Putty<\/strong>&#187; \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c <strong>raspberrypi.local \u0432 HostName<\/strong> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 <strong>SSH <\/strong>(\u043f\u043e\u0440\u0442 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 22).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>&#171;Putty&#187; \u2014 SSH \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a &#171;\u042f\u0433\u043e\u0434\u0435&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0438 <strong>\u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0445\u043e\u0434\u0435<\/strong> \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <strong>\u0432\u0432\u0435\u0441\u0442\u0438 \u043b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c: pi\/raspberry<\/strong>. \u0421\u0440\u0430\u0437\u0443 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u041f\u041e          \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b  <\/p>\n<pre><code class=\"bash\">sudo apt-get update &amp;&amp; sudo apt-get upgrade -y<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0451\u043c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b  <\/p>\n<pre><code class=\"bash\">sudo raspi-config<\/code><\/pre>\n<figure class=\"full-width\">\n<div><figcaption>\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 <strong>Interface Options<\/strong> \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 VNC, \u0442\u0430\u043a\u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c SPI <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f VNC \u0438 SPI<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c &#171;YES&#187;. \u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 <strong>System Options > Boot\/Auto Login > Desktop Autologin<\/strong><\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Enter&#187;, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Tab&#187; \u0438 &#171;Enter&#187;. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0430\u0448 Raspberry Pi, \u0438 \u0441\u0435\u0430\u043d\u0441 SSH \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 &#171;Putty&#187; \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043a\u043d\u0430. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c VNC Viewer \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a, \u0441\u0441\u044b\u043b\u043a\u0430 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430: <a href=\"https:\/\/www.realvnc.com\/en\/connect\/download\/viewer\/\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.realvnc.com\/en\/connect\/download\/viewer\/<\/u><\/a>. <br \/>\u0412\u0432\u043e\u0434\u0438\u043c <strong>raspberrypi.local<\/strong><\/p>\n<figure class=\"full-width\">\n<div><figcaption>&#171;VNC Viewer&#187; \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\/\u043f\u0430\u0440\u043e\u043b\u044c: pi\/raspberry.  <\/p>\n<figure class=\"full-width\">\n<div><figcaption>&#171;VNC Viewer&#187; \u2014 \u0412\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187;<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187;<\/figcaption><\/div>\n<\/figure>\n<p><strong>4. \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/strong>.<strong> <\/strong>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e &#171;\u042f\u0433\u043e\u0434\u0430&#187; \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: SPI0-2. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 config.txt (\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 boot)<\/p>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c c\u0442\u0440\u043e\u0447\u043a\u0443 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c<\/p>\n<p>spi5 &#8212; \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/p>\n<p>2cs &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435<\/p>\n<pre><code class=\"bash\">dtoverlay=spi5-1cs<\/code><\/pre>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442: <a href=\"https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/\" rel=\"noopener noreferrer nofollow\">https:\/\/blog.stabel.family\/raspberry-pi-4-multiple-spis-and-the-device-tree\/<\/a><\/p>\n<h2>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h2>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 SPI \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f: 1 &#171;\u042f\u0433\u043e\u0434\u0430&#187;, 5 &#171;ESP32&#187;, 1 \u043d\u043e\u0443\u0442\u0431\u0443\u043a, 13 \u043a\u0430\u0431\u0435\u043b\u0435\u0439 \u0442\u0438\u043f\u0430 &#171;\u043c\u0430\u043c\u0430-\u043c\u0430\u043c\u0430&#187; \u0438 31 \u043a\u0430\u0431\u0435\u043b\u044c \u0442\u0438\u043f\u0430 &#171;\u043f\u0430\u043f\u0430-\u043c\u0430\u043c\u0430&#187;. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0438 &#171;ESP32&#187; \u0441 &#171;\u042f\u0433\u043e\u0434\u043e\u0439&#187;, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c 5 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 &#171;ESP32&#187;: <strong>MISO, MOSI, SCLK, SS, Ground(GND)<\/strong> <\/p>\n<p>\u0418 19 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 &#171;\u042f\u0433\u043e\u0434\u0435&#187;  <\/p>\n<p><strong>SPI0:<\/strong> MISO &#8212; 21 (GPIO 9), MOSI &#8212; 19 (GPIO 10), SCLK &#8212; 23 (GPIO 11), SS0 &#8212; 24 (GPIO 8), <br \/>SS1 &#8212; 26 (GPIO 7);<\/p>\n<p><strong>SPI1:<\/strong> MISO &#8212; 35 (GPIO 19), MOSI &#8212; 38 (GPIO 20), SCLK &#8212; 40 (GPIO 21), SS1 &#8212; 11 (GPIO 17), <br \/>SS2 &#8212; 36 (GPIO 16); <\/p>\n<p><strong>SPI5:<\/strong> MISO &#8212; 33 (GPIO 13), MOSI &#8212; 8 (GPIO 14), SCLK &#8212; 10 (GPIO 15), SS0 &#8212; 32 (GPIO 12)<\/p>\n<p>+1 GND \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 &#171;ESP32&#187;<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0438\u043d\u044b \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u0442\u043e \u0435\u0441\u0442\u044c <strong>MISO \u043a MISO, MOSI \u043a MOSI<\/strong> \u0438 \u0442.\u0434. <br \/>\u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u043d\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0442 \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u044f\u0442\u0438 &#171;ESP32&#187;<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e &#171;ESP32&#187; \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0431\u0435\u043b\u044c USB micro USB \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0443 \u0438 \u0447\u0435\u0440\u0435\u0437 Arduino IDE \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u0451\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 &#171;\u042f\u0433\u043e\u0434\u044b&#187;, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430, \u0438 \u0434\u0430\u043b\u0435\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 &#171;\u042f\u0433\u043e\u0434\u0443&#187;.  <\/p>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f Arduino: <\/p>\n<pre><code class=\"cpp\">#include \"ESP32SPISlave.h\"  ESP32SPISlave slave;   \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 static constexpr uint32_t BUFFER_SIZE {51}; uint8_t spi_slave_tx_buf[BUFFER_SIZE]; uint8_t spi_slave_rx_buf[BUFFER_SIZE];  void setup() {     Serial.begin(115200);     delay(2000);      \/\/ HSPI = CS: 15, CLK: 14, MOSI: 13, MISO: 12     \/\/ VSPI = CS: 5, CLK: 18, MOSI: 23, MISO: 19    \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0448\u0438\u043d\u044b SPI, \u0437\u0430\u0434\u0430\u0432\u0430\u044f     \/\/\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0430\u0437\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.     slave.setDataMode(SPI_MODE0);     slave.begin(VSPI);         \/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0431\u0443\u0444\u0435\u0440 \u043d\u0443\u043b\u044f\u043c\u0438     memset(spi_slave_tx_buf, 0, BUFFER_SIZE);     memset(spi_slave_rx_buf, 0, BUFFER_SIZE); }  \/\/ \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 int wd = 0;  void loop() {         \/\/ \u0435\u0441\u043b\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e     if (slave.remained() == 0) {         slave.queue(spi_slave_rx_buf, spi_slave_tx_buf, BUFFER_SIZE);     }     \/\/ \u0435\u0441\u043b\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u0438\u0437 master, \/\/ available() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \/\/ \u0438 \u0431\u0443\u0444\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f      while (slave.available()) {               Serial.println(micros() - wd);         wd = micros();         String receivedData;         \/\/ \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e receivedData         for (size_t i = 0; i &lt; slave.size(); ++i) {            receivedData += (char)spi_slave_rx_buf[i];         }         Serial.println(\"Received: \" + receivedData);          String sentData = \"0101010010101011010XCVASDFratatatata\";          \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 raspberry         size_t len = sentData.length();         memcpy(spi_slave_tx_buf, sentData.c_str(), len);          slave.pop();     } }  <\/code><\/pre>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u0438 \u0442\u0430\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0437 \u043f\u044f\u0442\u0438 &#171;ESP32&#187;<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 &#171;\u042f\u0433\u043e\u0434\u0443&#187; \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#171;Thonny&#187; \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430 Python. \u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 &#171;\u042f\u0433\u043e\u0434\u044b&#187; \u0438 \u043f\u0440\u0438\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u044f\u0442\u0438 &#171;ESP32&#187;. <\/p>\n<p>\u0417\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 spidev (\u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b &#171;\u042f\u0433\u043e\u0434\u044b&#187; \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c pip install spidev)<\/p>\n<pre><code class=\"python\">import spidev # \u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 spidev \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SPI. spi0 = spidev.SpiDev() # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 spi0 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u0430 \u0448\u0438\u043d\u0435 0. spi0.open(0, 0) # \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a SPI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0448\u0438\u043d\u044b 0 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c 0. spi0.max_speed_hz = 100000 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0438\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e. spi0.bits_per_word = 8<\/code><\/pre>\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-352104","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/352104","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=352104"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/352104\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=352104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=352104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=352104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}