Você está na página 1de 13

TSPI – Tecnólogo e Sistemas para Internet

Tópicos Especiais - TE
Prof. Carlos A Petry
Projeto da disciplina: Registro/Resumo
2019/2

Medi-Call: Dispositivo auxiliar de medicações controladas


Identificação do Grupo
Nº: G3 Alunos: Gabriel Albrecht Bonato, Marcelo Felipe Guarani Fernandes Versão: 3
{gabriel.bonato, marcelo.guarani}@outlook.com

1. Introdução

Com o passar dos anos, a habilidade de lembrar-se de atividades básicas diárias cai consideravelmente.
Ao atingir a fase idosa, essa habilidade já está bem mais comprometida, necessitando de cuidados de terceiros.
Entretanto, nem toda a população idosa tem recursos para investir em alguém com dedicação exclusiva a seus
cuidados. Com o envelhecimento, surgem necessidades de medicações controladas diárias, as quais precisam ser
tomadas em doses e horários específicos.
Atualmente, com o avanço da tecnologia, muitos problemas e dificuldades vêm sendo amenizados com
sua ajuda desde assistentes virtuais pessoais a automatização de tarefas. Essas ferramentas surgem com o objetivo
de redução de custos e otimização de tempo.
Desse modo, dá-se a necessidade de desenvolver um dispositivo que possa auxiliar pessoas a manterem
seus cuidados médicos, fornecendo a possibilidade de acompanhamento mais eficiente pelo profissional da saúde,
e de pessoas responsáveis, como cuidadores de idosos ou familiares, e também alertar sobre a necessidade de
compra de medicamentos, vencimento de receituário médico, além de advertir o horário em que os medicamentos
devem ser tomados, bem como, possibilitar a terceiros a verificação se as dosagens de remédios foram tomadas
nos horários corretos.
Para tal, será desenvolvida uma interface web integrada ao dispositivo, onde o profissional de saúde e
somente ele, deverá cadastrar as informações referentes à prescrição medicamentosa.

2.1 Objetivos

2.1.1. Objetivo geral:

Desenvolver um dispositivo capaz de simplificar os cuidados médicos, por meio de controle do uso diário
de medicação.

2.2.2. Objetivos específicos:

• Realizar revisão bibliográfica sobre o Node-RED e o dispositivo Arduino;


• Desenvolver uma interface web que possibilite o monitoramento do paciente, e registro dos dados sobre
os medicamentos e suas dosagens por um profissional da saúde;
• Implementar um dispositivo físico que faça o controle da dosagem dos medicamentos receitados pelo
profissional responsável e disponibilize para o consumo;
• Implantar no dispositivo um mecanismo que permita identificar se o medicamento foi retirado da
plataforma;
• Adicionar ao dispositivo um meio que notifique quando o remédio deve ser ingerido e monitore a dosagem
de medicamentos disponível.

2. Desenvolvimento
2.1 Metodologia

• Os medicamentos controlados a serem tomados devem ser cadastrados em uma interface web pelo
profissional da saúde;
• O medicamento deve ser disponibilizado através de um dispensador que será movido por um Motor de
Passo, de acordo com a posição em compartimentos para cada medicamento;
• Quando o medicamento for disponibilizado, serão emitidos sinais sonoros através de Módulo Gravador
de Voz com Microfone e Alto-falante e sinais visuais através de um LED;
• Através de um Sensor Reflexivo Infravermelho, é possível verificar no momento de disponibilização do
medicamento, se ele foi disponibilizado corretamente;
• Por meio do mesmo Sensor Reflexivo Infravermelho é possível verificar se o medicamento foi retirado
da plataforma de disponibilização;
• Através de um Sensor Reflexivo Infravermelho em cada compartimento de medicamentos, é possível
verificar a quantidade de medicamentos, e alertar quando a volumetria em estoque está baixa ou o
medicamento não possuir mais estoque.

2.2 Lista de Tarefas

