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);
}