{"id":299476,"date":"2020-02-29T15:00:14","date_gmt":"2020-02-29T15:00:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=299476"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=299476","title":{"rendered":"\u0411\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490476\/\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0432\u0441\u0435\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0425\u0430\u0431\u0440\u0430 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u00abDIY \u0438\u043b\u0438 \u0421\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb! \u0410 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043b\u0438 \u0447\u0435\u0433\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a\u043e\u0433\u043e-\u0440\u0430\u0441\u0442\u0430\u043a\u043e\u0433\u043e, \u044f \u0436\u0435 \u0430\u0440\u0434\u0443\u0438\u043d\u0448\u0438\u043a, \u043c\u043d\u0435 \u043c\u043e\u0436\u043d\u043e,\u2026 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u0444\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u0431\u0438\u043d\u0430\u043c\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c :). \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u043e\u043b\u0433\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u043a\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0435\u043b\u0430\u044e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0447\u0438\u043f\u0430\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Nordic Semiconductor. \u0414\u0430\u0442\u0447\u0438\u043a \u0440\u0435\u0448\u0438\u043b \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043e\u0434\u043d\u0443 \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52840, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52811. <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zu\/u9\/48\/zuu948wn8duosrmce4hvtao1une.jpeg\"><br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0414\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52840 \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043c\u043e\u0434\u0443\u043b\u044c E73_2G4M08S1C \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"http:\/\/ebyte.com\/en\/\" rel=\"nofollow\">EBYTE<\/a>, \u0434\u043b\u044f \u0432\u0435\u0440c\u0438\u0438 \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52811 \u043c\u043e\u0434\u0443\u043b\u044c MC50SFA \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"https:\/\/www.minew.com\/\" rel=\"nofollow\">MINEW<\/a>. \u0427\u0435\u0441\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043f\u043e\u0438\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0438\u043f\u043e\u0432 nRF52811 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0442\u043e \u0435\u0449\u0435 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52811 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 MINEW \u0438 \u043f\u043b\u044e\u0448\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0447\u0438\u043f\u043e\u0432 \u043d\u0430\u043f\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u2014 nRF52810 \u0438 nRF52832.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cn\/yx\/4l\/cnyx4lcnu6q_isgpvrszxy7c9wy.png\"><\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u044d\u0442\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u0421\u0445\u0435\u043c\u0430 \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0440\u0435\u0430\u0437\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441 \u0430\u043d\u0442\u0438\u0434\u0440\u0435\u0431\u0435\u0437\u0433\u043e\u043c. <\/p>\n<p>  \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u0441\u0445\u0435\u043c\u0430:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/j4\/au\/cy\/j4aucyctci1fdwtfdkbiz_exsyi.png\"><\/p>\n<p>  \u041e\u0431\u0434\u0443\u043c\u044b\u0432\u0430\u044f \u0447\u0435\u043c \u0431\u044b \u0431\u044b\u043b\u043e \u0443\u043c\u0435\u0441\u0442\u043d\u043e \u0440\u0430\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f, \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430 \u0447\u0442\u043e \u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u0447\u0435\u0433\u043e, \u0434\u0430\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u043d \u0438 \u0432 \u0410\u0444\u0440\u0438\u043a\u0435 \u0434\u0430\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u00ab\u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435\u00bb \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"https:\/\/redmond.company\/ru\/products\/sistemy-ohrany-i-bezopasnosti\/umnyy-datchik-otkrytiya-redmond-skyopen-rso31s\/\" rel=\"nofollow\">REDMOND<\/a>. \u0412 \u0438\u0445 BLE \u0434\u0430\u0442\u0447\u0438\u043a\u0435 (\u043a\u0441\u0442\u0430\u0442\u0438 \u0442\u043e\u0436\u0435 \u043d\u0430 \u0447\u0438\u043f\u0435 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Nordic) \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u043c\u0443 \u0441\u0435\u043d\u0441\u043e\u0440\u0443 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438 \u0435\u043c\u043a\u043e\u0441\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 TTP223. \u041d\u043e \u043c\u043d\u0435 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u0430\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0447\u0435\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043e\u043a\u043e\u043b\u043e \u0434\u0432\u0435\u0440\u0438 \u0438\u043b\u0438 \u043e\u043a\u043d\u0430(\u0438 \u0447\u0442\u043e \u043c\u0435\u0448\u0430\u043b\u043e \u0435\u0435 \u043c\u0435\u0440\u044f\u0442\u044c \u0447\u0438\u043f\u043e\u043c) \u0438 \u0432 \u043a\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u0434\u0430\u0442\u0447\u0438\u043a\u0435 \u0432\u0438\u0441\u044f\u0449\u0435\u043c \u043d\u0430 \u043e\u043a\u043d\u0435 \u0438\u043b\u0438 \u0434\u0432\u0435\u0440\u0438(\u043d\u0443 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0439 :)). \u0412 \u0438\u0442\u043e\u0433\u0435 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043e\u0445\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443 \u043c\u043e\u0435\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fn\/7v\/y7\/fn7vy79b2eivip0yber_90a_zew.jpeg\"><\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u043c \u043e\u0442\u0431\u043e\u0440\u0430 \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0443 CR2032. \u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0441\u0440\u0435\u0434\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0441\u0442\u0430\u043b\u0438 \u0434\u0432\u0430 \u0434\u0430\u0442\u0447\u0438\u043a\u0430, \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440 LIS2DW12 \u0438 \u0434\u0430\u0442\u0447\u0438\u043a \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f DRV5032FB. <br \/>  LIS2DW12 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u0430\u043c\u044b\u043c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u043c \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u043e\u043c. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 1 \u043c\u043a\u0410 (<a href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/lis2dw12.pdf\" rel=\"nofollow\">\u0434\u0430\u0442\u0430\u0448\u0438\u0442<\/a>). \u0422\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0434\u0430\u0442\u0447\u0438\u043a \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f DRV5032FB. \u0415\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 500\u043d\u0410 (<a href=\"http:\/\/www.ti.com\/lit\/ds\/symlink\/drv5032.pdf\" rel=\"nofollow\">\u0434\u0430\u0442\u0430\u0448\u0438\u0442<\/a>).<\/p>\n<p>  \u0410\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0443\u0434\u0430\u0440\u0430, \u0430 \u0434\u0430\u0442\u0447\u0438\u043a \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043f\u043e \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0437\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0443\u0434\u0430\u0440\u0430 \u044f \u0431\u044b\u043b \u0441\u043f\u043e\u043a\u043e\u0435\u043d, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432\u0441\u0435 \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u0432\u0441\u0435 \u043b\u0443\u0447\u0448\u0435 \u0447\u0435\u043c \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/si\/ni\/64\/sini6468k7gc4btzzjjwcaco8y8.png\"><\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u044b\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0432 \u0441\u0435\u0442\u0438 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u0442\u0430\u043a. \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0447\u0438\u043f\u0430\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Nordic(nRF24(+atmega 328, stm32f1), nRF51 \u0438 nRF52) \u043d\u0430 \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Nordic \u2014 Enhanced ShockBurst (ESB), \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 nRF24 \u0438 nRF51-52. \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0430\u0445 \u043c\u0438\u0440\u0430. \u041d\u043e \u0447\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0447\u0438\u043f\u0430\u0445 nRF52 \u0442\u0430\u043a \u044d\u0442\u043e \u0442\u0435\u043c \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0432\u0430\u0442\u044c \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441(ESB) \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u041f\u041e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 Zigbee \u0438\u043b\u0438 BLE, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0438\u043f\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044c\u043d\u044b\u0435.\u2026 \u041f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 BLE, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u043b\u0435\u043a\u0443\u0441\u044c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u0430\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 Arduino NANO 33 Ble \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f E73_2G4M08S1C, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0435\u0439 NANO 33 \u2014 $4.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ot\/8f\/vh\/ot8fvhkkqsnzw_vhcqy7rubbgg0.jpeg\"><\/p>\n<p>  \u0421\u043a\u0435\u0442\u0447 \u043a \u0434\u0430\u0442\u0447\u0438\u043a\u0443 \u0434\u0435\u043b\u0430\u043b \u0432 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u0418\u0414\u0415 \u0438\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u0430 LIS2DW12, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0430\u044f \u043c\u043d\u043e\u044e \u0432 \u0447\u0430\u0441\u0442\u0438 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0432 \u043c\u043e\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f(<a href=\"https:\/\/github.com\/smartboxchannel\/LIS2DW12\" rel=\"nofollow\">\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u043c\u043e\u0435\u043c \u0433\u0438\u0442\u0435<\/a>). <br \/>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0448\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u0442\u0447\u0438\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e \u0441\u043d\u0435 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0432\u0441\u0435\u0433\u043e 4 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u0442\u044c \u0434\u0432\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a. \u0415\u0441\u043b\u0438 \u0434\u0432\u0435\u0440\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u0442\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0443\u0434\u0430\u0440\u0430 \u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043c\u0430\u0433\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0435\u0440\u044c \u0437\u0430\u043a\u0440\u044b\u0432\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0422\u0430\u043a \u0436\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u0435\u043c \u0447\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043a\u043e\u0433\u0434\u0430 \u0434\u0430\u0442\u0447\u0438\u043a \u0443\u0434\u0430\u0440\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435 \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430, \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u043e\u0442 \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0437\u0430\u043c\u043a\u0430. \u0414\u0430\u043d\u043d\u0430\u044f \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e\u0439 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u0430. <br \/>  \u0414\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u0430, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u0441\u044f \u043f\u0438\u043d \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u043f\u0438\u043d\u0435 \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430, \u0442\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044e \u043e\u0442 \u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0442 \u0433\u0435\u0440\u043a\u043e\u043d\u0430. <br \/>  \u0414\u0430\u0442\u0447\u0438\u043a \u0438\u043c\u0435\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u0430\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044e, \u0440\u0430\u0434\u0438\u043e\u043c\u043e\u0434\u0443\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0436\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0423\u0414. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430, \u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0443\u0445\u043e\u0434\u044f \u0432 \u0441\u043e\u043d. \u0414\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c. \u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u043d. \u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0438 \u0437\u0430\u0432\u043e\u0434\u0441\u043a\u043e\u0439 \u0441\u0431\u0440\u043e\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a(\u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0437\u0430\u043d\u043e\u0432\u043e).<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jn\/1f\/j3\/jn1fj3ih6xil_iyk_c5abhzmg8q.jpeg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u-\/bt\/gd\/u-btgdierfsy0aqpvt2yhmimjic.jpeg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gk\/mr\/ml\/gkmrmlazpn6iwyxujq_82tk0ipc.jpeg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/do\/en\/m6\/doenm6q7xz4ri8cxv57gipihkbq.jpeg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/er\/x9\/wu\/erx9wumdn9jpozoie_o20c_kmqe.jpeg\"><\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0432 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u0418\u0414\u0415 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043b\u0430\u0442:<\/p>\n<p>  <a href=\"https:\/\/github.com\/smartboxchannel\/arduino-nRF5\" rel=\"nofollow\">sandeepmistry\/arduino-nRF5<\/a><br \/>  <a href=\"https:\/\/github.com\/mysensors\/ArduinoBoards\" rel=\"nofollow\">mysensors\/ArduinoBoards<\/a><br \/>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<br \/>  <a href=\"https:\/\/github.com\/smartboxchannel\/MySensors\" rel=\"nofollow\">Mysensor<\/a><br \/>  <a href=\"https:\/\/github.com\/smartboxchannel\/LIS2DW12\" rel=\"nofollow\">LIS2DW12<\/a><\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440: st-link, j-link.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0435\u0442\u0447 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">bool configMode = 0; int8_t int_status = 0; bool door_status = 1; bool check; bool magnet_status = 1; bool nosleep = 0; bool button_flag = 0; bool onoff = 1; bool flag_update_transport_param; bool flag_sendRoute_parent; bool flag_no_present; bool flag_nogateway_mode; bool flag_find_parent_process; bool flag_fcount; bool Ack_TL; bool Ack_FP; bool PRESENT_ACK; bool send_a; bool batt_flag; byte conf_vibro_set = 2; byte err_delivery_beat; byte problem_mode_count; uint8_t  countbatt = 0; uint8_t batt_cap; uint8_t old_batt_cap = 100; uint32_t BATT_TIME; uint32_t SLEEP_TIME = 10800000; uint32_t SLEEP_NOGW = 60000; uint32_t oldmillis; uint32_t newmillis; uint32_t previousMillis; uint32_t lightMillisR; uint32_t configMillis; uint32_t interrupt_time; uint32_t SLEEP_TIME_W; uint32_t axel_time; uint32_t axel_time0; int16_t myid; int16_t mypar; int16_t old_mypar = -1; bool vibro = 1; uint32_t PIN_BUTTON_MASK; uint32_t AXEL_INT_MASK; uint32_t GERKON_INT_MASK; uint32_t MAGNET_INT_MASK; float ODR_1Hz6_LP_ONLY = 1.6f; float ODR_12Hz5 = 12.5f; float ODR_25Hz = 25.0f; float ODR_50Hz = 50.0f; float ODR_100Hz = 100.0f; float ODR_200Hz = 200.0f; volatile byte axelIntStatus = 0; volatile byte gerkIntStatus = 0; volatile byte magIntStatus = 0; volatile byte buttIntStatus = 0; uint16_t batteryVoltage; int16_t linkQuality; int16_t old_linkQuality;  \/\/#define MY_DEBUG #ifndef MY_DEBUG #define MY_DISABLED_SERIAL #endif #define MY_RADIO_NRF5_ESB int16_t mtwr; #define MY_TRANSPORT_WAIT_READY_MS (mtwr) #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX)  #include &lt;MySensors.h&gt;  extern &quot;C&quot; { #include &quot;app_gpiote.h&quot; #include &quot;nrf_gpio.h&quot; } #define APP_GPIOTE_MAX_USERS 1 static app_gpiote_user_id_t m_gpiote_user_id;  #include &lt;LIS2DW12Sensor.h&gt; LIS2DW12Sensor *lis2;  #define DWS_CHILD_ID 0 #define V_SENS_CHILD_ID 1 #define M_CHILD_ID 2 #define LEVEL_SENSIV_V_SENS_CHILD_ID 230 #define SIGNAL_Q_ID 250  MyMessage dwsMsg(DWS_CHILD_ID, V_TRIPPED); MyMessage mMsg(M_CHILD_ID, V_TRIPPED); MyMessage vibroMsg(V_SENS_CHILD_ID, V_TRIPPED); MyMessage conf_vsensMsg(LEVEL_SENSIV_V_SENS_CHILD_ID, V_VAR1); #define SN &quot;DOOR &amp; WINDOW SENS&quot; #define SV &quot;1.12&quot;   void before() {   board_Init();   happy_init();   delay(500);   batteryVoltage = hwCPUVoltage();   digitalWrite(BLUE_LED, LOW); }   void presentation() {   NRF_POWER-&gt;DCDCEN = 0;   wait(10);    check = sendSketchInfo(SN, SV);   wait(30);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(30);     check = sendSketchInfo(SN, SV);     wait(30);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = present(DWS_CHILD_ID, S_DOOR, &quot;STATUS RS SENS&quot;);   wait(40);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(40);     check = present(DWS_CHILD_ID, S_DOOR, &quot;STATUS RS SENS&quot;);     wait(40);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = present(V_SENS_CHILD_ID, S_VIBRATION, &quot;STATUS SHOCK SENS&quot;);   wait(50);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(50);     check = present(V_SENS_CHILD_ID, S_VIBRATION, &quot;STATUS SHOCK SENS&quot;);     wait(50);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = present(M_CHILD_ID, S_DOOR, &quot;ANTI-MAGNET ALARM&quot;);   wait(60);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(60);     check = present(M_CHILD_ID, S_DOOR, &quot;ANTI-MAGNET ALARM&quot;);     wait(60);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = present(SIGNAL_Q_ID, S_CUSTOM, &quot;SIGNAL %&quot;);   wait(70);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(70);     check = present(SIGNAL_Q_ID, S_CUSTOM, &quot;SIGNAL %&quot;);     wait(70);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = present(LEVEL_SENSIV_V_SENS_CHILD_ID, S_CUSTOM, &quot;SENS LEVEL VIBRO&quot;);   wait(80);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(80);     check = present(LEVEL_SENSIV_V_SENS_CHILD_ID, S_CUSTOM, &quot;SENS LEVEL VIBRO&quot;);     wait(80);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }    check = send(conf_vsensMsg.set(conf_vibro_set));   wait(90);   if (!check) {     _transportSM.failedUplinkTransmissions = 0;     wait(90);     check = send(conf_vsensMsg.set(conf_vibro_set));     wait(90);     _transportSM.failedUplinkTransmissions = 0;   }   if (check) {     blinky(1, 1, BLUE_LED);   } else {     blinky(1, 1, RED_LED);   }   NRF_POWER-&gt;DCDCEN = 0;   wait(10); }   void setup() {   digitalWrite(BLUE_LED, HIGH);   config_Happy_node();   sensors_Init(); }   void loop() {   if (flag_update_transport_param == 1) {     update_Happy_transport();   }   if (flag_sendRoute_parent == 1) {     present_only_parent();   }   if (isTransportReady() == true) {     if (flag_nogateway_mode == 0) {       if (flag_find_parent_process == 1) {         find_parent_process();       }       if (configMode == 0) {         if ((axelIntStatus == AXEL_INT) || (buttIntStatus == PIN_BUTTON) || (gerkIntStatus == GERKON_INT) || (magIntStatus == MAGNET_INT)) {           nosleep = 1;           newmillis = millis();           interrupt_time = newmillis - oldmillis;           BATT_TIME = BATT_TIME - interrupt_time;           if (BATT_TIME &lt; 60000) {             BATT_TIME = SLEEP_TIME;             batteryVoltage = hwCPUVoltage();             batt_flag = 1;           }            if (gerkIntStatus == GERKON_INT) {             send_Gerkon();             axel_time = millis();             nosleep = 0;           }            if (magIntStatus == MAGNET_INT) {             send_Magnet();             nosleep = 0;           }            if (axelIntStatus == AXEL_INT) {             if (millis() - axel_time0 &gt;= 2000) {               send_Axel();               nosleep = 0;             } else {               if (digitalRead(GERKON_INT) == LOW) {                 send_Gerkon();                 axel_time = millis();                 nosleep = 0;               }             }           }            if (buttIntStatus == PIN_BUTTON) {             if (digitalRead(PIN_BUTTON) == 0 &amp;&amp; button_flag == 0) {               button_flag = 1;               previousMillis = millis();               ledsOff();             }             if (digitalRead(PIN_BUTTON) == 0 &amp;&amp; button_flag == 1) {               if ((millis() - previousMillis &gt; 0) &amp;&amp; (millis() - previousMillis &lt;= 1750)) {                 if (millis() - lightMillisR &gt; 70) {                   lightMillisR = millis();                   onoff = !onoff;                   digitalWrite(BLUE_LED, onoff);                 }               }               if ((millis() - previousMillis &gt; 1750) &amp;&amp; (millis() - previousMillis &lt;= 2000)) {                 ledsOff();               }               if ((millis() - previousMillis &gt; 2000) &amp;&amp; (millis() - previousMillis &lt;= 3750)) {                 if (millis() - lightMillisR &gt; 50) {                   lightMillisR = millis();                   onoff = !onoff;                   digitalWrite(GREEN_LED, onoff);                 }               }               if ((millis() - previousMillis &gt; 3750) &amp;&amp; (millis() - previousMillis &lt;= 4000)) {                 ledsOff();               }               if ((millis() - previousMillis &gt; 4000) &amp;&amp; (millis() - previousMillis &lt;= 5750)) {                 if (millis() - lightMillisR &gt; 30) {                   lightMillisR = millis();                   onoff = !onoff;                   digitalWrite(RED_LED, onoff);                 }               }               if (millis() - previousMillis &gt; 5750) {                 ledsOff();               }             }              if (digitalRead(PIN_BUTTON) == 1 &amp;&amp; button_flag == 1) {               if ((millis() - previousMillis &lt;= 1750) &amp;&amp; (button_flag == 1))               {                 ledsOff();                 blinky(2, 2, BLUE_LED);                 button_flag = 0;                 buttIntStatus = 0;                 presentation();                 nosleep = 0;               }               if ((millis() - previousMillis &gt; 2000) &amp;&amp; (millis() - previousMillis &lt;= 3750) &amp;&amp; (button_flag == 1))               {                 ledsOff();                 blinky(2, 2, GREEN_LED);                 configMode = 1;                 button_flag = 0;                 configMillis = millis();                 interrupt_Init(1);                 NRF_POWER-&gt;DCDCEN = 0;                 buttIntStatus = 0;                 NRF5_ESB_startListening();                 wait(50);               }                if ((millis() - previousMillis &gt; 4000) &amp;&amp; (millis() - previousMillis &lt;= 5750) &amp;&amp; (button_flag == 1))               {                 ledsOff();                 blinky(3, 3, RED_LED);                 \/\/new_device();               }                if ((((millis() - previousMillis &gt; 1750) &amp;&amp; (millis() - previousMillis &lt;= 2000)) || ((millis() - previousMillis &gt; 3750) &amp;&amp; (millis() - previousMillis &lt;= 4000)) || ((millis() - previousMillis &gt; 5750))) &amp;&amp; (button_flag == 1))               {                 ledsOff();                 nosleep = 0;                 button_flag = 0;                 buttIntStatus = 0;               }             }           }         } else {           batteryVoltage = hwCPUVoltage();           BATT_TIME = SLEEP_TIME;           sendBatteryStatus(1);           nosleep = 0;         }       } else {         if (millis() - configMillis &gt; 30000) {           blinky(3, 3, GREEN_LED);           configMode = 0;           nosleep = 0;           interrupt_Init(0);           NRF_POWER-&gt;DCDCEN = 1;           wait(50);         }       }     } else {       if (buttIntStatus == PIN_BUTTON) {         if (digitalRead(PIN_BUTTON) == 0 &amp;&amp; button_flag == 0) {           button_flag = 1;           nosleep = 1;           previousMillis = millis();           ledsOff();         }         if (digitalRead(PIN_BUTTON) == 0 &amp;&amp; button_flag == 1) {           if ((millis() - previousMillis &gt; 0) &amp;&amp; (millis() - previousMillis &lt;= 1750)) {             if (millis() - lightMillisR &gt; 25) {               lightMillisR = millis();               onoff = !onoff;               digitalWrite(GREEN_LED, onoff);             }           }           if ((millis() - previousMillis &gt; 1750) &amp;&amp; (millis() - previousMillis &lt;= 2000)) {             ledsOff();           }           if ((millis() - previousMillis &gt; 2000) &amp;&amp; (millis() - previousMillis &lt;= 4000)) {             if (millis() - lightMillisR &gt; 25) {               lightMillisR = millis();               onoff = !onoff;               digitalWrite(RED_LED, onoff);             }           }           if (millis() - previousMillis &gt; 4000) {             ledsOff();           }         }          if (digitalRead(PIN_BUTTON) == 1 &amp;&amp; button_flag == 1) {           if ((millis() - previousMillis &lt;= 1750) &amp;&amp; (button_flag == 1))           {             ledsOff();             blinky(2, 2, BLUE_LED);             button_flag = 0;             buttIntStatus = 0;             check_parent();             nosleep = 0;           }           if ((millis() - previousMillis &gt; 2000) &amp;&amp; (millis() - previousMillis &lt;= 4000) &amp;&amp; (button_flag == 1))           {             ledsOff();             blinky(3, 3, RED_LED);             \/\/new_device();           }            if ((((millis() - previousMillis &gt; 1750) &amp;&amp; (millis() - previousMillis &lt;= 2000)) || ((millis() - previousMillis &gt; 4000))) &amp;&amp; (button_flag == 1))           {             ledsOff();             nosleep = 0;             button_flag = 0;             buttIntStatus = 0;           }         }       } else {         check_parent();       }     }   }    if (_transportSM.failureCounter &gt; 0)   {     _transportConfig.parentNodeId = loadState(101);     _transportConfig.nodeId = myid;     _transportConfig.distanceGW = loadState(103);     mypar = _transportConfig.parentNodeId;     nosleep = 0;     flag_fcount = 1;     err_delivery_beat = 6;     happy_node_mode();     gateway_fail();   }    if (nosleep == 0) {     oldmillis = millis();     axelIntStatus = 0;     buttIntStatus = 0;     gerkIntStatus = 0;     magIntStatus = 0;     sleep(SLEEP_TIME_W, false);     nosleep = 1;   } }   void blinky(uint8_t pulses, uint8_t repit, uint8_t ledColor) {   for (int x = 0; x &lt; repit; x++) {     if (x &gt; 0) {       wait(150);     }     for (int i = 0; i &lt; pulses; i++) {       if (i &gt; 0) {         wait(40);       }       digitalWrite(ledColor, LOW);       wait(10);       digitalWrite(ledColor, HIGH);     }   } }   void board_Init() {   pinMode(PIN_BUTTON, INPUT_PULLUP);   pinMode(MAGNET_INT, INPUT);   pinMode(GERKON_INT, INPUT);   pinMode(AXEL_INT, INPUT);   pinMode(RED_LED, OUTPUT);   pinMode(GREEN_LED, OUTPUT);   pinMode(BLUE_LED, OUTPUT);   ledsOff();   NRF_POWER-&gt;DCDCEN = 1;   wait(5); #ifndef MY_DEBUG   NRF_UART0-&gt;ENABLE = 0;   wait(5); #endif   \/\/NRF_NFCT-&gt;TASKS_DISABLE = 1;   \/\/ NRF_NVMC-&gt;CONFIG = 1;   \/\/ NRF_UICR-&gt;NFCPINS = 0;   \/\/ NRF_NVMC-&gt;CONFIG = 0;   \/\/ NRF_SAADC -&gt;ENABLE = 0;   \/\/ NRF_PWM0  -&gt;ENABLE = 0;   \/\/ NRF_PWM1  -&gt;ENABLE = 0;   \/\/ NRF_PWM2  -&gt;ENABLE = 0;   \/\/ NRF_TWIM1 -&gt;ENABLE = 0;   \/\/ NRF_TWIS1 -&gt;ENABLE = 0;   NRF_RADIO-&gt;TXPOWER = 8;   wait(5);    conf_vibro_set = loadState(230);   if ((conf_vibro_set &gt; 5) || (conf_vibro_set == 0)) {     conf_vibro_set = 2;     saveState(230, conf_vibro_set);   }    blinky(1, 1, BLUE_LED); }   void ledsOff() {   digitalWrite(RED_LED, HIGH);   digitalWrite(GREEN_LED, HIGH);   digitalWrite(BLUE_LED, HIGH); }   void happy_init() {   \/\/hwWriteConfig(EEPROM_NODE_ID_ADDRESS, 255); \/\/ ******************** checking the node config reset *************************    if (hwReadConfig(EEPROM_NODE_ID_ADDRESS) == 0) {     hwWriteConfig(EEPROM_NODE_ID_ADDRESS, 255);   }   if (loadState(100) == 0) {     saveState(100, 255);   }   CORE_DEBUG(PSTR(&quot;EEPROM NODE ID: %d\\n&quot;), hwReadConfig(EEPROM_NODE_ID_ADDRESS));   CORE_DEBUG(PSTR(&quot;USER MEMORY SECTOR NODE ID: %d\\n&quot;), loadState(100));    if (hwReadConfig(EEPROM_NODE_ID_ADDRESS) == 255) {     mtwr = 0;   } else {     mtwr = 11000;     no_present();   }   CORE_DEBUG(PSTR(&quot;MY_TRANSPORT_WAIT_MS: %d\\n&quot;), mtwr); }  void no_present() {   _coreConfig.presentationSent = true;   _coreConfig.nodeRegistered = true; }   void interrupt_Init(bool start) {   \/\/***   \/\/SET   \/\/NRF_GPIO_PIN_NOPULL   \/\/NRF_GPIO_PIN_PULLUP   \/\/NRF_GPIO_PIN_PULLDOWN   \/\/***   nrf_gpio_cfg_input(PIN_BUTTON, NRF_GPIO_PIN_PULLUP);   nrf_gpio_cfg_input(AXEL_INT, NRF_GPIO_PIN_NOPULL);   nrf_gpio_cfg_input(GERKON_INT, NRF_GPIO_PIN_NOPULL);   nrf_gpio_cfg_input(MAGNET_INT, NRF_GPIO_PIN_NOPULL);   APP_GPIOTE_INIT(APP_GPIOTE_MAX_USERS);   PIN_BUTTON_MASK = 1 &lt;&lt; PIN_BUTTON;   AXEL_INT_MASK = 1 &lt;&lt; AXEL_INT;   GERKON_INT_MASK = 1 &lt;&lt; GERKON_INT;   MAGNET_INT_MASK = 1 &lt;&lt; MAGNET_INT;   \/\/  app_gpiote_user_register(p_user_id, pins_low_to_high_mask, pins_high_to_low_mask, event_handler)   if (start == 0) {     app_gpiote_user_register(&amp;m_gpiote_user_id, AXEL_INT_MASK | GERKON_INT_MASK, GERKON_INT_MASK | MAGNET_INT_MASK | PIN_BUTTON_MASK, gpiote_event_handler);     wait(5);   } else if (start == 1) {     app_gpiote_user_register(&amp;m_gpiote_user_id, GERKON_INT_MASK, GERKON_INT_MASK | MAGNET_INT_MASK | PIN_BUTTON_MASK, gpiote_event_handler);     wait(5);   }   app_gpiote_user_enable(m_gpiote_user_id);   wait(5);   axelIntStatus = 0;   buttIntStatus = 0;   gerkIntStatus = 0;   magIntStatus = 0; }   void gpiote_event_handler(uint32_t event_pins_low_to_high, uint32_t event_pins_high_to_low) {   MY_HW_RTC-&gt;CC[0] = (MY_HW_RTC-&gt;COUNTER + 2); \/\/ Taken from d0016 example code, ends the sleep delay    if (PIN_BUTTON_MASK &amp; event_pins_high_to_low) {     if ((buttIntStatus == 0) &amp;&amp; (axelIntStatus == 0) &amp;&amp; (gerkIntStatus == 0) &amp;&amp; (magIntStatus == 0)) {       buttIntStatus = PIN_BUTTON;     }   }   if (flag_nogateway_mode == 0) {     if (AXEL_INT_MASK &amp; event_pins_low_to_high) {       if ((axelIntStatus == 0) &amp;&amp; (buttIntStatus == 0) &amp;&amp; (gerkIntStatus == 0) &amp;&amp; (magIntStatus == 0) &amp;&amp; (door_status == 1)) {         axelIntStatus = AXEL_INT;         axel_time0 = millis();       }     }     if ((GERKON_INT_MASK &amp; event_pins_low_to_high) || (GERKON_INT_MASK &amp; event_pins_high_to_low)) {       if ((axelIntStatus == 0) &amp;&amp; (buttIntStatus == 0) &amp;&amp; (gerkIntStatus == 0) &amp;&amp; (magIntStatus == 0)) {         gerkIntStatus = GERKON_INT;       }     }     if (MAGNET_INT_MASK &amp; event_pins_high_to_low) {       if ((axelIntStatus == 0) &amp;&amp; (buttIntStatus == 0) &amp;&amp; (gerkIntStatus == 0) &amp;&amp; (magIntStatus == 0) &amp;&amp; (door_status == 1)) {         magIntStatus = MAGNET_INT;       }     }   } }   void sensors_Init() {   Wire.begin();   wait(100);   lis2 = new LIS2DW12Sensor (&amp;Wire);   vibro_Init();   if (flag_nogateway_mode == 0) {     if (digitalRead(GERKON_INT) == HIGH) {       door_status = 1;       interrupt_Init(0);     } else {       door_status = 0;       interrupt_Init(1);     }     send(dwsMsg.set(door_status));     wait(50);      SLEEP_TIME_W = SLEEP_TIME;     axelIntStatus = 0;     buttIntStatus = 0;     gerkIntStatus = 0;     magIntStatus = 0;     sendBatteryStatus(0);     wait(100);     blinky(2, 1, BLUE_LED);     wait(100);     blinky(2, 1, GREEN_LED);     wait(100);     blinky(2, 1, RED_LED);     axel_time = millis();   } else {     interrupt_Init(0);     blinky(5, 3, RED_LED);   } }   void config_Happy_node() {   if (mtwr == 0) {     myid = getNodeId();     saveState(100, myid);     mypar = _transportConfig.parentNodeId;     old_mypar = mypar;     saveState(101, mypar);     saveState(102, _transportConfig.distanceGW);   }   if (mtwr != 0) {     myid = getNodeId();     if (myid != loadState(100)) {       saveState(100, myid);     }     if (isTransportReady() == true) {       mypar = _transportConfig.parentNodeId;       if (mypar != loadState(101)) {         saveState(101, mypar);       }       if (_transportConfig.distanceGW != loadState(102)) {         saveState(102, _transportConfig.distanceGW);       }       present_only_parent();     }     if (isTransportReady() == false)     {       no_present();       flag_fcount = 1;       err_delivery_beat = 6;       _transportConfig.nodeId = myid;       _transportConfig.parentNodeId = loadState(101);       _transportConfig.distanceGW = loadState(102);       mypar = _transportConfig.parentNodeId;       happy_node_mode();       gateway_fail();     }   } }   void send_Axel() {   if (millis() - axel_time &gt;= 5000) {     blinky(2, 1, GREEN_LED);     blinky(2, 1, RED_LED);     blinky(2, 1, GREEN_LED);     blinky(2, 1, RED_LED);     blinky(2, 1, GREEN_LED);     blinky(2, 1, RED_LED);      send_a = send(vibroMsg.set(vibro));     wait(50);     if (send_a == false) {       send_a = send(vibroMsg.set(vibro));       wait(100);     }     if (send_a == true) {       err_delivery_beat = 0;       if (flag_nogateway_mode == 1) {         flag_nogateway_mode = 0;         CORE_DEBUG(PSTR(&quot;MyS: NORMAL GATEWAY MODE\\n&quot;));         err_delivery_beat = 0;       }     } else {       _transportSM.failedUplinkTransmissions = 0;       if (err_delivery_beat &lt; 6) {         err_delivery_beat++;       }       if (err_delivery_beat == 5) {         if (flag_nogateway_mode == 0) {           gateway_fail();           CORE_DEBUG(PSTR(&quot;MyS: LOST GATEWAY MODE\\n&quot;));         }       }     }     axel_time = millis();     axelIntStatus = 0;     nosleep = 0;   } else {     axelIntStatus = 0;     nosleep = 0;   } }   void send_Gerkon() {   if (digitalRead(GERKON_INT) == HIGH) {     door_status = 1;     interrupt_Init(0);   } else {     door_status = 0;     interrupt_Init(1);   }   if (door_status == 1) {     blinky(1, 1, GREEN_LED);   } else {     blinky(1, 1, RED_LED);   }   send_a = send(dwsMsg.set(door_status));   wait(50);   if (send_a == false) {     send_a = send(dwsMsg.set(door_status));     wait(100);     if (send_a == false) {       send_a = send(dwsMsg.set(door_status));       wait(150);     }   }   if (send_a == true) {     err_delivery_beat = 0;     if (flag_nogateway_mode == 1) {       flag_nogateway_mode = 0;       CORE_DEBUG(PSTR(&quot;MyS: NORMAL GATEWAY MODE\\n&quot;));       err_delivery_beat = 0;     }   } else {     _transportSM.failedUplinkTransmissions = 0;     if (err_delivery_beat &lt; 6) {       err_delivery_beat++;     }     if (err_delivery_beat == 5) {       if (flag_nogateway_mode == 0) {         gateway_fail();         CORE_DEBUG(PSTR(&quot;MyS: LOST GATEWAY MODE\\n&quot;));       }     }   }   gerkIntStatus = 0;   nosleep = 0; }   void send_Magnet() {   blinky(2, 1, BLUE_LED);   blinky(2, 1, RED_LED);   blinky(2, 1, BLUE_LED);   blinky(2, 1, RED_LED);   blinky(2, 1, BLUE_LED);   blinky(2, 1, RED_LED);   send_a = send(mMsg.set(magnet_status));   wait(50);   if (send_a == false) {     send_a = send(mMsg.set(magnet_status));     wait(100);   }   if (send_a == true) {     err_delivery_beat = 0;     if (flag_nogateway_mode == 1) {       flag_nogateway_mode = 0;       CORE_DEBUG(PSTR(&quot;MyS: NORMAL GATEWAY MODE\\n&quot;));       err_delivery_beat = 0;     }   } else {     _transportSM.failedUplinkTransmissions = 0;     if (err_delivery_beat &lt; 6) {       err_delivery_beat++;     }     if (err_delivery_beat == 5) {       if (flag_nogateway_mode == 0) {         gateway_fail();         CORE_DEBUG(PSTR(&quot;MyS: LOST GATEWAY MODE\\n&quot;));       }     }   }   magIntStatus = 0;   nosleep = 0; }   void new_device() {   hwWriteConfig(EEPROM_NODE_ID_ADDRESS, 255);   saveState(100, 255);   wdt_enable(WDTO_15MS); }   void update_Happy_transport() {   CORE_DEBUG(PSTR(&quot;MyS: UPDATE TRANSPORT CONFIGURATION\\n&quot;));   mypar = _transportConfig.parentNodeId;   if (mypar != loadState(101))   {     saveState(101, mypar);   }   if (_transportConfig.distanceGW != loadState(102))   {     saveState(102, _transportConfig.distanceGW);   }   present_only_parent();   wait(50);   nosleep = 0;   flag_update_transport_param = 0; }   void present_only_parent() {   if (old_mypar != mypar) {     CORE_DEBUG(PSTR(&quot;MyS: SEND LITTLE PRESENT:) WITH PARENT ID\\n&quot;));     if (_sendRoute(build(_msgTmp, 0, NODE_SENSOR_ID, C_INTERNAL, 6).set(mypar))) {       flag_sendRoute_parent = 0;       old_mypar = mypar;     } else {       flag_sendRoute_parent = 1;     }   } }   void happy_node_mode() {   _transportSM.findingParentNode = false;   _transportSM.transportActive = true;   _transportSM.uplinkOk = true;   _transportSM.pingActive = false;   _transportSM.failureCounter = 0;   _transportSM.uplinkOk = true;   _transportSM.failureCounter = 0u;   _transportSM.failedUplinkTransmissions = 0u;   transportSwitchSM(stReady);   CORE_DEBUG(PSTR(&quot;TRANSPORT: %d\\n&quot;), isTransportReady()); }   void gateway_fail() {   flag_nogateway_mode = 1;   flag_update_transport_param = 0;   SLEEP_TIME_W = SLEEP_NOGW; }   void check_parent() {   _transportSM.findingParentNode = true;   CORE_DEBUG(PSTR(&quot;MyS: SEND FIND PARENT REQUEST, WAIT RESPONSE\\n&quot;));   _sendRoute(build(_msg, 255, NODE_SENSOR_ID, C_INTERNAL, 7).set(&quot;&quot;));   wait(1500, C_INTERNAL, 8);   if (_msg.sensor == 255) {     if (mGetCommand(_msg) == 3) {       if (_msg.type == 8) {         Ack_FP = 1;         CORE_DEBUG(PSTR(&quot;MyS: PARENT RESPONSE FOUND\\n&quot;));       }     }   }   if (Ack_FP == 1) {     CORE_DEBUG(PSTR(&quot;MyS: FIND PARENT PROCESS\\n&quot;));     Ack_FP = 0;     transportSwitchSM(stParent);     flag_nogateway_mode = 0;     flag_find_parent_process = 1;     problem_mode_count = 0;   } else {     _transportSM.findingParentNode = false;     CORE_DEBUG(PSTR(&quot;MyS: PARENT RESPONSE NOT FOUND\\n&quot;));     _transportSM.failedUplinkTransmissions = 0;     CORE_DEBUG(PSTR(&quot;TRANSPORT: %d\\n&quot;), isTransportReady());     nosleep = 0;     if (problem_mode_count &lt; 9) {       CORE_DEBUG(PSTR(&quot;PROBLEM MODE COUNTER: %d\\n&quot;), problem_mode_count);       problem_mode_count++;       SLEEP_TIME_W = SLEEP_TIME_W + SLEEP_TIME_W;     }   } }   void find_parent_process() {   flag_update_transport_param = 1;   flag_find_parent_process = 0;   CORE_DEBUG(PSTR(&quot;MyS: STANDART TRANSPORT MODE IS RESTORED\\n&quot;));   err_delivery_beat = 0;   SLEEP_TIME_W = SLEEP_TIME;   nosleep = 0; }   void sendBatteryStatus(bool start) {   batt_cap = battery_level_in_percent(batteryVoltage);   if (start == 1) {     \/\/if (batt_cap &lt; old_batt_cap) {     sendBatteryLevel(battery_level_in_percent(batteryVoltage), 1);     wait(1500, C_INTERNAL, I_BATTERY_LEVEL);     old_batt_cap = batt_cap;     \/\/ }   } else {     sendBatteryLevel(battery_level_in_percent(batteryVoltage), 1);     wait(1500, C_INTERNAL, I_BATTERY_LEVEL);   }    linkQuality = calculationRxQuality();   if (linkQuality != old_linkQuality) {     wait(10);     sendSignalStrength(linkQuality);     wait(50);     old_linkQuality = linkQuality;   } }   bool sendSignalStrength(const int16_t level, const bool ack) {   return _sendRoute(build(_msgTmp, GATEWAY_ADDRESS, SIGNAL_Q_ID, C_SET, V_VAR1,                           ack).set(level)); } int16_t calculationRxQuality() {   int16_t nRFRSSI_temp = transportGetReceivingRSSI();   int16_t nRFRSSI = map(nRFRSSI_temp, -85, -40, 0, 100);   if (nRFRSSI &lt; 0) {     nRFRSSI = 0;   }   if (nRFRSSI &gt; 100) {     nRFRSSI = 100;   }   return nRFRSSI; }   void receive(const MyMessage &amp; message) {   if (message.sensor == LEVEL_SENSIV_V_SENS_CHILD_ID) {     if (message.type == V_VAR1) {       conf_vibro_set = message.getByte();       vibro_Init();       saveState(230, conf_vibro_set);       wait(200);       send(conf_vsensMsg.set(conf_vibro_set));       wait(200);       blinky(3, 3, GREEN_LED);       configMode = 0;       nosleep = 0;     }   } }   void vibro_Init() {   if (conf_vibro_set == 1) {     lis2-&gt;ODRTEMP = ODR_1Hz6_LP_ONLY;   }   if (conf_vibro_set == 2) {     lis2-&gt;ODRTEMP = ODR_12Hz5;   }   if (conf_vibro_set == 3) {     lis2-&gt;ODRTEMP = ODR_25Hz;   }   if (conf_vibro_set == 4) {     lis2-&gt;ODRTEMP = ODR_100Hz;   }   if (conf_vibro_set == 5) {     lis2-&gt;ODRTEMP = ODR_200Hz;   }   lis2-&gt;Enable_X();   wait(100);   lis2-&gt;Enable_Wake_Up_Detection();   wait(100); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 <a href=\"https:\/\/github.com\/smartboxchannel\/EFEKTA-DOOR-WINDOW-SENSOR\" rel=\"nofollow\">\u0433\u0438\u0442\u0435<\/a><\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0423\u0414 \u044f \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/mjdm.ru\/\" rel=\"nofollow\">\u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e<\/a>. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0432 \u0441\u0435\u0442\u0438 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0423\u0414. \u0412 \u0442\u0430\u043a\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0448\u043b\u044e\u0437 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0423\u0414. \u0412 \u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 <a href=\"https:\/\/github.com\/Shagrat2\/majordomo-mysensor\" rel=\"nofollow\">\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435<\/a>. \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043c\u0430\u0440\u043a\u0435\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0423\u0414 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb. <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/22\/ho\/ia\/22hoiaoqgc-wbzualelk3bhxks8.png\"><\/p>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0423\u0414 \u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u0430\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f:  <\/p>\n<ul>\n<li>\u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441,<\/li>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430 \u0441 OTA,<\/li>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u0440\u0430\u0437\u0443 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0435\u0442\u044f\u043c\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435(\u043c\u0443\u043b\u044c\u0442\u0433\u0435\u0439\u0442\u043e\u0432\u043e\u0441\u0442\u044c), <\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SmartSleep \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u0432, <\/li>\n<li>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f, <\/li>\n<li>\u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, <\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0441\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, heartbeat, \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430,<\/li>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430 \u0441 NodeManager<\/li>\n<\/ul>\n<p>  \u0415\u0441\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 serial \u0448\u043b\u044e\u0437\u043e\u0432, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e \u043f\u0440\u0438\u043a\u0430\u0437\u0430\u043b\u0430 \u0434\u043e\u043b\u0433\u043e \u0436\u0438\u0442\u044c \u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041c\u043d\u0435 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0433\u0435\u0439\u0442\u043e\u0432 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043b\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u044f \u0443\u0437\u043d\u0430\u043b \u043e \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u0431\u0435\u0449\u0430\u043b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043d\u043e\u0432\u0430 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044e 2019 \u0433\u043e\u0434\u0430, \u043d\u043e \u043e\u0441\u0435\u043d\u044c 19-\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u0430, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0435\u0440\u0438\u0430\u043b \u0448\u043b\u044e\u0437\u043e\u0432 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435\u0442 :(.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0441 \u041c\u0430\u0436\u043e\u0440\u0434\u043e\u043c\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c mqtt \u0448\u043b\u044e\u0437\u044b \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u044c \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441, \u0430 \u0447\u0435\u0440\u0435\u0437 MQTT \u043c\u043e\u0434\u0443\u043b\u044c.<\/p>\n<p>  \u0412 \u043c\u043e\u0435\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0443\u0434\u0430\u0440\u0430 \u0438 \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043f\u0440\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0438 \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041c\u043e\u0434\u0443\u043b\u044c \u00ab\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0432\u0430\u00bb \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432, \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u2014 \u043e\u0431\u0449\u0438\u0439 \u0434\u0430\u0442\u0447\u0438\u043a, \u043d\u043e \u0435\u0433\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430. \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u0447\u0442\u043e \u0431\u044b \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432 \u0442\u0430\u0439\u043c\u0435\u0440\u0435 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u043e\u043b\u044c. \u041d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 \u2014 \u00ab\u0441\u0442\u0430\u0442\u0443\u0441 \u0430\u043f\u0434\u0435\u0439\u0442\u00bb, \u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u043d\u043e\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043c\u043e\u0439 \u0434\u0435\u0432\u0430\u0439\u0441, \u0430 \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u043e\u043b\u044c. \u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u0441\u044f \u0441\u043e\u0441\u043e\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u04301 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e2 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e2 \u043d\u043e\u043b\u044f. \u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c2, \u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0441 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c1.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ne\/n0\/ui\/nen0uibfj0kw4wuupvbxr9z7zoo.png\">  <\/p>\n<pre><code class=\"php\">if($this-&gt;getProperty('value2') == '1'){ $this-&gt;setProperty('status','1'); } <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434 \u0441\u0442\u0430\u0442\u0443\u0441 \u0430\u043f\u0434\u0435\u0439\u0442 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430:  <\/p>\n<pre><code class=\"php\">if (gg(&quot;MysensorsSmoke03.status&quot;) == &quot;1&quot;) { SetTimeOut('AlarmShock','sg(&quot;MysensorsSmoke03.status&quot;,&quot;0&quot;);',10); } <\/code><\/pre>\n<p>  <b>\u0412\u0438\u0434\u0435\u043e \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0434\u0430\u0442\u0447\u0438\u043a\u0430<\/b> \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Majordomo \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 Majordroid. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0430\u043c \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u0430\u0448\u0438 \u043b\u0430\u0439\u043a\u0438 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043e\u0431\u043e \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u0430 \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430, \u043d\u0443 \u0430 \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u043a\u043e\u043b\u043e\u043a\u043e\u043b\u044c\u0447\u0438\u043a \u0432\u044b \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0441 \u043c\u043e\u0438\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438 ;).  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/OmclWv2vLog?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u041f\u043b\u0430\u0442\u0430 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0431\u044b\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0414\u0438\u043f\u0422\u0440\u0435\u0439\u0441. \u041e\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u043a\u043e\u0433\u0434\u0430 \u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043c\u043e\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u043c\u0435\u0447\u0443 \u0447\u0442\u043e \u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0449\u0438\u043a\u043e\u043c, \u043c\u043e\u0439 \u0441\u0442\u0430\u0436 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043b\u0430\u0442 \u0433\u043e\u0434\u0430 \u043f\u043e\u043b\u0442\u043e\u0440\u0430-\u0434\u0432\u0430. \u0412\u0441\u0435\u043c \u043a\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0430\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u044e\u0442\u0443\u0431 \u043f\u043e\u043b\u043e\u043d \u0432\u0438\u0434\u0435\u043e\u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qh\/qn\/oc\/qhqnocyny82yvitjx84lso-irzo.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dw\/vi\/ez\/dwviez3dctkm_yuxfawnlto9lrm.png\"><\/p>\n<p>  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0447\u0438\u043f\u043e\u0432 nRF5 \u0432 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0431\u0438\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Sandeep Mistry \u2014 arduino-nRF5. \u041d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u0438\u043b\u0442\u043e\u0442\u0435\u043a\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0447\u0438\u043f\u043e\u0432 nRF52840, nRF52810 \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0447\u0438\u043f\u043e\u0432 nRF52811. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u043a \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0447\u0438\u043f\u043e\u0432, \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0438\u0437 SDK Nordic. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0444\u0442\u0434\u0435\u0432\u0430\u0439\u0441 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442, \u0438 \u043d\u0435\u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u041f\u043e\u0440\u0442\u04301 \u0434\u043b\u044f \u0447\u0438\u043f\u043e\u0432 nRF52840. \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0435\u043d\u0435\u043d\u044b \u043c\u043e\u0438 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0438 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u0435\u0449\u0435 <a href=\"https:\/\/habr.com\/ru\/users\/dab0g\/\">\u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441<\/a> \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 nRF52840 \u0443\u0436\u0435 \u0441 \u043f\u043e\u0440\u0442\u043e\u043c1, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0438\u043d\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0440\u0435.<\/p>\n<p>  \u041a\u043e\u0440\u043f\u0443\u0441 \u0434\u043b\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0421\u043e\u043b\u0438\u0434\u0412\u043e\u0440\u043a\u0441, \u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u043b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0443\u0440\u043e\u043a\u0430\u043c \u043d\u0430 \u042e\u0442\u0443\u0431 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434. \u041a\u043e\u0440\u043f\u0443\u0441 \u0431\u044b\u043b \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d \u043d\u0430 SLA \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0435 ANYCUBIC FOTON. \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0447\u0430\u0442\u0438 \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0441 \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u0435\u0434\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0423\u0424 \u0441\u043c\u043e\u043b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0430\u043a\u0438\u0435 \u0431\u044b\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435: \u0414\u043b\u0438\u043d\u043d\u0430 43\u043c\u043c, \u0428\u0438\u0440\u0438\u043d\u0430 26\u043c\u043c, \u0412\u044b\u0441\u043e\u0442\u0430 12.5\u043c\u043c. \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u0441 \u043c\u0430\u0433\u043d\u0438\u0442\u043e\u043c: \u0414\u043b\u0438\u043d\u043d\u0430 37\u043c\u043c, \u0428\u0438\u0440\u0438\u043d\u0430 11\u043c\u043c, \u0412\u044b\u0441\u043e\u0442\u0430 12,5\u043c\u043c.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/my\/hm\/97\/myhm97dmggj8d7sdauhlx9oyk5c.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wz\/9j\/cy\/wz9jcyajh87x1l7zlncvy_eb1sy.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/e4\/u-\/rw\/e4u-rwqymkdi701zplhs_b3kn-e.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/r1\/ve\/h4\/r1veh45ljjnvdwjlappikjgxr_g.png\"><\/p>\n<p>  \u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0432\u043e \u0441\u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043e\u0442 4\u043c\u043a\u0410 \u0434\u043e 7\u043c\u043a\u0410, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u043f\u0430. \u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e 8\u043c\u0410.<br \/>  \u0412 \u0434\u0430\u0442\u0447\u0438\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0430 CR2032. \u0412\u0441\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c \u00ab\u043c\u0443\u043b\u044c\u0442\u0438\u0444\u0430\u0439\u043b\u0435\u0440\u043e\u043c\u00bb \ud83d\ude42 \u0432 \u0432\u0438\u0434\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u0430 \u0438\u0437 \u0437\u0430 \u0435\u0433\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 :(.<\/p>\n<p>  \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0441\u043a\u0435\u0442\u0447\u0435\u043c \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439. \u0414\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430, \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0413\u0438\u0442\u0445\u0430\u0431\u0435 (<a href=\"https:\/\/github.com\/smartboxchannel\/EFEKTA-DOOR-WINDOW-SENSOR\" rel=\"nofollow\">\u0433\u0435\u0440\u0431\u0435\u0440, \u043a\u043e\u0434, \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u0432<\/a>).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u0442\u043e \u0433\u043e\u0442\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u041f\u041e \u043f\u043e\u0434 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b ZIGBEE, \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0430\u044e.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c, \u0442\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 <b>\u041c\u0430\u0439\u0441\u0435\u043d\u0441\u043e\u0440\u0441<\/b>, \u043d\u043e \u0438 <b>Zigbee<\/b> \u0438 <b>BLE<\/b> \u043d\u0430 nRF5, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e \u0432\u0441\u0435\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e nRF52 \u0432 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u0418\u0414\u0415 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0435\u0439.<\/p>\n<p>  \u0422\u0415\u041b\u0415\u0413\u0420\u0410\u041c \u0427\u0410\u0422 \u0413\u0414\u0415 \u041e\u0411\u0418\u0422\u0410\u042e \u042f \u0418 \u0422\u0410\u041a\u0418\u0415 \u041a\u0410\u041a \u042f \u2014 <a href=\"https:\/\/tgclick.com\/mysensors_rus\" rel=\"nofollow\">@MYSENSORS_RUS<\/a>.<\/p>\n<p>  \u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430!<\/p><\/div>\n<p> \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\/post\/490476\/\"> https:\/\/habr.com\/ru\/post\/490476\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490476\/\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0432\u0441\u0435\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0425\u0430\u0431\u0440\u0430 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u00abDIY \u0438\u043b\u0438 \u0421\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb! \u0410 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043b\u0438 \u0447\u0435\u0433\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a\u043e\u0433\u043e-\u0440\u0430\u0441\u0442\u0430\u043a\u043e\u0433\u043e, \u044f \u0436\u0435 \u0430\u0440\u0434\u0443\u0438\u043d\u0448\u0438\u043a, \u043c\u043d\u0435 \u043c\u043e\u0436\u043d\u043e,\u2026 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u0444\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u0431\u0438\u043d\u0430\u043c\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c :). \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u043e\u043b\u0433\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u043a\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0435\u043b\u0430\u044e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0447\u0438\u043f\u0430\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Nordic Semiconductor. \u0414\u0430\u0442\u0447\u0438\u043a \u0440\u0435\u0448\u0438\u043b \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043e\u0434\u043d\u0443 \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52840, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043d\u0430 \u0447\u0438\u043f\u0435 nRF52811. <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zu\/u9\/48\/zuu948wn8duosrmce4hvtao1une.jpeg\">  <\/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-299476","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299476","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=299476"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299476\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=299476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=299476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=299476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}