DEV Community

Cover image for Como ler sinais cerebrais com Mindlfex e Arduino
Diana Regina
Diana Regina

Posted on

Como ler sinais cerebrais com Mindlfex e Arduino

Já pensou em coletar os sinais elétricos do seu cérebro de um jeito muito fácil e barato? Se sim, vai ficar muito feliz em conhecer o Mindflex :)

Mind ... o que?

Mindflex é um brinquedo que foi fabricado pela empresa Neurosky em meados de 2009. Como vocês podem ver na imagem, o jogador coloca o dispositivo na cabeça e os sinais elétricos são enviados sem fio para a plataforma.

Basicamente, o jogo consiste em se concentrar no movimento que a bolinha faz. Quanto mais se concentrar, mais alto a bolinha subirá. Enquanto isso, ela percorre os obstáculos da plataforma.

Por baixo dos panos

O fato da bolinha subir e descer com o "poder da sua mente" não é magica. Na verdade, o sensor (eletrodo) faz a leitura dos sinais transmitidos pelo seu cérebro e envia para o circuito eletrônico, realizando cálculos para determinar o seu nível de atenção e meditação. Ou seja, os seus sinais servem como entrada para o dispositivo.

Baseado nesses níveis, o cooler da plataforma (que fica sempre embaixo da bolinha) pode girar com mais ou menos velocidade.

O que importa pra gente?

Não vamos usar a plataforma do brinquedo, já que nossa intensão é apenas ler os dados. Precisaremos na verdade adaptar o capacete para conectar á um outro dispositivo que vai mostrar essa leitura para nós: o Arduíno.

O que é Arduíno

arduino

O Arduíno é uma placa eletrônica de baixo custo, open source e com capacidade de conectar outros dispositivos eletrônicos como LEDs, motores e sensores. Por isso, é muito utilizado em pequenos projetos de eletrônica e automação.

Para controlar o funcionamento desses dispositivos, enviamos um código em linguagem C/C++ para ele a partir de um cabo USB conectado de um computador ou Raspberry para a placa.

Existem diversos modelos no mercado, mas o mais comum e que iremos utilizar aqui é Arduíno UNO. Inclusive, vamos precisar de mais algumas coisinhas:

O que vamos precisar:

Materiais

Capacete com pilhas

🔌 Placa Arduino UNO e cabo USB
🔌 Capacete Mindlfex - Manual do brinquedo
🔌 3 pilhas do tipo AAA
🔌 Ferro de solda
🔌 Solda
🔌 2x Jumpers macho-macho
🔌 Chave estrela (cerca de 1/4'')

Preparando o Mindflex

O capacete vem fechado, já que ele foi feito para se conectar com sua plataforma. Mas podemos abrir a placa facilmente e soldar alguns pontos importantes: o ponto de leitura e referencia.

📝 Abra o capacete usando uma chave estrela. Você encontrará algo como:

📝 Encontre os pontos de leitura e referencia da placa:

Screenshot_2020-09-06 Apresentação sem título - Apresentações Google

📝 Solde os pontos indicados com os fios que serão conectados ao Arduíno posteriormente.

📝 Para ligar o Mindflex, encaixe as pilhas e use a chave para ligar e desligar.

Preparando a IDE

Com o nosso Mindflex pronto, está na hora de preparar a placa para coletar os dados. Se você nunca usou o Arduíno, vai precisar fazer o download da IDE clicando aqui.

Se estiver usando Ubuntu, você pode abrir o terminal e rodar esse comando:

$ sudo snap install arduino
Enter fullscreen mode Exit fullscreen mode

Depois de instalar, ao abri-la você vai encontrar uma interface como essa:

ide

Primeiro, vamos precisar instalar uma lib especifica para ler dados dos capacetes na Neurosky: o Brain.

Para importar a lib no Arduíno, siga os passos:

  1. Faça o download da lib pelo Github, gerando um arquivo .ZIP

  2. Pela IDE, abra Sketch > Include Library > Add ZIP library e selecione a pasta ZIP.

  3. De novo, acesse Sketch > Include Library e selecione Brain-master.

