{"id":15,"date":"2018-10-05T01:48:31","date_gmt":"2018-10-05T04:48:31","guid":{"rendered":"http:\/\/www.quilombodigital.org\/wordpress\/?p=15"},"modified":"2021-03-26T23:56:14","modified_gmt":"2021-03-27T02:56:14","slug":"dispositivo-de-comunicacao-para-e-l-a-utilizando-arduino","status":"publish","type":"post","link":"https:\/\/www.quilombodigital.org\/wordpress\/?p=15","title":{"rendered":"DISPOSITIVO DE COMUNICA\u00c7\u00c3O PARA E.L.A UTILIZANDO ARDUINO MICRO PRO"},"content":{"rendered":"\n<p>(Atualizado 26\/03\/2021)<\/p>\n\n\n\n<h2>INTRODU\u00c7\u00c3O<\/h2>\n\n\n\n<p>O pai de uma amiga tem ELA (Esclerose Lateral Amiotr\u00f3fica) e recentemente as coisas se complicaram, com uma grande perda nos movimentos dele. Eu qu\u00eds ajudar, ent\u00e3o pesquisei maneiras de permitir que ele continuasse se comunicando com sua fam\u00edlia. Eu tenho algum conhecimento de eletr\u00f4nica, ent\u00e3o pensei que poderia usar alguns componentes comuns que tenho aqui em casa, e o resultado \u00e9 este projeto. O projeto \u00e9 aberto e se precisar de ajuda para montar \u00e9 s\u00f3 pedir.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img src=\"http:\/\/www.quilombodigital.org\/alsarduinosensor\/images\/image3.jpg\" alt=\"\" width=\"250\" height=\"300\"\/><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img src=\"http:\/\/www.quilombodigital.org\/alsarduinosensor\/images\/image7.jpg\" alt=\"\" width=\"515\" height=\"309\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe title=\"1 - ALS Communication device using Arduino \/ Dispositivo de comunica\u00e7\u00e3o para ELA utilizando Arduino\" width=\"720\" height=\"405\" src=\"https:\/\/www.youtube.com\/embed\/28gcnCMDawY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe title=\"2 - ALS Communication device using Arduino \/ Dispositivo de comunica\u00e7\u00e3o para ELA utilizando Arduino\" width=\"720\" height=\"405\" src=\"https:\/\/www.youtube.com\/embed\/qM-6vG1uTIY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/www.quilombodigital.org\/alsarduinosensor\/images\/image8.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2>SOFTWARE DE COMUNICA\u00c7\u00c3O<\/h2>\n\n\n\n<p>O software de comunica\u00e7\u00e3o escolhido \u00e9 o mesmo utilizado por Stephen Hawking, gentilmente desenvolvido e disponibilizado como c\u00f3digo livre pela Intel.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/www.quilombodigital.org\/alsarduinosensor\/images\/image6.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>O nome do software \u00e9 ACAT e ele pode ser baixado aqui:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/intel\/acat\/releases\">https:\/\/github.com\/intel\/acat\/releases<\/a><\/p>\n\n\n\n<p>Al\u00e9m do suporte para o portugu\u00eas, ele possui suporte para diversas l\u00ednguas, como ingl\u00eas, franc\u00eas e espanhol. O programa \u00e9 de fato simples, h\u00e1 dois tipos de intera\u00e7\u00e3o com ele: com uma webcam, detectando movimentos m\u00ednimos na bochecha, ou com um atuador, representado pela tecla <strong>F12<\/strong> no teclado. Eu testei a detec\u00e7\u00e3o pela webcam e funciona bem, mas eu queria algo que ele pudesse utilizar enquanto ainda tivesse alguns movimentos, como no p\u00e9 ou em outra parte do corpo. O que eu percebi na minha pesquisa \u00e9 que cada pessoa possui as suas necessidades, ent\u00e3o esteja preparado para adapt\u00e1-lo a cada situa\u00e7\u00e3o. O software \u00e9 simples e us\u00e1vel, As palavras e frases mais comuns s\u00e3o mais acess\u00edveis, tornando tudo mais f\u00e1cil. A \u00fanica configura\u00e7\u00e3o que voc\u00ea deve se preocupar \u00e9 com a temporiza\u00e7\u00e3o da sele\u00e7\u00e3o de palavras e caracteres, para que n\u00e3o seja r\u00e1pido demais para o paciente.<\/p>\n\n\n\n<h2>ELETR\u00d4NICA<\/h2>\n\n\n\n<p>Quando eu estava pesquisando e testando como fazer, testei diferentes tipos de sensores, de toque, de \u00e2ngulo, etc, mas a maioria deles n\u00e3o era sens\u00edvel o suficiente.\nEu finalmente testei a id\u00e9ia com um aceler\u00f4metro e funcionou muito bem.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3>SENSOR<\/h3>\n\n\n\n<p>Eu testei tr\u00eas tipos de aceler\u00f4metros, o MMA8452, o MPU6050 e o ADXL377. Eu escolhi o MMA8452 porqu\u00ea ele \u00e9 muito f\u00e1cil de programar, \u00e9 barato, e este projeto n\u00e3o precisava de um aceler\u00f4metro muito avan\u00e7ado.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img src=\"http:\/\/www.quilombodigital.org\/alsarduinosensor\/images\/image1.jpg\" alt=\"\" width=\"325\" height=\"325\"\/><\/figure>\n\n\n\n<h3>COMPONENTES<\/h3>\n\n\n\n<ul><li>Arduino Micro Pro<\/li><li>Aceler\u00f4metro MMA8452<\/li><li>Potenci\u00f4metro de 10k<\/li><li>Led verde<\/li><li>Resistor de 1k<\/li><li>Interruptor<\/li><li>Cabo USB<\/li><li>Caixa Pl\u00e1stica PB-112\/2 &#8211; 36 x 85 x 124 mm<\/li><\/ul>\n\n\n\n<h3>CIRCUITO<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img src=\"https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-3.png\" alt=\"\" class=\"wp-image-142\" width=\"698\" height=\"536\" srcset=\"https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-3.png 1008w, https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-3-300x231.png 300w, https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-3-768x590.png 768w\" sizes=\"(max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img width=\"964\" height=\"798\" src=\"https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-4.png\" alt=\"\" class=\"wp-image-143\" srcset=\"https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-4.png 964w, https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-4-300x248.png 300w, https:\/\/www.quilombodigital.org\/wordpress\/wp-content\/uploads\/2021\/03\/image-4-768x636.png 768w\" sizes=\"(max-width: 964px) 100vw, 964px\" \/><\/figure>\n\n\n\n<h3>PROGRAMA\u00c7\u00c3O DO ARDUINO<\/h3>\n\n\n\n<p>O programa de Arduino que eu desenvolvi \u00e9 relativamente simples. Tudo que ele faz \u00e9 tentar se houve muita movimenta\u00e7\u00e3o, utilizando a mediana dos valores medidos do aceler\u00f4metro, e uma margem definida pelo potenci\u00f4metro. Quando ele detecta o movimento, envia um pressionamento de tecla F12 e espera 500 millis para &#8220;debounce&#8221; (limpar esp\u00farios) .<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"elapsedMillis.h\"\r\n#include \"RunningMedian.h\"\r\n#include \"Wire.h\"\r\n#include \"SFE_MMA8452Q.h\"\r\n#include \"Keyboard.h\"\r\n\r\nint potPin = A10;\r\nint ledPin = A9;\r\nint enabledPin = A8;\r\nint tolerance = 0;\r\nint val = 0;\r\nbool blocked = false;\r\nbool pressed = false;\r\nMMA8452Q acelerometro(0x1C);\r\nRunningMedian samplesx = RunningMedian(15);\r\nRunningMedian samplesy = RunningMedian(15);\r\nRunningMedian samplesz = RunningMedian(15);\r\nelapsedMillis timeElapsed;\r\n\r\nvoid setup()\r\n{\r\n    pinMode(ledPin, OUTPUT);\r\n    pinMode(enabledPin, INPUT_PULLUP);\r\n    digitalWrite(ledPin, LOW);\r\n    acelerometro.init();\r\n    Keyboard.begin();\r\n}\r\n\r\nvoid loop()\r\n{\r\n    bool enabled = digitalRead(enabledPin);\r\n    if (enabled) {\r\n        val = analogRead(potPin); \/\/ read the value from the sensor\r\n        tolerance = val;\r\n        if (acelerometro.available()) {\r\n            acelerometro.read();\r\n            samplesx.add(acelerometro.x);\r\n            samplesy.add(acelerometro.y);\r\n            samplesz.add(acelerometro.z);\r\n            if (!blocked) {\r\n                bool tmpx = (acelerometro.x > (samplesx.getAverage() + tolerance)) || (acelerometro.x &lt; (samplesx.getAverage() - tolerance));\r\n                bool tmpy = (acelerometro.y > (samplesy.getAverage() + tolerance)) || (acelerometro.y &lt; (samplesy.getAverage() - tolerance));\r\n                bool tmpz = (acelerometro.z > (samplesz.getAverage() + tolerance)) || (acelerometro.z &lt; (samplesz.getAverage() - tolerance));\r\n                if (tmpx || tmpy || tmpz) {\r\n                    Keyboard.press(0xCD); \/\/F12\r\n\r\n                    digitalWrite(ledPin, HIGH);\r\n                    blocked = true;\r\n                    pressed = true;\r\n                    timeElapsed = 0;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (pressed &amp;&amp; (timeElapsed > 100) ) {\r\n        Keyboard.release(0xCD); \/\/F12\r\n        pressed = false;\r\n    }\r\n    if (blocked &amp;&amp; (timeElapsed > 500) ) {\r\n        digitalWrite(ledPin, LOW);\r\n        blocked = false;\r\n    }\r\n}<\/code><\/pre>\n\n\n\n<h2>BIBLIOTECAS ARDUINO<\/h2>\n\n\n\n<p>Foram utilizadas tr\u00eas bibliotecas neste projeto. Duas podem ser instaladas diretamente pela IDE, e uma tem que ser instalada manualmente atrav\u00e9s de um arquivo zip:<\/p>\n\n\n\n<ul><li>RunningMedian ->\u00a0<a href=\"https:\/\/playground.arduino.cc\/Main\/RunningMedian\">https:\/\/playground.arduino.cc\/Main\/RunningMedian<\/a><\/li><li>ElapsedMillis ->\u00a0<a href=\"https:\/\/playground.arduino.cc\/Code\/ElapsedMillis\">https:\/\/playground.arduino.cc\/Code\/ElapsedMillis<\/a><\/li><li>SFE_8452Q ->\u00a0<a href=\"#include &quot;elapsedMillis.h&quot;\n#include &quot;RunningMedian.h&quot;\n#include &quot;Wire.h&quot;\n#include &quot;SFE_MMA8452Q.h&quot;\n#include &quot;Keyboard.h&quot;\n\nint potPin = A10;\nint ledPin = A9;\nint enabledPin = A8;\nint tolerance = 0;\nint val = 0;\nbool blocked = false;\nbool pressed = false;\nMMA8452Q acelerometro(0x1C);\nRunningMedian samplesx = RunningMedian(15);\nRunningMedian samplesy = RunningMedian(15);\nRunningMedian samplesz = RunningMedian(15);\nelapsedMillis timeElapsed;\n\nvoid setup()\n{\n    pinMode(ledPin, OUTPUT);\n    pinMode(enabledPin, INPUT_PULLUP);\n    digitalWrite(ledPin, LOW);\n    acelerometro.init();\n    Keyboard.begin();\n}\n\nvoid loop()\n{\n    bool enabled = digitalRead(enabledPin);\n    if (enabled) {\n        val = analogRead(potPin); \/\/ read the value from the sensor\n        tolerance = val;\n        if (acelerometro.available()) {\n            acelerometro.read();\n            samplesx.add(acelerometro.x);\n            samplesy.add(acelerometro.y);\n            samplesz.add(acelerometro.z);\n            if (!blocked) {\n                bool tmpx = (acelerometro.x &gt; (samplesx.getAverage() + tolerance)) || (acelerometro.x  (samplesy.getAverage() + tolerance)) || (acelerometro.y  (samplesz.getAverage() + tolerance)) || (acelerometro.z  100) ) {\n        Keyboard.release(0xCD); \/\/F12\n        pressed = false;\n    }\n    if (blocked &amp;&amp; (timeElapsed &gt; 500) ) {\n        digitalWrite(ledPin, LOW);\n        blocked = false;\n    }\n}\">https:\/\/cdn.sparkfun.com\/assets\/learn_tutorials\/2\/4\/9\/SFE_MMA8452Q-library.zip<\/a><\/li><\/ul>\n\n\n\n<h2>INTEGRA\u00c7\u00c3O COM O SOFTWARE ACAT<\/h2>\n\n\n\n<p>A programa\u00e7\u00e3o do Arduino utilizando o arduino IDE \u00e9 um processo relativamente simples e h\u00e1 v\u00e1rios tutoriais dispon\u00edveis na internet.<\/p>\n\n\n\n<p>O software ACAT, ap\u00f3s ser instalado est\u00e1 configurado para utilizar uma c\u00e2mera de v\u00eddeo. No nosso projeto n\u00e3o a utilizaremos, ent\u00e3o voc\u00ea pode clicar no \u00edtem AcatConfig->Actuator e deixar somente a detec\u00e7\u00e3o do F12 habilitado. Se voc\u00ea quiser testar, pode abrir uma janela do browser e ver que ao tocar no aceler\u00f4metro o developer console do browser abre e fecha, pois ela tamb\u00e9m usa a tecla F12.<\/p>\n\n\n\n<p>A regulagem do sistema \u00e9 simples. ap\u00f3s deixar o aceler\u00f4metro conectado ao dedo ou outra parte do corpo, com ele em repouso, mover o potenci\u00f4metro at\u00e9 que o led se acenda. Esta \u00e9 a sensibilidade m\u00e1xima. Neste momento basta voltar para tr\u00e1s um pouco o potenci\u00f4metropara que o led apague e nesse momento qualquer movimento ir\u00e1 acionar e disparar a tecla F12.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h1>CONCLUS\u00c3O<\/h1>\n\n\n\n<p>O resultado final \u00e9 um sistema barato, com uma sensibilidade muito boa, e que eu espero ajude muitas pessoas, com ELA ou quaisquer outras dificuldades.<\/p>\n\n\n\n<p>Se voc\u00ea gostou deste projeto, pense um pouco mais sobre como voc\u00ea gasta o seu tempo livre, e lembre-se que n\u00e3o importa a sua religi\u00e3o, suas cren\u00e7as, voc\u00ea muitas vezes pode ver que as boas a\u00e7\u00f5es sempre voltam para voc\u00ea de maneiras diferentes.<\/p>\n\n\n\n<p>Se precisar de ajudar basta me contatar.<\/p>\n\n\n\n<p>Ricardo Andere de Mello\nquilombodigital@gmail.com<\/p>\n\n\n<p><!--EndFragment--><\/p>","protected":false},"excerpt":{"rendered":"<p>(Atualizado 26\/03\/2021) INTRODU\u00c7\u00c3O O pai de uma amiga tem ELA (Esclerose Lateral Amiotr\u00f3fica) e recentemente as coisas se complicaram, com uma grande perda nos movimentos dele. Eu qu\u00eds ajudar, ent\u00e3o pesquisei maneiras de permitir&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":46,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/15"}],"collection":[{"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":10,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions\/147"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/46"}],"wp:attachment":[{"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.quilombodigital.org\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}