Introduction: Bee Therapy

O projeto Bee Therapy consiste em uma plataforma de reabilitação motora que visa tranformar a realização de exercícios fisioterápicos, proporcionando ao paciente uma maneira muito mais dinâmica e interativa e ao profissional da área, facilidade na coleta de resultados e acompanhamento do processo.

A abelha conta com três antenas, cada uma dotada de um sensor de proximidade e um LED. Ao entrar em execução, um dos pontos é ativado aleatoriamente, o LED acende e o paciente deve posicionar a mão frente à respectiva antena. O processo se repete diversas vezes com base no limite de erros permitido pelo desenvolvedor. O sensor capta cada acerto e, através da placa Intel Edison, envia os dados para a nuvem, que recebe os acertos isolados, o valor total e o tempo de resposta. Estes dados podem ser disponibilizados em um sistema web customizado, dessa forma, o fisioterapeuta tem acesso às informações em qualquer computador com conexão a internet.

Step 1: Ferramentas Necessárias

- Uma placa Intel Edison

- Protoboard

- Três LEDs

- Três sensores Óptico Reflexivos

- Um buzzer (opcional)

- Jumper cables

- Conta no ThingSpeak

- Arduino IDE com suporte ao Intel Edison*

- Intel XDK IoT Edition*

------------------------------------------

* Estas foram as IDEs utilizadas no projeto, ambas indicadas no site da Intel. Caso queria, é possível utilizar o editor de sua preferência, entretanto as IDEs recomendadas facilitam a integração direta com a placa.

Step 2: Montagem Do Hardware

Nas imagens é possível conferir o esquema básico para a montagem do hardware. Conectados à placa Intel Edison, foram utilizados três sensores óptico reflexivos, três LEDs e um buzzer.

Para caracterizar o projeto com formato de abelha, foram utilizados três potes de manteiga e um barril de chopp.

Step 3: Software

O software inserido na placa Edison trabalha com os dados recebidos pelos três sensores Óptico Reflexivos e calcula qual o tempo de resposta do usuário desde o acendimento de cada led.

O processo funciona como um jogo de 3 fases e é iniciado com 5 vidas. Cada vez que o usuário deixa de responder corretamente, uma vida é perdida. A cada acerto, são somados 10 pontos. Quando a pessoa atinge 50 ou 100 pontos, uma nova fase é iniciada e velocidade de execução aumenta.

Ao perder todas as vidas ou contabilizar 200 pontos, o programa é encerrado e os dados são enviados para a nuvem.

Para maiores esclarecimentos foi montado um fluxograma do software.

Step 4: ThingSpeak

Para realizar a hospedagem de dados, foram utilizados os serviços disponibilizados pelo ThingSpeak, plataforma de dados voltada para a IoT. É necessário abrir uma conta no site, definir um nome e quantos campos serão utilizados. É importante ressaltar que para utilizar os dados em outras plataformas, a opção 'Tornar público' deve estar checada. Após a criação, serão fornecidos o ID da conta e duas chaves: Chave de Escrita e Chave de Leitura. Estes três valores serão utilizados para realizar a comunicação entre o Edison e o Software.

Step 5: Envio Dos Dados Para O ThingSpeak

Para realizar a comunicação entre o Edison e o ThingSpeak, foi utilizado como base o código disponibilizado pelo iobridge aqui, em um exemplo de comunicação Ethernet a partir de um Arduino. Adaptando para o WiFi, ficou assim.

No nosso caso, queríamos mandar 6 variáveis para a nuvem. A função updateThingSpeak foi chamada da seguinte forma:

if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval)) {
updateThingSpeak("field1="+String(total_af1)+"&field2="+String(total_af2)
+"&field3="+String(total_af3)+"&field4="+String(tempo_f1)+
"&field5="+String(tempo_f2)+"&field6="+String(tempo_f3));
}

Dessa forma cada vez que o programa era executado, todo os dados enviados pelo Edison poderiam ser acessados através do link disponibilizado no site do ThingSpeak.

Step 6: Acesso Aos Dados

Para acessar os dados é necessário do ID do canal no ThingSpeak, a chave de leitura e a chave de escrita, caso não saiba encontra-la por favor volte ao Step4

Criamos três variáveis: uma irá ter acesso a api, outra irá criar uma instância da api thingspeakclient, e na última variável passamos o ID do canal no qual vamos ter acesso.

var thingSpeakclient = require('thingspeakclient');
var client = new thingSpeakclient();

var channelId = ;

Para ter acesso ao canal da nuvem criamos uma linha de código onde nessa iremos passar o id, a chave de escrita, e a chave de leitura:

client.attachChannel(channelId, { writeKey:'****************', readKey:'****************'}, null);

Após isso fazemos uma chamada pra pegar os feeds(atualizações e dados) da nuvem:

client.getChannelFeeds(channelId, null, callBack);

E por último criamos a função de callBack que irá receber os dados, e nela passamos dois parâmetros, um para mostrar se teve algum erro, e outro para mostrar os dados recebidos da nuvem:

function callBack(err, resp){

console.log(err);

console.log(resp);

}