• Fornecer uma plataforma que possibilite o registro de horários em que a medicação precisa ser tomada;
• Disponibilizar o medicamento correto no horário previamente informado na aplicação;
• Alertar o usuário quando o medicamento é disponibilizado;
• Controlar se o medicamento foi disponibilizado corretamente;
• Verificar se o medicamento é retirado da plataforma de disponibilização;
• Controlar o estoque de medicamentos.

2.2 Materiais e Ferramentas

2.2.1 Materiais

• Para a implantação do dispositivo, será utilizado o Arduino.

O Arduino, como mostra a Figura 1, é uma plataforma open-source de prototipagem eletrônica


com hardware e software flexíveis e de fácil uso.

• Motor de passo para Arduino e driver ULN2003

Um Motor de Passo, como mostra a Figura 2, é um dispositivo eletromecânico que converte os


impulsos elétricos em movimentos mecânicos discretos. O eixo de um motor de passo gira em incrementos
discretos quando os impulsos de comando elétricos são aplicados a ele na sequência correta.

• Módulo Gravador de Voz com Microfone e Alto-falante - ISD1820

Este módulo trata-se de um equipamento composto por um microfone e um alto falante de 0,5W.
Ele possibilita a gravação de 10 segundos de som, o que é armazenado na memória EEPROM interna, e
a reprodução utiliza um alto-falante comum de 8 ohms.

• Módulo Sensor Reflexivo Infravermelho

É um módulo baseado em um transmissor e um receptor infravermelho. Eles são capazes de emitir


e receptar sinais luminosos, que permitem a identificação da presença de objeto no campo de alcance do
sensor.

• LED
O LED é um diodo emissor de luz comumente utilizado como fonte luminosa ou sinalizadora em
projetos eletrônicos, como mostra a Figura 5. É também um componente eletrônico bipolar, já que possui
dois terminais: o ânodo e o cátodo. Dependendo de sua polarização, é capaz de permitir ou não a passagem
da corrente elétrica.

• Dispenser

O dispenser, mostrado na Figura 10, onde serão dispostos os medicamentos, é feito de materiais
recicláveis como: papel, papelão e plástico, a fim de termos algo mais próximo do que seria feito
industrialmente. As suas divisórias feitas de papelão e revestidas com papel sulfite, formam os 4 slots.

2.2.2 Ferramentas

• Node-RED:

O Node-RED, é uma ferramenta visual de ambiente de código aberto, que inicialmente foi
desenvolvida para implementar, criar e/ou conectar dispositivos de IoT, tendo sido estendida
posteriormente para hardwares, APIs e Web Services. Assim sendo, por meio dos nodes ou nós, é possível
ler arquivos CSV, escutar eventos HTTP, TCP, Web Socket, Twitter, MQTT, entre outros.
Entre as características do Node-RED destaca-se a possibilidade de poder ser desenvolvido em
qualquer Sistema Operacional. Entretanto, para que seja possível proceder com a instalação da
dependência do Node-RED, dependência esta que pode ser entendida como um pacote de módulos, é
preciso que já esteja instalado o Node.js.

• Firmata:

O Firmata é um protocolo genérico para a comunicação entre os dispositivos microcontroladores


e um software em um servidor. Seu objetivo é simplificar a programação, de modo que não haja
necessidade de escrever códigos de programação específicos para cada tipo de dispositivo, fornecendo
uma plataforma ampla, que consegue se comunicar de maneira centralizada a vários microcontroladores
existentes no mercado, e assim, conforme Steiner (2009), “garantir uma ampla gama de implementações”.

2.3 Medi-Call

Esta seção aborda os procedimentos de integração necessários para correto funcionamento do protótipo.
Nela são apresentados o modelo esquemático desenvolvido na plataforma open-source Fritzing, e os fluxogramas
implementados na plataforma Node-RED.

2.3.1 Modelo Esquemático

O modelo esquemático apresentado na Figura 6, elucida por meio visual a forma utilizada pelos autores
para interligar os componentes elétricos ao Arduino. Para tal, são necessários os materiais e ferramentas
mostrados na Seção 2.2.

2.3.2 Fluxos Node-RED

O Node-RED faz uso de uma abordagem de programação visual que permite ao desenvolvedor conectar
blocos de códigos predefinidos, conhecidos como nodos, para executar determinada tarefa. Esses nodos,
geralmente uma combinação de nodo de entrada, nodo de processamento e nodo de saída, quando conectados
formam um fluxo.
Assim sendo, o Medi-Call faz uso de três fluxos, e são eles:

• Provision:
Este fluxo, apresentado na Figura 7, é responsável por verificar periodicamente se o medicamento
foi disponibilizado para ingestão ao paciente. Para isso, foram implementadas duas sequências de fluxos:
um com a tarefa de girar o dispenser por meio do motor de passo, e o outro de informar ao paciente por
meio de um LED e um alarme sonoro que o remédio foi disponibilizado, para tal, foram implementadas
duas funções em um nodo.
Os blocos de código abaixo compõem os algoritmos que controlam a rotação do motor de passo
e a verificação de disponibilização de medicamentos. Para que o dispenser dê um giro de 360º, são
necessários 512 passos, e nele constam 4 slots, cada um deles tem um tamanho total de 128 passos.

Quando um medicamento é disponibilizado, ele vai ser disponibilizado em uma plataforma que
será monitorada por um sensor infravermelho, que identificará se o medicamento foi disponibilizado
corretamente, o que poderá ser verificado pela interface de monitoramento. A disponibilização do
medicamento, será identificada se o sensor retornar um valor inferior a 900.
É preciso que após girar o dispenser, o slot não seja apontado de forma centralizada, para que não
seja disponibilizado mais de um medicamento por vez. Deste modo, o número de passos realizados pelo
motor é de 64 (metade do número de passos de um slot), conforme inicializado na linha 4.

1. if (msg.payload <= 900) {


2. msg.payload = true;
3. if (context.level != msg.payload) {
4. msg.steps = 64;
5. var position = global.get("position");
6.
7. if (!position) {
8. position = 0;
9. }
10.
11. position = position + 0.5;
12.
13. if (position >= 4) {
14. position = position - 4;
15. }
16.
17. global.set("position", position)
18. } else {
19. msg.steps = 0;
20. }
21. context.level = true;
22. msg.platformEmpty = false;
23. } else {
24. msg.steps = 0;
25. msg.payload = false;
26. context.level = false;
27. msg.platformEmpty = true;
28. }
29.
30. return msg;

O código a seguir, é responsável por realizar o controle das posições do motor de passos. Ele
percorre a lista de medicamentos registrados por meio do formulário, e verifica se é o horário de tomar a
dose do medicamento. Se for a hora, então, ele fará o cálculo do número de passos necessários para sair
da posição atual e chegar até a posição do slot em que o medicamento a ser disponibilizado se encontra,
para após, acionar o motor.
1. if (!msg.payload) {
2. msg.steps = 0;
3. return msg;
4. }
5.
6. var currentDate = new Date();
7. var array = JSON.parse(msg.payload);
8.
9. var position = global.get("position");
10.
11. if (!position) {
12. position = 0;
13. }
14.
15. var toPosition = 0;
16. var steps = 0;
17. var slot = -1;
18.
19. for (i = 0; i < array.length; i++) {
20. var aux = JSON.parse(array[i]);
21.
22. var dailyAmount = 24 / aux.time;
23.
24. for (j = 0; j < dailyAmount; j++) {
25. var hour = aux.hour + (j * aux.time);
26.
27. if (hour >= 24) {
28. hour = hour - 24;
29. }
30.
31. if (hour == currentDate.getHours() - 1 && aux.minute ==
currentDate.getMinutes()) {
32. toPosition = aux.slot - position;
33. if (toPosition >= 0) {
34. steps = toPosition * 128;
35. } else {
36. steps = (toPosition + 4) * 128;
37. }
38. slot = aux.slot;
39. }
40. }
41. }
42.
43. position = toPosition + position;
44.
45. if (position >= 4) {
46. position = position - 4;
47. }
48.
49. global.set("position", position);
50.
51. msg.toPosition = toPosition;
52. msg.hour = currentDate.getHours();
53. msg.minute = currentDate.getMinutes();
54. msg.slot = slot;
55. msg.position = position;
56.
57. msg.steps = steps;
58. msg.payload = array;
59.
60. return msg;
• Stock:
Fluxo responsável por gerir os níveis de medicamente disposto no slot do dispenser de
medicamento.
No trecho de código abaixo, é realizado o controle da posição do motor para que se verifique a
quantidade de medicamentos restante em cada slot, adicionando uma propriedade global para indicar que
é o momento de ser realizada a verificação.

