{"id":413008,"date":"2024-06-29T22:52:36","date_gmt":"2024-06-29T22:52:36","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=413008"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=413008","title":{"rendered":"<span>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b ESP32 \u0438 STM32 \u043d\u0430 C# (nanoFramework)<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/tr\/b5\/fj\/trb5fjhqb2sgacuonjyb50l75eg.png\" alt=\"dotnet nanoFramework\" data-src=\"https:\/\/habrastorage.org\/webt\/tr\/b5\/fj\/trb5fjhqb2sgacuonjyb50l75eg.png\"\/><\/p>\n<p>  <a href=\"https:\/\/nanoframework.net\/\">.NET nanoFramework<\/a> \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 .NET \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u0430\u043b\u044b\u0445 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0421 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439, \u043d\u043e\u0441\u0438\u043c\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430\u0443\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u044b, \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u044b \u0438 \u0434\u0430\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/549012\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 .NET nanoFramework, \u0435\u0451 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c nanoFramework \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441\u0435\u0440\u0438\u0438 ESP32 \u0438 STM32, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u00abHello World!\u00bb, \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438, \u0438 \u043e\u0446\u0435\u043d\u0438\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0441 \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e\u00bb .NET \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 nanoFramework.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h1>\u0414\u043b\u044f \u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 nanoFramework?<\/h1>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 Arduino, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f C\/C++. \u041f\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435, nanoFramework \u043d\u0438\u0447\u0443\u0442\u044c \u043d\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Arduino. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442, nanoFramework \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445, \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u043e\u0434\u0430 \u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 IDE MS Visual Studio. nanoFramework \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 .NET \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0445\u043e\u0442\u044f\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c \u0438 \u0438\u043c \u0442\u043e\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u043b\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439 (IoT). \u0412\u0435\u0434\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0438 \u0443\u043c\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 nanoFramework, \u043e\u043d\u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u0438 \u0443\u043c\u0435\u044e\u0442. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u044b \u043e\u0434\u0438\u043d-\u043a-\u043e\u0434\u043d\u043e\u043c\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u0430\u043b\u044b\u0439 \u043e\u0431\u044a\u0435\u043c RAM \u0438 \u043d\u0438\u0437\u043a\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/rg\/-8\/8j\/rg-88jgleulnwjzbwu2rk81adto.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rg\/-8\/8j\/rg-88jgleulnwjzbwu2rk81adto.png\" alt=\"nanoFramework Visual Studio 2019\" data-src=\"https:\/\/habrastorage.org\/webt\/rg\/-8\/8j\/rg-88jgleulnwjzbwu2rk81adto.png\"\/><\/a><br \/>  <em>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 nanoFramework \u0432 Visual Studio 2019<\/em><\/p>\n<p>  \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 nanoFramework \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0438 \u0434\u043b\u044f \u0441\u0444\u0435\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 C# \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0433\u0434\u0435 \u0443 \u0442\u0435\u0431\u044f \u043d\u0435\u0442 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 n-\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0434\u0435\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0432\u043e\u0442 \u0442\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432.<\/p>\n<p>  \u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e nanoFramework \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0432\u0441\u0435\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0443 \u0438 \u0445\u043e\u0447\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e, \u0440\u043e\u0431\u043e\u0442\u043e\u0432, \u0438 \u0418\u0418. \u0424\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 nanoFramework \u0441\u043e\u0441\u0442\u0430\u0432\u044f\u0442 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0447\u0430\u0448\u043a\u0438 \u00ab\u043a\u043e\u0444\u0430\u00bb \u0432 Starbucks (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ESP32). \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Visual Studio 2019 Community Edition. \u0412\u0441\u0435 \u0447\u0442\u043e \u043e\u0442 \u0432\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435 \u0438 \u0443\u043f\u043e\u0440\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/549012\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430, \u0441 \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u043e\u0435, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430 \u043b\u043e\u0433\u043e\u0442\u0438\u043f. \u0428\u0443\u0442\u043a\u0430, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438, \u043d\u043e \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/27\/gk\/3i\/27gk3ixb-cvtu_yigdlxph5hhsg.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/27\/gk\/3i\/27gk3ixb-cvtu_yigdlxph5hhsg.png\" alt=\"nanoFramework logo\" data-src=\"https:\/\/habrastorage.org\/webt\/27\/gk\/3i\/27gk3ixb-cvtu_yigdlxph5hhsg.png\"\/><\/a><br \/>  <em>\u041b\u043e\u0433\u043e\u0442\u0438\u043f\u044b nanoFramework<\/em><\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b nanoFramework.<\/p>\n<h1>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/h1>\n<p>  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438: <a href=\"https:\/\/docs.nanoframework.net\/content\/reference-targets\/index.html\">\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b<\/a> \u0438 <a href=\"https:\/\/docs.nanoframework.net\/content\/community-targets\/index.html\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c<\/a> (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u2014 <a href=\"https:\/\/github.com\/nanoframework\/nf-Community-Targets\">GitHub nanoframework\/nf-Community-Targets<\/a>). \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435 \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 (.NET Assemblies). \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a:\u00a0 Gpio, Spi, I2c, Pwm, Adc, Dac, Serial, OneWire, CAN, Events, SWO, Networking, Large Heap \u0438 UI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u043c\u0438 \u0432 \u0441\u0435\u0440\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 ESP32 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435\u0445, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u044c PSRAM (Pseudo static RAM).<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c <a href=\"https:\/\/www.espressif.com\/en\/products\/modules\/esp32\"><strong>ESP-WROOM-32 <\/strong><\/a> \u2014 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f nanoFramework. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/devdotnet.org\/post\/iot-platforma-esp32-devkit-v1-na-baze-mcu-esp-wroom-32\/\">ESP32 DevKit v1<\/a>, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0434\u043e $3.65. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0447\u0438\u043f SoC ESP32-D0WDQ6 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Espressif, \u0432 \u043d\u0435\u0433\u043e \u0432\u0445\u043e\u0434\u0438\u0442 2-\u044f\u0434\u0435\u0440\u043d\u044b\u0439 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Tensilica Xtensa LX6 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 ROM \u043d\u0430 448 \u041a\u0411 \u0438 SRAM \u043d\u0430 520 \u041a\u0411. \u041d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 Wi-Fi\/Bluetooth, \u0434\u0430\u0442\u0447\u0438\u043a \u0425\u043e\u043b\u043b\u0430 \u0438 \u0441\u0435\u043d\u0441\u043e\u0440 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b: \u0428\u0418\u041c, \u0410\u0426\u041f, \u0426\u0410\u041f, I2C, SPI, UART\/Serial, I2S.\u00a0 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 Flash-\u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 4 \u041c\u0411.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ve\/7i\/3o\/ve7i3or0elovooqo9pzs1b1a524.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ve\/7i\/3o\/ve7i3or0elovooqo9pzs1b1a524.jpeg\" alt=\"nanoFramework ESP32 DevKit\" data-src=\"https:\/\/habrastorage.org\/webt\/ve\/7i\/3o\/ve7i3or0elovooqo9pzs1b1a524.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ESP32 DevKit v1<\/em><\/p>\n<p>  \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043c\u043e\u0434\u0443\u043b\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 ESP-WROOM-32, \u0430<br \/>  ESP32-WROOM-32U \u0438\u043b\u0438 ESP32-WROOM-32D. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c:  <\/p>\n<ul>\n<li>ESP32-WROOM-32U \u2014 \u043c\u043e\u0434\u0443\u043b\u044c ESP-WROOM-32 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0430\u043d\u0442\u0435\u043d\u043d\u044b;<\/li>\n<li>ESP32-WROOM-32D \u2014 \u043c\u043e\u0434\u0443\u043b\u044c ESP-WROOM-32 c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0430\u043d\u0442\u0435\u043d\u043d\u043e\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0437\u043c\u0435\u0439\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0435.<\/li>\n<\/ul>\n<p>  \u0412\u0430\u0436\u043d\u043e! \u041e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c ESP-WROOM-32 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442 \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 <strong>EN<\/strong> \u0438 <strong>Boot<\/strong>. \u041a\u043d\u043e\u043f\u043a\u0430 EN \u2014 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, Boot \u2014 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 Boot, \u043a\u043e\u043d\u0442\u0430\u043a\u0442 <strong>GPIO0<\/strong> \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <strong>\u0417\u0435\u043c\u043b\u044e(GND)<\/strong>, \u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442:  <\/p>\n<pre><code class=\"bash\">ets Jun 8 2016 00:22:57 rst:0x1 (POWERON_RESET),boot:0x7 (DOWNLOAD_BOOT(UART0\/UART1\/SDIO_REI_REO_V2)) waiting for download <\/code><\/pre>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/3i\/cj\/t4\/3icjt4ubd-m-deb5ymziz_aqeou.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/3i\/cj\/t4\/3icjt4ubd-m-deb5ymziz_aqeou.jpeg\" alt=\"ESP32 ESP-WROOM-32\" data-src=\"https:\/\/habrastorage.org\/webt\/3i\/cj\/t4\/3icjt4ubd-m-deb5ymziz_aqeou.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041a\u043d\u043e\u043f\u043a\u0438 EN \u0438 Boot \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c ESP-WROOM-32<\/em><\/p>\n<p>  \u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 ESP-WROOM-32 \u0431\u0435\u0437 \u043a\u043d\u043e\u043f\u043a\u0438 <strong>Boot<\/strong>, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445,\u00a0\u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441 \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 <strong>Boot <\/strong>\u043d\u0430 \u043f\u043b\u0430\u0442\u0435. \u041d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Boot<\/strong> \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 nanoFramework <a href=\"https:\/\/www.nanoframework.net\/five-years-and-counting\/\">\u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0430<\/a>, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 ESP32 \u0431\u0443\u0434\u0443\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 ESP-IDF 4.3.1. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0432\u0441\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 ESP32, \u0432\u043a\u043b\u044e\u0447\u0430\u044f: ESP32_S2, ESP32_S3, ESP32_C3 (RISC-V). \u041d\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 nanoFramework, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f ESP-IDF. \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0434\u0432\u0443\u0445\u044a\u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u0447\u0438\u043f\u043e\u0432 ESP32 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u043e\u0431\u0430 \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u0434\u0430. \u0411\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 mbedTLS \u0438\u0437 ESP-IDF \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438 \u0442. \u0434.). \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438, \u043f\u0440\u043e\u0444\u0438\u043b\u0438 Wi-Fi, CA \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 X509 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0432\u0441\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 ESP32 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 GPIO, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u2014 STM32. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/devdotnet.org\/post\/otladochnaya-plata-stm32-nucleo-f411re\/\"><strong>ST Nucleo64 F411RE<\/strong><\/a> \u043d\u0430 \u0431\u0430\u0437\u0435 SoC Cortex-M4@100 MHz \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 ROM \u043d\u0430 512 \u041a\u0411 \u0438 SRAM \u043d\u0430 128 \u041a\u0411. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Arduino-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u041f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435 ESP32, \u043d\u0430 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430\u0445 \u043f\u0440\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442 $29 \u0438 \u0432\u044b\u0448\u0435.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/g3\/io\/pg\/g3iopgzrv2ihlqprtww64kdzsay.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/g3\/io\/pg\/g3iopgzrv2ihlqprtww64kdzsay.jpeg\" alt=\"ST Nucleo64 F411RE\" data-src=\"https:\/\/habrastorage.org\/webt\/g3\/io\/pg\/g3iopgzrv2ihlqprtww64kdzsay.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041f\u043b\u0430\u0442\u0430 ST Nucleo64 F411RE<\/em><\/p>\n<h1>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/h1>\n<p>  \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u0430\u043b\u044b\u043c\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 .NET IoT, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 Nuget \u043f\u0430\u043a\u0435\u0442. \u0412\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b <i>Nuget<\/i>, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0432 .NET Core.\u00a0\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e <a href=\"https:\/\/docs.nanoframework.net\/content\/architecture\/class-libraries.html\">\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/a> \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0412\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u0441\u0435\u0440\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041a\u043b\u0430\u0441\u0441\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>System.Device.Gpio<\/em> \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 .NET IoT \u0434\u043b\u044f Linux, \u0430 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <em>Windows.Device.Gpio\u00a0<\/em>\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 Windows IoT Core. \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<br \/>  <a href=\"https:\/\/docs.nanoframework.net\/content\/architecture\/class-libraries.html\">Class Libraries. Documentation \u2014 nanoFramework<\/a>.<\/p>\n<p>  <strong>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 .NET nanoFramework (<a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework\/blob\/master\/nanoFramework-libs.xlsx\">xlsx<\/a>, <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework\/blob\/master\/nanoFramework-libs.pdf\">pdf<\/a>)<\/strong><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a .NET nanoFramework<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"scrollable-table\">\n<table width=\"975\">\n<tbody>\n<tr>\n<td width=\"398\"><strong>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \/\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 Nuget \u043f\u0430\u043a\u0435\u0442\u0430<\/strong><\/td>\n<td width=\"577\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 (Bases)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Base Class Library (nanoFramework.CoreLibrary)<\/td>\n<td width=\"577\">\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a mscorlib, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Runtime.Events (nanoFramework.Runtime.Events)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Runtime.Native (nanoFramework.Runtime.Native)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430 (GC \u2014 garbage collection), \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u0435, \u0447\u0430\u0441\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Threading (nanoFramework.System.Threading)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Math (nanoFramework.System.Math)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Text (nanoFramework.System.Text)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043a\u043b\u0430\u0441\u0441\u0430 StringBuilder<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Text.RegularExpressions (nanoFramework.System.Text.RegularExpressions)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Collections (nanoFramework.System.Collections)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439: ArrayList, Dictionary, Queue (\u043e\u0447\u0435\u0440\u0435\u0434\u044c), Stack (\u0441\u0442\u0435\u043a). \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b: Ienumerable, Ienumerator \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Json (nanoFramework.Json)<\/td>\n<td width=\"577\">\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\/\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 JSON<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.ResourceManager (nanoFramework.ResourceManager)<\/td>\n<td width=\"577\">\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Microsoft.Extensions.Logging (nanoFramework.Logging)<\/td>\n<td width=\"577\">\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Microsoft.Extensions.Logging)<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b (Hardware interfaces)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Device.Gpio (nanoFramework.System.Device.Gpio)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 GPIO (general-purpose input\/output)<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Device.Gpio (nanoFramework.Windows.Devices.Gpio)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 GPIO (general-purpose input\/output)<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Device.Dac (nanoFramework.System.Device.Dac)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0426\u0410\u041f (\u0446\u0438\u0444\u0440\u043e-\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f), digital-to-analog converter,DAC<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.Adc (nanoFramework.Windows.Devices.Adc)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0410\u0426\u041f (\u0430\u043d\u0430\u043b\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f),\u00a0 analog-to-digital converter, ADC<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Device.I2c (nanoFramework.System.Device.I2c)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 I2C (Inter-Integrated Circuit) \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0445\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0430\u044f \u0434\u0432\u0435 \u0434\u0432\u0443\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 (SDA \u0438 SCL).<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.I2c (nanoFramework.Windows.Devices.I2c)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 I2C (Inter-Integrated Circuit) \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0445\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0430\u044f \u0434\u0432\u0435 \u0434\u0432\u0443\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 (SDA \u0438 SCL).<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Device.Spi (nanoFramework.System.Device.Spi)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0438\u043d\u044b SPI (Serial Peripheral Interface). \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0438, \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b, \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.Spi (nanoFramework.Windows.Devices.Spi)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0438\u043d\u044b SPI (Serial Peripheral Interface). \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0438, \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b, \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Devices.OneWire (nanoFramework.Devices.OneWire)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 OneWire, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b DS18B20<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.IO.Ports (nanoFramework.System.IO.Ports)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432 COM<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.SerialCommunication (nanoFramework.Windows.Devices.SerialCommunication)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432 COM<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Device.Pwm (nanoFramework.System.Device.Pwm)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0428\u0418\u041c (\u0448\u0438\u0440\u043e\u0442\u043d\u043e-\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438), pulse-width modulation PWM. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0440\u043a\u043e\u0441\u0442\u0438 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u0432, \u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.Pwm (nanoFramework.Windows.Devices.Pwm)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0428\u0418\u041c (\u0448\u0438\u0440\u043e\u0442\u043d\u043e-\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438), pulse-width modulation PWM. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0440\u043a\u043e\u0441\u0442\u0438 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u0432, \u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Devices.Can (nanoFramework.Devices.Can)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 CAN (Controller Area Network) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u0435\u0434\u0438\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0442. \u043f.<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0421\u0435\u0442\u044c (Networking)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Devices.WiFi (nanoFramework.Windows.Devices.WiFi)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Wi-Fi. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (AP) \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043d\u0438\u043c<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Net (nanoFramework.System.Net)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0435\u0442\u0438. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 DNS, \u0432\u0435\u0431-\u043f\u0440\u043e\u043a\u0441\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u043a\u0435\u0442\u044b \u0438 SSL-\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Net.Http (nanoFramework.System.Net.Http)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 http-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Net.Http.Client (nanoFramework.System.Net.Http.Client)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 http \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Net.WebSockets (nanoframework.System.Net.WebSockets)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 WebSocket<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Net.Http.Server (nanoFramework.System.Net.Http.Server)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 http \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 Web-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.WebServer (nanoFramework.WebServer)<\/td>\n<td width=\"577\">\u00ab\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00bb ASP.NET, REST API<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Networking (nanoFramework.Networking.Sntp)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 SNTP (Simple Network Time Protocol), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432\u00a0 \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Azure.Devices (nanoFramework.Azure.Devices.Client)<\/td>\n<td width=\"577\">\u043a\u043b\u0438\u0435\u043d\u0442 Azure IoT Devices<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (Storage)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.IO.FileSystem (nanoFramework.System.IO.FileSystem)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 microSD \u0438 MMC \u043f\u0430\u043c\u044f\u0442\u044c\u044e<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Storage (nanoFramework.Windows.Storage)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f\u0445<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Windows.Storage.Streams (nanoFramework.Windows.Storage.Streams)<\/td>\n<td width=\"577\">\u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438\/\u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (GUI)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Graphics (nanoFramework.Graphics)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0438 UI<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">System.Drawing (nanoFramework.System.Drawing)<\/td>\n<td width=\"577\">\u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 (Hardware dependent)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Hardware.Esp32 (nanoFramework.Hardware.Esp32)<\/td>\n<td width=\"577\">\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Esp32 \u0442\u0430\u043a\u0438\u0435, \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Hardware.Esp32.Rmt (nanoFramework.Hardware.Esp32.Rmt)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f RMT (Remote Control)<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.M5Stack (nanoFramework.M5Stack)<\/td>\n<td width=\"577\">\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 M5Stack, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c LCD<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Hardware.Stm32 (nanoFramework.Hardware.Stm32)<\/td>\n<td width=\"577\">\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Stm32<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.Hardware.TI (nanoFramework.Hardware.TI)<\/td>\n<td width=\"577\">\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 TI(Texas Instruments) \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.TI.EasyLink (nanoFramework.TI.EasyLink)<\/td>\n<td width=\"577\">\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 TI EasyLink<\/td>\n<\/tr>\n<tr>\n<td width=\"398\"><strong>\u0421\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 (Third party)<\/strong><\/td>\n<td width=\"577\"><\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Amqp.* (AMQPNetLite.nanoFramework)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 AMQP (Advanced Message Queuing Protocol) \u0434\u043b\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f RabbitMQ<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">Amqp.* (AMQPNetMicro.nanoFramework)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 AMQP (Advanced Message Queuing Protocol) \u0434\u043b\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f RabbitMQ<\/td>\n<\/tr>\n<tr>\n<td width=\"398\">nanoFramework.M2Mqtt (nanoFramework.m2mqtt)<\/td>\n<td width=\"577\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 MQTT. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c-\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a (pub\/sub)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h1>\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432<\/h1>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Arduino, \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445: \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u044b, \u0433\u0430\u0437\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u0437\u0430\u043c\u0435\u0440 \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u0431\u0430\u0440\u043e\u043c\u0435\u0442\u0440\u044b, \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u044b, \u0438\u043d\u0444\u0440\u0430\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438, \u0433\u0438\u0440\u043e\u0441\u043a\u043e\u043f\u044b, \u043a\u043e\u043c\u043f\u0430\u0441\u044b, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439, NFC-\u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0442. \u0434.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/docs.nanoframework.net\/devicesdetails\/README.html\">List and category of devices. Devices \u2014 nanoFramework<\/a>. \u0421 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\">GitHub nanoFramework.IoT.Device\/devices<\/a>.<\/p>\n<h1>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h1>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f nanoFramework \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Microsoft Visual Studio Community 2019 Version 16.11, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 .NET, \u041e\u0421 Windows 10 (\u0432 Windows 7 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043d\u0435\u043b\u044c Device Explorer). \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e, \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e: <strong>Extensions -> Manage Extensions<\/strong>. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f: <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=nanoframework.nanoFramework-VS2019-Extension\"><strong>.NET nanoFramework VS2019 Extension<\/strong><\/a>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/xj\/-f\/z5\/xj-fz5_hek5g7asmyykpwkuwk0a.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xj\/-f\/z5\/xj-fz5_hek5g7asmyykpwkuwk0a.png\" alt=\"Extension nanoFramework\" data-src=\"https:\/\/habrastorage.org\/webt\/xj\/-f\/z5\/xj-fz5_hek5g7asmyykpwkuwk0a.png\"\/><\/a><br \/>  <em>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 nanoFramework \u0434\u043b\u044f Microsoft Visual Studio<\/em><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e <strong>Device Explorer<\/strong> (\u043c\u0435\u043d\u044e View -> Other Windows -> Device Explorer). \u0412 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0438: Ping Device, Device Capabilities, Erase App.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/os\/6u\/jb\/os6ujb0yvrxnifhfwenm1eug2vm.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/os\/6u\/jb\/os6ujb0yvrxnifhfwenm1eug2vm.png\" alt=\"nanoFramework Device Explorer\" data-src=\"https:\/\/habrastorage.org\/webt\/os\/6u\/jb\/os6ujb0yvrxnifhfwenm1eug2vm.png\"\/><\/a><br \/>  <em>\u041f\u0430\u043d\u0435\u043b\u044c Device Explorer \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f nanoFramework<\/em><\/p>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u044b:  <\/p>\n<ul>\n<li><strong>Ping Device<\/strong> \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430;<\/li>\n<li><strong>Device Capabilities<\/strong> \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430;<\/li>\n<li><strong> Erase App<\/strong> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (nanoFramework \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435).<\/li>\n<\/ul>\n<p>  <\/p>\n<h1>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0440\u0435\u0434\u044b nanoFramework \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ESP-WROOM-32<\/h1>\n<p>  \u0414\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f .NET \u043a\u043e\u0434\u0430 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 nanoFramework. \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <a href=\"https:\/\/github.com\/nanoframework\/nanoFirmwareFlasher\">nanoFirmwareFlasher<\/a>. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438 \u043f\u0440\u043e\u0448\u044c\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<h3>\u0428\u0430\u0433 1 \u2014 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043c\u043e\u0441\u0442\u0430 CP2102 USB to UART<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ESP32 DevKit v1 \u043f\u043e USB \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 <strong>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/strong>\u00a0 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0443\u0437\u043b\u0435 <strong>\u0414\u0440\u0443\u0433\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/strong>, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/_x\/sd\/-4\/_xsd-4gk1hyzcqkws8nsfvneak0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_x\/sd\/-4\/_xsd-4gk1hyzcqkws8nsfvneak0.png\" alt=\"Device Manager ESP32\" data-src=\"https:\/\/habrastorage.org\/webt\/_x\/sd\/-4\/_xsd-4gk1hyzcqkws8nsfvneak0.png\"\/><\/a><br \/>  <em>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/em><\/p>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/www.silabs.com\/developers\/usb-to-uart-bridge-vcp-drivers\">CP210x USB to UART Bridge VCP Drivers<\/a> \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 <strong>COM3<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/r0\/qu\/ec\/r0queckzfhquuhnmnipfsjstubk.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/r0\/qu\/ec\/r0queckzfhquuhnmnipfsjstubk.png\" alt=\"Device Manager ESP32\" data-src=\"https:\/\/habrastorage.org\/webt\/r0\/qu\/ec\/r0queckzfhquuhnmnipfsjstubk.png\"\/><\/a><br \/>  <em>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/em><\/p>\n<h3>\u0428\u0430\u0433 2 \u2014 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b nanoFirmwareFlasher<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>nanoFirmwareFlasher<\/strong>, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">dotnet tool install -g nanoff <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">nanoff --help <\/code><\/pre>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:  <\/p>\n<pre><code class=\"bash\">dotnet tool update -g nanoff <\/code><\/pre>\n<h3>\u0428\u0430\u0433 3 \u2014 \u0412\u044b\u0432\u043e\u0434 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/h3>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 ESP32, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u0440\u0438\u0448\u0435\u043b \u0441 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:  <\/p>\n<pre><code class=\"bash\">nanoff --platform esp32 --serialport COM3 --devicedetails <\/code><\/pre>\n<p>  \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>&#8212;platform<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 Target \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, <strong>&#8212;serialport<\/strong> \u2014 \u043d\u043e\u043c\u0435\u0440 COM \u043f\u043e\u0440\u0442\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 COM3.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/h-\/nz\/pr\/h-nzprpso1s3ynbiqlj9yctykrq.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/h-\/nz\/pr\/h-nzprpso1s3ynbiqlj9yctykrq.png\" alt=\"nanoFramework ESP32\" data-src=\"https:\/\/habrastorage.org\/webt\/h-\/nz\/pr\/h-nzprpso1s3ynbiqlj9yctykrq.png\"\/><\/a><br \/>  <em>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/em><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 &#171;<strong>*** Hold down the BOOT\/FLASH button in ESP32 board ***<\/strong>&#171;, \u0442\u043e \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Boot<\/strong>, \u0438\u043d\u0430\u0447\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0418\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0438\u043f ESP32-D0WDQ6 \u0441 4 \u041c\u0431 Flash \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0435\u0441\u0442\u044c Wi-Fi \u0438 BT.<\/p>\n<h3>\u0428\u0430\u0433 4 \u2014 \u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u043b\u043e\u0436\u043d\u043e\u043c\u0443 \u0448\u0430\u0433\u0443.\u00a0\u0414\u043b\u044f \u0441\u0435\u0440\u0438\u0438 ESP32 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/docs.nanoframework.net\/content\/esp32\/esp32_firmware_versions.html\">\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a (ESP32 Firmware versions).<\/a>\u00a0Espressif \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0447\u0438\u043f\u044b SoC, \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e <a href=\"https:\/\/www.espressif.com\/en\/products\/modules\">ESP32-S Series<\/a> \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435. \u041c\u043e\u0434\u0443\u043b\u0438 \u0441\u0435\u0440\u0438\u0438 ESP32 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0447\u0438\u043f\u043e\u0432:  <\/p>\n<ul>\n<li>ESP32-D0WD-V3 (\u0442\u0440\u0435\u0442\u044c\u044f \u0432\u0435\u0440\u0441\u0438\u044f\/\u0440\u0435\u0432\u0438\u0437\u0438\u044f);<\/li>\n<li>ESP32-D0WD (\u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\/\u0440\u0435\u0432\u0438\u0437\u0438\u044f \u2014 \u0441\u0442\u0430\u0440\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442);<\/li>\n<li>ESP32-D0WDQ6 (\u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\/\u0440\u0435\u0432\u0438\u0437\u0438\u044f \u2014 \u0441\u0442\u0430\u0440\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442);<\/li>\n<li>\u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/li>\n<\/ul>\n<p>  \u0427\u0438\u043f\u044b ESP32-D0WD \u0438 ESP32-D0WDQ6 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u043e\u0440\u043c-\u0444\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0447\u0438\u043f\u0430.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 <strong>ESP32-WROOM<\/strong> \u0438 <strong>ESP32-WROVER<\/strong>, \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430 \u0431\u0430\u0437\u0435 ESP32-D0WD-V3, \u0442\u0430\u043a \u0438 \u043d\u0430 ESP32-D0WD. \u041c\u043e\u0434\u0443\u043b\u044c ESP32-WROVER \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 ESP32-WROOM \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 PSRAM. PSRAM \u2014 \u044d\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u043f\u0430\u044f\u043d\u043d\u044b\u0439 \u0447\u0438\u043f RAM \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a \u043f\u043b\u0430\u0442\u0435 \u0438 \u0431\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 2 \u0438\u043b\u0438 8 \u041c\u0431. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 UI \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f WPF (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 ESP-WROVER-KIT \u0441 LCD ILI9341 \u043d\u0430 SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435).<\/p>\n<p>  <strong>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 (target) nanoFramework:<\/strong>  <\/p>\n<ul>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images-dev\/packages\/detail\/raw\/ESP32_REV0\/1.7.1-preview.1012\/\"><strong>ESP32_REV0<\/strong><\/a> \u2014 (DEV) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 PSRAM;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images-dev\/packages\/detail\/raw\/ESP32_REV3\/1.7.1-preview.1012\/\"><strong>ESP32_REV3<\/strong><\/a> \u2014 (DEV) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u0447\u0438\u043f\u043e\u043c ESP32 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 3 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 PSRAM;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images-dev\/packages\/detail\/raw\/ESP32_PSRAM_REV3\/1.7.1-preview.1012\/\"><strong>ESP32_PSRAM_REV0<\/strong><\/a> \u2014 (DEV) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PSRAM;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images-dev\/packages\/detail\/raw\/ESP32_PSRAM_REV3\/1.7.1-preview.1011\/\"><strong>ESP32_PSRAM_REV3<\/strong><\/a> \u2014 (DEV) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u0447\u0438\u043f\u043e\u043c ESP32 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 3 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PSRAM;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_WROOM_32\/1.7.0.2\/\"><strong>ESP32_WROOM_32<\/strong><\/a> \u2014 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PSRAM, \u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Bluetooth BLE \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 IRAM, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 PSRAM;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_WROOM_32_BLE\/1.7.0.2\/\"><strong>ESP32_WROOM_32_BLE<\/strong><\/a> \u2014 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Bluetooth BLE, \u043d\u043e PSRAM \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_WROOM_32_V3_BLE\/1.7.0.2\/\"><strong>ESP32_WROOM_32_V3_BLE<\/strong><\/a> \u2014 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u0447\u0438\u043f\u043e\u043c ESP32 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 3, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f PSRAM \u0438 Bluetooth BLE;<\/li>\n<li><strong>ESP32_PSRAM_REV3_ILI9341<\/strong> \u2014 (\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u0447\u0438\u043f\u043e\u043c ESP32 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 3 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PSRAM, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f LCD ILI9341;<\/li>\n<li><strong>ESP32_PSRAM_REV3_ILI9342<\/strong> \u2014 (\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 \u0447\u0438\u043f\u043e\u043c ESP32 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 3 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PSRAM, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f LCD ILI9342;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP_WROVER_KIT\/1.7.0.2\/\"><strong>ESP_WROVER_KIT<\/strong><\/a> \u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ESP WROVER KIT. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 UI, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 PSRAM \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f SPI LCD ILI9341;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_PICO\/1.7.0.2\/\"><strong>ESP32_PICO<\/strong><\/a> \u2014 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442 ESP32 \u0441 ESP32 PICO \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 PSRAM, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ESP32-PICO-KIT \u0438 M5Stack ATOM;<\/li>\n<li><strong>ESP32_PICO_ST7735S<\/strong> \u2014 (\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b ESP32 PICO, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f LCD ST7735S;<\/li>\n<li><strong>ESP32_PICO_ST7789V<\/strong> \u2014 (\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043b\u0430\u0442\u044b \u0434\u043b\u044f M5Stick C Plus, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f LCD ST7789V;<\/li>\n<li><strong>ESP32_REV0_ILI9342<\/strong> \u2014 (\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043b\u0430\u0442\u044b \u0434\u043b\u044f M5Stack, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f ILI9342;<\/li>\n<li><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_LILYGO\/1.7.0.2\/\"><strong>ESP32_LILYGO<\/strong><\/a> \u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b LilyGO ESP32, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Ethernet PHY.<\/li>\n<\/ul>\n<p>  \u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043e\u043f\u0446\u0438\u0439:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/th>\n<th>Wi-Fi<\/th>\n<th>Ethernet<\/th>\n<th>Bluetooth<\/th>\n<th>PSRAM (Large heap)<\/th>\n<th>ESP32 version<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>WROOM_32<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td><\/td>\n<td>\u2714\ufe0f<\/td>\n<td>0 -> 3<\/td>\n<\/tr>\n<tr>\n<td>WROOM_32_BLE<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>0 -> 3<\/td>\n<\/tr>\n<tr>\n<td>WROOM_32_V3_BLE<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>\u2714\ufe0f<\/td>\n<td>\u2714\ufe0f<\/td>\n<td>version 3 only<\/td>\n<\/tr>\n<tr>\n<td>ESP_WROVER_KIT<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td><\/td>\n<td>\u2714\ufe0f 2 Mb heap + Graphics<\/td>\n<td>0 -> 3<\/td>\n<\/tr>\n<tr>\n<td>EP32_PICO<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>0 -> 3<\/td>\n<\/tr>\n<tr>\n<td>ESP32_LILYGO<\/td>\n<td>\u2714\ufe0f<\/td>\n<td>\u2714\ufe0f<\/td>\n<td>\u2714\ufe0f<\/td>\n<td><\/td>\n<td>0 -> 3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0447\u0438\u043f\u0435 \u043c\u043e\u0434\u0443\u043b\u044f ESP32 DevKit v1 (\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435):  <\/p>\n<ul>\n<li>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u0447\u0438\u043f\u0435 ESP32-D0WDQ6 \u043f\u0435\u0440\u0432\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438;<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Wi-Fi, BT;<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u044c PSRAM \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.<\/li>\n<\/ul>\n<p>  \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438: ESP32_REV0 \u0438 ESP32_WROOM_32_BLE. \u0418\u0437 \u0434\u0432\u0443\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>ESP32_WROOM_32_BLE<\/strong>, \u0442. \u043a. \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Bluetooth BLE \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043b\u0438\u0448\u043d\u0435\u0439.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435 \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0442\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 <strong>ESP32_REV0<\/strong> \u0438 <strong>ESP32_PSRAM_REV0<\/strong>.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 <a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/\">Repository: nanoframework-images<\/a>. \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0435\u0440\u0438\u0438 <a href=\"https:\/\/docs.nanoframework.net\/content\/reference-targets\/esp32.html\">Espressif ESP32 Series<\/a>. \u041e\u0431\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a <a href=\"https:\/\/github.com\/nanoframework\/nf-interpreter#firmware-for-reference-boards\">GitHub nanoframework\/nf-interpreter<\/a>.<\/p>\n<h3>\u0428\u0430\u0433 5 \u2014 \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 ESP-WROOM-32<\/h3>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">nanoff --update --target ESP32_WROOM_32_BLE --serialport COM3 <\/code><\/pre>\n<p>  \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>&#8212;target<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, <strong>&#8212;serialport<\/strong> \u2014 \u043d\u043e\u043c\u0435\u0440 COM \u043f\u043e\u0440\u0442\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 COM3.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/n3\/la\/sh\/n3lashlkbujmfcwvk4v8xpby7ce.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/n3\/la\/sh\/n3lashlkbujmfcwvk4v8xpby7ce.png\" alt=\"nanoFramework firmware ESP-WROOM-32\" data-src=\"https:\/\/habrastorage.org\/webt\/n3\/la\/sh\/n3lashlkbujmfcwvk4v8xpby7ce.png\"\/><\/a><br \/>  <em>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 ESP-WROOM-32<\/em><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0451 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <strong><a href=\"https:\/\/cloudsmith.io\/~net-nanoframework\/repos\/nanoframework-images\/packages\/detail\/raw\/ESP32_WROOM_32_BLE\/1.7.0.2\/\">ESP32_WROOM_32_BLE<\/a><\/strong>, \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u043f\u0443\u0442\u0438: \u00abc:\\nanofw\u00bb. \u0412 \u0430\u0440\u0445\u0438\u0432\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/qk\/sp\/ma\/qkspmayar6hidizwcebbrdvu-40.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qk\/sp\/ma\/qkspmayar6hidizwcebbrdvu-40.png\" alt=\"nanoFramework firmware ESP-WROOM-32\" data-src=\"https:\/\/habrastorage.org\/webt\/qk\/sp\/ma\/qkspmayar6hidizwcebbrdvu-40.png\"\/><\/a><br \/>  <em>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0434\u043b\u044f ESP-WROOM-32<\/em><\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">nanoff --update --clrfile \"C:\\nanofw\\nanoCLR.bin\" --serialport COM3 <\/code><\/pre>\n<p>  \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>&#8212;clrfile<\/strong> \u2014 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 nanoCLR.bin, <strong>&#8212;serialport<\/strong> \u2014 \u043d\u043e\u043c\u0435\u0440 COM \u043f\u043e\u0440\u0442\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 COM3.<\/p>\n<p>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abBoot\u00bb. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 .NET \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c!<\/p>\n<h1>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h1>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c Visual Studio 2019 Community Edition \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043e\u043a\u043d\u043e <strong>Device Explorer<\/strong>. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <strong>Device Capabilities<\/strong>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/gq\/qo\/qd\/gqqoqdno8ihzsqluqy6jgvfhet4.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gq\/qo\/qd\/gqqoqdno8ihzsqluqy6jgvfhet4.png\" alt=\"nanoFramework ESP-WROOM-32\" data-src=\"https:\/\/habrastorage.org\/webt\/gq\/qo\/qd\/gqqoqdno8ihzsqluqy6jgvfhet4.png\"\/><\/a><br \/>  <em>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 ESP-WROOM-32<\/em><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Device Capabilities \u0434\u043b\u044f ESP-WROOM-32<\/b>                         <\/p>\n<div class=\"spoiler_text\">System Information<br \/>  HAL build info: nanoFramework running @ ESP32<br \/>  Target: ESP32_WROOM_32_BLE<br \/>  Platform: ESP32<\/p>\n<p>  Firmware build Info:<br \/>  Date: Aug 25 2021<br \/>  Type: MinSizeRel build with IDF v3.3.5<br \/>  CLR Version: 1.7.0.618<br \/>  Compiler: GNU ARM GCC v5.2.0<\/p>\n<p>  OEM Product codes (vendor, model, SKU): 0, 0, 0<\/p>\n<p>  Serial Numbers (module, system):<br \/>  00000000000000000000000000000000<br \/>  0000000000000000<\/p>\n<p>  Target capabilities:<br \/>  Has nanoBooter: NO<br \/>  IFU capable: NO<br \/>  Has proprietary bootloader: YES<\/p>\n<p>  AppDomains:<\/p>\n<p>  Assemblies:<\/p>\n<p>  Native Assemblies:<br \/>  mscorlib v100.5.0.12, checksum 0x132BDB6F<br \/>  nanoFramework.Runtime.Native v100.0.8.0, checksum 0x2307A8F3<br \/>  nanoFramework.Hardware.Esp32 v100.0.7.2, checksum 0x1B75B894<br \/>  nanoFramework.Hardware.Esp32.Rmt v100.0.3.0, checksum 0x9A53BB44<br \/>  nanoFramework.Hardware.Esp32.Ble v100.0.0.0, checksum 0x1B75B894<br \/>  nanoFramework.Devices.OneWire v100.0.3.4, checksum 0xA5C172BD<br \/>  nanoFramework.Networking.Sntp v100.0.4.4, checksum 0xE2D9BDED<br \/>  nanoFramework.ResourceManager v100.0.0.1, checksum 0xDCD7DF4D<br \/>  nanoFramework.System.Collections v100.0.0.1, checksum 0x5A31313D<br \/>  nanoFramework.System.Text v100.0.0.1, checksum 0x8E6EB73D<br \/>  nanoFramework.Runtime.Events v100.0.8.0, checksum 0x0EAB00C9<br \/>  EventSink v1.0.0.0, checksum 0xF32F4C3E<br \/>  System.IO.FileSystem v1.0.0.0, checksum 0x3112D24C<br \/>  System.Math v100.0.5.2, checksum 0xC9E0AB13<br \/>  System.Net v100.1.3.4, checksum 0xC74796C2<br \/>  Windows.Devices.Adc v100.1.3.3, checksum 0xCA03579A<br \/>  System.Device.Dac v100.0.0.6, checksum 0x02B3E860<br \/>  System.Device.Gpio v100.1.0.4, checksum 0xB6D0ACC1<br \/>  Windows.Devices.Gpio v100.1.2.2, checksum 0xC41539BE<br \/>  Windows.Devices.I2c v100.2.0.2, checksum 0x79EDBF71<br \/>  System.Device.I2c v100.0.0.1, checksum 0xFA806D33<br \/>  Windows.Devices.Pwm v100.1.3.3, checksum 0xBA2E2251<br \/>  Windows.Devices.SerialCommunication v100.1.1.2, checksum 0x34BAF06E<br \/>  System.IO.Ports v100.1.1.3, checksum 0x61B8380C<br \/>  Windows.Devices.Spi v100.1.4.2, checksum 0x360239F1<br \/>  System.Device.Spi v100.1.0.0, checksum 0x48031DC5<br \/>  Windows.Devices.Wifi v100.0.6.2, checksum 0xA94A849E<br \/>  Windows.Storage v100.0.2.0, checksum 0x954A4192<\/p>\n<p>  ++++++++++++++++++++++++++++++++<br \/>  ++ Memory Map ++<br \/>  ++++++++++++++++++++++++++++++++<br \/>  Type Start Size<br \/>  ++++++++++++++++++++++++++++++++<br \/>  RAM 0x3ffe436c 0x00016800<br \/>  FLASH 0x00000000 0x00400000<\/p>\n<p>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  ++ Flash Sector Map ++<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  Region Start Blocks Bytes\/Block Usage<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  0 0x00010000 1 0x180000 nanoCLR<br \/>  1 0x00190000 1 0x230000 Deployment<br \/>  2 0x003C0000 1 0x040000 Configuration<\/p>\n<p>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  ++ Storage Usage Map ++<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  Start Size (kB) Usage<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  0x003C0000 0x040000 (256kB) Configuration<br \/>  0x00010000 0x180000 (1536kB) nanoCLR<br \/>  0x00190000 0x230000 (2240kB) Deployment<\/p>\n<p>  Deployment Map<br \/>  Empty  <\/div>\n<\/p><\/div>\n<p>  \u0418\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a <strong>Native Assemblies<\/strong>. \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0431\u043e\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u043c\u0438 \u043d\u0430 C++, \u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0432 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0442\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <strong>Blank Application (nanoFramework)<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ur\/pa\/xl\/urpaxljhjguaiwcmmcn5simbpzm.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ur\/pa\/xl\/urpaxljhjguaiwcmmcn5simbpzm.png\" alt=\"nanoFramework Blank Application\" data-src=\"https:\/\/habrastorage.org\/webt\/ur\/pa\/xl\/urpaxljhjguaiwcmmcn5simbpzm.png\"\/><\/a><br \/>  <em>\u0428\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Blank Application (nanoFramework)<\/em><\/p>\n<p>  \u0428\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/qs\/ae\/7i\/qsae7izpufovv4v-vz52nnj9nwq.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qs\/ae\/7i\/qsae7izpufovv4v-vz52nnj9nwq.png\" alt=\"nanoFramework Blank Application\" data-src=\"https:\/\/habrastorage.org\/webt\/qs\/ae\/7i\/qsae7izpufovv4v-vz52nnj9nwq.png\"\/><\/a><br \/>  <em>\u0428\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 nanoFramework<\/em><\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0443<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/zn\/41\/ed\/zn41edznctvsnsl7roigu1bdada.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zn\/41\/ed\/zn41edznctvsnsl7roigu1bdada.png\" alt=\"debugging nanoFramework\" data-src=\"https:\/\/habrastorage.org\/webt\/zn\/41\/ed\/zn41edznctvsnsl7roigu1bdada.png\"\/><\/a><br \/>  <em>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 nanoFramework<\/em><\/p>\n<p>  \u0412 \u043e\u043a\u043d\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: \u00abHello from nanoFramework!\u00bb.<\/p>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e! \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<h1>\u041c\u0438\u0433\u0430\u0435\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c<\/h1>\n<p>  \u041d\u0430 \u043f\u043b\u0430\u0442\u0435 ESP32 DevKit v1 \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 GPIO2. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 Blink, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u043a\u0430\u043a \u043d\u0430 Arduino. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/tree\/master\/nanoframework-esp32-blink\">nanoframework-esp32-blink<\/a>, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c Nuget-\u043f\u0430\u043a\u0435\u0442: <a href=\"https:\/\/docs.nanoframework.net\/api\/System.Device.Gpio.html\">nanoFramework.System.Device.Gpio<\/a>. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/nanoframework\/Samples\/tree\/main\/samples\/Blinky\">GitHub nanoframework\/Samples \u2014 Blinky<\/a>.<\/p>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/blob\/master\/nanoframework-esp32-blink\/Program.cs\">Program.cs<\/a><\/strong>.  <\/p>\n<pre><code class=\"cs\">public class Program {   private static GpioController s_GpioController;   public static void Main()     {       s_GpioController = new GpioController();       \/\/ ESP32 DevKit: 4 is a valid GPIO pin in, some boards        \/\/ like Xiuxin ESP32 may require GPIO Pin 2 instead.       GpioPin led = s_GpioController.OpenPin(2,PinMode.Output);       led.Write(PinValue.Low);       while (true)       {         led.Write(PinValue.High);         Thread.Sleep(1000);         led.Write(PinValue.Low);         Thread.Sleep(1000);       }     } } <\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/strong>  <\/p>\n<ul>\n<li><strong>s_GpioController = new GpioController()<\/strong> \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a GPIO;<\/li>\n<li><strong>GpioPin led = s_GpioController.OpenPin(2,PinMode.Output)<\/strong> \u2014 \u043c\u0435\u0442\u043e\u0434 OpenPin \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 GPIO2 \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430;<\/li>\n<li><strong>led.Write(PinValue.Low)<\/strong> \u2014 \u043f\u043e\u0434\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u00ab0\u00bb \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442;<\/li>\n<li><strong>led.Write(PinValue.High)<\/strong> \u2014 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u00ab1\u00bb, \u043f\u043e\u0434\u0430\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0432 3.3V.<\/li>\n<\/ul>\n<p>  <strong>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430:<\/strong>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6191a5686a73daf6662a1c1b\" data-style=\"\" id=\"6191a5686a73daf6662a1c1b\" width=\"\"><\/div>\n<\/div>\n<p>  \u041b\u044e\u0431\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c \u0438 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443.<\/p>\n<h1>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2014 \u043a\u043d\u043e\u043f\u043a\u0430<\/h1>\n<p>  \u041a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443: \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438. \u041f\u0440\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0433\u0430\u0441\u043d\u0435\u0442. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 GPIO2. \u041a\u043d\u043e\u043f\u043a\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 <strong>GPIO25<\/strong>, \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u043a\u0430\u043a &#171;<strong>D25<\/strong>&#171;. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442<a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/tree\/master\/nanoframework-esp32-button\"> nanoframework-esp32-button<\/a>, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c Nuget-\u043f\u0430\u043a\u0435\u0442: <a href=\"https:\/\/docs.nanoframework.net\/api\/System.Device.Gpio.html\">nanoFramework.System.Device.Gpio<\/a>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/j1\/xb\/pv\/j1xbpvm9pkiqb_w8xo9le7vxiqe.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/j1\/xb\/pv\/j1xbpvm9pkiqb_w8xo9le7vxiqe.jpeg\" alt=\"nanoFramework ESP32 STM32\" data-src=\"https:\/\/habrastorage.org\/webt\/j1\/xb\/pv\/j1xbpvm9pkiqb_w8xo9le7vxiqe.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ESP32 DevKit v1 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/em><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 D25 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ESP32 DevKit v1<\/b>                         <\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/habrastorage.org\/webt\/zr\/l_\/ik\/zrl_ikvyb62waxmmak-czx81p4s.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zr\/l_\/ik\/zrl_ikvyb62waxmmak-czx81p4s.png\" alt=\"ESP32 DevKit button\" data-src=\"https:\/\/habrastorage.org\/webt\/zr\/l_\/ik\/zrl_ikvyb62waxmmak-czx81p4s.png\"\/><\/a>  <\/div>\n<\/p><\/div>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/blob\/master\/nanoframework-esp32-button\/Program.cs\">Program.cs<\/a><\/strong>.  <\/p>\n<pre><code class=\"cs\">using System; using System.Diagnostics; using System.Threading; using System.Device.Gpio;  namespace nanoframework_esp32_button {      public class Program   {     \/\/Board: ESP32 DevKit     static GpioController s_GpioController;     static int s_BluePinNumber=2;         static int s_UserButtonPinNumber=25;     public static void Main()     {       s_GpioController = new GpioController();       \/\/setup blue LED       s_GpioController.OpenPin(s_BluePinNumber, PinMode.Output);       s_GpioController.Write(s_BluePinNumber, PinValue.Low);       \/\/setup user button             s_GpioController.OpenPin(s_UserButtonPinNumber, PinMode.Input);       \/\/s_GpioController.OpenPin(s_UserButtonPinNumber, PinMode.InputPullUp);       \/\/Event registration       s_GpioController.RegisterCallbackForPinValueChangedEvent(         s_UserButtonPinNumber,         PinEventTypes.Falling | PinEventTypes.Rising,         UserButton_ValueChanged);             \/\/Infinite       Thread.Sleep(Timeout.Infinite);           }      private static void UserButton_ValueChanged(object sender, PinValueChangedEventArgs e)     {       \/\/ read Gpio pin value from event       Debug.WriteLine(\"USER BUTTON (event) : \" + e.ChangeType.ToString());       Debug.WriteLine(\"USER BUTTON (event) : \" + ((((int)e.ChangeType) == 1) ? \"Rising\" : \"Falling\"));       \/\/if (e.ChangeType != PinEventTypes.Rising) \/\/for DFRobot       if (e.ChangeType == PinEventTypes.Rising)       {         s_GpioController.Write(s_BluePinNumber, PinValue.High);       }       else       {         s_GpioController.Write(s_BluePinNumber, PinValue.Low);       }     }   } }<\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/strong>  <\/p>\n<ul>\n<li><strong>s_GpioController.OpenPin(s_UserButtonPinNumber, PinMode.Input)<\/strong> \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0432\u0432\u043e\u0434 (\u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438). \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043d\u0430\u0432\u043e\u0434\u043e\u043a, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0443 \u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044e <strong>PinMode.InputPullUp <\/strong>(\u043d\u0435 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0432\u0432\u043e\u0434\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442);<\/li>\n<li><strong>s_GpioController.RegisterCallbackForPinValueChangedEvent<\/strong> \u2014 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Callback \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430. Callback \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 GPIO. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 &#8212;\u00a0 <strong>s_UserButtonPinNumber<\/strong>, \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u2014 Falling (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u00ab1\u00bb \u043d\u0430 \u00ab0\u00bb) \u0438\u043b\u0438 Rising (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u00ab0\u00bb \u043d\u0430 \u00ab1\u00bb), \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 <strong>UserButton_ValueChanged<\/strong>.<\/li>\n<\/ul>\n<p>  <strong>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430:<\/strong>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6191a568edd610f626b80d35\" data-style=\"\" id=\"6191a568edd610f626b80d35\" width=\"\"><\/div>\n<\/div>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 nanoFramework \u043f\u043e\u043d\u044f\u0442\u0435\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 <strong>ST Nucleo64 F411RE<\/strong> \u0438 \u043f\u0440\u043e\u0448\u044c\u0435\u043c \u0435\u0433\u043e \u0441\u0440\u0435\u0434\u043e\u0439 nanoFramework, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0443\u044e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0438 \u043a\u043d\u043e\u043f\u043a\u0443.<\/p>\n<h1>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0440\u0435\u0434\u044b nanoFramework \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ST Nucleo64 F411RE<\/h1>\n<p>  <\/p>\n<h3>\u0428\u0430\u0433 1 \u2014 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 ST Nucleo64 F411RE<\/h3>\n<p>  \u0414\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\/\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 ST-Link, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 <a href=\"https:\/\/www.st.com\/en\/development-tools\/stsw-link009.html\">ST-LINK USB driver signed for Windows 7-10<\/a> \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <strong>ST-Link Debug<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/dr\/f1\/1_\/drf11_szuhai4nukynvvr22kkxm.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dr\/f1\/1_\/drf11_szuhai4nukynvvr22kkxm.png\" alt=\"Device Manager STM32\" data-src=\"https:\/\/habrastorage.org\/webt\/dr\/f1\/1_\/drf11_szuhai4nukynvvr22kkxm.png\"\/><\/a><br \/>  <em>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/em><\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 ST-Link:  <\/p>\n<pre><code class=\"bash\">nanoff --listjtag <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/7z\/9k\/7g\/7z9k7gy1w08einq2fldbra1wajg.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/7z\/9k\/7g\/7z9k7gy1w08einq2fldbra1wajg.png\" alt=\"Device Manager STM32 ST-Link\" data-src=\"https:\/\/habrastorage.org\/webt\/7z\/9k\/7g\/7z9k7gy1w08einq2fldbra1wajg.png\"\/><\/a><br \/>  <em>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 ST-Link<\/em><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443.<\/p>\n<h3>\u0428\u0430\u0433 2 \u2014 \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 ST-Link<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c nanoFramework \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 ST-Link Debug.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/aa\/wn\/gn\/aawngnpqqgg0ub72tybt9ap7pyw.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/aa\/wn\/gn\/aawngnpqqgg0ub72tybt9ap7pyw.png\" alt=\"update ST-Link Debug\" data-src=\"https:\/\/habrastorage.org\/webt\/aa\/wn\/gn\/aawngnpqqgg0ub72tybt9ap7pyw.png\"\/><\/a><br \/>  <em>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 ST-Link Debug<\/em><\/p>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c<a href=\"https:\/\/www.st.com\/en\/development-tools\/stsw-link004.html\"> STM32 ST-LINK utility<\/a>. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u043c\u0435\u043d\u044e <strong>ST-LINK -> Firmware update<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ge\/bi\/1b\/gebi1bsj7sc08h3uhdm-m1bslv4.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ge\/bi\/1b\/gebi1bsj7sc08h3uhdm-m1bslv4.png\" alt=\"update ST-Link Debug\" data-src=\"https:\/\/habrastorage.org\/webt\/ge\/bi\/1b\/gebi1bsj7sc08h3uhdm-m1bslv4.png\"\/><\/a><br \/>  <em>STM32 ST-LINK utility<\/em><\/p>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Device Connect<\/strong>, \u0437\u0430\u0442\u0435\u043c <strong>Yes >>>><\/strong><\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/mf\/jp\/40\/mfjp40e8b0bwpep0dxjbzdhz56e.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/mf\/jp\/40\/mfjp40e8b0bwpep0dxjbzdhz56e.png\" alt=\"update ST-Link Debug\" data-src=\"https:\/\/habrastorage.org\/webt\/mf\/jp\/40\/mfjp40e8b0bwpep0dxjbzdhz56e.png\"\/><\/a><br \/>  <em>STM32 ST-LINK utility<\/em><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <strong>Update succesfull<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/q2\/o2\/dm\/q2o2dmythzl3xkrsj_0zzilb5-0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/q2\/o2\/dm\/q2o2dmythzl3xkrsj_0zzilb5-0.png\" alt=\"update ST-Link Debug\" data-src=\"https:\/\/habrastorage.org\/webt\/q2\/o2\/dm\/q2o2dmythzl3xkrsj_0zzilb5-0.png\"\/><\/a><br \/>  <em>STM32 ST-LINK utility<\/em><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <a href=\"https:\/\/www.youtube.com\/watch?v=Tt-eyglKpIs\">ST Link Update \u2014 Web learning<\/a>.<\/p>\n<h3>\u0428\u0430\u0433 3 \u2014 \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 ST Nucleo64 F411RE<\/h3>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">nanoff --update --target ST_NUCLEO64_F411RE_NF --jtag <\/code><\/pre>\n<p>  \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>&#8212;target<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 <a href=\"https:\/\/github.com\/nanoframework\/nf-Community-Targets\">ST_NUCLEO64_F411RE_NF<\/a>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/vn\/-l\/qu\/vn-lqunxc3yhyn-w37wbjx2wvec.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/vn\/-l\/qu\/vn-lqunxc3yhyn-w37wbjx2wvec.png\" alt=\"nanoFramework ST Nucleo64 F411RE\" data-src=\"https:\/\/habrastorage.org\/webt\/vn\/-l\/qu\/vn-lqunxc3yhyn-w37wbjx2wvec.png\"\/><\/a><br \/>  <em>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 ST Nucleo64 F411RE<\/em><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c Visual Studio Community \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <strong>Device Capabilities<\/strong>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/my\/ub\/5s\/myub5s7yl4vjii1d8xgse1esfsy.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/my\/ub\/5s\/myub5s7yl4vjii1d8xgse1esfsy.png\" alt=\"nanoFramework ST Nucleo64 F411RE\" data-src=\"https:\/\/habrastorage.org\/webt\/my\/ub\/5s\/myub5s7yl4vjii1d8xgse1esfsy.png\"\/><\/a><br \/>  <em>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 ST Nucleo64 F411RE<\/em><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Device Capabilities \u0434\u043b\u044f ST Nucleo64 F411RE<\/b>                         <\/p>\n<div class=\"spoiler_text\">System Information<br \/>  HAL build info: nanoCLR running @ ST_NUCLEO64_F411RE_NF<br \/>  Target: ST_NUCLEO64_F411RE_NF<br \/>  Platform: STM32F4<\/p>\n<p>  Firmware build Info:<br \/>  Date: Oct 22 2021<br \/>  Type: MinSizeRel build with ChibiOS v21.6.0.6<br \/>  CLR Version: 1.7.0.96<br \/>  Compiler: GNU ARM GCC v9.3.1<\/p>\n<p>  OEM Product codes (vendor, model, SKU): 0, 0, 0<\/p>\n<p>  Serial Numbers (module, system):<br \/>  00000000000000000000000000000000<br \/>  0000000000000000<\/p>\n<p>  Target capabilities:<br \/>  Has nanoBooter: YES<br \/>  nanoBooter: v21845.21845.21845.21845<br \/>  IFU capable: NO<br \/>  Has proprietary bootloader: NO<\/p>\n<p>  AppDomains:<\/p>\n<p>  Assemblies:<br \/>  nanoframework_stm32_button, 1.0.0.0<br \/>  mscorlib, 1.10.5.4<br \/>  nanoFramework.Runtime.Events, 1.9.1.3<br \/>  Windows.Devices.Gpio, 1.5.2.3<\/p>\n<p>  Native Assemblies:<br \/>  mscorlib v100.5.0.12, checksum 0x132BDB6F<br \/>  nanoFramework.Runtime.Native v100.0.8.0, checksum 0x2307A8F3<br \/>  nanoFramework.Hardware.Stm32 v100.0.4.4, checksum 0x0874B6FE<br \/>  nanoFramework.ResourceManager v100.0.0.1, checksum 0xDCD7DF4D<br \/>  nanoFramework.System.Collections v100.0.0.1, checksum 0x5A31313D<br \/>  nanoFramework.System.Text v100.0.0.1, checksum 0x8E6EB73D<br \/>  nanoFramework.Runtime.Events v100.0.8.0, checksum 0x0EAB00C9<br \/>  EventSink v1.0.0.0, checksum 0xF32F4C3E<br \/>  System.Math v100.0.5.2, checksum 0xC9E0AB13<br \/>  Windows.Devices.Adc v100.1.3.3, checksum 0xCA03579A<br \/>  Windows.Devices.Gpio v100.1.2.2, checksum 0xC41539BE<br \/>  Windows.Devices.I2c v100.2.0.2, checksum 0x79EDBF71<br \/>  System.Device.I2c v100.0.0.1, checksum 0xFA806D33<br \/>  Windows.Devices.SerialCommunication v100.1.1.2, checksum 0x34BAF06E<br \/>  System.IO.Ports v100.1.2.0, checksum 0x564F2452<br \/>  Windows.Devices.Spi v100.1.4.2, checksum 0x360239F1<br \/>  System.Device.Spi v100.1.0.0, checksum 0x48031DC5<\/p>\n<p>  ++++++++++++++++++++++++++++++++<br \/>  ++ Memory Map ++<br \/>  ++++++++++++++++++++++++++++++++<br \/>  Type Start Size<br \/>  ++++++++++++++++++++++++++++++++<br \/>  RAM 0x20000000 0x00020000<br \/>  FLASH 0x08000000 0x00080000<\/p>\n<p>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  ++ Flash Sector Map ++<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  Region Start Blocks Bytes\/Block Usage<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  0 0x08000000 1 0x004000 nanoBooter<br \/>  1 0x08004000 3 0x004000 nanoCLR<br \/>  2 0x08010000 1 0x010000 nanoCLR<br \/>  3 0x08020000 1 0x020000 nanoCLR<br \/>  4 0x08040000 2 0x020000 Deployment<\/p>\n<p>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  ++ Storage Usage Map ++<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  Start Size (kB) Usage<br \/>  +++++++++++++++++++++++++++++++++++++++++++++++++++<br \/>  0x08000000 0x004000 (16kB) nanoBooter<br \/>  0x08004000 0x03C000 (240kB) nanoCLR<br \/>  0x08040000 0x040000 (256kB) Deployment<\/p>\n<p>  Deployment Map<br \/>  Empty  <\/div>\n<\/p><\/div>\n<p>  \u0418\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e nanoCLR \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/ChibiOS\/RT\">ChibiOS<\/a> v21.6.<\/p>\n<h1>\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043d\u0430 ST Nucleo64 F411RE<\/h1>\n<p>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 ESP32, \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0449\u0451 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u043c\u0435\u0442\u043a\u043e\u0439 <strong>LD2 (Green LED)<\/strong>, \u043a\u043d\u043e\u043f\u043a\u0430 \u2014 <strong>B1 (USER)<\/strong>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043b\u044f ESP32, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ff\/p7\/hj\/ffp7hjilsehhpq7rxun6e-5flj4.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ff\/p7\/hj\/ffp7hjilsehhpq7rxun6e-5flj4.jpeg\" alt=\"ST Nucleo64 F411RE led button\" data-src=\"https:\/\/habrastorage.org\/webt\/ff\/p7\/hj\/ffp7hjilsehhpq7rxun6e-5flj4.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 LD2 (Green LED) \u0438 \u043a\u043d\u043e\u043f\u043a\u0430 B1 USER \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 ST Nucleo64 F411RE<\/em><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/tree\/master\/nanoframework-stm32-button\">nanoframework-stm32-button<\/a>, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c Nuget-\u043f\u0430\u043a\u0435\u0442: <a href=\"https:\/\/github.com\/nanoframework\/Windows.Devices.Gpio\">nanoFramework.Windows.Devices.Gpio<\/a>. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043f\u0430\u043a\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 nanoFramework.<strong>Windows<\/strong>.*. \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, API \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <strong>Windows<\/strong>.*, \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0441 .NET \u043d\u0430 Windows IoT Core, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Raspberry Pi. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 <a href=\"https:\/\/docs.microsoft.com\/en-us\/samples\/microsoft\/windows-iotcore-samples\/push-button\/\">Push button \u2014 Raspberry Pi, <\/a>\u0441 \u0441\u0430\u0439\u0442\u0430 MS. \u0418\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 (c Raspberry Pi \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442).<\/p>\n<p>  \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 <strong>LD2 (Green LED)<\/strong> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 Arduino <strong>D13<\/strong>, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 STM32 I\/O <strong>PA5 (pin 21)<\/strong>. \u041a\u043e\u043d\u0442\u0430\u043a\u0442 \u043a\u043d\u043e\u043f\u043a\u0438\u00a0 <strong>B1 USER<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 STM32 I\/O <strong>PC13 (pin 2)<\/strong>. \u0412 STM32 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e. \u041a\u043e\u043d\u0442\u0430\u043a\u0442<strong> PA5<\/strong>, \u0433\u0434\u0435 <strong>P<\/strong> \u2014 port, <strong>A<\/strong>-\u043b\u0438\u0442\u0435\u0440\u0430 \u043f\u043e\u0440\u0442\u0430, <strong>5<\/strong> \u2014 \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0439 \u2014 <strong>int PinNumber(char port, byte pin)<\/strong>. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 <a href=\"https:\/\/github.com\/nanoframework\/nf-Community-Targets\/tree\/main\/ChibiOS\/ST_NUCLEO64_F411RE_NF\">GitHub nanoframework\/nf-Community-Targets\/ChibiOS\/ST_NUCLEO64_F411RE_NF\/<\/a>.<\/p>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/blob\/master\/nanoframework-stm32-button\/Program.cs\">Program.cs<\/a><\/strong>.  <\/p>\n<pre><code class=\"cs\">using System; using System.Diagnostics; using System.Threading; using Windows.Devices.Gpio;  namespace nanoframework_stm32_button {   public class Program   {     private static int LED_PIN;     private static int BUTTON_PIN;     private static GpioPin ledPin;     private static GpioPin buttonPin;         private static GpioPinValue ledPinValue = GpioPinValue.High;     public static void Main()     {             \/\/ ST Nucleo64 F411RE: PA5 is LED_GREEN       LED_PIN = PinNumber('A', 5);       \/\/ ST Nucleo64 F411RE: PC13 is B1_USER       BUTTON_PIN = PinNumber('C', 13);       \/\/Next as .NET for Raspberry Pi, Windows IoT Core       \/\/Controller       var gpio = new GpioController();       \/\/Init       ledPin = gpio.OpenPin(LED_PIN);       ledPin.SetDriveMode(GpioPinDriveMode.Output);       buttonPin = gpio.OpenPin(BUTTON_PIN);       buttonPin.SetDriveMode(GpioPinDriveMode.Input);       \/\/ Initialize LED to the OFF state by first writing a HIGH value       \/\/ We write HIGH because the LED is wired in a active LOW configuration       ledPin.Write(ledPinValue);             \/\/ Check if input pull-up resistors are supported       if (buttonPin.IsDriveModeSupported(GpioPinDriveMode.InputPullUp))         buttonPin.SetDriveMode(GpioPinDriveMode.InputPullUp);       else         buttonPin.SetDriveMode(GpioPinDriveMode.Input);       \/\/ Set a debounce timeout to filter out switch bounce noise from a button press       buttonPin.DebounceTimeout = TimeSpan.FromMilliseconds(50);       \/\/ Register for the ValueChanged event so our buttonPin_ValueChanged        \/\/ function is called when the button is pressed       buttonPin.ValueChanged += buttonPin_ValueChanged;       \/\/Infinite       Thread.Sleep(Timeout.Infinite);     }      static void buttonPin_ValueChanged(object sender, GpioPinValueChangedEventArgs e)     {       Debug.WriteLine(\"USER BUTTON (event) : \" + ((e.Edge ==GpioPinEdge.RisingEdge)? \"RisingEdge\" : \"FallingEdge\"));             \/\/ toggle the state of the LED every time the button is pressed       if (e.Edge == GpioPinEdge.FallingEdge)       {         ledPinValue = (ledPinValue == GpioPinValue.Low) ?           GpioPinValue.High : GpioPinValue.Low;         ledPin.Write(ledPinValue);       }     }            static int PinNumber(char port, byte pin)     {       if (port &lt; 'A' || port > 'J')         throw new ArgumentException();       return ((port - 'A') * 16) + pin;     }   } } <\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/strong>  <\/p>\n<ul>\n<li><strong>int PinNumber(char port, byte pin)<\/strong> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0432 \u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0439;<\/li>\n<li><strong>gpio.OpenPin(LED_PIN)<\/strong> \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0434\u043b\u044f \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f;<\/li>\n<li><strong>ledPin.SetDriveMode(GpioPinDriveMode.Output)<\/strong> \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u2014 \u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434 (GpioPinDriveMode.Input\/GpioPinDriveMode.Output);<\/li>\n<li><strong>ledPin.Write(ledPinValue)<\/strong> \u2014 \u043f\u043e\u0434\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u00ab0\u00bbGpioPinValue.Low \u0438\u043b\u0438 \u00ab1\u00bb(GpioPinValue.High) \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442;<\/li>\n<li><strong>buttonPin.IsDriveModeSupported(GpioPinDriveMode.InputPullUp)<\/strong> \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430 (pull-up);<\/li>\n<li><strong>buttonPin.SetDriveMode(GpioPinDriveMode.InputPullUp)<\/strong> \u2014 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u043d\u0430 \u0432\u0432\u043e\u0434 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 pull-up;<\/li>\n<li><strong>buttonPin.DebounceTimeout<\/strong> \u2014 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432);<\/li>\n<li><strong>buttonPin.ValueChanged<\/strong> \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f;<\/li>\n<li><strong>void buttonPin_ValueChanged<\/strong> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e <strong>e.Edge<\/strong> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 GpioPinEdge.RisingEdge(\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u00ab0\u00bb \u043d\u0430 \u00ab1\u00bb), \u0438\u043b\u0438 GpioPinEdge.FallingEdge (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u00ab1\u00bb \u043d\u0430 \u00ab0\u00bb).<\/li>\n<\/ul>\n<p>  <strong>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430:<\/strong>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6191a5684615593b75e246f9\" data-style=\"\" id=\"6191a5684615593b75e246f9\" width=\"\"><\/div>\n<\/div>\n<p>  <\/p>\n<h1>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280 \u043a \u0448\u0438\u043d\u0435 I2C<\/h1>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c BME280 \u0444\u0438\u0440\u043c\u044b Bosch Sensortec \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u043d\u043e\u0433\u043e \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0441\u0435\u0440\u0438\u0438 (BMP085 \u0438 BMP180), \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043b\u0443\u0447\u0448\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u043c\u0435\u043d\u044c\u0448\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b. \u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BMP280 \u2013 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0433\u0438\u0433\u0440\u043e\u043c\u0435\u0442\u0440\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u043c\u0435\u0442\u0435\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044e.<\/p>\n<p>  \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432:  <\/p>\n<ul>\n<li>VCC \u2014 \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f 3.3 \u0412 \u0438\u043b\u0438 5 \u0412;<\/li>\n<li>GND \u2014\u00a0 Ground;<\/li>\n<li>SCL \u2014 \u043b\u0438\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Serial CLock);<\/li>\n<li>SDA \u2014 \u043b\u0438\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (Serial Data).<\/li>\n<\/ul>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0434\u0432\u0443\u0445\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 I2C, \u0430\u0434\u0440\u0435\u0441 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <strong>0x76<\/strong>.\u00a0\u0414\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u0443\u0436\u0435 \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/569748\/\">\u041c\u0435\u0442\u0435\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043d\u0430 Banana Pi M64 (Linux, C#, Docker, RabbitMQ, AvaloniaUI)<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u0438 \u0448\u0438\u043d\u043e\u0439 I2C \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.\u00a0\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0434\u0430\u0442\u0447\u0438\u043a BME280 \u043a \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 ESP32 DevKit v1.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/wh\/p3\/jv\/whp3jvi_ofkwogcelmfepfaofji.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/wh\/p3\/jv\/whp3jvi_ofkwogcelmfepfaofji.jpeg\" alt=\"ESP32 DevKit BME280\" data-src=\"https:\/\/habrastorage.org\/webt\/wh\/p3\/jv\/whp3jvi_ofkwogcelmfepfaofji.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ESP32 DevKit v1 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c BME280<\/em><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f BME280 \u043a \u0448\u0438\u043d\u0435 I2C \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b ESP32 DevKit v1<\/b>                         <\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/habrastorage.org\/webt\/87\/o4\/lh\/87o4lhhk98gdbonj--arghpb4uc.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/87\/o4\/lh\/87o4lhhk98gdbonj--arghpb4uc.png\" alt=\"ESP32 DevKit BME280\" data-src=\"https:\/\/habrastorage.org\/webt\/87\/o4\/lh\/87o4lhhk98gdbonj--arghpb4uc.png\"\/><\/a>  <\/div>\n<\/p><\/div>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/tree\/master\/nanoframework-esp32-bme280\">nanoframework-esp32-bme280<\/a>, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0448\u0438\u043d\u043e\u0439 I2C Nuget-\u043f\u0430\u043a\u0435\u0442: <a href=\"https:\/\/github.com\/nanoframework\/System.Device.I2c\">nanoFramework.System.Device.I2c<\/a>. \u0414\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BME280 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0441 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 nanoFramework.IoT.Device \u2014 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\/blob\/develop\/devices\/Bmxx80\/README.md\">BMxx80 Device Family<\/a>. \u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432 \u043f\u0430\u043f\u043a\u0443 \/libs\/. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 nanoFramework \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/angularsen\/UnitsNet\">UnitsNet<\/a>.<\/p>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/blob\/master\/nanoframework-esp32-bme280\/nanoframework-esp32-bme280\/Program.cs\">Program.cs<\/a><\/strong>. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280.  <\/p>\n<pre><code class=\"cs\">\/\/ when connecting to an ESP32 device, need to configure the I2C GPIOs \/\/ used for the bus Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA); Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK); \/\/ bus id on the MCU const int busId = 1; I2cConnectionSettings i2cSettings = new(busId, Bme280.SecondaryI2cAddress);    using I2cDevice i2cDevice = I2cDevice.Create(i2cSettings); using Bme280 bme80 = new Bme280(i2cDevice) {   \/\/ set higher sampling   TemperatureSampling = Sampling.LowPower,   PressureSampling = Sampling.UltraHighResolution,   HumiditySampling = Sampling.Standard, };  \/\/ set this to the current sea level pressure in the area for correct altitude readings Pressure defaultSeaLevelPressure = WeatherHelper.MeanSeaLevel; <\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/strong>  <\/p>\n<ul>\n<li><strong>Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA)<\/strong> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.Hardware.Esp32\">nanoFramework.Hardware.Esp32<\/a>. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 nanoFramework \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 I2C, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435\u00a0 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0448\u0438\u043d\u044b I2C \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u00ab1\u00bb, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 DATA \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 GPIO21;<\/li>\n<li><strong>busId = 1<\/strong> \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0448\u0438\u043d\u044b I2C \u2014 1;<\/li>\n<li><strong>new I2cConnectionSettings(busId, Bme280.SecondaryI2cAddress)<\/strong> \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 I2C, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0448\u0438\u043d\u044b I2C \u0438 \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430(0x76);<\/li>\n<li><strong>I2cDevice.Create(i2cSettings)<\/strong> \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 I2C \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430;<\/li>\n<li><strong>new Bme280(i2cDevice)<\/strong> \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280;<\/li>\n<li><strong>TemperatureSampling, PressureSampling, HumiditySampling<\/strong> \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d;<\/li>\n<li><strong>WeatherHelper.MeanSeaLevel<\/strong> \u2014 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u044b\u0441\u043e\u0442\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430 \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u043c\u043e\u0440\u044f.<\/li>\n<\/ul>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/nanoFramework-samples\/blob\/master\/nanoframework-esp32-bme280\/nanoframework-esp32-bme280\/Program.cs\">Program.cs<\/a><\/strong>. \u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280.  <\/p>\n<pre><code class=\"cs\">\/\/ Perform a synchronous measurement var readResult = bme80.Read();  \/\/ Note that if you already have the pressure value and the temperature, you could also calculate altitude by using \/\/ var altValue = WeatherHelper.CalculateAltitude(preValue, defaultSeaLevelPressure, tempValue) which would be more performant. bme80.TryReadAltitude(defaultSeaLevelPressure, out var altValue);  Debug.WriteLine($\"Temperature: {readResult.Temperature.DegreesCelsius}\\u00B0C\"); Debug.WriteLine($\"Pressure: {readResult.Pressure.Hectopascals}hPa\"); Debug.WriteLine($\"Altitude: {altValue.Meters}m\"); Debug.WriteLine($\"Relative humidity: {readResult.Humidity.Percent}%\"); <\/code><\/pre>\n<p>  <strong>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/strong>  <\/p>\n<ul>\n<li><strong>bme80.Read()<\/strong> \u2014 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0434\u0430\u0442\u0447\u0438\u043a\u0430;<\/li>\n<li><strong>bme80.TryReadAltitude<\/strong> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u0442\u044b \u043d\u0430\u0434 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043c\u043e\u0440\u044f;<\/li>\n<li><strong>readResult.Temperature, readResult.Pressure, readResult.Humidity<\/strong> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u0438.<\/li>\n<\/ul>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/rp\/ds\/_y\/rpds_ytmdtj6zdjsdc5z4tc66te.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rp\/ds\/_y\/rpds_ytmdtj6zdjsdc5z4tc66te.png\" alt=\"nanoFramework BME280\" data-src=\"https:\/\/habrastorage.org\/webt\/rp\/ds\/_y\/rpds_ytmdtj6zdjsdc5z4tc66te.png\"\/><\/a><br \/>  <em>\u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280 \u043d\u0430 nanoFramework<\/em><\/p>\n<p>  \u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c OLED-\u0434\u0438\u0441\u043f\u043b\u0435\u0439 <a href=\"https:\/\/robotchip.ru\/obzor-oled-displey-na-ssd1306\/\">SSD1306<\/a> \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 128\u044564 \u0442\u043e\u0447\u0435\u043a. \u041d\u043e \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0448\u0438\u043d\u043e\u0439 I2C \u0438 \u0448\u0438\u043d\u043e\u0439 I2C\/SPI. \u0418\u043c\u0435\u043d\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u044b\u043b \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0448\u0438\u043d\u0435 I2C \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 I2C\/SPI \u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0411\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043b\u044f Arduino, \u043d\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 nanoFramework \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 SSD1306 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0448\u0438\u043d\u043e\u0439 I2C (\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u2014 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\/blob\/develop\/devices\/Ssd13xx\/README.md\">SSD13xx &amp; SSH1106 OLED display family<\/a>). \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430 BME280 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\/blob\/develop\/devices\/Bmp180\/README.md\">BMP180 \u2014 barometer, altitude and temperature sensor<\/a>.<\/p>\n<h1>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 .NET IoT \u0434\u043b\u044f Linux \u0438 nanoFramework<\/h1>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f nanoFramework \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b \u043f\u0440\u043e\u0435\u043a\u0442 .NET Micro Framework, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 Microsoft \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f GHI Electronics \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u0438\u0446\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e .NET Micro Framework \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432\u0448\u0430\u044f \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 nanoFramework \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0430 \u0438\u043d\u0430\u0447\u0435, \u043e\u043d\u0438 \u0432\u0437\u044f\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u043e\u0442\u043a\u0438\u043d\u0443\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c API \u0441 \u00ab\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u00bb \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c .NET IoT. \u042d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0440\u0435\u0448\u0438\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0434\u0430\u0447:  <\/p>\n<ul>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 .NET IoT \u043c\u043e\u0433\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f nanoFramework \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044f;<\/li>\n<li>\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043a \u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0437 .NET IoT \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 nanoFramework;<\/li>\n<li>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u0435\u0442 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e. \u0412 \u043e\u0434\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 .NET \u0441 \u043e\u0431\u0449\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438.<\/li>\n<\/ul>\n<p>  \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u0430\u043b\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, 100% \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0440\u0430\u0441\u0442\u0443\u0442, \u0438 \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0438.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 .NET IoT \u0431\u044b\u043b \u0432\u0437\u044f\u043b \u0434\u0440\u0430\u0439\u0432\u0435\u0440\/\u043a\u043b\u0430\u0441\u0441 \u043a\u043d\u043e\u043f\u043a\u0438 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\/blob\/develop\/devices\/Button\/README.md\">Button<\/a> (nanoFramework.IoT.Device), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0438 \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u043a\u0430, \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u043a\u043d\u043e\u043f\u043a\u0438. \u041a\u043b\u0430\u0441\u0441\u044b \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 Button \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/devdotnetorg\/dotnet-iot-samples\/tree\/master\/dotnet-iot-button-from-nanoframework\">dotnet-iot-button-from-nanoframework<\/a> \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0443\u0442\u0438 <a href=\"https:\/\/github.com\/devdotnetorg\/dotnet-iot-samples\/tree\/master\/dotnet-iot-button-from-nanoframework\/libs\/Button\">\/libs\/Button\/<\/a>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/gq\/hx\/vz\/gqhxvzf52hgvsxn57lwjkkbxkt8.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/gq\/hx\/vz\/gqhxvzf52hgvsxn57lwjkkbxkt8.jpeg\" alt=\"dotnet iot button\" data-src=\"https:\/\/habrastorage.org\/webt\/gq\/hx\/vz\/gqhxvzf52hgvsxn57lwjkkbxkt8.jpeg\" data-blurred=\"true\"\/><\/a><br \/>  <em>\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 dotnet-iot-button-from-nanoframework<\/em><\/p>\n<p>  \u041a\u043d\u043e\u043f\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 GPIO38 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 <a href=\"https:\/\/devdotnet.org\/post\/otladochnaya-plata-banana-pi-bpi-m64\/\">Banana Pi BPI-M64<\/a>, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/vdsina\/blog\/555598\/\">\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 GPIO \u0438\u0437 C# .NET 5 \u0432 Linux \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 Banana Pi M64 (ARM64) \u0438 Cubietruck (ARM32)<\/a>. \u0412 Program.cs \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<p>  <strong>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/devdotnetorg\/dotnet-iot-samples\/blob\/master\/dotnet-iot-button-from-nanoframework\/dotnet-iot-button-from-nanoframework\/Program.cs\">Program.cs<\/a><\/strong>.  <\/p>\n<pre><code class=\"cs\">\/\/for Linux const int GPIOCHIP = 1; const int BUTTON_PIN = 38; GpioController controller; var drvGpio = new LibGpiodDriver(GPIOCHIP); controller = new GpioController(PinNumberingScheme.Logical, drvGpio);  \/\/ Initialize a new button with the corresponding button pin GpioButton button = new(buttonPin: BUTTON_PIN,controller);  Debug.WriteLine(\"Button is initialized, starting to read state\"); .... <\/code><\/pre>\n<p>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 nanoFramework, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a GPIO. \u0412 \u041e\u0421 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c: LibGpiodDriver, RaspberryPi3Driver \u0438\u00a0 SysFsDriver. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 <em>GpioButton button = new(buttonPin: BUTTON_PIN,controller)<\/em>, \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00a0 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f nanoFramework. \u0412\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439!<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ks\/b0\/yd\/ksb0ydpj_5s4v_cisawheyfrpqs.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ks\/b0\/yd\/ksb0ydpj_5s4v_cisawheyfrpqs.png\" alt=\"dotnet iot Visual Studio Code\" data-src=\"https:\/\/habrastorage.org\/webt\/ks\/b0\/yd\/ksb0ydpj_5s4v_cisawheyfrpqs.png\"\/><\/a><br \/>  <em>\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Visual Studio Code \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c Button \u0438\u0437 nanoFramework \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 .NET IoT \u0434\u043b\u044f Linux<\/em><\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0434\u0438\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u043e\u0439, \u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 nanoFramework \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0421\u0430\u043c \u0444\u0430\u043a\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043a\u043e\u0434\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0441\u0444\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b nanoFramework.<\/p>\n<h1><strong>\u0418\u0442\u043e\u0433<\/strong><\/h1>\n<p>  \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442 Arduino \u0432\u0437\u043e\u0440\u0432\u0430\u043b \u0440\u044b\u043d\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0432 \u043e\u0434\u043d\u043e \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 GPIO, \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0448\u0438\u043d\u043e\u0439 I2C \u0438 \u0441\u0435\u0442\u044c\u044e, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0437\u0433\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441 \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0443\u044e. \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438 \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a\u0438, \u0442\u043e \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u043c. \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c\u044e Arduino \u043e\u0431\u044f\u0437\u0430\u043d \u0434\u0432\u0443\u043c \u0432\u0435\u0449\u0430\u043c, \u044d\u0442\u043e \u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u0443\u0449\u0435\u0440\u0431\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0438 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Arduino IDE. \u041f\u0440\u043e\u0435\u043a\u0442 nanoFramework \u0434\u043e\u0441\u0442\u0438\u0433 \u0442\u043e\u0439 \u0436\u0435 \u0432\u044b\u0441\u043e\u0442\u044b. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u0439, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043c\u043e\u0441\u0442\u0430 UART \u0438 \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 Boot, \u0430 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.\u00a0 \u0414\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430\u00a0 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e Visual Studio 2019 Community \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 .NET nanoFramework VS2019 Extension. \u0412 Visual Studio \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0441 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u043d\u0433\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 nanoFramework \u0442\u0430\u043a \u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u0430\u043a \u0438 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 GHI Electronics, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043d\u0438\u0436\u0435 \u041e\u0421 Windows 10.<\/p>\n<p>  \u0421\u0430\u043c\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 nanoFramework \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438, \u0441\u043a\u0440\u044b\u0432\u0430\u044f \u0432\u0441\u044e\u00a0 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u041f\u0440\u0438\u0447\u0435\u043c \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043d\u0430 ChibiOS, \u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u041e\u0421 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u0430, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u041e\u0421 \u0438\u0437 nanoFramework, \u0441\u043e\u0447\u0435\u0442\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 C#.<\/p>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 nanoFramework \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0437\u0430 \u0442\u0435\u043c\u043f\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0418\u0437 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0434\u043b\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432\u00a0 \u2014 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\">GitHub nanoFramework.IoT.Device\/devices<\/a>. \u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\/tree\/develop\/src\">\/src\/<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043e\u0431\u0449\u0438\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 \u0434\u043b\u044f nanoFramework. \u042d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043c\u0430\u0435\u0442 \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b (\u0434\u043b\u044f BME280), \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043b\u0438\u0448\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u2014 Nerdbank.GitVersioning. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0435\u0441\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f CI \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0434 ESP32, \u0442\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432.<\/p>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0447\u043d\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u0440\u0438\u0438 ESP32. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441 \u0438 \u0446\u0432\u0435\u0442.<\/p>\n<h1>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/h1>\n<p>  \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d nanoFramework \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u0414\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u00ab\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00bb ASP.NET \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/nanoframework\/lib-nanoFramework.WebServer\">nanoFramework.WebServer<\/a>. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Wi-Fi \u0441\u043a\u0430\u043d\u0435\u0440\u0430, Web API, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 RabbitMQ, \u0431\u0443\u0434\u0435\u0442 \u0432 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0438. \u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c LCD \u044d\u043a\u0440\u0430\u043d \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.<\/p>\n<h1>\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 TTGO T-Energy \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c ESP32-WROVER-B<\/h1>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442 \u0443\u0436\u0435 \u0431\u044b\u043b \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u043e\u0434\u0443\u043b\u044f ESP32-WROVER-B. \u041f\u043e\u043b\u043d\u043e\u0435 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u2014 <a href=\"http:\/\/www.lilygo.cn\/prod_view.aspx?TypeId=50033&amp;amp;Id=1170&amp;amp;FId=t3:50033:3\">LILYGO TTGO T-Energy ESP32 8MByte PSRAM WiFi &amp; Bluetooth Module 18650 Battery ESP32-WROVER-B Development Board<\/a>.<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/kf\/92\/yn\/kf92ynaxxizwyorhq6oaakhttd4.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kf\/92\/yn\/kf92ynaxxizwyorhq6oaakhttd4.png\" alt=\"nanoFramework ESP32-WROVER-B ESP32-D0WD-V3\" data-src=\"https:\/\/habrastorage.org\/webt\/kf\/92\/yn\/kf92ynaxxizwyorhq6oaakhttd4.png\"\/><\/a><br \/>  <em>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/em><\/p>\n<p>  \u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0438\u043f\u0430 <strong>ESP32-D0WD-V3<\/strong> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\/\u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0447\u0438\u043f\u0430 ESP32. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043b\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 PSRAM \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u043e\u0431\u044a\u0435\u043c\u043e\u043c 8 \u041c\u0431\u0430\u0439\u0442.<\/p>\n<h1>\u0420\u0435\u0441\u0443\u0440\u0441\u044b<\/h1>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/nanoframework.net\/\">.NET NANOFRAMEWORK \u2014 Making it easy to write C# code for embedded systems<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\">GitHub nanoFramework<\/a><\/li>\n<li><a href=\"https:\/\/docs.nanoframework.net\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f nanoFramework<\/a><\/li>\n<li><a href=\"https:\/\/docs.nanoframework.net\/api\/index.html\">API Docs .NET nanoFramework<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/549012\/\">.NET nanoFramework \u2014 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 C# \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\/Samples\">Samples \u2014 nanoFramework<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\/nanoFramework.IoT.Device\">\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u043a \u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c, \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u043c, \u043c\u043e\u0434\u0443\u043b\u044f\u043c \u2014 nanoFramework.IoT.Device<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\/nanoFirmwareFlasher\">nanoFirmwareFlasher \u2014 allows flashing a .NET nanoFramework target with nanoBooter, nanoCLR, managed application or backup files<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\/nf-Community-Targets\">\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u2014 nf-Community-Targets<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nanoframework\/nf-Community-Contributions\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044b, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/a><\/li>\n<\/ul>\n<blockquote><p><a href=\"https:\/\/t.me\/timewebru\"><b>\u041d\u043e\u0432\u043e\u0441\u0442\u0438, \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Timeweb.Cloud \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c Telegram-\u043a\u0430\u043d\u0430\u043b\u0435<\/b><\/a> <b>\u21a9<\/b><\/p><\/blockquote>\n<p>  <a href=\"https:\/\/timeweb.cloud\/?i=106909\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\"\/><\/a><\/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\/584144\/\"> https:\/\/habr.com\/ru\/articles\/584144\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/tr\/b5\/fj\/trb5fjhqb2sgacuonjyb50l75eg.png\" alt=\"dotnet nanoFramework\" data-src=\"https:\/\/habrastorage.org\/webt\/tr\/b5\/fj\/trb5fjhqb2sgacuonjyb50l75eg.png\"\/><\/p>\n<p>  <a href=\"https:\/\/nanoframework.net\/\">.NET nanoFramework<\/a> \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 .NET \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u0430\u043b\u044b\u0445 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0421 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439, \u043d\u043e\u0441\u0438\u043c\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430\u0443\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u044b, \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u044b \u0438 \u0434\u0430\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/549012\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 .NET nanoFramework, \u0435\u0451 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c nanoFramework \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441\u0435\u0440\u0438\u0438 ESP32 \u0438 STM32, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u00abHello World!\u00bb, \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438, \u0438 \u043e\u0446\u0435\u043d\u0438\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0441 \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e\u00bb .NET \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 nanoFramework.  <\/p>\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-413008","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/413008","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=413008"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/413008\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=413008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=413008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=413008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}