DISPOSITIVO DE COMUNICAÇÃO PARA E.L.A UTILIZANDO ARDUINO MICRO PRO

(Atualizado 26/03/2021)

INTRODUÇÃO

O pai de uma amiga tem ELA (Esclerose Lateral Amiotrófica) e recentemente as coisas se complicaram, com uma grande perda nos movimentos dele. Eu quís ajudar, então pesquisei maneiras de permitir que ele continuasse se comunicando com sua família. Eu tenho algum conhecimento de eletrônica, então pensei que poderia usar alguns componentes comuns que tenho aqui em casa, e o resultado é este projeto. O projeto é aberto e se precisar de ajuda para montar é só pedir.

SOFTWARE DE COMUNICAÇÃO

O software de comunicação escolhido é o mesmo utilizado por Stephen Hawking, gentilmente desenvolvido e disponibilizado como código livre pela Intel.

O nome do software é ACAT e ele pode ser baixado aqui:

https://github.com/intel/acat/releases

Além do suporte para o português, ele possui suporte para diversas línguas, como inglês, francês e espanhol. O programa é de fato simples, há dois tipos de interação com ele: com uma webcam, detectando movimentos mínimos na bochecha, ou com um atuador, representado pela tecla F12 no teclado. Eu testei a detecção pela webcam e funciona bem, mas eu queria algo que ele pudesse utilizar enquanto ainda tivesse alguns movimentos, como no pé ou em outra parte do corpo. O que eu percebi na minha pesquisa é que cada pessoa possui as suas necessidades, então esteja preparado para adaptá-lo a cada situação. O software é simples e usável, As palavras e frases mais comuns são mais acessíveis, tornando tudo mais fácil. A única configuração que você deve se preocupar é com a temporização da seleção de palavras e caracteres, para que não seja rápido demais para o paciente.

ELETRÔNICA

Quando eu estava pesquisando e testando como fazer, testei diferentes tipos de sensores, de toque, de ângulo, etc, mas a maioria deles não era sensível o suficiente. Eu finalmente testei a idéia com um acelerômetro e funcionou muito bem.

SENSOR

Eu testei três tipos de acelerômetros, o MMA8452, o MPU6050 e o ADXL377. Eu escolhi o MMA8452 porquê ele é muito fácil de programar, é barato, e este projeto não precisava de um acelerômetro muito avançado.

COMPONENTES

  • Arduino Micro Pro
  • Acelerômetro MMA8452
  • Potenciômetro de 10k
  • Led verde
  • Resistor de 1k
  • Interruptor
  • Cabo USB
  • Caixa Plástica PB-112/2 – 36 x 85 x 124 mm

CIRCUITO

PROGRAMAÇÃO DO ARDUINO

O programa de Arduino que eu desenvolvi é relativamente simples. Tudo que ele faz é tentar se houve muita movimentação, utilizando a mediana dos valores medidos do acelerômetro, e uma margem definida pelo potenciômetro. Quando ele detecta o movimento, envia um pressionamento de tecla F12 e espera 500 millis para “debounce” (limpar espúrios) .

#include "elapsedMillis.h"
#include "RunningMedian.h"
#include "Wire.h"
#include "SFE_MMA8452Q.h"
#include "Keyboard.h"

int potPin = A10;
int ledPin = A9;
int enabledPin = A8;
int tolerance = 0;
int val = 0;
bool blocked = false;
bool pressed = false;
MMA8452Q acelerometro(0x1C);
RunningMedian samplesx = RunningMedian(15);
RunningMedian samplesy = RunningMedian(15);
RunningMedian samplesz = RunningMedian(15);
elapsedMillis timeElapsed;

void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(enabledPin, INPUT_PULLUP);
    digitalWrite(ledPin, LOW);
    acelerometro.init();
    Keyboard.begin();
}

void loop()
{
    bool enabled = digitalRead(enabledPin);
    if (enabled) {
        val = analogRead(potPin); // read the value from the sensor
        tolerance = val;
        if (acelerometro.available()) {
            acelerometro.read();
            samplesx.add(acelerometro.x);
            samplesy.add(acelerometro.y);
            samplesz.add(acelerometro.z);
            if (!blocked) {
                bool tmpx = (acelerometro.x > (samplesx.getAverage() + tolerance)) || (acelerometro.x < (samplesx.getAverage() - tolerance));
                bool tmpy = (acelerometro.y > (samplesy.getAverage() + tolerance)) || (acelerometro.y < (samplesy.getAverage() - tolerance));
                bool tmpz = (acelerometro.z > (samplesz.getAverage() + tolerance)) || (acelerometro.z < (samplesz.getAverage() - tolerance));
                if (tmpx || tmpy || tmpz) {
                    Keyboard.press(0xCD); //F12

                    digitalWrite(ledPin, HIGH);
                    blocked = true;
                    pressed = true;
                    timeElapsed = 0;
                }
            }
        }
    }
    if (pressed && (timeElapsed > 100) ) {
        Keyboard.release(0xCD); //F12
        pressed = false;
    }
    if (blocked && (timeElapsed > 500) ) {
        digitalWrite(ledPin, LOW);
        blocked = false;
    }
}

BIBLIOTECAS ARDUINO

Foram utilizadas três bibliotecas neste projeto. Duas podem ser instaladas diretamente pela IDE, e uma tem que ser instalada manualmente através de um arquivo zip:

INTEGRAÇÃO COM O SOFTWARE ACAT

A programação do Arduino utilizando o arduino IDE é um processo relativamente simples e há vários tutoriais disponíveis na internet.

O software ACAT, após ser instalado está configurado para utilizar uma câmera de vídeo. No nosso projeto não a utilizaremos, então você pode clicar no ítem AcatConfig->Actuator e deixar somente a detecção do F12 habilitado. Se você quiser testar, pode abrir uma janela do browser e ver que ao tocar no acelerômetro o developer console do browser abre e fecha, pois ela também usa a tecla F12.

A regulagem do sistema é simples. após deixar o acelerômetro conectado ao dedo ou outra parte do corpo, com ele em repouso, mover o potenciômetro até que o led se acenda. Esta é a sensibilidade máxima. Neste momento basta voltar para trás um pouco o potenciômetropara que o led apague e nesse momento qualquer movimento irá acionar e disparar a tecla F12.

CONCLUSÃO

O resultado final é um sistema barato, com uma sensibilidade muito boa, e que eu espero ajude muitas pessoas, com ELA ou quaisquer outras dificuldades.

Se você gostou deste projeto, pense um pouco mais sobre como você gasta o seu tempo livre, e lembre-se que não importa a sua religião, suas crenças, você muitas vezes pode ver que as boas ações sempre voltam para você de maneiras diferentes.

Se precisar de ajudar basta me contatar.

Ricardo Andere de Mello quilombodigital@gmail.com

You may also like...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *