{"id":463086,"date":"2025-06-12T21:00:11","date_gmt":"2025-06-12T21:00:11","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=463086"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=463086","title":{"rendered":"<span>DIY BCI-\u0448\u043b\u0435\u043c \u043d\u0430 Arduino \u0438 TinyML: \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u043c \u044d\u043c\u043e\u0446\u0438\u0438 \u0441\u0438\u043b\u043e\u0439 \u043c\u044b\u0441\u043b\u0438 (\u043d\u0443 \u043f\u043e\u0447\u0442\u0438)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0435 \u0441\u0443\u043f\u0435\u0440\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0438 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u043e\u0442 \u0441\u044b\u0440\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u043c\u0438 \u043d\u0430 \u043b\u0431\u0443 \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 BCI-\u0448\u043b\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 Arduino \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0437\u0433\u0430 (\u0442\u043e\u0447\u043d\u0435\u0435, \u043b\u043e\u0431\u043d\u044b\u0445 \u0434\u043e\u043b\u0435\u0439) \u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 TinyML \u00ab\u0440\u0435\u0448\u0430\u0435\u0442\u00bb, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043b\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043b\u0451\u0433\u043a\u043e\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u2014 \u0431\u0435\u0437 Biopack, \u0431\u0435\u0437 OpenBCI, \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0437\u0430\u0442\u0440\u0430\u0442 (\u043f\u0430\u0440\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432), \u043d\u043e \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0432 \u0434\u0435\u0442\u0430\u043b\u0438: \u0441\u0445\u0435\u043c\u044b, \u043a\u043e\u0434, \u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0430\u044f \u0434\u043e\u0437\u0430 \u0441\u0430\u0440\u043a\u0430\u0437\u043c\u0430.  <\/p>\n<p>\u0423\u0432\u0438\u0434\u0435\u0432 \u0432 \u043a\u0440\u0430\u0443\u0434\u0444\u0430\u043d\u0434\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u0435 \u043d\u043e\u0432\u044b\u0439 \u00ab\u043c\u043e\u0437\u0433\u043e\u0432\u043e\u0439 \u0448\u043b\u0435\u043c\u00bb, \u0430\u0432\u0442\u043e\u0440 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0443\u043c\u0430\u043b: \u00ab\u041d\u0443, \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0448\u0442\u0443\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u043a\u0440\u0430\u0441\u0442\u0438\u043d\u0430\u0446\u0438\u0438\u00bb. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0437\u0430 $100 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443, \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u0435: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 Arduino \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u043c\u0438 \u0438 \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e TinyML \u00ab\u043e\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u00bb \u044d\u043c\u043e\u0446\u0438\u044e?<\/p>\n<p>\u041a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u0440\u043e\u0431\u044b\u0432\u0448\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c (\u0442\u0435\u0445\u043d\u0430\u0440\u044c \u0441 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0448\u0443\u043c\u0435 \u043c\u043e\u0437\u0433\u0430), \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b: \u0434\u0430, \u043c\u043e\u0436\u043d\u043e. \u0425\u043e\u0442\u044c \u0438 \u0441 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u2014 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f: \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0437\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c, \u043a\u0443\u0434\u0430 \u043a\u043b\u0430\u0441\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u044b\u0448\u0435\u0447\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u044b\u0441\u043b\u0435\u0439 \u043f\u0440\u043e \u043a\u043e\u0444\u0435, \u043a\u0430\u043a \u0441\u043e\u0431\u0440\u0430\u0442\u044c TinyML-\u043c\u043e\u0434\u0435\u043b\u044c, \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0434 Arduino \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00ab\u043d\u0435\u0440\u0432\u043d\u044b\u0439\u00bb \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u0432\u0436\u0438\u0432\u0443\u044e. \u041f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<hr\/>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u043c\u043e\u0446\u0438\u0438 \u0438 EEG?<\/h3>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0436\u0435\u043b\u0435\u0437\u043e, \u043f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0414\u0435\u043d\u044c\u0433\u0438 Google \u0438 Facebook \u0443\u0436\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043b\u0438\u0446, \u0438\u043d\u0442\u043e\u043d\u0430\u0446\u0438\u0439 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u043a\u0430\u0442\u044c \u00ab\u043b\u0430\u0439\u043a\u00bb. \u041d\u043e \u0432\u043e\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u043e\u043b\u043d \u043c\u043e\u0437\u0433\u0430 (\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u044d\u043d\u0446\u0435\u0444\u0430\u043b\u043e\u0433\u0440\u0430\u0444\u0438\u044f, EEG) \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0438\u043c\u043d\u044b\u0435: \u0447\u0442\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u0435 \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 BCI (Brain\u2013Computer Interface) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043e\u0432 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u0438 \u0437\u0430 \u0441\u043e\u0442\u043d\u0438 \u0438\u043b\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0c8\/6ae\/f7e\/0c86aef7eed2072569ceb9a96125b91a.png\" width=\"1024\" height=\"1536\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0c8\/6ae\/f7e\/0c86aef7eed2072569ceb9a96125b91a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0c8\/6ae\/f7e\/0c86aef7eed2072569ceb9a96125b91a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0417\u0430\u0447\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u044d\u043c\u043e\u0446\u0438\u0438?<\/strong><\/p>\n<ol>\n<li>\n<p><strong>\u0418\u0433\u0440\u044b \u0438 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f.<\/strong> \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u043c \u043d\u0435 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u0430 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 (\u043d\u0443 \u0438\u043b\u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043a\u0446\u0438\u0435\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u043f\u043e\u043c\u043e\u0449\u044c \u043b\u044e\u0434\u044f\u043c.<\/strong> \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u0435\u0441\u0441 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c: \u00ab\u0414\u0430\u0432\u0430\u0439 \u0434\u044b\u0448\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0435\u0435\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b.<\/strong> \u041f\u043e\u043d\u044f\u0442\u044c \u0441\u0435\u0431\u044f, \u0441\u0432\u043e\u0438\u0445 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438\u043b\u0438 \u043b\u0430\u0431\u043e\u0440\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u043e\u0442\u0448\u0443\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443: \u00ab\u041e\u0439, \u0447\u0442\u043e-\u0442\u043e \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u041c\u044b \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0442\u0440\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u00ab\u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2014 \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043b\u0451\u0433\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e (\u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u044c). \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430: \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c, \u0441\u043d\u044f\u0442\u044b\u043c \u043d\u0430 \u043b\u0438\u0431\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0445 (\u043d\u0435 \u043c\u0435\u0434\u0432\u0435\u0436\u044c\u0438\u0445, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445) \u043b\u043e\u0431\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u0445, \u043d\u0430 Arduino Nano 33 BLE Sense \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u043c \u00ab\u0443\u043c\u043d\u043e\u043c\u00bb \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0434\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0442\u0440\u0451\u0445 \u043c\u0435\u0442\u043e\u043a: \u201ccalm\u201d, \u201cfocus\u201d, \u201cconfused\u201d.<\/p>\n<hr\/>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u0441\u0445\u0435\u043c\u044b: \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b<\/h3>\n<h4>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h4>\n<ul>\n<li>\n<p><strong>AD8232 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0441\u043d\u044f\u0442\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445\/\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043a\u0430\u0440\u0434\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445\/\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u044d\u043d\u0446\u0435\u0444\u0430\u043b\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/strong>. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044c-\u0431\u0440\u0435\u0439\u043a-\u0430\u0443\u0442 \u0437\u0430 $5\u20137. \u041e\u043d \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u043d\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441 \u043b\u043e\u0431\u043d\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u0430\u043f\u0438\u0435\u0439 \u0441\u043e\u0439\u0434\u0451\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b (\u00ab\u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0438\u0433\u043b\u0430\u00bb \u0438\u043b\u0438 \u043b\u0438\u043f\u0443\u0447\u0438\u0435 \u0434\u0438\u0441\u043a\u0438 \u0441 \u0433\u0438\u0434\u0440\u043e\u0433\u0435\u043b\u0435\u043c)<\/strong>. \u041d\u0430 \u043d\u0430\u0448\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f 3 \u0448\u0442\u0443\u043a\u0438: \u0434\u0432\u0430 \u00ab\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445\u00bb (\u043b\u0435\u0432\u044b\u0439 \u0438 \u043f\u0440\u0430\u0432\u044b\u0439 \u043b\u043e\u0431), \u043e\u0434\u0438\u043d \u00ab\u043e\u043f\u043e\u0440\u043d\u044b\u0439\u00bb (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430 \u0443\u0445\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p><strong>Arduino Nano 33 BLE Sense<\/strong> (\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 Arduino\/\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0441 Cortex-M4 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 TensorFlow Lite Micro). \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043d\u0435 Uno: \u0442\u0430\u043c \u043c\u0430\u043b\u043e\u0432\u0430\u0442\u043e Flash\/RAM \u0434\u043b\u044f TinyML.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u043e\u0434\u0430, \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430, \u0437\u0430\u0441\u0442\u0451\u0436\u043a\u0438 \u0434\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043e\u0432<\/strong> (patch-\u043a\u043b\u0435\u043c\u043c\u044b).<\/p>\n<\/li>\n<li>\n<p><strong>USB-\u043a\u0430\u0431\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e:<\/strong> \u043a\u0430\u043f\u043b\u044f \u0433\u0435\u043b\u044f, \u043f\u043b\u0430\u0441\u0442\u044b\u0440\u044c \u0438 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u043a\u043e\u0436\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/h4>\n<ol>\n<li>\n<p><strong>AD8232 \u043a Arduino<\/strong><\/p>\n<ul>\n<li>\n<p><code>LO+<\/code> (\u0432\u044b\u0445\u043e\u0434 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00abHeart Rate\/ECG Lead Off Detect\u00bb) \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><code>RA-<\/code> (Right Arm) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21161 (\u043f\u0440\u0430\u0432\u044b\u0439 \u043b\u043e\u0431).<\/p>\n<\/li>\n<li>\n<p><code>LA+<\/code> (Left Arm) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21162 (\u043b\u0435\u0432\u044b\u0439 \u043b\u043e\u0431).<\/p>\n<\/li>\n<li>\n<p><code>RL-<\/code> (Reference) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21163 (\u0437\u0430 \u0443\u0445\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p><code>OUTPUT<\/code> (\u0430\u043d\u0430\u043b\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044f) \u2500 \u043a \u043f\u0438\u043d\u0443 A0 Arduino.<\/p>\n<\/li>\n<li>\n<p><code>3.3 V<\/code> \u0438\u043b\u0438 <code>5 V<\/code> (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430) \u2500 \u043a 3.3V Arduino (Nano 33 BLE Sense \u043f\u0438\u0442\u0430\u0435\u0442 AD8232 \u043e\u0442 3.3 \u0412).<\/p>\n<\/li>\n<li>\n<p><code>GND<\/code> \u2500 \u043a \u0437\u0435\u043c\u043b\u0438 Arduino.<\/p>\n<\/li>\n<\/ul>\n<p> <em>(\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u043d\u0435 \u0441\u043f\u0443\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0432\u043e\u0437\u043d\u0438.)<\/em><\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u0443<\/strong><\/p>\n<ul>\n<li>\n<p>\u041b\u043e\u0431\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u043e\u0442\u0435\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0440\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u043b\u044c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21161 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043b\u0431\u0430 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0431\u0440\u043e\u0432\u0438, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21162 \u2014 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e \u0441\u043b\u0435\u0432\u0430. \u0422\u0440\u0435\u0442\u0438\u0439 (Reference) \u2014 \u043d\u0430 \u043a\u043e\u0441\u0442\u0438 \u0437\u0430 \u0443\u0445\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0413\u0435\u043b\u044c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f. \u0418\u043d\u0430\u0447\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0437\u0433\u0430 \u0432\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043d\u0430 \u043b\u0431\u0443 \u043e\u0442 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u0436\u0438.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u043a\u0435\u0442\u0447\u0430, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u043e \u0441 A0, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430. \u0414\u0430\u0439\u0442\u0435 \u0433\u043e\u043b\u043e\u0432\u0435 \u00ab\u043e\u0442\u0434\u043e\u0445\u043d\u0443\u0442\u044c\u00bb \u043c\u0438\u043d\u0443\u0442\u0443, \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0439\u0442\u0435\u0441\u044c, \u043d\u0435 \u043c\u043e\u0440\u0433\u0430\u0439\u0442\u0435 (\u043b\u0435\u0433\u043a\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c). \u0423\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u0443\u044e \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0443 \u0441\u043e \u00ab\u0448\u0443\u043c\u043e\u043c\u00bb. \u042d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433\u2014\u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043c\u043e\u0437\u0433 \u0432 \u043f\u043e\u043b\u043e\u0441\u0435 (0.5\u201350 \u0413\u0446), \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439 AD8232.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr\/>\n<h3>\u0421\u043d\u044f\u0442\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (Arduino + Python)<\/h3>\n<h4>\u0421\u043a\u0435\u0442\u0447 \u043d\u0430 Arduino \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u044b\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u00ab\u0441\u044b\u0440\u044b\u0445\u00bb EEG-\u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u041d\u0430 Arduino \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0435 4 ms (\u2248250 \u0413\u0446) \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 A0 \u0438 \u0448\u043b\u0451\u0442 \u0432 Serial.<\/p>\n<h3>\u041a\u043e\u0434 (C++, Arduino IDE)<\/h3>\n<pre><code class=\"cpp\">\/\/ \u0424\u0430\u0439\u043b: eeg_recorder.ino \/\/ Arduino Nano 33 BLE Sense \u0438 AD8232.   \/\/ \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 A0 \u0432 Serial (115200 \u0431\u043e\u0434).    const int eegPin = A0; const unsigned long sampleInterval = 4000;  \/\/ \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 = 250 \u0413\u0446  void setup() {   Serial.begin(115200);   delay(1000);   Serial.println(\"EEG Recorder Started\"); }  void loop() {   static unsigned long lastMicros = 0;   unsigned long now = micros();   if (now - lastMicros &gt;= sampleInterval) {     lastMicros = now;     int rawValue = analogRead(eegPin);       \/\/ \u041d\u0430 Nano 33 BLE Sense analogRead() \u0434\u0430\u0451\u0442 12-\u0431\u0438\u0442: 0\u20134095 ~ 0\u20133.3V     Serial.println(rawValue);   } }<\/code><\/pre>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 500 \u0413\u0446? \u041c\u043e\u0436\u043d\u043e, \u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0447\u0442\u043e 250 \u0413\u0446 \u0443\u0436\u0435 \u00ab\u0437\u0430 \u0433\u043b\u0430\u0437\u0430\u00bb \u0445\u0432\u0430\u0442\u0438\u0442, \u0438\u043d\u0430\u0447\u0435 \u043a\u0430\u0440\u0442\u0430 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0449\u0443\u043f\u0430\u043c\u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0437\u0430\u0448\u0443\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u00ab\u0431\u0443\u0431\u043d\u044f\u0449\u0438\u0439\u00bb \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 Nano 33 BLE Sense, \u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, STM32-\u043a\u043b\u043e\u043d, \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 <code>analogRead<\/code> \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c UART.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0417\u0430\u0445\u0432\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Python<\/h4>\n<ol>\n<li>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c Arduino \u043f\u043e USB, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c COM-\u043f\u043e\u0440\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>\/dev\/ttyUSB0<\/code> \u0438\u043b\u0438 <code>COM3<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0433\u043e\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u0438\u00bb (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u0448\u0430\u0435\u043c \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438), \u043f\u043e\u0442\u043e\u043c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u00bb (\u0431\u0435\u0440\u0451\u043c \u0432 \u0440\u0443\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0430\u0437\u043b \u0438 \u0440\u0443\u0433\u0430\u0435\u043c\u0441\u044f). \u041f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041a\u043e\u0434 (Python 3.x)<\/h3>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: data_capture.py import serial import time import csv  # \u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 COM-\u043f\u043e\u0440\u0442 SERIAL_PORT = \"COM3\"      # \u0438\u043b\u0438 \"\/dev\/ttyUSB0\" BAUD_RATE = 115200 DURATION = 30            # \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 OUTPUT_PREFIX = \"eeg_data_\"  def capture(label: str):     filename = f\"{OUTPUT_PREFIX}{label}.csv\"     with serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1) as ser, \\          open(filename, \"w\", newline='') as csvfile:         writer = csv.writer(csvfile)         writer.writerow([\"timestamp\", \"raw\"])         start_time = time.time()         print(f\"\u041d\u0430\u0447\u0430\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0438: {label}\")         while time.time() - start_time &lt; DURATION:             line = ser.readline().decode('ascii', errors='ignore').strip()             if line.isdigit():                 timestamp = time.time()                 writer.writerow([timestamp, int(line)])         print(f\"\u041a\u043e\u043d\u0435\u0446 \u0437\u0430\u043f\u0438\u0441\u0438: {label}, \u0444\u0430\u0439\u043b {filename}\")  if __name__ == \"__main__\":     for state in [\"calm\", \"focus\", \"confused\"]:         input(f\"\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u044c\u0441\u044f \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e '{state}'. \u041d\u0430\u0436\u043c\u0438 Enter, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0442\u043e\u0432.\")         capture(state)         print(\"\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043f\u0430\u0443\u0437\u0443 10 \u0441\u0435\u043a\u0443\u043d\u0434, \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u044c\u0442\u0435\u0441\u044c.\")         time.sleep(10)<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440\u0443 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u00ab\u0437\u0430\u043f\u0438\u0441\u044c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u2014 \u043a\u043e\u0433\u0434\u0430 \u0437\u0430 \u043c\u043d\u043e\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u00ab\u0433\u0434\u0435-\u0442\u043e \u043d\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434\u0435 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u0447\u0435\u0441\u0430\u0442\u044c\u0441\u044f \u0438 \u043c\u044b\u0441\u043b\u0438 \u0443\u043b\u0435\u0442\u0430\u044e\u0442, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u2014 \u0442\u0430\u043a \u0442\u043e\u0436\u0435 \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\u00bb.<\/p>\n<hr\/>\n<h3>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0440\u0438 CSV:<\/p>\n<ul>\n<li>\n<p><code>eeg_data_calm.csv<\/code><\/p>\n<\/li>\n<li>\n<p><code>eeg_data_focus.csv<\/code><\/p>\n<\/li>\n<li>\n<p><code>eeg_data_confused.csv<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 250 Hz \u00d7 30 \u0441\u0435\u043a = 7500 \u0441\u0442\u0440\u043e\u043a. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u044b\u0440\u044c\u0435\u0451, \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440: \u043e\u0442 \u043d\u0438\u0437\u043a\u0438\u0445 \u0432\u043e\u043b\u043d (&lt;1 \u0413\u0446) \u0434\u043e \u0448\u0443\u043c\u043e\u0432 50\/60 \u0413\u0446. \u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ol>\n<li>\n<p><strong>\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c (0.5\u201340 \u0413\u0446)<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u044f\u0431\u043b\u044b\u0435 DC-\u0441\u0434\u0432\u0438\u0433\u0438 \u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u00ab\u043f\u0438\u043b\u044b\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/strong>: \u0432\u0435\u0434\u044c rawValue \u043b\u0435\u0436\u0438\u0442 \u0432 [0; 4095], \u043d\u043e \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u0437\u0430\u0442\u044c<\/strong> \u043d\u0430 \u043e\u043a\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e 250 ms (\u224863 \u0441\u044d\u043c\u043f\u043b\u0430).<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443<\/strong> (label) \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u043a\u043d\u0443: 0 = calm, 1 = focus, 2 = confused.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (Python, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 NumPy + SciPy)<\/h3>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: preprocess.py import numpy as np import pandas as pd from scipy.signal import butter, lfilter  # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b FS = 250  # \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 LOWCUT = 0.5 HIGHCUT = 40.0 WINDOW_SIZE = int(0.25 * FS)  # 250ms  def load_data(filename):     df = pd.read_csv(filename)     return df[\"raw\"].values  def butter_bandpass(lowcut, highcut, fs, order=5):     nyq = 0.5 * fs     low = lowcut \/ nyq     high = highcut \/ nyq     b, a = butter(order, [low, high], btype='band')     return b, a  def bandpass_filter(data, lowcut, highcut, fs, order=4):     b, a = butter_bandpass(lowcut, highcut, fs, order=order)     y = lfilter(b, a, data)     return y  def segment_and_label(data, label):     segments = []     labels = []     for start in range(0, len(data) - WINDOW_SIZE, WINDOW_SIZE):         window = data[start:start + WINDOW_SIZE]         segments.append(window)         labels.append(label)     return np.array(segments), np.array(labels)  def preprocess_all():     X_list, y_list = [], []     for idx, state in enumerate([\"calm\", \"focus\", \"confused\"]):         raw = load_data(f\"eeg_data_{state}.csv\")         filtered = bandpass_filter(raw, LOWCUT, HIGHCUT, FS)         # \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0434\u043e [-1, 1]         filtered = 2 * (filtered - np.min(filtered)) \/ (np.ptp(filtered)) - 1         segs, labs = segment_and_label(filtered, idx)         X_list.append(segs)         y_list.append(labs)     X = np.vstack(X_list)     y = np.concatenate(y_list)     return X, y  if __name__ == \"__main__\":     X, y = preprocess_all()     print(\"\u0424\u043e\u0440\u043c\u0430 X:\", X.shape)  # \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e ( (7500\/63*3) , 63 )     print(\"\u0424\u043e\u0440\u043c\u0430 y:\", y.shape)     # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f     np.save(\"X.npy\", X)     np.save(\"y.npy\", y)<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432, \u0447\u0442\u043e \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u00ab\u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442\u00bb \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438, \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u043f\u043b\u0430\u043a\u0430\u043b. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c min\/max \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043b\u0430\u0434\u043d\u044f\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0430\u043a, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e.<\/p>\n<hr\/>\n<h3>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 TinyML-\u043c\u043e\u0434\u0435\u043b\u0438 \u0432 Python<\/h3>\n<p>\u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c (1D CNN), \u0447\u0442\u043e\u0431\u044b Arduino Nano 33 BLE Sense \u0432\u043c\u0435\u0441\u0442\u0438\u043b \u0432\u0441\u0451 \u0432 Flash \u0438 RAM.<\/p>\n<h4>\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: train_model.py import numpy as np from sklearn.model_selection import train_test_split  # \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 X = np.load(\"X.npy\")  # \u0444\u043e\u0440\u043c\u0430: (n_samples, WINDOW_SIZE) y = np.load(\"y.npy\")  # (n_samples,)  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u0430 (\u0434\u043b\u044f Conv1D) X = X.reshape(-1, X.shape[1], 1)  # \u0414\u0435\u043b\u0438\u043c \u043d\u0430 train\/validation X_train, X_val, y_train, y_val = train_test_split(     X, y, test_size=0.2, random_state=42, stratify=y )  print(\"\u0420\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438:\", X_train.shape, y_train.shape) print(\"\u0420\u0430\u0437\u043c\u0435\u0440 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438:\", X_val.shape, y_val.shape)<\/code><\/pre>\n<h4>\u0428\u0430\u0433 2: \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c (TensorFlow 2.x)<\/h4>\n<pre><code class=\"python\"># \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: pip install tensorflow==2.9.0 import tensorflow as tf  def build_model(input_shape):     model = tf.keras.Sequential([         tf.keras.layers.Conv1D(16, kernel_size=3, activation='relu', input_shape=input_shape),         tf.keras.layers.MaxPooling1D(pool_size=2),         tf.keras.layers.Conv1D(32, kernel_size=3, activation='relu'),         tf.keras.layers.MaxPooling1D(pool_size=2),         tf.keras.layers.Flatten(),         tf.keras.layers.Dense(32, activation='relu'),         tf.keras.layers.Dense(3, activation='softmax')     ])     return model  model = build_model((X_train.shape[1], 1)) model.compile(optimizer='adam',               loss='sparse_categorical_crossentropy',               metrics=['accuracy'])  model.summary()<\/code><\/pre>\n<h4>\u0428\u0430\u0433 3: \u041e\u0431\u0443\u0447\u0430\u0435\u043c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c<\/h4>\n<pre><code class=\"python\">EPOCHS = 20 BATCH_SIZE = 32  history = model.fit(     X_train, y_train,     epochs=EPOCHS,     batch_size=BATCH_SIZE,     validation_data=(X_val, y_val) )  model.evaluate(X_val, y_val) # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 Keras HDF5, \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0432 TFLite model.save(\"eeg_emotion_model.h5\")<\/code><\/pre>\n<blockquote>\n<p><strong>\u041b\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0430\u0432\u0442\u043e\u0440\u0430:<\/strong><br \/>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u044d\u043f\u043e\u0445\u0438 Accuracy \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0443\u043f\u0430\u043b \u0434\u043e 33%, \u0438 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u043f\u0430\u043b\u043e. \u041d\u043e \u0441\u043f\u0443\u0441\u0442\u044f 5 \u044d\u043f\u043e\u0445 (\u0438 \u043f\u043e \u043f\u0430\u0440\u0435 \u0447\u0430\u0448\u0435\u043a \u043a\u0440\u0435\u043f\u043a\u043e\u0433\u043e \u043a\u043e\u0444\u0435) \u043c\u043e\u0434\u0435\u043b\u044c \u00ab\u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u0430\u00bb, \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u00ab\u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0438\u044f\u00bb \u043e\u0442 \u00ab\u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u00bb. \u0412\u0430\u0436\u043d\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u0442\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0430\u0447\u0435 \u0441\u0435\u0442\u044c \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u2026 \u043a\u0430\u043a \u0432\u044b \u0447\u0435\u0441\u0430\u043b\u0438 \u0437\u0430\u0442\u044b\u043b\u043e\u043a.<\/p>\n<\/blockquote>\n<hr\/>\n<h3>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 TensorFlow Lite \u0434\u043b\u044f Arduino<\/h3>\n<p>TinyML = TensorFlow Lite Micro. \u041d\u0435 \u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f, \u0433\u0434\u0435 \u00abLSTM\u00bb \u0435\u0449\u0451 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/p>\n<h3>\u0428\u0430\u0433 4: \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0432 TFLite<\/h3>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: convert_to_tflite.py import tensorflow as tf  # \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c model = tf.keras.models.load_model(\"eeg_emotion_model.h5\")  # \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 TFLite \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u00ab\u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u00bb converter = tf.lite.TFLiteConverter.from_keras_model(model) converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE] # \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0443 \u043d\u0430\u0441 float32 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e; # \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043b\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e int8. tflite_model = converter.convert()  with open(\"eeg_emotion_model.tflite\", \"wb\") as f:     f.write(tflite_model)  print(\"TFLite-\u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u043a\u0430\u043a eeg_emotion_model.tflite\")<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 (\u0431\u043e\u043b\u044c\u0448\u0435 ~200 \u041a\u0411), \u043f\u0440\u043e\u0431\u0443\u0435\u043c <strong>\u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e<\/strong>:<\/p>\n<pre><code class=\"python\">converter.optimizations = [tf.lite.Optimize.DEFAULT] def representative_dataset_generator():     for i in range(100):         yield [X_train[i].reshape(1, X_train.shape[1], 1).astype(np.float32)] converter.representative_dataset = representative_dataset_generator converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] converter.inference_input_type = tf.uint8 converter.inference_output_type = tf.uint8 tflite_quant_model = converter.convert() with open(\"eeg_emotion_model_uint8.tflite\", \"wb\") as f:     f.write(tflite_quant_model)<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u00ab\u0441\u0436\u0430\u0442\u044c\u00bb \u043c\u043e\u0434\u0435\u043b\u044c \u0441 220 \u041a\u0411 \u0434\u043e 98 \u041a\u0411, \u043f\u043e\u0442\u0435\u0440\u044f\u0432 2% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0442 [-1,1] \u043a [0,255]), \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 Flash.<\/p>\n<hr\/>\n<h3>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0430 Arduino Nano 33 BLE Sense<\/h3>\n<h4>\u0428\u0430\u0433 5: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h4>\n<ol>\n<li>\n<p><strong>Arduino IDE 2.x<\/strong> \u0438\u043b\u0438 <strong>PlatformIO<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <strong>Arduino Mbed os CMSIS Pack<\/strong> \u0434\u043b\u044f Nano 33 BLE.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 IDE \u043f\u0430\u043a\u0435\u0442 <strong>Eloquent TinyML<\/strong> (\u0438\u043b\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e <strong>TensorFlow Lite Micro<\/strong> \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443).<\/p>\n<\/li>\n<\/ol>\n<h4>\u0428\u0430\u0433 6: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 TFLite-\u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442<\/h4>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 <code>eeg_emotion_model.tflite<\/code> \u2192 <code>model.tflite<\/code> \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 <code>data\/<\/code> \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0434\u043b\u044f Arduino IDE \u044d\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 <code>.ino<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0434\u0435\u0444\u0430\u0439\u043d \u0432 \u0448\u0430\u043f\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">#define MODEL_NAME model #include \"model.h\"  \/\/ \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 model.tflite #include &lt;TensorFlowLite.h&gt; #include &lt;tensorflow\/lite\/micro\/all_ops_resolver.h&gt; #include &lt;tensorflow\/lite\/micro\/micro_interpreter.h&gt; #include &lt;tensorflow\/lite\/schema\/schema_generated.h&gt; #include &lt;tensorflow\/lite\/version.h&gt;<\/code><\/pre>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>xxd<\/strong> \u0434\u043b\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 TFLite\u2192C-\u043c\u0430\u0441\u0441\u0438\u0432:<\/p>\n<pre><code class=\"bash\">xxd -i eeg_emotion_model.tflite &gt; model.h<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u0432 Arduino IDE \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u0444\u0430\u0439\u043b TFLite \u0432 \u043f\u0430\u043f\u043a\u0443 <code>data\/<\/code> (Eloquent TinyML \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b).<\/p>\n<\/li>\n<\/ul>\n<h4>\u0428\u0430\u0433 7: \u041a\u043e\u0434 Arduino (C++)<\/h4>\n<pre><code class=\"cpp\">\/\/ \u0424\u0430\u0439\u043b: eeg_inference.ino #include &lt;Arduino.h&gt; #include &lt;Arduino_LSM9DS1.h&gt;    \/\/ \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f Nano 33 BLE Sense #include \"model.h\"              \/\/ \u0437\u0434\u0435\u0441\u044c TFLite-\u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 #include &lt;TensorFlowLite.h&gt; #include &lt;tensorflow\/lite\/micro\/all_ops_resolver.h&gt; #include &lt;tensorflow\/lite\/micro\/micro_interpreter.h&gt; #include &lt;tensorflow\/lite\/schema\/schema_generated.h&gt; #include &lt;tensorflow\/lite\/version.h&gt;  const int eegPin = A0; const int FS = 250;             \/\/ \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 const int WINDOW_SIZE = 63;     \/\/ \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0438\u0437 Python-\u043a\u043e\u0434\u0430 const float ADC_REF = 3.3f; const int ADC_MAX = 4095;       \/\/ 12-\u0431\u0438\u0442\u043d\u044b\u0439 A\/D. Nano 33 BLE Sense  \/\/ Buffers float input_buffer[WINDOW_SIZE]; int buffer_index = 0; bool buffer_full = false;  \/\/ TensorFlow Lite globals namespace {   constexpr int kTensorArenaSize = 50 * 1024; \/\/ 50 KB, \u043f\u0440\u0430\u0432\u0438\u043c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f   uint8_t tensor_arena[kTensorArenaSize]; }  tflite::MicroInterpreter* interpreter = nullptr; TfLiteTensor* input = nullptr; TfLiteTensor* output = nullptr;  void setup() {   Serial.begin(115200);   while (!Serial);    \/\/ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 TFLite   const tflite::Model* model = ::tflite::GetModel(model_tflite);   static tflite::MicroMutableOpResolver&lt;10&gt; resolver;   resolver.AddConv1D();   resolver.AddMaxPool1D();   resolver.AddFullyConnected();   resolver.AddSoftmax();   resolver.AddReshape();   \/\/ \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438    static tflite::MicroInterpreter static_interpreter(     model, resolver, tensor_arena, kTensorArenaSize);   interpreter = &amp;static_interpreter;    if (interpreter-&gt;AllocateTensors() != kTfLiteOk) {     Serial.println(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043d\u0437\u043e\u0440\u044b\");     while (1);   }    input = interpreter-&gt;input(0);   output = interpreter-&gt;output(0);    pinMode(eegPin, INPUT);   Serial.println(\"BCI EEg inference started\"); }  void loop() {   static unsigned long lastMicros = 0;   unsigned long now = micros();   const unsigned long sampleInterval = 1000000 \/ FS;  \/\/ 4 000 \u043c\u043a\u0441    if (now - lastMicros &gt;= sampleInterval) {     lastMicros = now;     \/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u044b\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435     int raw = analogRead(eegPin);     \/\/ \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d [-1, 1]     float norm = (2.0f * raw \/ ADC_MAX) - 1.0f;     input_buffer[buffer_index++] = norm;     if (buffer_index &gt;= WINDOW_SIZE) {       buffer_index = 0;       buffer_full = true;     }   }    if (buffer_full) {     buffer_full = false;     \/\/ \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043d\u0437\u043e\u0440 input     for (int i = 0; i &lt; WINDOW_SIZE; ++i) {       input-&gt;data.f[i] = input_buffer[i];     }     \/\/ \u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441     if (interpreter-&gt;Invoke() == kTfLiteOk) {       \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0435\u0442\u043a\u0443       float maxScore = output-&gt;data.f[0];       int maxIndex = 0;       for (int i = 1; i &lt; 3; ++i) {         if (output-&gt;data.f[i] &gt; maxScore) {           maxScore = output-&gt;data.f[i];           maxIndex = i;         }       }       \/\/ 0=calm,1=focus,2=confused       const char* labels[] = {\"Calm\", \"Focus\", \"Confused\"};       Serial.print(\"Predicted: \");       Serial.print(labels[maxIndex]);       Serial.print(\" (\");       Serial.print(maxScore * 100, 1);       Serial.println(\"%)\");     } else {       Serial.println(\"Inference error\");     }   } }<\/code><\/pre>\n<p><strong>\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0438\u043b\u0435 \u201c\u0447\u0442\u043e \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u043e\u0433\u043e\u201d:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>ADC \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 0\u20134095<\/strong> \u2192 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0432 float [-1;1], \u043a\u0430\u043a \u0432 Python.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u043a\u043d\u043e 63 \u0441\u044d\u043c\u043f\u043b\u0430<\/strong>: \u043c\u044b \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 63 \u0448\u0442\u0443\u043a\u0438 \u0437\u0430 0.252 \u0441\u0435\u043a. \u0427\u0443\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0443 Python (\u0442\u0430\u043c \u0447\u0438\u0441\u0442\u044b\u0439 NumPy).<\/p>\n<\/li>\n<li>\n<p><strong>TensorArena 50 \u041a\u0411<\/strong>: \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0438\u043b\u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 <code>AllocateTensors()<\/code>, \u043d\u0430\u0434\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043b\u043e\u0451\u0432 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u043f\u043e\u0440\u0442\u0430 Arduino \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:<\/p>\n<pre><code>BCI EEg inference started Predicted: Calm (87.3%) Predicted: Calm (90.1%) Predicted: Focus (75.4%) Predicted: Focus (80.2%) Predicted: Confused (63.7%) \u2026<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0443\u0431\u0435\u0434\u0438\u043b\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0448\u0443\u0442\u0438\u043b \u0441\u0430\u043c \u043d\u0430\u0434 \u0441\u043e\u0431\u043e\u0439 (\u0434\u0443\u043c\u0430\u043b \u043e \u043f\u0438\u0446\u0446\u0435), \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043f\u0438\u0441\u0430\u043b\u0430 \u201cConfused (45%)\u201d \u2014 \u0432\u0438\u0434\u0438\u043c\u043e, \u043f\u0438\u0446\u0446\u0443 \u043d\u0435\u0434\u043e\u043f\u0435\u043a\u043b\u0438.<\/p>\n<hr\/>\n<h3>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/h3>\n<ol>\n<li>\n<p><strong>\u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430.<\/strong> \u00ab\u0421\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0435\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0441\u0438\u0434\u044f \u0431\u0435\u0437\u00a0\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0438 \u0441\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 (\u0438\u043d\u0430\u0447\u0435 \u0447\u0430\u0441\u0442\u0438\u0446\u044b \u0441\u0432\u0435\u0442\u0430 \u00ab\u0448\u0443\u043c\u044f\u0442\u00bb \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434). \u00ab\u041a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u044f\u00bb\u00a0\u2014 \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432\u0441\u043b\u0443\u0445 (\u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0437\u0433 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0441\u044f). \u00ab\u0421\u043c\u0443\u0449\u0435\u043d\u0438\u0435\u00bb\u00a0\u2014 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0430 \u043f\u043e\u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438\u00a0\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043c\u0435\u0445\u0438 (\u0437\u0432\u043e\u043d \u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0432\u043e\u043b\u043d\u044b).<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438.<\/strong> \u0412\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 (\u043f\u0440\u0438 63\u2013\u043e\u043a\u043d\u0430\u0445) \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0434\u0430\u0432\u0430\u043b\u0430 ~60% \u0432\u00a0\u0442\u0440\u0451\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445. \u0417\u0430\u0442\u0435\u043c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u043b\u043e\u0439, \u0434\u043e\u0448\u043b\u043e \u0434\u043e 75%. \u041d\u0430\u00a0Arduino, \u043f\u043e\u0441\u043b\u0435 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0443\u043f\u0430\u043b\u043e \u0432\u00a0\u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0434\u043e 70% (\u043e\u043a\u043e\u043b\u043e 35\u201340% \u0434\u043b\u044f \u00abConfused\u00bb). \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u00ab\u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e\u00bb \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u00ab\u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0438\u044e\u00bb \u043f\u043e\u00a0\u0443\u0434\u0430\u0440\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0431\u043e\u0440 \u00ab\u0436\u0438\u0432\u044b\u0445\u00bb \u0434\u0430\u043d\u043d\u044b\u0445.<\/strong> \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0430\u0432\u0442\u043e\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0430\u0443\u0434\u0438\u043e\u2011\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>\u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430 (30 \u0441\u0435\u043a),<\/p>\n<\/li>\n<li>\n<p>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u0430\u044f \u0440\u0435\u0447\u0435\u0432\u0430\u044f \u0440\u0435\u0447\u044c (30 \u0441\u0435\u043a),<\/p>\n<\/li>\n<li>\n<p>\u0445\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u0448\u0443\u043c (\u043a\u0440\u0438\u043a\u0438 \u043a\u043e\u0442\u0438\u043a\u043e\u0432 \u0438 \u0437\u0432\u0443\u043a \u043a\u0430\u043f\u0430\u044e\u0449\u0435\u0439 \u0432\u043e\u0434\u044b).<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u043b\u0430 \u0447\u0443\u0442\u044c \u00ab\u0443\u043c\u043d\u0435\u0435\u00bb \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0428\u0443\u043c \u0438 \u043f\u043e\u043c\u0435\u0445\u0438.<\/strong> \u041f\u0435\u0440\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u043e\u0436\u044c \u0433\u043e\u043b\u043e\u0432\u044b (\u043f\u0440\u0438 \u0441\u043c\u0435\u0445\u0435, \u043f\u0440\u044b\u0436\u043a\u0430\u0445) \u00ab\u0434\u043e\u0444\u0438\u0433\u0438\u0449\u0430\u00bb \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u0434\u0430\u0451\u0442. \u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u043c\u044f\u0433\u043a\u0430\u044f \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u0430\u044f \u0441\u0442\u044f\u0436\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0448\u043b\u0435\u043c \u043d\u0435 \u0431\u043e\u043b\u0442\u0430\u043b\u0441\u044f,<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u00ab\u043d\u0435 \u0442\u043e \u043b\u0438\u0446\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c\u00bb,<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c (\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f) \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u043c\u0443\u0432-\u043f\u0440\u0435\u0446\u0435\u043d\u0440 (\u0440\u0435\u043c\u0443\u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435). \u041d\u043e \u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u043e\u0448\u043b\u0438\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr\/>\n<h3>\u0418\u0442\u043e\u0433\u0438 \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b<\/h3>\n<h4>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/h4>\n<ul>\n<li>\n<p><strong>\u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f DIY-BCI-\u0448\u043b\u0435\u043c\u0430.<\/strong> Arduino + AD8232 + \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u2192 \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u00ab\u0433\u043e\u043b\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u043b\u043d\u044b\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>TinyML-\u043c\u043e\u0434\u0435\u043b\u044c.<\/strong> \u041f\u0440\u043e\u0441\u0442\u0430\u044f 1D CNN, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 Flash (~100 \u041a\u0411), \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Arduino \u00ab\u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u00bb (\u043e\u0434\u0438\u043d \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0435 ~0.3 \u0441\u0435\u043a).<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u043c \u0442\u0440\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/strong> \u00abCalm\u00bb, \u00abFocus\u00bb, \u00abConfused\u00bb \u0441 \u224870\u201375% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (\u043d\u0430 \u0441\u044b\u0440\u044b\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445).<\/p>\n<\/li>\n<\/ul>\n<h4>\u0422\u043e\u043d\u043a\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0430\u0432\u0442\u043e\u0440<\/h4>\n<ol>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432.<\/strong> \u041a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b <code>float32<\/code> \u043d\u0430 <code>uint8<\/code> \u0432 TinyML, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 (Python \u2192 Arduino). \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441\u0442\u043e\u0438\u043b\u043e \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0445\u0435\u043c\u0443: \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u00ab+1\u2026\u20131\u00bb \u2192 \u00ab0\u2026255\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>\u0428\u0442\u0430\u0442\u043d\u044b\u0435 ADC.<\/strong> AD8232 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0442\u044f\u043d\u0435\u0442 \u00ab\u043d\u0438\u0437\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b\u00bb (\u0434\u043e ~100 \u0413\u0446), \u043d\u043e \u0434\u043b\u044f <strong>\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439<\/strong> EEG \u043d\u0443\u0436\u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 ~250 \u0413\u0446 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 (ADS1299, 24 bit). \u041d\u0430\u0448 DIY \u2013 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u0443\u0441\u043a\u0443\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b.<\/strong> \u041f\u0440\u0438 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0435 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442 \u043c\u044b\u0448\u0446 \u043b\u0431\u0430 \u0431\u044b\u043b \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u0442 \u043c\u044b\u0441\u043b\u0438 \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u00bb. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0431\u044b\u043b\u043e: \u00ab\u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f \u0437\u0443\u0431\u043e\u0432, \u043d\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0439\u0442\u0435\u00bb.<\/p>\n<\/li>\n<\/ol>\n<h4>\u041f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b<\/h4>\n<ol>\n<li>\n<p><strong>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b.<\/strong> \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u00ab\u0433\u043d\u0435\u0432\u00bb, \u00ab\u043f\u0435\u0447\u0430\u043b\u044c\u00bb, \u00ab\u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u00bb (\u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e).<\/p>\n<\/li>\n<li>\n<p><strong>\u0423\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u044c AD8232 \u2192 ADS1115 \u0438\u043b\u0438 ADS1299.<\/strong> \u041c\u0435\u043d\u044c\u0448\u0435 \u0448\u0443\u043c\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432, \u043d\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044c I2C.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0434\u0430\u0447\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e.<\/strong> \u0415\u0441\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u043e\u043a\u043d\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 (ESP32 + Wi-Fi), \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u00ab\u0431\u043e\u043b\u044c\u0448\u0443\u044e\u00bb \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043d\u0430 Python + GPU. Arduino \u043b\u0438\u0448\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0438\u0433\u0440\u0430\u043c\u0438.<\/strong> \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0438\u0433\u0440\u043e\u043a \u043f\u0440\u044b\u0433\u0430\u0435\u0442, \u0430 \u0438\u0433\u0440\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u00ab\u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e\u00bb \u2192 \u0441\u0440\u0430\u0437\u0443 \u0431\u0435\u0440\u0451\u0442 \u043f\u0430\u0443\u0437\u0443.<\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u042d\u0442\u043e\u0442 DIY-BCI-\u0448\u043b\u0435\u043c \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0437\u044b. \u0417\u0430\u0442\u043e \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u0438\u043b\u0430 \u043c\u044b\u0441\u043b\u0438 (\u043d\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043b\u0431\u0430) \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c TinyML-\u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0442\u043e-\u0442\u043e \u00ab\u0434\u0443\u043c\u0430\u0442\u044c\u00bb.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u043e\u0439, \u00ab\u043e\u0449\u0443\u0449\u0430\u0442\u044c\u00bb \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0437\u0433\u043e\u0432\u044b\u0435 \u0432\u043e\u043b\u043d\u044b \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u0442\u0447\u0438\u043a \u0441\u0442\u0440\u0435\u0441\u0441\u0430 \u0434\u043b\u044f \u00ab\u0443\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0443\u043b\u0430\u00bb), \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u0434 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u0437\u043e\u0440\u044b \u00ab\u041a\u0430\u043a \u043f\u0435\u0441\u0435\u043d\u043a\u0430 \u0412\u043e\u043a\u0435\u0440\u0430 \u0437\u0430 0.5 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0430, \u0447\u0442\u043e \u0432\u044b \u0440\u0435\u0432\u043d\u0443\u0435\u0442\u0435\u00bb, \u043d\u043e \u043f\u043e\u043a\u0430 \u0430\u0432\u0442\u043e\u0440 \u043f\u0438\u0448\u0435\u0442 \u044d\u0442\u043e, \u0441\u0438\u0434\u044f \u0432 \u0437\u0430\u043b\u0435, \u0434\u0443\u043c\u0430\u044f \u043e \u043f\u0438\u0446\u0446\u0435 \u0438 \u0436\u0434\u0443\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 Serial Monitor.<\/p>\n<p>\u0423\u0434\u0430\u0447\u0438 \u0432 \u0432\u0430\u0448\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445, \u043f\u0443\u0441\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u043c\u044f\u0433\u043a\u0438\u043c (\u0438 \u043d\u0435 \u0441\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u0435\u043b\u044f \u0448\u043b\u0435\u043c\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0437\u0435\u0432\u0430\u0435\u0442 \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f).<\/p>\n<hr\/>\n<p><strong>P.S.<\/strong> \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u00ab\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438\u00bb (\u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e), \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00ab\u0432\u0436\u0438\u0432\u0443\u044e \u2014 \u0447\u0435\u0440\u0435\u0437 Wi-Fi\u00bb \u0438 \u00ab\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0445\u0435\u043b\u0441-\u0434\u0430\u043d\u043d\u044b\u0435\u00bb \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/918016\/\"> https:\/\/habr.com\/ru\/articles\/918016\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0435 \u0441\u0443\u043f\u0435\u0440\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0438 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u043e\u0442 \u0441\u044b\u0440\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u043c\u0438 \u043d\u0430 \u043b\u0431\u0443 \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 BCI-\u0448\u043b\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 Arduino \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0437\u0433\u0430 (\u0442\u043e\u0447\u043d\u0435\u0435, \u043b\u043e\u0431\u043d\u044b\u0445 \u0434\u043e\u043b\u0435\u0439) \u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 TinyML \u00ab\u0440\u0435\u0448\u0430\u0435\u0442\u00bb, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043b\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043b\u0451\u0433\u043a\u043e\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u2014 \u0431\u0435\u0437 Biopack, \u0431\u0435\u0437 OpenBCI, \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0437\u0430\u0442\u0440\u0430\u0442 (\u043f\u0430\u0440\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432), \u043d\u043e \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0432 \u0434\u0435\u0442\u0430\u043b\u0438: \u0441\u0445\u0435\u043c\u044b, \u043a\u043e\u0434, \u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0430\u044f \u0434\u043e\u0437\u0430 \u0441\u0430\u0440\u043a\u0430\u0437\u043c\u0430.  <\/p>\n<p>\u0423\u0432\u0438\u0434\u0435\u0432 \u0432 \u043a\u0440\u0430\u0443\u0434\u0444\u0430\u043d\u0434\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u0435 \u043d\u043e\u0432\u044b\u0439 \u00ab\u043c\u043e\u0437\u0433\u043e\u0432\u043e\u0439 \u0448\u043b\u0435\u043c\u00bb, \u0430\u0432\u0442\u043e\u0440 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0443\u043c\u0430\u043b: \u00ab\u041d\u0443, \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0448\u0442\u0443\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u043a\u0440\u0430\u0441\u0442\u0438\u043d\u0430\u0446\u0438\u0438\u00bb. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0437\u0430 $100 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443, \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u0435: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 Arduino \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u043c\u0438 \u0438 \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e TinyML \u00ab\u043e\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u00bb \u044d\u043c\u043e\u0446\u0438\u044e?<\/p>\n<p>\u041a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u0440\u043e\u0431\u044b\u0432\u0448\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c (\u0442\u0435\u0445\u043d\u0430\u0440\u044c \u0441 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0448\u0443\u043c\u0435 \u043c\u043e\u0437\u0433\u0430), \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b: \u0434\u0430, \u043c\u043e\u0436\u043d\u043e. \u0425\u043e\u0442\u044c \u0438 \u0441 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u2014 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f: \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0437\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c, \u043a\u0443\u0434\u0430 \u043a\u043b\u0430\u0441\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u044b\u0448\u0435\u0447\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u044b\u0441\u043b\u0435\u0439 \u043f\u0440\u043e \u043a\u043e\u0444\u0435, \u043a\u0430\u043a \u0441\u043e\u0431\u0440\u0430\u0442\u044c TinyML-\u043c\u043e\u0434\u0435\u043b\u044c, \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0434 Arduino \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00ab\u043d\u0435\u0440\u0432\u043d\u044b\u0439\u00bb \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u0432\u0436\u0438\u0432\u0443\u044e. \u041f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<hr\/>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u043c\u043e\u0446\u0438\u0438 \u0438 EEG?<\/h3>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0436\u0435\u043b\u0435\u0437\u043e, \u043f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0414\u0435\u043d\u044c\u0433\u0438 Google \u0438 Facebook \u0443\u0436\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043b\u0438\u0446, \u0438\u043d\u0442\u043e\u043d\u0430\u0446\u0438\u0439 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u043a\u0430\u0442\u044c \u00ab\u043b\u0430\u0439\u043a\u00bb. \u041d\u043e \u0432\u043e\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u043e\u043b\u043d \u043c\u043e\u0437\u0433\u0430 (\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u044d\u043d\u0446\u0435\u0444\u0430\u043b\u043e\u0433\u0440\u0430\u0444\u0438\u044f, EEG) \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0438\u043c\u043d\u044b\u0435: \u0447\u0442\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u0435 \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 BCI (Brain\u2013Computer Interface) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043e\u0432 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u0438 \u0437\u0430 \u0441\u043e\u0442\u043d\u0438 \u0438\u043b\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p><strong>\u0417\u0430\u0447\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u044d\u043c\u043e\u0446\u0438\u0438?<\/strong><\/p>\n<ol>\n<li>\n<p><strong>\u0418\u0433\u0440\u044b \u0438 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f.<\/strong> \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u043c \u043d\u0435 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u0430 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 (\u043d\u0443 \u0438\u043b\u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043a\u0446\u0438\u0435\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u043f\u043e\u043c\u043e\u0449\u044c \u043b\u044e\u0434\u044f\u043c.<\/strong> \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u0435\u0441\u0441 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c: \u00ab\u0414\u0430\u0432\u0430\u0439 \u0434\u044b\u0448\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0435\u0435\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b.<\/strong> \u041f\u043e\u043d\u044f\u0442\u044c \u0441\u0435\u0431\u044f, \u0441\u0432\u043e\u0438\u0445 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438\u043b\u0438 \u043b\u0430\u0431\u043e\u0440\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u043e\u0442\u0448\u0443\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443: \u00ab\u041e\u0439, \u0447\u0442\u043e-\u0442\u043e \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u041c\u044b \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0442\u0440\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u00ab\u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2014 \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043b\u0451\u0433\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e (\u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u044c). \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430: \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c, \u0441\u043d\u044f\u0442\u044b\u043c \u043d\u0430 \u043b\u0438\u0431\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0445 (\u043d\u0435 \u043c\u0435\u0434\u0432\u0435\u0436\u044c\u0438\u0445, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445) \u043b\u043e\u0431\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u0430\u0445, \u043d\u0430 Arduino Nano 33 BLE Sense \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u043c \u00ab\u0443\u043c\u043d\u043e\u043c\u00bb \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0434\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0442\u0440\u0451\u0445 \u043c\u0435\u0442\u043e\u043a: \u201ccalm\u201d, \u201cfocus\u201d, \u201cconfused\u201d.<\/p>\n<hr\/>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u0441\u0445\u0435\u043c\u044b: \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b<\/h3>\n<h4>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h4>\n<ul>\n<li>\n<p><strong>AD8232 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0441\u043d\u044f\u0442\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445\/\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043a\u0430\u0440\u0434\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445\/\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u044d\u043d\u0446\u0435\u0444\u0430\u043b\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/strong>. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044c-\u0431\u0440\u0435\u0439\u043a-\u0430\u0443\u0442 \u0437\u0430 $5\u20137. \u041e\u043d \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u043d\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441 \u043b\u043e\u0431\u043d\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u0430\u043f\u0438\u0435\u0439 \u0441\u043e\u0439\u0434\u0451\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b (\u00ab\u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0438\u0433\u043b\u0430\u00bb \u0438\u043b\u0438 \u043b\u0438\u043f\u0443\u0447\u0438\u0435 \u0434\u0438\u0441\u043a\u0438 \u0441 \u0433\u0438\u0434\u0440\u043e\u0433\u0435\u043b\u0435\u043c)<\/strong>. \u041d\u0430 \u043d\u0430\u0448\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f 3 \u0448\u0442\u0443\u043a\u0438: \u0434\u0432\u0430 \u00ab\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445\u00bb (\u043b\u0435\u0432\u044b\u0439 \u0438 \u043f\u0440\u0430\u0432\u044b\u0439 \u043b\u043e\u0431), \u043e\u0434\u0438\u043d \u00ab\u043e\u043f\u043e\u0440\u043d\u044b\u0439\u00bb (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430 \u0443\u0445\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p><strong>Arduino Nano 33 BLE Sense<\/strong> (\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 Arduino\/\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0441 Cortex-M4 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 TensorFlow Lite Micro). \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043d\u0435 Uno: \u0442\u0430\u043c \u043c\u0430\u043b\u043e\u0432\u0430\u0442\u043e Flash\/RAM \u0434\u043b\u044f TinyML.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u043e\u0434\u0430, \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430, \u0437\u0430\u0441\u0442\u0451\u0436\u043a\u0438 \u0434\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u043e\u0432<\/strong> (patch-\u043a\u043b\u0435\u043c\u043c\u044b).<\/p>\n<\/li>\n<li>\n<p><strong>USB-\u043a\u0430\u0431\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e:<\/strong> \u043a\u0430\u043f\u043b\u044f \u0433\u0435\u043b\u044f, \u043f\u043b\u0430\u0441\u0442\u044b\u0440\u044c \u0438 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u043a\u043e\u0436\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/h4>\n<ol>\n<li>\n<p><strong>AD8232 \u043a Arduino<\/strong><\/p>\n<ul>\n<li>\n<p><code>LO+<\/code> (\u0432\u044b\u0445\u043e\u0434 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00abHeart Rate\/ECG Lead Off Detect\u00bb) \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><code>RA-<\/code> (Right Arm) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21161 (\u043f\u0440\u0430\u0432\u044b\u0439 \u043b\u043e\u0431).<\/p>\n<\/li>\n<li>\n<p><code>LA+<\/code> (Left Arm) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21162 (\u043b\u0435\u0432\u044b\u0439 \u043b\u043e\u0431).<\/p>\n<\/li>\n<li>\n<p><code>RL-<\/code> (Reference) \u2500 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21163 (\u0437\u0430 \u0443\u0445\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p><code>OUTPUT<\/code> (\u0430\u043d\u0430\u043b\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044f) \u2500 \u043a \u043f\u0438\u043d\u0443 A0 Arduino.<\/p>\n<\/li>\n<li>\n<p><code>3.3 V<\/code> \u0438\u043b\u0438 <code>5 V<\/code> (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430) \u2500 \u043a 3.3V Arduino (Nano 33 BLE Sense \u043f\u0438\u0442\u0430\u0435\u0442 AD8232 \u043e\u0442 3.3 \u0412).<\/p>\n<\/li>\n<li>\n<p><code>GND<\/code> \u2500 \u043a \u0437\u0435\u043c\u043b\u0438 Arduino.<\/p>\n<\/li>\n<\/ul>\n<p> <em>(\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u043d\u0435 \u0441\u043f\u0443\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0432\u043e\u0437\u043d\u0438.)<\/em><\/p>\n<\/li>\n<li>\n<p><strong>\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0434\u044b \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u0443<\/strong><\/p>\n<ul>\n<li>\n<p>\u041b\u043e\u0431\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u043e\u0442\u0435\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0440\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u043b\u044c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21161 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043b\u0431\u0430 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0431\u0440\u043e\u0432\u0438, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0434 \u21162 \u2014 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e \u0441\u043b\u0435\u0432\u0430. \u0422\u0440\u0435\u0442\u0438\u0439 (Reference) \u2014 \u043d\u0430 \u043a\u043e\u0441\u0442\u0438 \u0437\u0430 \u0443\u0445\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0413\u0435\u043b\u044c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f. \u0418\u043d\u0430\u0447\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0437\u0433\u0430 \u0432\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043d\u0430 \u043b\u0431\u0443 \u043e\u0442 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u0436\u0438.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u043a\u0435\u0442\u0447\u0430, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u043e \u0441 A0, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430. \u0414\u0430\u0439\u0442\u0435 \u0433\u043e\u043b\u043e\u0432\u0435 \u00ab\u043e\u0442\u0434\u043e\u0445\u043d\u0443\u0442\u044c\u00bb \u043c\u0438\u043d\u0443\u0442\u0443, \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0439\u0442\u0435\u0441\u044c, \u043d\u0435 \u043c\u043e\u0440\u0433\u0430\u0439\u0442\u0435 (\u043b\u0435\u0433\u043a\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c). \u0423\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u0443\u044e \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0443 \u0441\u043e \u00ab\u0448\u0443\u043c\u043e\u043c\u00bb. \u042d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433\u2014\u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043c\u043e\u0437\u0433 \u0432 \u043f\u043e\u043b\u043e\u0441\u0435 (0.5\u201350 \u0413\u0446), \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439 AD8232.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr\/>\n<h3>\u0421\u043d\u044f\u0442\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (Arduino + Python)<\/h3>\n<h4>\u0421\u043a\u0435\u0442\u0447 \u043d\u0430 Arduino \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u044b\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u00ab\u0441\u044b\u0440\u044b\u0445\u00bb EEG-\u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u041d\u0430 Arduino \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0435 4 ms (\u2248250 \u0413\u0446) \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 A0 \u0438 \u0448\u043b\u0451\u0442 \u0432 Serial.<\/p>\n<h3>\u041a\u043e\u0434 (C++, Arduino IDE)<\/h3>\n<pre><code class=\"cpp\">\/\/ \u0424\u0430\u0439\u043b: eeg_recorder.ino \/\/ Arduino Nano 33 BLE Sense \u0438 AD8232.   \/\/ \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 A0 \u0432 Serial (115200 \u0431\u043e\u0434).    const int eegPin = A0; const unsigned long sampleInterval = 4000;  \/\/ \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 = 250 \u0413\u0446  void setup() {   Serial.begin(115200);   delay(1000);   Serial.println(\"EEG Recorder Started\"); }  void loop() {   static unsigned long lastMicros = 0;   unsigned long now = micros();   if (now - lastMicros &gt;= sampleInterval) {     lastMicros = now;     int rawValue = analogRead(eegPin);       \/\/ \u041d\u0430 Nano 33 BLE Sense analogRead() \u0434\u0430\u0451\u0442 12-\u0431\u0438\u0442: 0\u20134095 ~ 0\u20133.3V     Serial.println(rawValue);   } }<\/code><\/pre>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 500 \u0413\u0446? \u041c\u043e\u0436\u043d\u043e, \u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0447\u0442\u043e 250 \u0413\u0446 \u0443\u0436\u0435 \u00ab\u0437\u0430 \u0433\u043b\u0430\u0437\u0430\u00bb \u0445\u0432\u0430\u0442\u0438\u0442, \u0438\u043d\u0430\u0447\u0435 \u043a\u0430\u0440\u0442\u0430 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0449\u0443\u043f\u0430\u043c\u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0437\u0430\u0448\u0443\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u00ab\u0431\u0443\u0431\u043d\u044f\u0449\u0438\u0439\u00bb \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 Nano 33 BLE Sense, \u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, STM32-\u043a\u043b\u043e\u043d, \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 <code>analogRead<\/code> \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c UART.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0417\u0430\u0445\u0432\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Python<\/h4>\n<ol>\n<li>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c Arduino \u043f\u043e USB, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c COM-\u043f\u043e\u0440\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>\/dev\/ttyUSB0<\/code> \u0438\u043b\u0438 <code>COM3<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0433\u043e\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u0438\u00bb (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u0448\u0430\u0435\u043c \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438), \u043f\u043e\u0442\u043e\u043c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u00ab\u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u00bb (\u0431\u0435\u0440\u0451\u043c \u0432 \u0440\u0443\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0430\u0437\u043b \u0438 \u0440\u0443\u0433\u0430\u0435\u043c\u0441\u044f). \u041f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041a\u043e\u0434 (Python 3.x)<\/h3>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: data_capture.py import serial import time import csv  # \u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 COM-\u043f\u043e\u0440\u0442 SERIAL_PORT = \"COM3\"      # \u0438\u043b\u0438 \"\/dev\/ttyUSB0\" BAUD_RATE = 115200 DURATION = 30            # \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 OUTPUT_PREFIX = \"eeg_data_\"  def capture(label: str):     filename = f\"{OUTPUT_PREFIX}{label}.csv\"     with serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1) as ser, \\          open(filename, \"w\", newline='') as csvfile:         writer = csv.writer(csvfile)         writer.writerow([\"timestamp\", \"raw\"])         start_time = time.time()         print(f\"\u041d\u0430\u0447\u0430\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0438: {label}\")         while time.time() - start_time &lt; DURATION:             line = ser.readline().decode('ascii', errors='ignore').strip()             if line.isdigit():                 timestamp = time.time()                 writer.writerow([timestamp, int(line)])         print(f\"\u041a\u043e\u043d\u0435\u0446 \u0437\u0430\u043f\u0438\u0441\u0438: {label}, \u0444\u0430\u0439\u043b {filename}\")  if __name__ == \"__main__\":     for state in [\"calm\", \"focus\", \"confused\"]:         input(f\"\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u044c\u0441\u044f \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e '{state}'. \u041d\u0430\u0436\u043c\u0438 Enter, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0442\u043e\u0432.\")         capture(state)         print(\"\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043f\u0430\u0443\u0437\u0443 10 \u0441\u0435\u043a\u0443\u043d\u0434, \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u044c\u0442\u0435\u0441\u044c.\")         time.sleep(10)<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440\u0443 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u00ab\u0437\u0430\u043f\u0438\u0441\u044c 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u2014 \u043a\u043e\u0433\u0434\u0430 \u0437\u0430 \u043c\u043d\u043e\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u00ab\u0433\u0434\u0435-\u0442\u043e \u043d\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434\u0435 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u0447\u0435\u0441\u0430\u0442\u044c\u0441\u044f \u0438 \u043c\u044b\u0441\u043b\u0438 \u0443\u043b\u0435\u0442\u0430\u044e\u0442, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u2014 \u0442\u0430\u043a \u0442\u043e\u0436\u0435 \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\u00bb.<\/p>\n<hr\/>\n<h3>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0440\u0438 CSV:<\/p>\n<ul>\n<li>\n<p><code>eeg_data_calm.csv<\/code><\/p>\n<\/li>\n<li>\n<p><code>eeg_data_focus.csv<\/code><\/p>\n<\/li>\n<li>\n<p><code>eeg_data_confused.csv<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 250 Hz \u00d7 30 \u0441\u0435\u043a = 7500 \u0441\u0442\u0440\u043e\u043a. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u044b\u0440\u044c\u0435\u0451, \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440: \u043e\u0442 \u043d\u0438\u0437\u043a\u0438\u0445 \u0432\u043e\u043b\u043d (&lt;1 \u0413\u0446) \u0434\u043e \u0448\u0443\u043c\u043e\u0432 50\/60 \u0413\u0446. \u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ol>\n<li>\n<p><strong>\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c (0.5\u201340 \u0413\u0446)<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u044f\u0431\u043b\u044b\u0435 DC-\u0441\u0434\u0432\u0438\u0433\u0438 \u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u00ab\u043f\u0438\u043b\u044b\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/strong>: \u0432\u0435\u0434\u044c rawValue \u043b\u0435\u0436\u0438\u0442 \u0432 [0; 4095], \u043d\u043e \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u0437\u0430\u0442\u044c<\/strong> \u043d\u0430 \u043e\u043a\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e 250 ms (\u224863 \u0441\u044d\u043c\u043f\u043b\u0430).<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443<\/strong> (label) \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u043a\u043d\u0443: 0 = calm, 1 = focus, 2 = confused.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (Python, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 NumPy + SciPy)<\/h3>\n<pre><code class=\"python\"># \u0424\u0430\u0439\u043b: preprocess.py import numpy as np import pandas as pd from scipy.signal import butter, lfilter  # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b FS = 250  # \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 LOWCUT = 0.5 HIGHCUT = 40.0 WINDOW_SIZE = int(0.25 * FS)  # 250ms  def load_data(filename):     df = pd.read_csv(filename)     return df[\"raw\"].values  def butter_bandpass(lowcut, highcut, fs, order=5):     nyq = 0.5 * fs     low = lowcut \/ nyq     high = highcut \/ nyq     b, a = butter(order, [low, high], btype='band')     return b, a  def bandpass_filter(data, lowcut, highcut, fs, order=4):     b, a = butter_bandpass(lowcut, highcut, fs, order=order)     y = lfilter(b, a, data)     return y  def segment_and_label(data, label):     segments = []     labels = []     for start in range(0, len(data) - WINDOW_SIZE, WINDOW_SIZE):         window = data[start:start + WINDOW_SIZE]         segments.append(window)         labels.append(label)     return np.array(segments), np.array(labels)  def preprocess_all():     X_list, y_list = [], []     for idx, state in enumerate([\"calm\", \"focus\", \"confused\"]):         raw = load_data(f\"eeg_data_{state}.csv\")         filtered = bandpass_filter(raw, LOWCUT, HIGHCUT, FS)         # \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0434\u043e [-1, 1]         filtered = 2 * (filtered - np.min(filtered)) \/ (np.ptp(filtered)) - 1         segs, labs = segment_and_label(filtered, idx)         X_list.append(segs)         y_list.append(labs)     X = np.vstack(X_list)     y = np.concatenate(y_list)     return X, y  if __name__ == \"__main__\":     X, y = preprocess_all()     print(\"\u0424\u043e\u0440\u043c\u0430 X:\", X.shape)  # \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e ( (7500\/63*3) , 63 )     print(\"\u0424\u043e\u0440\u043c\u0430 y:\", y.shape)     # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f     np.save(\"X.npy\", X)     np.save(\"y.npy\", y)<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432, \u0447\u0442\u043e \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u00ab\u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442\u00bb \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438, \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u043f\u043b\u0430\u043a\u0430\u043b. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c min\/max \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043b\u0430\u0434\u043d\u044f\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0430\u043a, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e.<\/p>\n<hr\/>\n<h3>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 TinyML-\u043c\u043e\u0434\u0435\u043b\u0438 \u0432 Python<\/h3>\n<p>\u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c (1D CNN), \u0447\u0442\u043e\u0431\u044b Arduino Nano 33 BLE Sense \u0432\u043c\u0435\u0441\u0442\u0438\u043b \u0432\u0441\u0451 \u0432 Flash \u0438 RAM.<\/p>\n<h4>\u0428\u0430\u0433 1:<\/h><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-463086","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463086","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=463086"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463086\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=463086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=463086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=463086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}