1. var position = global.get("position");


2.
3. if (!position) {
4. position = 0;
5. }
6.
7. position = 1 + position;
8.
9. if (position >= 4) {
10. position = position - 4;
11. }
12.
13. global.set("position", position);
14. global.set("verifyStock", true);
15.
16. return msg;

O seguinte, é executado entre as movimentações do motor para cada slot. Sendo assim, quando o
motor terminar de realizar a movimentação até o slot seguinte e a propriedade global indicando que a
quantidade deve ser verificada, o sensor infravermelho será acionado e enviará o valor indicando a
porcentagem aos gráficos de monitoração de níveis dos slots. A porcentagem é calculada tendo como base
que o valor mínimo indicado pelo sensor é de 33 e o máximo é 1022.

1. var shouldVerify = global.get("verifyStock");


2.
3. if (!shouldVerify) {
4. msg.payload = 0;
5. msg.slot = -1;
6. return msg;
7. }
8.
9. global.set("verifyStock", false);
10.
11. var slot = Number(global.get("position"));
12. slot = Math.ceil(slot) + 2;
13.
14. if (slot >= 4) {
15. slot = slot - 4;
16. }
17.
18. msg.payload = Math.round((msg.payload - 33) * 100 / 989);
19.
20. msg.slot = slot;
21.
22. return msg;

• Dashboard:
Fluxo no qual devem ser informados dados relacionados ao medicamento, tais como: horário de
ingestão, dosagem, slot onde está disposto e sua descrição.
No trecho abaixo, encontra-se a manipulação para que os dados enviados no formulário sejam
armazenados em formato JSON.

1. var array;
2.
3. if (!msg.payload.file) {
4. array = [];
5. } else {
6. array = JSON.parse(msg.payload.file);
7. }
8.
9. array.push(msg.payload.form);
10.
11. msg.payload = array;
12.
13. return msg;

3. Considerações Finais

3.1 Conclusão

Após feita a conexão dos sensores à placa Arduino e implementado os fluxos na plataforma Node-RED,
testes foram executados simulando o uso de um paciente, no qual foram informados os dados referentes a
medicação ao formulário.
Observou-se que de fato o dispenser girou no momento esperado, e os LEDs indicaram que o
medicamente fora disponibilizado, assim como informado no formulário de registro. Pensava-se inicialmente em
fazer o transporto do medicamente do dispenser para o recipiente no qual o usuário faria a retirada das drágeas
de forma automática, porém seriam necessários mais tempo e material (hardware) específico para o mesmo, então,
esta tarefa foi feita de forma manual, a fim de comprovar a eficácia em um cenário totalmente automatizado.

3.2 Trabalhos Futuros