Agora, bora pro código:

#include <Brain.h>

Brain brain(Serial);

void setup() {
  Serial.begin(9600);
  delay(10);
}

void loop() {
  if (brain.update()) {
    if(brain.readSignalQuality() <= 60){
       Serial.println(brain.readCSV()); 
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

A partir desse código, estamos importando a biblioteca Brain com #include.

Dentro de void setup() estamos abrindo a comunicação serial com velocidade de 9600 bits por segundo e dando um pequeno delay antes de realizar a primeira leitura. Vale lembrar, que essa parte será realizada apenas uma vez.

O que será executando o tempo todo é código dentro de void loop(). Dentro dele, estamos chamando a função brain.update(), que retorna true se for possível ler os dados.

Depois, chamamos a função brain.readSignalQuality(), que retorna a qualidade dos sinais em um intervalo de 0 á 200.

Ok, mas que sinais são esses?

A leitura do Mindflex vai retornar 11 colunas, que indicam:

Coluna Significado
Qualidade do Sinal quanto mais próxima de 0, melhor, quanto mais próxima de 200, pior.
Atenção retorna uma estimativa de atenção, variando de 0 (mínimo) á 100 (máximo).
Meditação retorna uma estimativa de meditação, variando de 0 (mínimo) á 100 (máximo).

Os demais sinais são valores referentes aos nossos 5 tipos de ondas cerebrais, que representam resumidamente:

Onda Significado
Delta relacionada ao sono profundo sem sonhos.
Theta relacionada ao sono, reflexão e imaginação.
Alfa Baixo relacionada com calma e relaxamento.
Alfa Alto idem, com frequência mais alta.
Beta Baixo relacionado ao nosso estado de atenção.
Beta Alto idem, com frequência mais alta.
Gama Baixo relacionado com estados cognitivos, ou seja, quando estamos aprendendo ou memorizando algo.
Gama Alto idem, com frequência mais alta.

Pelo nosso código, determinamos que se a qualidade do sinal for menor que 60, os dados serão mostrados na porta serial pela função brain.readCSV(), retornando o valor de cada sinal separado por virgula.

Claro que o ideal seria captar somente os dados em que a qualidade fosse o mais próximo possível de 0, mas outros eletrodomésticos/dispositivos que emitem ondas eletromagnéticas podem influenciar na nossa leitura.

Para conhecer outras funções que essa lib oferece acesse a documentação

Show! Agora conecte o cabo USB na placa e depois na sua máquina. Vá em Tools > Board para selecionar o tipo da placa (no caso, Arduíno UNO) e a porta em Tools > Port, que pode ser algo como AMC0, TTY, etc (pode variar).

Conecte o Mindflex com o Arduíno da seguinte forma:

Screenshot_2020-08-30 printhandler ashx(1)

Show! Agora, vista o headset de modo que o sensor eletrodo fique em contato com a sua testa e conecte os clips em suas orelhas (eles são necessários para referenciar o sinal).

Lendo os dados

Para ver os dados, vá em Tools > Serial Portal

Screenshot_2020-09-06 Apresentação sem título - Apresentações Google(1)

Pronto! Agora conseguimos ver os sinais.

Indo além:

Se ficou interessado no Mindflex e como podemos fazer coisas incríveis com ele, sugiro que de uma olhada nesses materiais:

📚 Monografia de graduação da Tamires dos Santos, atualmente estudante de Mestrado da Universidade Federal do ABC e desenvolvedora de IHR

📚 Minha monografia usando o Mindflex, com foco em automatizar os processos de coleta, tratamento e treinamento da RNA para os dados

📚 Monografia sobre sistema de neurofeedback para análise de nível de concentração

📚 Artigo sobre o uso de ondas cerebrais para o controle de componentes eletrônicos.

📚 How to Hack Mindlex

📚 Tutorial sobre Mindflex

Top comments (0)