A fim de trazer uma maior automatização ao protótipo, a tarefa manual da retirada da drágea do dispenser
para ingestão citada na Seção 3.1, será implementada posteriormente.
Acredita-se, que a solução esteja em disponibilizar os medicamentos em um tipo de trilha, e fazer o uso
de mais um motor de passo, que deverá abrir uma hatch, e então, disponibilizar o medicamente no recipiente, no
qual o usuário fará a retirada.
Além disso, também ocorrerá a implantação de um bloqueio para o registro de medicamentos, de modo
que somente um profissional da saúde realize o cadastro dos medicamentos a serem ingeridos pelo paciente.

4. Referências Bibliográficas

BARBOSA, Bianca Larissa. RIBEIRO, Laura. MORAIS, Josué Silva de. AUTOMATIZAÇÃO DE UM VARAL
DOMÉSTICO UTILIZANDO ARDUINO. XIV Conferência de Estudos em Engenharia Elétrica (CEEL) – 2016.

BASÍLIO, Shirley. O que é Node-RED? Conhecendo e instalando. Disponível em:


<http://blogmasterwalkershop.com.br/outros/o-que-e-node-red-conhecendo-e-instalando/>. Acesso em: ago
2019.

BAU DA ELETRONICA. Motor de Passo + Drive ULN2003. Disponível em:


<http://www.baudaeletronica.com.br/motor-de-passo-drive-uln2003.html>. Acesso em: ago 2019.

NODE-RED. Node-RED. Disponível em: <https://nodered.org/>. Acesso em: ago 2019.


STEINER, Hans-Christoph. Firmata: Towards Making Microcontrollers Act Like Extensions of the Computer.
NIME. 2009.

______. LED Amarelo de Alto Brilho 5mm. Disponível em: <https://www.usinainfo.com.br/leds/led-amarelo-


de-alto-brilho-5mm-3067.html>. Acesso em: ago 2019.

_____. Módulo Gravador de Voz com Microfone e Alto-falante - ISD1820. Disponível em:
<https://www.usinainfo.com.br/outros-modulos-arduino/modulo-gravador-de-voz-com-microfone-e-alto-
falante-isd1820-2835.html>. Acesso em: ago 2019.

______. Módulo Sensor Reflexivo Infravermelho - P12. Disponível em: <https://www.usinainfo.com.br/sensor-


de-linha-arduino/modulo-sensor-reflexivo-infravermelho-p12-3177.html>. Acesso em: ago 2019.

5. Anexos/ Apêndice

Figura 1: Arduino

Fonte:
(https://www.google.com/search?q=arduino&source=lnms&tbm=isch&sa=X&ved=0ahUKEwip98_3k67kAhX
AHrkGHUO1DV0Q_AUIEygC&biw=1366&bih=667#imgrc=thzl9gl2usvhVM:)

Figura 2: Motor de passo para Arduino e driver ULN2003

Fonte: (http://www.baudaeletronica.com.br/motor-de-passo-drive-uln2003.html)

Figura 3: Módulo Gravador de Voz com Microfone e Alto-falante – ISD1820


Fonte: (https://www.eletrogate.com/modulo-gravador-de-voz-e-player-isd1820-com-alto-falante)

Figura 4: Sensor Reflexivo Infravermelho – TCRT5000

Fonte: (https://blogmasterwalkershop.com.br/arduino/arduino-utilizando-o-sensor-reflexivo-tcrt5000/)

Figura 5: LED

Fonte: (https://www.usinainfo.com.br/leds/led-vermelho-5mm-difuso-kit-com-5-unidades-2984.html)

Figura 6: Modelo Esquemático


Fonte: Própria dos Autores

Figura 7: Provision Flow

Fonte: Própria dos Autores

Figura 8: Stock Flow


Fonte: Própria dos Autores

Figura 9: Dashboard Flow

Fonte: Própria dos Autores

Figura 10: Dispenser/ Slots

Fonte: Própria dos Autores


Figura 11: Interface de Monitoramento

Fonte: Própria dos Autores


Figura 12: Formulário de Cadastro de Medicamentos

Fonte: Própria dos Autores