102
Dispensador de Medicamentos Nuno Miguel Lopes dos Santos Dissertação para obtenção do Grau de Mestre em Engenharia Electrotécnica e de Computadores Orientadores: Prof. Renato Jorge Caleira Nunes Prof. Paulo Rogério Barreiros D' Almeida Pereira Júri Presidente: Prof. Nuno Cavaco Gomes Horta Orientador: Prof. Renato Jorge Caleira Nunes Vogal: Prof. João Nuno de Oliveira e Silva Novembro de 2015

Engenharia Electrotécnica e de Computadores - Autenticação · iii Resumo A esperança média de vida do ser humano tem vindo a aumentar, observando-se um envelhecimento da população

Embed Size (px)

Citation preview

Dispensador de Medicamentos

Nuno Miguel Lopes dos Santos

Dissertação para obtenção do Grau de Mestre em

Engenharia Electrotécnica e de Computadores

Orientadores: Prof. Renato Jorge Caleira Nunes

Prof. Paulo Rogério Barreiros D' Almeida Pereira

Júri

Presidente: Prof. Nuno Cavaco Gomes Horta

Orientador: Prof. Renato Jorge Caleira Nunes

Vogal: Prof. João Nuno de Oliveira e Silva

Novembro de 2015

i

Agradecimentos

A realização desta dissertação de mestrado apenas foi possível com o apoio de várias

pessoas, às quais quero deixar um agradecimento por toda a ajuda e disponibilidade.

Ao meu grande amigo Pedro Marques, Engenheiro Mecânico, por ter desenhado toda a

estrutura mecânica do protótipo criado e por, incansavelmente, se ter disponibilizado para realizar os

vários ajustes que foram necessários ao longo do processo de desenvolvimento.

À Glintt Engineering, por se ter disponibilizado para conhecer o meu projecto e por me ter

permitido realizar a impressão em 3D de toda a estrutura mecânica do protótipo, sem qualquer custo.

Ao professor Renato Nunes, pelo seu excelente trabalho enquanto orientador, disponibilidade

e apoio na resolução de todos os problemas que surgiram ao longo deste projecto.

Por fim, mas não menos importante, à minha família, por todo o apoio que me deram durante

este longo percurso e, em particular, à minha irmã, Ana Margarida Santos, por ter partilhado comigo o

seu conhecimento na área da saúde, que me ajudou em várias das decisões tomadas.

ii

iii

Resumo A esperança média de vida do ser humano tem vindo a aumentar, observando-se um

envelhecimento da população em geral. Associado ao envelhecimento, observa-se com frequência

perdas de capacidade cognitiva e falhas de memória, o que pode ter grande impacto na qualidade de

vida e autonomia das pessoas que tenham de cumprir um plano terapêutico.

Neste trabalho é descrito o desenvolvimento de um protótipo de um dispensador de

medicamentos, que pretende combater a falta de aderência a regimes de medicação, especialmente

de idosos e pessoas com limitações cognitivas.

Foram analisadas as funcionalidades de vários produtos existentes no mercado que abordam

este problema, tendo sido identificadas várias restrições e limitações. Com base nesta análise, foi

definida a lista de funcionalidades pretendidas e foi definida a arquitectura global da solução a

desenvolver.

Destaca-se como principal requisito a criação de uma solução aberta, que privilegia a

comunicação com outros dispositivos (Smartphones e Tablets) e a ligação à Internet, podendo ser

adaptada a diferentes contextos de utilização.

Dada a ênfase na abertura e na capacidade de interacção remota, foi também desenvolvida

uma API de programação que possibilita a terceiros desenvolverem aplicações de interacção com o

dispensador, podendo optimizá-las para contextos específicos e permitindo a automatização de

procedimentos de configuração (por exemplo, definição do plano terapêutico) e a recolha de

ocorrências (por exemplo, tomas falhadas e tentativas de acesso a horas indevidas).

O protótipo desenvolvido mostrou satisfazer os requisitos propostos, tendo culminado numa

solução modular, versátil e de custo acessível, que implementa as funcionalidades planeadas.

Palavras chave: Dispensador de medicamentos, Gestão terapêutica, Tecnologias assistivas,

Sistemas embebidos.

iv

v

Abstract The average life expectancy of human beings is increasing, resulting in an aging population.

Associated with aging, there is often loss of cognitive capabilities and memory problems, which can

have a major impact on quality of life and autonomy of people required to comply with a therapeutic

plan.

This report describes the development of a prototype of a medication dispenser, which aims to

combat the lack of adherence to medication regimens, especially for the elderly and people with

cognitive limitations.

The features of several products on the market that address this issue were analyzed, leading

to the identification of several restrictions and limitations. Based on this analysis, a list of required

features and the overall architecture of the solution to be developed were defined.

One of the main requirements was to create an open solution that focuses on communication

with other devices (Smartphones and Tablets) and the connection to the Internet, allowing it to be

adapted to different contexts of use.

Given the emphasis in the openness and remote interaction capacity, a programming API has

also been created, allowing third parties to develop and optimize applications to interact with the

dispenser in specific contexts, and allowing the automation of configuration procedures (e.g. defining

the therapy plan) and the collection of events (e.g. failed doses and access attempts in hours not

allowed).

The prototype developed fulfilled the proposed requirements, culminating in a modular,

versatile and affordable solution, which implements the planned features.

Keywords: Medication dispenser, Therapeutic management, Assistive technologies, Embedded

systems.

vi

vii

Índice

Agradecimentos ......................................................................................................................................i

Resumo................................................................................................................................................... iii

Abstract ...................................................................................................................................................v

Lista de Figuras ..................................................................................................................................... xi

Lista de Tabelas ................................................................................................................................... xiii

Glossário ............................................................................................................................................... xv

1. Introdução ........................................................................................................................................ 1

1.1 Motivação ............................................................................................................................. 1

1.2 Objectivos ............................................................................................................................. 2

1.3 Estrutura da tese .................................................................................................................. 3

2. Estado da Arte ................................................................................................................................ 4

2.1 Dispensadores de Medicamentos ........................................................................................ 4

2.2 MedSmart MD2 .................................................................................................................... 4

2.3 Philips Medication Dispenser ............................................................................................... 8

2.4 Medfolio Electronic Pillbox.................................................................................................. 12

2.5 MedHelper .......................................................................................................................... 14

2.6 Outros produtos .................................................................................................................. 15

3. Descrição da Solução Proposta ............................................................................................... 16

3.1 Funcionalidades do Dispensador ....................................................................................... 16

3.2 Cenários de Utilização ....................................................................................................... 19

3.3 Arquitectura do Dispensador .............................................................................................. 22

3.4 Selecção dos Módulos Constituintes ................................................................................. 23

3.4.1 Módulo GSM ........................................................................................................... 24

3.4.2 Módulo Wi-Fi ........................................................................................................... 25

3.4.3 Módulo Bluetooth .................................................................................................... 26

3.4.4 Módulo RTC ............................................................................................................ 27

3.4.5 Motor ....................................................................................................................... 28

3.4.6 Sensor de controlo de posição ................................................................................ 29

3.4.7 Teclado .................................................................................................................... 30

3.4.8 Display ..................................................................................................................... 30

viii

3.4.9 Bezouro ................................................................................................................... 31

3.5 Selecção do módulo de processamento ............................................................................. 32

3.5.1 Entradas/saídas e periféricos do microcontrolador ................................................. 32

3.5.2 Placa de desenvolvimento ...................................................................................... 34

3.5.3 Placa “Arduino Mega” ............................................................................................. 35

3.6 Outros componentes do sistema ........................................................................................ 36

4. Detalhes de implementação ...................................................................................................... 40

4.1 Estrutura do programa ....................................................................................................... 40

4.2 Data e hora ......................................................................................................................... 41

4.3 Dispensa de medicação ..................................................................................................... 42

4.3.1 Alarmes de dispensa ............................................................................................ 42

4.3.2 Modo diário........................................................................................................... 45

4.3.3 Medicação PRN ................................................................................................... 46

4.3.4 Monitorização de tentativas de dispensa não autorizadas .................................. 46

4.4 Mecanismo de dispensa .................................................................................................... 47

4.5 Avisos textuais ................................................................................................................... 48

4.6 Comunicação com o dispensador ...................................................................................... 49

4.6.1 Comunicação Bluetooth ....................................................................................... 49

4.6.2 Comunicação Wi-Fi .............................................................................................. 49

4.6.3 Comunicação GSM .............................................................................................. 50

4.6.4 Envio de comandos .............................................................................................. 51

4.6.5 Notificações remotas ............................................................................................ 54

4.6.6 API ........................................................................................................................ 55

4.6.7 Realização de chamadas ..................................................................................... 56

4.7 Interacção directa com o dispensador ................................................................................. 56

4.7.1 Organização dos menus ...................................................................................... 56

4.7.2 Implementação dos menus ................................................................................. 57

4.8 Registo persistente de informação ....................................................................................... 59

4.9 Segurança ............................................................................................................................ 62

4.10 Gestão de energia ................................................................................................................ 64

5. Análise dos resultados .............................................................................................................. 65

ix

5.1 Testes .................................................................................................................................. 65

5.2 Análise de custos ................................................................................................................ 67

5.3 Consumo energético .......................................................................................................... 68

5.4 Recursos utilizados no microcontrolador ........................................................................... 71

6. Conclusão ................................................................................................................................... 72

7. Bibliografia .................................................................................................................................. 75

Anexos .................................................................................................................................................. 81

A.1. Algoritmo de funcionamento do protocolo série .................................................................. 81

A.2. Lista de comandos do protocolo de comunicação .............................................................. 82

A.3. Tipos de notificações remotas geradas pelo dispensador .................................................. 84

A.4. Dimensões dos dados guardados em EEPROM ................................................................ 84

A.5. Custo dos componentes electrónicos utilizados .................................................................85

x

xi

Lista de Figuras

Figura 1 - Equipamento MedSmart ........................................................................................................ 5

Figura 2 - Método de retirar os comprimidos do dispensador.. .............................................................. 6

Figura 3 - Representação do interior do MedSmart e interface de programação.. ................................ 7

Figura 4 - Esquema do dispensador e dos seus principais componentes ............................................. 8

Figura 5 - Esquema do interior do dispensador da Philips.. ................................................................... 9

Figura 6 - Teclado de interação com o sistema.. ................................................................................. 11

Figura 7 - Estrutura de documentação dos medicamentos tomados . ................................................. 13

Figura 8 – Exemplo de uma arquitectura de configuração de múltiplos dispensadores. ..................... 20

Figura 9 – Exemplo de uma arquitectura com troca de dados através da Internet. ............................ 21

Figura 10 – Comunicação remota com o dispensador utilizando GSM. .............................................. 21

Figura 11 – Arquitectura do dispensador. ............................................................................................ 22

Figura 12 – Placa GSM baseada no módulo SIM900.. ........................................................................ 25

Figura 13 – Módulo ESP-01, baseado no dispositivo ESP8266.. ........................................................ 26

Figura 14 – Módulo de comunicação baseado no dispositivo HC-06 .................................................. 27

Figura 15 – Módulo RTC que usa o DS3231 e a EEPROM AT24C32 ................................................ 28

Figura 16 – Motor de passo 28BYJ-48. ................................................................................................ 28

Figura 17 – Princípio de funcionamento de um sensor de Hall e de um optocouplador ..................... 29

Figura 18 – Optocouplador ITR9608 e diagrama eléctrico correspondente . ...................................... 30

Figura 19 – Teclado de membrana utilizado no protótipo e correspondente esquema eléctrico . ...... 30

Figura 20 – LCD QC2004A, utilizado no protótipo.. ............................................................................. 31

Figura 21 – Placa de desenvolvimento Arduino Mega ......................................................................... 36

Figura 22 – Esquema eléctrico do circuito de alimentação do dispensador. ....................................... 37

Figura 23 – Esquema eléctrico do protótipo desenvolvido. .................................................................. 38

Figura 24 – Representação em memória de alarmes associados a múltiplos compartimentos. ......... 43

Figura 25 – Carregamento de alarmes para memória RAM. ............................................................... 43

Figura 26 – Exemplo de conflito entre o tempo de tolerância de um alarme e o disparo do seguinte. 44

Figura 27 – Exemplo de uma situaçao de conflito nos alarmes, causada pela dose antecipada. ....... 44

Figura 28 – Configuração dos alarmes usando o modo diário. ............................................................ 45

Figura 29 – Funcionamento da monitorização de tentativas de dispensa não autorizadas........ ........ 46

xii

Figura 30 – Processo de envio de uma notificação por GSM.... .......................................................... 51

Figura 31 – Procedimento de cópia e estruturação dos dados recebidos. .......................................... 52

Figura 32 – Estrutura das mensagens de comunicação com o dispensador. ..................................... 52

Figura 33 – Estrutura das mensagens de resposta aos comandos. .................................................... 53

Figura 34 – Esquema de tratamento dos comandos recebidos..... ...................................................... 54

Figura 35 – Formato de uma notificação textual, cuja dimensão depende do tipo de notificação. ..... 54

Figura 36 – Exemplo de alguns menus da aplicação desenvolvida para Android. .............................. 55

Figura 37 – Organização estrutural dos menus do dispensador........ ................................................. 57

Figura 38 – Exemplo da representação interna das posições navegáveis de um menu. .................... 58

Figura 39 – Exemplo da estrutura que guarda os dígitos introduzidos nos campos de entrada. ........ 58

Figura 40 – Estrutura dos alarmes...... ................................................................................................. 59

Figura 41 – Estrutura dos avisos textuais. ........................................................................................... 60

Figura 42 – Estrutura das entradas associadas aos medicamentos PRN. ......................................... 60

Figura 43 – Estrutura de uma mensagem textual........ ........................................................................ 60

Figura 44 – Estrutura de um evento de tentativa de acesso a medicação fora do horário permitido. . 61

Figura A.1.1 - Funcionamento do protocolo de recepção de dados por comunicação série...............81

xiii

Lista de Tabelas

Tabela 1 – Requisitos de entradas/saídas e interfaces de comunicação para o microcontrolador ..... 32

Tabela 2 - Principais estruturas de dados a utilizar e dimensão correspondente. ............................... 34

Tabela 3 – Listagem das interrupções utilizadas no programa desenvolvido..... ................................. 40

Tabela 4 – Tempo de envio de alguns dos comandos do dispensador. .............................................. 67

Tabela 5 – Consumo de corrente dos principais componentes do sistema. ........................................ 69

Tabela A.2.1 - Comandos do protocolo de comunicação.................................................................... 82

Tabela A.4.1 - Dimensões dos dados guardados na EEPROM do microcontrolador..........................84

Tabela A.5.1 - Custo dos componentes utilizados no desenvolvimento do protótipo..........................85

xiv

xv

Glossário API Application Programming Interface.

ASCII American Standard Code for Information Interchange.

AT Attencion.

CPU Central Processing Unit.

DC Direct Current.

EEPROM Electrically-Erasable Programmable Read-Only Memory.

GSM Global System for Mobile communications.

HTTP Hypertext Transfer Protocol.

I2C Inter-Integrated Circuit.

IDE Integrated Development Environment.

IO Input / Output.

IP Internet Protocol.

LCD Liquid-Crystal Display.

LED Light Emitting Diode.

MIPS Million of Instructions per Second.

MOSFET Metal Oxide Semiconductor Field Effect Transistor.

NPN Negative - Positive - Negative transistor.

PC Personal Computer.

PCB Printed Circuit Board.

PIN Personal Identification Number.

PRN Do latim pro re nata.

RAM Random-Access Memory.

PWM Pulse Width Modulation.

RISC Reduced Instruction Set Computing.

ROM Read-Only Memory.

RTC Real-Time Clock.

SIM Subscriber Identity Module.

SMD Surface-Mount Device

SMS Short Message Service.

SPI Serial Peripheral interface.

SPP Serial Port Profile.

xvi

SRAM Static Random Acess Memory.

TCP/IP Transmission Control Protocol / Internet Protocol.

TTL Transistor-Transistor Logic.

UART Universal Asynchronous Receiver/Transmitter.

USB Universal Serial Bus.

1

1 Introdução

1.1 Motivação

O consumo de medicamentos tem vindo a aumentar, permitindo prolongar e melhorar a

qualidade de vida das pessoas. Apesar desta tendência se verificar em todas as faixas etárias, os

idosos ocupam, naturalmente, um lugar de destaque no que toca ao consumo de medicamentos.

Nesta faixa etária, quer a quantidade de comprimidos quer a complexidade nos regimes de

toma são, tipicamente, maiores. Para além da variedade de medicamentos, as suas tomas podem

também ser complexas: por vezes um medicamento tem de ser tomado várias vezes ao longo do dia,

em doses diferentes, ou com doses que variam ao longo do mês.

Somando esta complexidade a uma diminuição das capacidades cognitivas, auditivas e

visuais dos idosos, é muito comum que estes cometam erros nas tomas, especialmente quando não

são supervisionados. Adicionalmente, é também comum observar-se uma degradação da capacidade

de memória, tornando-se muito mais difícil ao paciente recordar-se das instruções de toma dos

medicamentos, incluindo doses e horários. Do ponto de vista da visão, os idosos têm, geralmente,

maior dificuldade em ler os rótulos, sendo ainda importante considerar que uma percentagem

relevante destes são analfabetos, baseando-se muitas vezes nas cores e nos formatos das caixas

para distinguir os medicamentos. Por fim, a redução das capacidades auditivas pode levar a uma

percepção errada das instruções de toma.

Como resultado destes erros na toma da medicação, as consequências podem ir desde a

ineficácia da terapêutica a casos de sobredosagem (por toma repetida devido a esquecimento) ou

interacções medicamentosas indesejáveis, trazendo vários riscos para a saúde do paciente e

podendo até causar a morte.

Tendo em conta os referidos riscos, é fundamental que se cumpra correctamente o que foi

prescrito, respeitando os horários, as quantidades e a duração dos tratamentos. Para tal, as soluções

mais comuns passam pelo controlo das tomas por parte de familiares ou pela contratação de serviços

médicos que garantam a correcção das mesmas. No entanto, dado o contexto socioeconómico

actual, é muitas vezes incomportável para os familiares efectuar esse controlo ou contratar alguma

entidade. Por outro lado, os idosos nem sempre aceitam bem a presença de outra pessoa por

percepcionarem isso como uma perda da sua independência.

2

1.2 Objectivos

O presente trabalho tem como objectivo a implementação de uma solução que procura tentar

resolver os problemas descritos anteriormente, através da criação de um dispensador de

medicamentos inteligente que ajude os idosos a seguirem correctamente as suas terapêuticas,

evitando a necessidade de um acompanhamento presencial constante por parte de terceiros.

Assim, pretende-se desenvolver um dispositivo que guarde a medicação de uma pessoa,

alertando-a para a hora de cada toma e dispensando os medicamentos apenas no momento

adequado. Naturalmente, o dispensador terá de ser previamente configurado, o que pode ser feito

pelo próprio, por um familiar ou por terceiros devidamente autorizados, introduzindo a medicação e os

horários prescritos pelo médico.

No entanto, o objectivo do projecto não passa por criar um produto final, mas sim um

protótipo funcional que sirva de prova de conceito. Assim, nesta fase, pretende-se a sua

implementação recorrendo a um conjunto de módulos electrónicos específicos, culminando numa

solução que cumpra um conjunto de requisitos necessários à resolução do problema proposto,

podendo servir de base para uma futura implementação em hardware dedicado.

Importa ainda referir que, apesar de não ser um foco principal do trabalho, pretende-se

também fazer uma primeira abordagem à estrutura mecânica do sistema dispensador, sem a qual

não é possível desenvolver a respectiva vertente de controlo, nem identificar quais os sensores e

actuadores adequados.

Pretende-se que a solução final seja um sistema aberto, que possa ser usado como

componente de algo mais vasto. Assim, um dos objectivos passa por permitir a interacção do

dispensador com dispositivos externos, nos quais se possam desenvolver interfaces de configuração

mais amigáveis e adaptáveis a diferentes contextos de utilização, permitindo assim a sua integração

em serviços de outras entidades.

Será desenvolvido o software necessário ao correcto funcionamento do dispensador, bem

como o software necessário para interagir e configurar o mesmo, seja localmente (no próprio

dispositivo) seja a partir de um dispositivo externo. No que diz respeito aos dispositivos externos, o

objectivo passa por criar ferramentas genéricas através das quais outras entidades possam

desenvolver as referidas aplicações, evitando assim impor uma solução única e estática.

Dado o contexto referido anteriormente, associado a uma população que tende a envelhecer

cada vez mais, o desenvolvimento desta solução poderá ter um grande impacto social, contribuindo

para uma melhor qualidade de vida dos idosos, uma vez que facilitará a administração correcta das

terapêuticas, contribuindo consequentemente para uma maior eficácia das mesmas. Da mesma

forma, ajudará estas pessoas a terem uma maior autonomia, reduzindo a dependência de terceiros

para realizar uma tarefa tão básica das suas vidas como é a toma da medicação. A presente solução

tem igualmente um impacto positivo na vida de familiares, que deixam de ter de realizar uma

monitorização constante das tomas de medicamentos dos idosos.

3

1.3 Estrutura da tese

No próximo capítulo apresenta-se o estado da arte, descrevendo-se diferentes sistemas

similares ou relacionados com o trabalho que se pretende desenvolver.

No capítulo 3 é descrita a solução proposta, começando-se por detalhar as principais

funcionalidades pretendidas e alguns cenários de utilização. Seguidamente apresenta-se a

arquitectura delineada para o dispensador, concluindo-se o capítulo com uma análise dos vários

módulos e componentes electrónicos escolhidos para a sua implementação.

No capítulo 4 descrevem-se os detalhes de implementação da solução, com particular ênfase

no software de controlo do dispensador.

No capítulo 5 realiza-se a análise dos resultados obtidos e, no capítulo 6, são apresentadas

as conclusões da presente dissertação.

4

2 Estado da Arte

2.1 Dispensadores de Medicamentos

Este capítulo tem como objectivo descrever as características e funcionalidades das soluções

existentes que se mostraram mais relevantes. A generalidade dos dispensadores que foi possível

analisar correspondem a produtos comerciais e, não se podendo ter acesso aos mesmos, a sua

apreciação encontra-se limitada pela documentação disponibilizada pelos fabricantes e vendedores.

A informação disponível está sujeita à parcialidade do fabricante e, na maioria dos casos casos,

apresenta poucos detalhes técnicos.

Para complementar o estudo efectuado, inclui-se igualmente uma breve análise de uma

aplicação de telemóvel que permite ajudar na gestão da medicação. Refere-se que existem inúmeras

aplicações deste tipo, mas que a generalidade partilha as mesmas funcionalidades básicas, razão

pela qual se analisou apenas uma que se considerou representativa.

2.2 MedSmart MD2

O MedSmart é um dispensador automático de comprimidos, criado pela empresa e-pill. A

análise do produto é feita maioritariamente a partir do manual do MedSmart [1]. Este é um produto

portátil, com forma aproximadamente circular, com um peso de 0.8 kg e um diâmetro de

aproximadamente 20 cm – ver figura 1.

Mecanicamente, usa um mecanismo de rotação, em que os comprimidos são colocados

numa estrutura circular (uma espécie de disco, que corresponde ao objecto 1 da figura 1), dividida em

29 compartimentos (28 usados efectivamente para medicação). Esta estrutura é rodada de maneira a

que o compartimento com os comprimidos para um dado horário fique disponível apenas nesse

momento, de acordo com o que foi previamente configurado. Os medicamentos ficam assim

acessíveis numa abertura existente no invólucro plástico externo.

O dispensador pode ser alimentado pela rede eléctrica, utilizando um transformador, ou

através de 4 baterias do tipo AA. No primeiro caso, o dispensador deve estar colocado numa

plataforma, designada Docking Base (objecto 2 da figura 1). Quando retirado desta base ou em caso

de falha eléctrica, o dispensador é então alimentado pelas referidas baterias. Importa ter em

consideração que as baterias não são carregadas quando o MedSmart está ligado à corrente, pelo

que devem ser poupadas para uma eventual situação de falha na rede eléctrica. A inclusão das

baterias é fundamental como mecanismo de segurança, uma vez que, dependendo do regime de

medicação, poderia ser bastante perigoso deixar o utilizador sem acesso aos medicamentos.

De maneira a prevenir o acesso indevido aos medicamentos pelo idoso ou outra pessoa, os

compartimentos nos quais se colocam os comprimidos encontram-se no interior do aparelho,

5

cobertos pelo referido invólucro exterior, cujo acesso requer uma chave. Da mesma forma, para evitar

uma alteração acidental das configurações do dispensador, os botões da interface de configuração

encontram-se protegidos pelo referido mecanismo.

Figura 1 - Equipamento MedSmart. Adaptado de [2].

Cada compartimento tem capacidade suficiente para cerca de 20 comprimidos do tamanho de

uma aspirina, o que é suficiente para a generalidade das pessoas. No entanto, caso os

compartimentos não tenham tamanho suficiente, existem também discos de 24 compartimentos, de

maior dimensão. Apesar disto, não é claro se o mesmo dispensador suporta os dois tipos de discos

ou se esta solução corresponde a um dispensador diferente.

Este sistema permite definir um máximo de 6 alarmes diários para a dispensa de

comprimidos. Estes alarmes são definidos de forma rígida, isto é, não é possível definir alarmes

diferentes para cada dia. Por exemplo, suponha-se que se configuram dois alarmes, um para as

10:00 e outro para as 20:00. Então, durante todos os dias de operação, os alarmes dispararão

sempre a essas horas. Apesar de esta opção ser razoável para a generalidade dos casos, nos quais

o doente segue uma terapêutica regular, poderá tornar-se um pouco limitativo quando o regime

medicamentoso for mais complexo. Da mesma forma, o limite de 6 alarmes por dia poderá não ser

suficiente em alguns casos específicos.

Importa ainda referir que se podem configurar 2 (ou mais) alarmes para o mesmo instante, o

que permite assim aumentar a capacidade de dispensa para um dado horário. Isto é bastante útil

para doentes que tomam grandes quantidades de medicamentos numa só toma.

De maneira a alertar o utilizador, a dispensa dos comprimidos é acompanhada por um sinal

visual e sonoro. O sinal visual corresponde a uma luz intermitente. O sinal sonoro consiste numa

sequência de beeps, sendo possível escolher um de três tons disponíveis. No entanto, não é

especificado se existe a opção de não usar o alarme sonoro, o que seria algo a considerar visto que

certas pessoas poderão sentir-se incomodadas com tal funcionalidade.

Uma vez disparado o alarme, o compartimento fica acessível até que o paciente retire os

medicamentos ou, caso não o faça, até ao momento da dose seguinte, considerando-se então que a

actual não foi tomada. Caso tal aconteça, o dispensador avança para o próximo compartimento,

6

ficando os comprimidos não tomados inacessíveis, o que pode ser importante para evitar possíveis

sobredosagens. No entanto, deveria ser possível definir durante quanto tempo o compartimento fica

acessível após o alarme tocar, visto que poderá haver a necessidade de garantir um período de

guarda entre duas tomas, para evitar interacções indesejadas.

Para recolher os medicamentos, o dispositivo deve ser retirado da Docking Base e virado ao

contrário, de maneira a que os comprimidos caiam, sendo esta a única maneira do dispositivo

detectar que a toma foi efectuada. O procedimento encontra-se explicitado na figura 2. Apesar de ser

uma forma interessante de detectar que os comprimidos foram retirados do dispensador, há que ter

em consideração que nem todos os idosos poderão conseguir efectuar o movimento necessário,

devido a limitações físicas.

Figura 2 - Método de retirar os comprimidos do dispensador. Retirado de [1].

Uma função interessante disponibilizada pelo sistema é a chamada dose antecipada, que

permite ao idoso carregar num botão para antecipar a próxima dispensa. Assim, caso tenha, por

exemplo, de se ausentar, poderá levar consigo os medicamentos. No entanto, este botão pode ser

protegido mecanicamente, de maneira a impedir o seu uso. Importa referir que só se pode antecipar

uma dose, pelo que não se pode voltar a fazê-lo até que a hora do alarme correspondente à dose

antecipada seja atingida. Esta funcionalidade é pertinente uma vez que este tipo de produtos existem

precisamente para dar mais autonomia ao utilizador, pelo que há que ter em conta que este poderá

não passar todo o dia em casa. Da mesma forma, a possibilidade de inibir esta funcionalidade põe

em evidência a tentativa de fornecer um produto versátil que se possa adaptar a diferentes contextos,

visto que nem todos os utilizadores poderão ter condições para gerir a possibilidade de antecipar

dispensas. No entanto, seria pertinente haver a possibilidade de configurar um número de doses

antecipadas máximo que se poderia pedir, uma vez que a pessoa poderá ausentar-se por um período

que inclua mais que uma toma. Neste caso, uma solução seria levar consigo o dispositivo, visto ser

relativamente pequeno, leve e poder operar a pilhas.

No que diz respeito à interacção com o utilizador, o MedSmart tem uma interface simples e

minimalista. Existe um pequeno LCD, no qual estão indicados a data e a hora, o número de alarmes

por dia, o tipo de som do alarme, a hora do próximo alarme, as doses que ainda restam e as

7

condições de bateria, conforme está ilustrado na figura 3. No entanto, o idoso não precisa de

entender o seu funcionamento, uma vez que, tal como referido anteriormente, basta tomar os

comprimidos dispensados quando os alarmes visual e luminoso ficam activos.

Para configuração do dispensador, a interface é relativamente simples, correspondendo a

cinco botões de pressão que permitem configurar todas as funcionalidades, representados na figura

3. Os dois botões “Adjust” permitem modificar os valores que se estão a configurar. O botão “Set

Clock” permite entrar no modo de configuração da data e da hora. O botão “Set Alarms” permite

entrar no modo de configuração de alarmes, no qual se pode definir o tom do alarme, o número de

alarmes por dia e a hora dos alarmes. Por fim, o botão “Full Tray Reset” serve para reiniciar as

dispensas, quando se recarrega o dispositivo com medicamentos.

Figura 3 - Representação do interior do MedSmart, com o LCD em modo de operação normal, e a

interface de programação abaixo. Adaptado de [1].

Para recarregar o dispensador, basta retirar o disco do dispositivo e colocar os comprimidos

correspondentes a cada toma em diferentes compartimentos seguidos, preenchendo-os no sentido

dos ponteiros do relógio. Um dos compartimentos deverá ficar vazio, visto que corresponderá à

posição inicial. Ao colocar o disco no dispensador, este compartimento vazio deve estar alinhado com

a abertura pela qual os comprimidos são dispensados.

O MedSmart possibilita também consultar o historial das tomas, isto é, permite verificar a hora

na qual o dispensador foi virado pelo utilizador para recolher os comprimidos. Esta funcionalidade é

acedida através dos botões de “Adjust”, caso se carregue nos mesmos sem se estar em nenhum

modo de configuração.

8

Para estender as capacidades do MedSmart original, existe uma versão plus que permite a

monitorização remota do paciente, necessitando o dispositivo de ser conectado a uma linha

telefónica. Usando estas funcionalidades, o MedSmart permite avisar remotamente quando uma toma

é falhada, quando se chega a um limiar predefinido de doses restantes de medicamentos, bem como

transferir o historial de tomas [3]. O sistema permite ainda enviar notificações quando a bateria se

encontra fraca ou caso tenha ocorrido um problema de funcionamento, bem como a sua configuração

remota [3]. No caso da configuração remota, esta é feita por um profissional do centro de apoio ao

produto, e não pela pessoa que gere a medicação do utilizador [3]. Todas as notificações podem ser

feitas através de uma chamada, SMS ou email, e o serviço não tem qualquer custo extra para o

utilizador [3]. A informação acerca do historial de dispensas é disponibilizada online [3].

Ambos os produtos podem ser adquiridos no website da empresa, sendo que a versão plus

custa 789.95 dólares e a versão original 489.95 dólares [4].

2.3 Philips Medication Dispenser

O dispensador de medicamentos da Philips é um produto que se encontra integrado num

serviço da empresa [5], ou seja, não pode ser adquirido separadamente. Foi inicialmente

desenvolvido pela empresa Interactive Medical Developments [6], que foi adquirida pela Philips, em

2008 [7]. Inicialmente, era vendido a um preço de aproximadamente 845 dólares [4], sendo que,

actualmente, o serviço da Philips tem um custo mensal de 49 dólares por mês, com um custo de

instalação inicial de 99 dólares [5]. O dispensador encontra-se representado na figura 4 e a sua

análise é feita maioritariamente com base no manual do produto [8]. Este dispensador é monitorizado

remotamente, pelo que requer uma conexão à linha telefónica.

Figura 4 - Esquema do dispensador e dos seus principais componentes. Adaptado de [8].

9

Importa referir que o manual do produto não é muito claro acerca de certas funcionalidades e

procedimentos, o que poderá ser explicado pelo facto de a instalação ser feita por um profissional,

que muito provavelmente clarificará como interagir com o dispensador.

Mecanicamente, esta solução assenta num sistema baseado em cilindros, nos quais se

empilham copos de plástico que contêm a medicação correspondente a cada dose, conforme se pode

observar na figura 5. Apesar de não ser disponibilizada documentação técnica que descreva o seu

funcionamento, pode-se facilmente inferir que existe um mecanismo de rotação que permite

posicionar os cilindros por cima do local de dispensa. Este sistema é claramente mais complexo que

o anteriormente descrito, visto que é agora necessário garantir que, para cada cilindro, é apenas

dispensado um copo plástico de cada vez. O dispensador suporta um máximo de 60 doses,

distribuídas pelos 10 cilindros [9].

Figura 5 - Esquema do interior do dispensador da Philips. Retirado de [10].

No que diz respeito à energia, funciona alimentado pela rede eléctrica. No entanto, conta com

um sistema de bateria de backup que permite continuar a operar em caso de falha da energia

eléctrica. Esta bateria é recarregável e, segundo o fabricante, garante o funcionamento do

dispensador por um tempo máximo de 18 horas.

É possível definir, no máximo, 6 alarmes diários para dispensa de medicação ou para

mensagens para o utilizador, independentes das dispensas. No manual do dispensador não é claro

se estas mensagens podem ser definidas de acordo com o necessário ou se já estão pré-gravadas

no sistema mas, de acordo com outras fontes externas que descrevem o produto, existem apenas 23

mensagens predefinidas que se podem escolher. Destas, citam-se como exemplo “take medicine with

food”, “take your eye drops”, “check blood pressure”, ou “take your insuline” [11].

O facto de se poderem definir mensagens é extremamente útil, visto que certos

medicamentos não podem ser guardados no dispensador mas, ainda assim, há a possibilidade de

avisar o utilizador de que os deve tomar. Da mesma forma, pode-se alertar para outros eventos

relacionados com a saúde. No entanto, não se poder definir mensagens personalizadas é um ponto

10

negativo, visto que as 23 mensagens predefinidas não cobrirão, certamente, todo o espectro de

possibilidades de que poderá ser necessário relembrar a um utilizador.

Apesar desta incerteza relativa ao funcionamento das mensagens, é referido no manual de

produto que as mensagens e as dispensas se sobrepõem no que diz respeito à limitação de 6

alarmes diários. Ou seja, uma simples mensagem vai ocupar os recursos equivalentes a uma

dispensa. No entanto, todas as dispensas têm uma mensagem associada, que por defeito indica

“time to take your medication”. Também é possível alterar esta mensagem mas, como é dependente

da dispensa, não consome nenhum alarme extra. Obviamente que o facto de uma mensagem isolada

ocupar um alarme é um factor limitativo, visto que um máximo de 6 alarmes diários apenas para

dispensas é, já de si, um número que pode não ser suficiente para alguns utilizadores. Não obstante,

o uso de mensagens é opcional, pelo que se pode utilizar os alarmes exclusivamente para dispensas,

caso necessário.

Para sinalizar um alarme, o dispensador activa uma luz vermelha intermitente no seu painel

frontal e indica a mensagem correspondente, quer no display quer de forma audível. O facto de se

tocar uma mensagem ao invés de um beep para sinalizar os eventos poderá ser mais adequado e

intuitivo para relembrar o utilizador das tomas.

De maneira a desencadear a dispensa dos medicamentos, uma vez disparado o alarme, o

utilizador deverá carregar no botão existente no painel frontal do dispensador. Da mesma forma,

deverá fazê-lo para indicar que recebeu uma mensagem de alerta, mesmo que não esteja associada

a uma dispensa.

A mensagem de aviso é repetida de minuto em minuto durante 45 minutos, até que o

paciente carregue no botão. Se, após 90 minutos, o utilizador não carregar no botão, a dose é

considerada falhada e é enviada para um compartimento de doses perdidas, bem como o centro de

monitorização é contactado pelo dispensador, com vista a posteriormente alertar algum dos

responsáveis pelo utilizador. Este período de 90 minutos deveria de ser configurável, uma vez que a

janela de oportunidade para tomar uma dose esquecida sem consequências poderá variar.

O referido compartimento de doses perdidas tem um limite de quatro copos de

medicamentos. Uma vez atingido este limite, é indicada uma mensagem no dispensador e este deixa

de operar até que os medicamentos sejam retirados do compartimento. Consequentemente, o

responsável pelo utilizador é contactado. Apesar de ser uma limitação do sistema, tendo em conta

que o seu objectivo é garantir a toma dos medicamentos, é razoável que ao fim de quatro doses

falhadas seja necessário ao responsável deslocar-se ao local para resolver o problema.

Como referido anteriormente, a interacção do utilizador com o sistema é mínima e bastante

simples, limitando-se este a ter de carregar num botão para activar a dispensa de medicamentos ou

assinalar a recepção de uma mensagem. Para além disso, existe o display do painel frontal, que

indica o tempo que falta até à próxima dose, a data e a hora actuais e o estado do sistema. Já

durante um alarme, indica a mensagem correspondente ao mesmo.

No que diz respeito à interacção do responsável com o dispensador, existe um teclado que

permite aceder às funcionalidades disponibilizadas pelo sistema, tal como esquematizado na figura 6.

No entanto, esta interface não permite configurar os alarmes. Assim, a configuração é feita

11

remotamente pelos profissionais do centro de atendimento da Philips, que devem ser contactados

sempre que há uma alteração dos horários. O botão “Schedule” é usado para fazer o download das

configurações definidas remotamente, utilizando a linha telefónica.

Figura 6 - Teclado de interação com o sistema. Adaptado de [8].

Este dispensador suporta a funcionalidade de dose antecipada, que permite adiantar o

horário das dispensas. De acordo com o manual, pode-se adiantar mais que uma dose, não sendo

explicitado se existe algum limite máximo.

Dado o mecanismo mecânico do dispensador, o processo de recarga dos medicamentos é

ligeiramente mais complexo e requer a interacção com o teclado. Para iniciar o procedimento, deve-

se carregar na tecla “Load”. Seguidamente, os cilindros irão posicionar-se de acordo com o

necessário para iniciar o processo. Os medicamentos para um dia ficarão sempre no mesmo cilindro,

mas dias diferentes poderão ficar em cilindros diferentes ou no mesmo cilindro. Após carregar os

medicamentos para um dia, deve-se carregar na tecla “OK” e esperar até que seja indicado para

colocar os medicamentos do próximo dia, visto que poderá ser necessário reposicionar os cilindros.

Repete-se o procedimento até que todos os medicamentos estejam carregados.

Em relação à segurança, o teclado, o mecanismo de carregamento dos medicamentos e o

compartimento de doses perdidas encontram-se protegidos por uma porta, a qual requer o uso de

uma chave para abrir. Na figura 4 é possível observar quais os componentes que ficam inacessíveis

12

quando o dispensador se encontra trancado. No entanto, o botão de dose antecipada encontra-se no

teclado, pelo que disponibilizar esta funcionalidade ao utilizador implica necessariamente que este

tenha também acesso ao compartimento de doses perdidas e ao mecanismo de carregamento, o que

poderá não ser adequado.

Relativamente às suas funções remotas, o dispensador notifica o centro da Philips de certos

eventos, que posteriormente contacta o responsável pelo utilizador.

Diariamente, o dispensador faz também upload do número de doses falhadas, dias restantes

de medicação, número de doses antecipadas e erros de sistema. Estas informações são

disponibilizadas online, o que permite o seu acompanhamento remoto.

Por fim, importa fazer referência a uma funcionalidade que não é descrita no manual mas que

é indicada no website do produto, que diz respeito à possibilidade de programação do dispensador

para um regime de dispensa de medicamentos, ditos PRN, que são tomados de acordo com a

necessidade [12]. Apesar de não serem fornecidos quaisquer detalhes acerca do modo de

funcionamento, este tipo de medicamentos têm, tipicamente, restrições de tempos mínimos entre

duas tomas. Como tal, pode-se inferir que o sistema garantirá que são respeitados estes tempos

entre tomas.

2.4 Medfolio Electronic Pillbox

Este produto da empresa Medfolio corresponde a uma caixa organizadora de medicamentos

tradicional, complementada com um sistema electrónico que permite ajudar o utilizador na gestão das

tomas dos seus medicamentos [13]. Como tal, toda a medicação encontra-se sempre acessível ao

utilizador, sendo que o dispositivo serve apenas para o relembrar das horas das tomas e qual o

compartimento que deve escolher. A restante análise será baseada maioritariamente no manual do

produto [14].

As suas dimensões são de 36,6 cm de comprimento, 18.8 cm de largura e 5.8 cm de

espessura, e o seu peso de 1.4 kg [13], tornando este dispositivo fácil de transportar.

O sistema de funcionamento desta solução é muito simples. A estrutura física corresponde a

uma caixa com uma tampa, no interior da qual se encontram 7 caixas individuais, divididas em 4

compartimentos. Cada compartimento corresponde a uma altura do dia: manhã, tarde, noite e deitar,

e cada caixa a um dia da semana. Tal traduz-se na capacidade de guardar, no máximo, 7 dias de

medicação (28 compartimentos). Uma das grandes vantagens é a possibilidade de remover cada

uma das caixas individualmente, o que permite ao utilizador levar um dia de medicação consigo sem

ter de transportar todo o sistema.

Uma característica interessante é o facto de, na parte interior da tampa do produto, existir um

conjunto de 16 compartimentos, nos quais se podem colocar amostras de cada um dos tipos de

comprimidos tomados. Associada a esta estrutura, é possível anexar uma folha com informações

relativas aos comprimidos, como por exemplo, o número de vezes que são tomados por dia, o

objectivo e a dosagem, tal como ilustrado na figura 7. Desta forma, sempre que o utilizador necessitar

de indicar a um profissional de saúde quais os medicamentos que toma, basta fazer-se acompanhar

desta estrutura, que pode facilmente ser desacoplada do sistema.

13

Figura 7 - Estrutura de documentação dos medicamentos tomados. Retirado de [13].

Como referido anteriormente, existem 4 compartimentos para os medicamentos de cada dia,

o que se traduz na possibilidade de definir apenas 4 alarmes diários. No entanto, não é especificado

se os horários estão limitados aos períodos do dia indicados (manhã, tarde, noite e deitar), ou se é

possível, por exemplo, definir os 4 alarmes para a manhã.

Os alarmes são assinalados com um alerta sonoro (que pode ser desactivado com um botão

existente no produto), que se repete a cada 2 segundos, e um alerta visual, que corresponde a um

LED que pisca debaixo do compartimento que contém a dose a ser tomada. Tanto o sinal visual como

o sonoro se mantêm, até um máximo de 2 horas, até que o utilizador carregue no botão de reset do

alarme. Passadas as 2 horas, a toma é considerada falhada.

Adicionalmente aos referidos alarmes, o utilizador pode aderir a um serviço que lhe permite

receber os avisos de toma de medicação por email e/ou mensagem de texto, tendo um custo extra de

8 dólares por mês. Para a versão standard do produto, esta é a única forma de obter informações

relativas às tomas. Assim, ao receber um email ou mensagem de alerta, o utilizador deve indicar se

tomou ou não a referida dose. Para tal, deve seguir um link incluído na mensagem, que permite fazer

este registo. Estes dados ficam então acessíveis online, para poderem ser consultados pelo utilizador

ou pelos responsáveis. Dado que esta caixa de comprimidos requer uma conexão a um computador

para configurá-la, faria mais sentido dotá-la da capacidade de registar internamente as informações

das tomas, tornando-as assim acessíveis localmente no mesmo programa.

Existe também uma versão wireless do produto que, para além de usar o método referido

anteriormente, transmite igualmente a informação resultante de pressionar o botão de reset do alarme

para registar as tomas. Desta forma, se o utilizador fizer reset ao alarme no período de uma hora

após este disparar, a toma é considerada atempada. Caso este procedimento seja executado entre 1

14

a 2 horas após o alarme disparar, então a toma é registada como tardia. Por fim, após as duas horas,

considera-se que se falhou a toma. De maneira a carregar esta informação para os servidores da

empresa, é necessário estar disponível uma conexão sem fios à Internet. Apesar disto, não é

especificado se esta conexão tem de estar activa no momento em que o evento ocorre, ou se essa

informação fica registada internamente no dispositivo e pode mais tarde ser carregada. Da mesma

forma, não é explicado como é que esta abordagem interage com a notificações por email e SMS,

visto que é fácil antever que podem surgir informações contraditórias sobre uma mesma toma.

No que diz respeito à energia, é alimentado por baterias internas recarregáveis que, segundo

o fabricante, duram até 4 semanas [13].

Toda a configuração do sistema é feita através do computador, utilizando um programa

disponibilizado pela empresa, que apresenta uma interface gráfica bastante simples. A ligação ao

produto é feita através de uma interface USB.

Dadas as especificações descritas para este sistema, pode-se inferir que é adequado para

pessoas com ainda alguma autonomia e regimes medicamentosos de baixa complexidade. Da

mesma forma, o esquema de monitorização empregue na versão standard não é o mais adequado

para utilizadores idosos, visto que não é muito comum estes utilizarem email ou telemóvel.

A versão standard deste produto é vendida a um preço de 248 dólares e a versão wireless a

298 dólares [13].

2.5 MedHelper

O MedHelper é uma aplicação para Android e iOS, da empresa Earth Flare, que tem como

objectivo ajudar a gerir regimes de medicação [15]. Permite definir alarmes para relembrar as tomas,

a necessidade de comprar mais medicamentos e consultas marcadas [15]. Apesar de não ser claro

como funciona, é referida a existência de um mecanismo de confirmação de notificações, não sendo

referido se se aplica a todos os tipos ou apenas às tomas. É ainda referida a existência de um registo

que permite mostrar a hora em que uma toma foi confirmada [15] .

Para além da medicação normal, tomada regularmente, existe a possibilidade de acompanhar

as tomas de medicação PRN [15]. Apesar de ser referido que é possível aceder a um histórico

referente às tomas desta medicação [15], não é especificado se existe algum tipo de alarme ou

mecanismo que ajude o utilizador a evitar executar uma nova toma sem ter passado o período de

tempo prescrito desde a última.

Uma outra funcionalidade interessante é a possibilidade de permitir definir vários perfis [15],

possibilitando assim que um utilizador acompanhe várias pessoas.

É ainda possível exportar um relatório de vários eventos associados ao uso da aplicação,

sendo o envio feito para um email [15]. Apesar de não ser explicitamente referido que eventos podem

ser incluídos, pode-se inferir que estes incluem o registo das tomas.

15

2.6 Outros produtos

É importante referir que os produtos analisados não correspondem a todas as soluções

existentes no mercado, havendo uma grande variedade de fabricantes e modelos de dispensadores.

No entanto, aqueles que foram analisados são representativos dos restantes, que seguem fórmulas

muito semelhantes, com pequenas variações em algumas funcionalidades.

Refere-se então sucintamente mais algumas soluções analisadas, semelhantes às anteriores:

Med-Q: caixa de comprimidos que permite definir alarmes para relembrar as tomas,

assinalando o compartimento correspondente com uma luz intermitente, acompanhada de um

sinal sonoro [16];

TabTime super 8: caixa de comprimidos desenhada para doentes que sofrem de Parkinson

e Alzheimer e que permite definir até 8 alarmes diários (possui apenas 8 compartimentos),

que são assinalados por uma luz intermitente e por um sinal sonoro [17].

Pivotell Automatic Pill Dispenser: dispensador automático de medicamento baseado num

mecanismo de rotação e com 28 compartimentos [18]. Tem a particularidade de permitir

definir até 24 alarmes diários [18], o que já é um número muito elevado. No entanto, continua

a manter os comprimidos de um compartimento disponíveis até à toma seguinte, tal como o

MedSmart.

MedReady GSM Cellular Dispenser: dispensador semelhante ao MedSmart, baseado num

mecanismo de rotação, com 28 compartimentos e com possibilidade de definição de um

máximo de 4 alarmes diários, com a particularidade de permitir monitorização remota

utilizando a tecnologia GSM [19].

IVATION Automatic Pill Dispenser: dispensador semelhante ao MedSmart, com a

particularidade de poder ser adquirido por apenas 80 dólares [20], um preço bastante mais

adequado dadas as suas funcionalidades.

MedVault: dispensador desenvolvido por alunos da universidade de Brigham Young, com o

objectivo de regular a dispensa de medicamentos analgésicos, com base nas instruções dos

farmacêuticos [21]. Apesar da escassez de detalhes, esta solução é bastante interessante e

tenta resolver um problema que a generalidade dos dispensadores não contempla,

nomeadamente a gestão de medicação PRN.

16

3 Descrição da Solução Proposta

3.1 Funcionalidades do Dispensador

Da análise efectuada aos produtos existentes no mercado, foi possível verificar que existem

já várias soluções disponíveis, que apresentam abordagens interessantes para lidar com o problema.

No entanto, ficou evidente que todas essas soluções correspondem a sistemas fechados,

vocacionados para um conjunto limitado de contextos de aplicação e com baixa versatilidade. Para

além disso, disponibilizam interfaces de interacção relativamente rudimentares e apresentam várias

limitações a nível das configurações.

Assim, considera-se pertinente contribuir com a criação de uma plataforma aberta e versátil

que suporte comunicação sem fios (wireless) com outros sistemas. Será disponibilizada uma API de

programação genérica que permitirá a interacção com o dispensador através de computadores

comuns ou através de dispositivos móveis do tipo Tablet ou Smartphone, o que constitui uma clara

diferença face ao que existe no mercado. Deste modo, torna-se possível dispor de aplicações de

configuração e interacção com o dispensador que podem ser personalizadas para diferentes

contextos de utilização e que poderão automatizar muitos dos procedimentos que, de outro modo,

teriam de ser feitos manualmente no dispensador.

Adicionalmente, sendo a solução aberta, essas aplicações podem ser desenvolvidas ou

melhoradas por diferentes entidades. Desta forma, torna-se possível integrar o dispensador em

soluções mais abrangentes de gestão de terapêutica que podem, por exemplo, envolver diferentes

instituições, públicas ou privadas, e profissionais ligados aos cuidados de saúde ou apoio domiciliário.

Na óptica do cuidador, pretende-se reduzir significativamente o conjunto de limitações

existentes nas configurações dos dispositivos analisados, com particular ênfase na forma como os

alarmes podem ser configurados, que limitam a possibilidade de gerir regimes mais complexos.

Pretende-se também possibilitar um acompanhamento remoto dos eventos pertinentes da

operação do dispensador, dando possibilidade para, por exemplo, saber se o utilizador pediu ou não

a dispensa dos comprimidos. Esta possibilidade é particularmente importante se a pessoa tomar

medicação crítica e tiver tendência a falhar as suas tomas, permitindo assim ao cuidador intervir e

evitar potenciais situações perigosas para a saúde do utilizador.

Houve também cuidado na criação da interface com a pessoa cuidada, tendo-se optado por

algo minimalista e simples de usar, baseado em botões de pressão e sinais visuais e sonoros de fácil

percepção. Estes sinais deverão ter intensidades adequadas, para alertarem devidamente o idoso

sem lhe causar incómodo, podendo ser apenas sonoros, visuais ou uma combinação de ambos, com

a possibilidade de serem configuráveis para terem diferentes padrões e durações.

Apresenta-se em seguida uma lista detalhada das principais funcionalidades a implementar.

17

Dispensa de medicação

Possibilidade de definir até 28 alarmes de dispensa de comprimidos, correspondentes a 28

compartimentos de medicação distintos. Para cada alarme, é possível definir a data e a hora

de disparo, sem qualquer limitação no número máximo de alarmes diários. Desta forma,

remove-se a limitação imposta por algumas das soluções analisadas, que consideram um

número fixo de alarmes por dia e apenas permitem definir a hora de disparo (todos os dias às

mesmas horas). Assim, podem-se incluir no regime de medicação tomas esporádicas e não

lineares ao longo dos dias.

Possibilidade de definir um tempo de tolerância máximo para cada toma, a partir do qual o

utilizador não poderá recolher a medicação. Esta funcionalidade permite colmatar uma das

falhas encontradas nas soluções de mercado, que não fazem um controlo adequado deste

aspecto. Assim, fornece-se uma forma de evitar interacções medicamentosas indesejadas.

Possibilidade de definir múltiplos compartimentos associados a uma mesma dispensa, sem

limitações, desde que não seja ultrapassado o limite dos 28 compartimentos.

Possibilidade de dispensa antecipada de doses de medicação, o que é particularmente útil

para o caso do utilizador ter de se ausentar antes de uma toma. Esta possibilidade e o tempo

permitido de antecipação são configuráveis de forma independente para cada alarme.

Possibilidade de re-armar alarmes falhados (tomas não ocorridas), o que é pertinente nos

casos em que a dose falhada possa ser tomada posteriormente, sem perigo para a saúde do

utilizador (ou em que seja preferível tomar tarde face a não tomar).

Possibilidade de associar uma mensagem textual, com conteúdo configurável, a cada alarme.

Esta é mostrada no display do dispensador após o disparo do alarme correspondente.

Disponibilização de um modo de configuração simplificado para regimes regulares ao longo

dos dias da semana, designado de modo diário. Apesar da versatilidade que se pretende

oferecer na configuração de alarmes, não faz sentido obrigar o cuidador a especificar o dia

exacto de cada toma, se estas se processarem de forma regular. Assim, neste modo, basta

especificar a hora de disparo (e as restantes informações auxiliares de tolerância, dose

antecipada e mensagem textual) das tomas de um dia genérico, que serão replicadas ao

longo dos dias de operação do dispensador.

Possibilidade de gestão simultânea de medicamentos PRN, com a possibilidade de configurar

o tempo de intervalo entre tomas adjacentes. Dado que estes partilham o mesmo conjunto de

compartimentos que os medicamentos de tomas regulares, o valor total de compartimentos

usados para PRN e tomas regulares deverá ser igual ou inferior a 28.

Interface para o utilizador

A dispensa de medicação será efectuada premindo um simples botão de pressão. Uma vez

disparado um alarme de uma dispensa, basta ao utilizador carregar no referido botão para ter

acesso aos medicamentos. Este botão serve também para o utilizador antecipar doses.

18

A realização da dispensa de medicação PRN é feita através de um segundo botão de

pressão. Ao carregar neste botão, o medicamento apenas será dispensado se o intervalo de

tempo desde a última dispensa for superior ao configurado.

A sinalização da hora de toma de determinada medicação é feita através de um sinal visual e

sonoro. Estes sinais mantêm-se activos até que o utilizador carregue no botão de dispensa

ou até que o tempo limite estabelecido tenha sido ultrapassado e a toma seja considerada

falhada. A sinalização segue um padrão “on/off” cujos tempos podem ser definidos de forma

independente. A intensidade da sinalização também pode ser configurada para se adequar

ao estado auditivo e visual do utilizador, ou para se ajustar às suas preferências.

Avisos textuais

Possibilidade de definir até 30 avisos textuais para além dos que acompanham a dispensa

de medicamentos (alarmes), com liberdade de definição do conteúdo textual. Pretende-se

com esta funcionalidade possibilitar ao cuidador alertar o utilizador com informações

pertinentes, como a existência de uma consulta no médico ou a necessidade de realizar

algum procedimento de saúde, como por exemplo medir a pressão arterial. Contrariamente à

abordagem do Phillips Medication Dispenser, os avisos textuais e os alarmes não se

sobrepõem, ou seja, definir um aviso não implica poder definir menos um alarme.

Possibilidade de definir um tempo de tolerância máximo durante o qual o utilizador pode

confirmar que recebeu o aviso. A confirmação é feita carregando no botão de dispensa.

Sinalização dos avisos com recurso aos mesmos sinais visuais e sonoros dos alarmes.

Registo de informação

Registo da data e hora referentes à dispensa efectiva dos medicamentos, permitindo ao

cuidador acompanhar a aderência do utilizador ao regime de medicação.

Registo da confirmação de que o utilizador visualizou um aviso textual.

Registo de tentativas de dispensa da medicação fora dos horários configurados. Considerou-

se esta informação pertinente na medida em que pode servir de indicativo do estado do

utilizador, permitindo identificar eventuais situações de confusão psicológica.

Interacção com o dispensador

Suporte para comunicação Bluetooth. O Bluetooth é uma tecnologia amplamente utilizada e

suportada por computadores, Tablets e Smartphones, pelo que se considerou adequada para

interagir com o dispensador quando se está na proximidade deste. Assim, é possível a

configuração do dispensador e a recolha de registos a partir de uma aplicação a executar

num destes dispositivos.

Suporte para comunicação Wi-Fi, para interacção remota com o dispensador, possibilitando

quer a configuração do mesmo quer a recepção de notificações de eventos relevantes

através da Internet. Como actualmente não é comum que a casa de um idoso tenha um

19

serviço de acesso à Internet, o uso desta interface é opcional. No entanto, existem casos nos

quais o idoso vive com o cuidador e este apenas necessita de monitorizá-lo, por exemplo,

durante um período do dia em que se encontre ausente, tornando-se pertinente esta

funcionalidade. Da mesma forma, se o dispensador for utilizado no contexto de uma

instituição, a monitorização remota de várias pessoas será certamente uma opção útil.

Suporte para comunicação GSM, para possibilitar o envio de notificações remotas ao

cuidador através de SMS. O GSM apresenta a vantagem de poder ser utilizado em qualquer

local, não havendo as restrições referidas para o Wi-Fi no que diz respeito à necessidade de

a habitação possuir uma infraestrutura de acesso à Internet. No entanto, considerou-se que o

uso de SMS para configurar remotamente o dispensador não seria cómodo para o cuidador,

pelo que esta forma de comunicação apenas suporta a notificação de ocorrências.

Possibilidade de realização de chamadas de voz para e a partir do dispensador. Para realizar,

atender ou terminar uma chamada, basta ao utilizador carregar num terceiro botão de

pressão. Esta funcionalidade é relevante na medida em que permite estabelecer um contacto

directo com o utilizador, de um modo muito simples. Por este motivo, este mecanismo poderá

ser usado por um utilizador com restrições cognitivas significativas que, de outro modo,

poderia já não ter a capacidade de usar um telemóvel ou mesmo um telefone comum.

Possibilidade de interacção directa com o dispensador, através de um teclado e de um

display (LCD), para configurá-lo e aceder às ocorrências registadas.

Suporte ao desenvolvimento de aplicações

Disponibilização de um API de programação genérica e versátil, para permitir desenvolver

aplicações em dispositivos externos que possam interagir com o dispensador para efectuar

configurações e recolher informação.

Existência de um identificador único e não alterável para cada dispensador (32 bits) ao qual

pode ser associado um nome de utilizador (30 bytes).

Espaço de memória não volátil de uso livre para o programador de aplicações de interacção

com dispensador, possibilitando guardar de forma persistente informações relevantes para a

aplicação.

3.2 Cenários de Utilização

Pretende-se que o dispensador de medicamentos a desenvolver possa operar num sistema

mais vasto e complexo, com vários intervenientes e contextos de aplicação. Em seguida descrevem-

se algumas das situações nas quais o dispensador poderá ser integrado, o que só é possível dada a

sua versatilidade e capacidade de interacção remota.

O cenário de utilização mais simples consiste no uso do dispensador para gerir a medicação

de uma pessoa cujo cuidador responsável seja um familiar. Neste caso, tendo em conta que os

cuidadores não terão formação específica para lidar com o equipamento, a possibilidade de

configurá-lo a partir de um outro dispositivo permite o desenvolvimento de aplicações com interfaces

20

simples e que os guiem no procedimento. Adicionalmente, existe a possibilidade de interagir

directamente com o dispensador através do seu teclado e display, para cuidadores que não se sintam

à vontade com equipamentos como Smartphones ou Tablets.

Outro cenário de aplicação consiste no uso do dispensador integrado numa rede de cuidados

ou numa instituição de saúde. Neste caso, é expectável que um único cuidador (ou uma pequena

equipa) trate de gerir um número razoável de dispositivos. Assim, a configuração manual das várias

unidades será algo pouco prático, sendo mais adequado o uso de uma aplicação externa que permita

automatizar grande parte dos procedimentos de configuração, que serão semelhantes para os vários

dispensadores. Uma possibilidade interessante consiste em carregar previamente os regimes de

medicação das várias pessoas para a referida aplicação, sendo estes transferidos de forma

automática para o dispensador correspondente. Como se pode antecipar, este procedimento será

mais prático, rápido e menos susceptível a erros do que configurar manualmente cada dispensador.

A figura 8 exemplifica a arquitectura de uma possível solução para a situação descrita. Neste

caso, considera-se que o médico de uma instituição é responsável por definir os regimes terapêuticos

dos pacientes, que são carregados para um servidor web. Deste, o cuidador carrega os dados para

um Tablet ou Smartphone, os quais são utilizados para configurar os diferentes dispensadores. Uma

vez que cada dispensador possui um identificador único e um espaço de memória para o nome do

utilizador actual, estas informações podem ser utilizadas pela aplicação para automaticamente

procurar o regime de tomas correspondente e carregá-lo. A arquitectura referida é apenas uma

sugestão para ilustrar o que é possível criar, pelo que a entidade responsável por desenvolver a infra-

estrutura poderá usar o dispensador como considerar mais conveniente.

Figura 8 – Exemplo de uma arquitectura com automatização da configuração de múltiplos

dispensadores.

Tendo em consideração a possibilidade de ligar o dispensador directamente à Internet

usando Wi-Fi, aumenta-se o número de possibilidades de interacção com o mesmo, conforme

ilustrado na figura 9. Através desta interface de comunicação, é possível configurar e acompanhar

remotamente o funcionamento do dispensador, podendo-se receber as notificações por email ou

consultá-las directamente num Smartphone.

21

Figura 9 – Exemplo de uma arquitectura com troca de dados através da Internet.

A comunicação pela Internet pode também ser utilizada para criar um serviço de apoio ao

cuidador, permitindo efectuar alterações às configurações do dispensador e até, eventualmente,

transferir para esse serviço a responsabilidade de monitorizar e configurar o equipamento.

A possibilidade de comunicar com o dispensador através de GSM permite um esquema de

notificações remotas bastante eficiente, descrito na figura 10. Contrariamente às notificações

enviadas por Internet, nas quais não se tem garantia de que o cuidador irá estar conectado, o envio

de SMS de aviso de eventos é algo que será recebido, tipicamente, com um atraso mínimo

(assumindo que o cuidador se faz acompanhar do seu telemóvel), o que é especialmente importante

quando o utilizador toma medicamentos críticos para a sua saúde.

Apesar de as notificações serem enviadas por SMS, é viável o desenvolvimento de uma

aplicação para Smartphone que as capture e apresente num formato diferente. Para além das

notificações, considerou-se também uma adição interessante o suporte para a realização e recepção

de chamadas de voz, permitindo um modo de estabelecer contacto directo com a pessoa cuidada.

Figura 10 – Comunicação remota com o dispensador utilizando GSM.

Toda a versatilidade referida é apenas possível em virtude da solução proposta ser muito

modular e aberta, permitindo um elevado nível de funcionalidades e de alternativas.

A interacção com o dispensador é realizada usando um protocolo de comunicação genérico,

independente do canal de comunicação utilizado. O referido protocolo é simples e fácil de

implementar em qualquer linguagem de programação. No entanto, para simplificar ainda mais o

22

processo de desenvolvimento, será fornecida uma API de suporte, nas linguagens Java e Python.

Usando esta API será possível aceder ao dispensador e efectuar todas as configurações disponíveis.

A versatilidade do dispensador permite operá-lo em diferentes contextos, sendo que apenas

se referiu um número limitado de entre todas as possibilidades que podem ser desenvolvidas. Como

tal, considera-se como uma das principais características de destaque da solução proposta, face aos

restantes produtos existentes no mercado, o facto de ser aberta, versátil e configurável, com

possibilidade de interacção com dispositivos externos para facilitar os processos de configuração.

3.3 Arquitectura do Dispensador

Desenhou-se uma arquitectura modular para o protótipo do dispensador, conforme ilustrado

no diagrama de blocos da figura 11. A decomposição escolhida teve em conta as diferentes

funcionalidades pretendidas, bem como o objectivo de estabelecer interfaces bem definidas com cada

módulo. Desta forma, simplifica-se todo o processo de desenvolvimento e teste, bem como se obtém

uma solução modular, que facilita eventuais alterações no código.

Figura 11 – Arquitectura do dispensador.

Os três módulos de comunicação (GSM, Wi-Fi e Bluetooth) dizem respeito à interacção do

dispensador com dispositivos exteriores, quer localizados na proximidade deste quer remotamente

através da Internet ou da rede móvel celular. Irá recorrer-se a módulos electrónicos que implementem

os referidos protocolos e que possam interagir com um microcontrolador. Tal é justificável uma vez

que seria demasiado complexo implementar estes módulos a partir dos componentes electrónicos

básicos, o que não seria compatível com o tempo de desenvolvimento disponível nem daria garantias

de uma maior optimização de funcionamento.

No contexto do protótipo, pretende-se mostrar que as três tecnologias de comunicação são

viáveis e podem operar em simultâneo, embora um eventual produto não necessite de utilizar todas.

O display, o teclado e os botões de pressão correspondem aos dispositivos através dos quais

é possível interagir directamente com o dispensador. No que diz respeito à sinalização dos alarmes e

outros avisos, irá recorrer-se a um LED e a um bezouro (buzzer) para gerar os sinais luminosos e

sonoros, respectivamente.

23

A actuação mecânica está associada ao mecanismo físico adoptado para guardar e dispensar

os medicamentos. Apesar de não ser o foco do trabalho definir a estrutura mecânica do dispensador,

existem desafios a nível de controlo e verificação do correcto funcionamento das dispensas que se

pretendem abordar, razão pela qual se irá criar um protótipo mecânico rudimentar, mas que permite

desenvolver e validar o software em questão.

Assim, assume-se um mecanismo similar ao adotado no MedSmart, no qual se dispõe de

uma estrutura circular dividida em múltiplos compartimentos, que é rodada para disponibilizar os

medicamentos localizados num dado compartimento. Em cada momento, só um dos compartimentos

está fisicamente acessível ao utilizador, ficando alinhado com uma abertura existente no invólucro

plástico externo. Para permitir a rotação da referida estrutura, utilizar-se-á um motor de passo (step

motor), que permite garantir fiabilidade na movimentação do disco com os compartimentos.

Menciona-se também o módulo de registo de informação, que permite guardar de forma

persistente vários tipos de dados, necessários ao correcto funcionamento do dispensador, e realizar o

registo dos eventos revelantes ocorridos durante a sua utilização. Este módulo será implementado

com recurso a uma memória não volátil, do tipo EEPROM, garantindo a persistência dos dados

mesmo em caso de falhas na alimentação.

Neste sistema, os diferentes módulos são controlados por uma entidade central, a qual se

designou por módulo de processamento. Este será implementado com recurso a um

microcontrolador, que executará a aplicação que coordena o funcionamento de todo o sistema. Este

microcontrolador terá de possuir as interfaces para comunicar com os restantes dispositivos.

Uma vez que o sistema poderá ter de funcionar durante muitos dias sem interacção com o

exterior, é fundamental garantir a fidelidade no registo da data e hora. Para tal, o sistema deverá ter

um relógio com precisão adequada, pelo que se optou pelo uso de um Real-Time Clock.

Descreve-se nas secções adiante o processo de selecção de componentes e módulos para o

protótipo que se pretende implementar.

3.4 Selecção dos Módulos Constituintes

A presente secção tem como objectivo descrever os módulos electrónicos utilizados no

dispensador. Conforme referido, pretende-se a criação de um protótipo funcional e não um produto

final, sendo o tempo de desenvolvimento relativamente limitado. Como tal decidiu-se, quando

possível, utilizar módulos funcionais que contenham toda a electrónica necessária ao seu

funcionamento, requerendo apenas ligá-los a um microcontrolador e integrá-los na solução global.

Importa deixar claro que a escolha dos dispositivos se encontra limitada pelas ferramentas

disponíveis. Por exemplo, o equipamento de soldadura a que se tem acesso apenas permite o uso de

componentes com montagem through-hole (com espaçamento entre pinos que permita utilizar um

ferro de soldar convencional, adequados a placas de prototipagem tradicionais), deixando de fora os

componentes com montagem surface-mount (os quais são amplamente utilizados em produtos finais

mas requerem, tipicamente, ferramentas especializadas) [22].

Dado que a transição para um produto final irá requerer a adaptação de alguns componentes,

não se teve como um dos principais objectivos minimizar o custo do protótipo, tendo-se dado

24

prioridade à funcionalidade. No entanto, sempre que possível, optou-se pelas soluções mais baratas,

viáveis, de grande divulgação e que davam garantias de suporte. O custo final de um eventual

produto irá depender de muitos factores, em que aspectos de economia de escala serão muito

relevantes.

Por fim, convém realçar que, face ao mercado global actual, não é possível garantir uma

análise exaustiva de todas as alternativas existentes. Foi, no entanto, realizado um grande esforço de

pesquisa de múltiplas soluções e análise das mais divulgadas e com maior aceitação, o que oferece

um elevado nível de confiança nas escolhas realizadas.

3.4.1 Módulo GSM

Para realizar a comunicação por GSM, procurou-se um módulo que implementasse todo o

protocolo, simplificando o desenvolvimento ao nível do microcontrolador que gere o dispensador. O

principal requisito considerado foi a possibilidade de envio de SMS a partir dos dados recebidos de

um microcontrolador, para permitir alertar remotamente os cuidadores.

Das opções consideradas destacam-se os módulos FONA, da empresa Adafruit [23], e

SM5100B, da empresa Sparkfun [24], que foram descartados por causa do seu elevado custo (44.95

e 47.95 dólares, respectivamente). Alternativamente, optou-se por um módulo baseado no dispositivo

SIM900, da empresa SIMCom [25], que pode ser adquirido por um valor de cerca de 20 dólares1.

O SIM900 é um dispositivo quad-band, o que significa que suporta as 4 principais bandas de

frequência de operação do GSM (850/900/1800/1900 MHz) [25], tornando-o utilizável nas principais

redes do mundo. A sua potência de transmissão é de 2 Watts nas bandas dos 850 e 900 MHz e de 1

Watt nas bandas dos 1800 e 1900 MHz [25]. Possui várias interfaces, das quais se destacam o

suporte para I2C, SPI e comunicação série [25], bem como o suporte para uma interface áudio

analógica [25].

O SIM900 pode ser alimentado numa gama de tensões entre 3.2 e 4.8 V e consome cerca de

22 mA de corrente quando em modo Idle (registado na rede e pronto a comunicar), podendo atingir

picos de 2 A durante a transmissão de dados. O consumo em chamada depende da frequência de

comunicação utilizada e de um parâmetro de configuração referente ao controlo no nivel de consumo,

sendo indicado um valor máximo de 250 mA para as bandas de 850 e 900 MHz [26].

Face aos aspectos descritos e às funcionalidades disponibilizadas, a escolha recaiu sobre

este módulo, o qual está também disponível numa placa com fichas. Essa placa inclui uma antena e

as fichas para ligação a um altifalante e a um microfone, para realizar chamadas de voz. Possui ainda

um suporte para o cartão SIM, fichas de alimentação externa e alimentação por bateria e LEDs de

sinalização do estado de funcionamento. Pode ser alimentada com uma tensão de 5 V, evitando

conversões de tensões. A referida placa encontra-se representada na figura 12.

Apesar das diversas interfaces que o SIM900 tem, a placa utilizada apenas possibilita

interacção através de comunicação série, pois não tem os pinos das restantes interfaces acessíveis.

1 www.ebay.com

25

Figura 12 – Placa GSM baseada no módulo SIM900. Adaptado de [27].

3.4.2 Módulo Wi-Fi

Para a comunicação Wi-Fi, analisaram-se diversos módulos existentes no mercado, dos quais

se destacam os que utilizam o chip CC3000 da Texas Instruments [28], que aparenta ser um dos

mais comuns no desenho deste tipo de soluções. No entanto, estes produtos apresentam um preço

bastante elevado (na ordem dos 30 dólares [28]). Outra alternativa analisada foram os módulos

baseados no chip HC-21, que têm um custo na ordem dos 10 dólares2.

No entanto, uma pesquisa mais detalhada revelou uma solução recente da empresa Espressif

Systems, designada ESP8266 [29], na qual existem módulos baseados com preços da ordem dos 2.5

dólares2, razão pela qual se adoptou este dispositivo.

O ESP8266 tem uma área de apenas 5 mm x 5 mm, integra um processador 106micro

Diamond Standard core da Tensilica [30] (CPU RISC de 32 bits) e suporta as interfaces SPI, I2C e

série [29]. Possui ainda 16 pinos de entrada/saída para uso genérico e opera a uma tensão de 3.3V

[29]. No que diz respeito ao Wi-Fi, implementa as especificações dos standards 802.11 b, g e n,

suporta Wi-Fi direct e integra todo o stack do protocolo TCP/IP [29]. A nível de memória, possui 64

KB de RAM para instruções, 96 KB de RAM para dados e 64 KB de ROM [30]. O ESP8266 consome

cerca 0.9 mA em standby, cerca de 60 mA durante a recepção de pacotes e, no processo de

transmissão, pode atingir picos de 215 mA [29]. No entanto, não é clarificado em que estado se

encontra o rádio do ESP8266 quando este se encontra em modo standby, pelo que não é possível

concluir qual o consumo do módulo quando este se enconta ligado a um acess point sem estar a

comunicar.

Dos diversos módulos existentes com base no ESP2866, seleccionou-se o ESP-01. Este tem

as dimensões de 14.3 mm x 24.8 mm e integra na sua PCB uma antena e uma memória Flash [31],

conforme ilustrado na figura 13. Tem ainda a particularidade de só disponibilizar oito dos pinos do

ESP8266, sendo adequado a aplicações nas quais interage com outro processador através de

2 www.ebay.com

26

comunicação série, estando particularmente vocacionado para permitir o envio e recepção de dados

através da Internet. A placa ESP-01 consome um total de 70 mA durante a sua operação regular,

podendo atingir picos de 300 mA durante a transmissão [32].

Figura 13 – Módulo ESP-01, baseado no dispositivo ESP8266. Adaptado de [31].

3.4.3 Módulo Bluetooth

Para implementação da comunicação Bluetooth procurou-se um módulo que suportasse o

perfil SPP (Serial Port Profile), o qual permite trocar dados entre dois dispositivos simulando uma

comunicação série [33]. Este modo de comunicação é importante pois é suportado pela generalidade

dos microcontroladores. Este módulo irá servir de ponte de comunicação entre o microcontrolador e

dispositivos como Tablets ou Smartphones.

Existem no mercado vários módulos que satisfazem o requisito anterior, os quais podem ser

directamente ligados à UART de um microcontrolador [34] [35], permitindo assim estabelecer um

canal de comunicação de forma transparente. Das soluções analisadas, optou-se por um módulo

baseado no dispositivo HC-06, da empresa Guangzhou HC Information Technology [36].

Comparativamente a outras alternativas analisadas, este é um dispositivo com características

inferiores, uma vez que tem um alcance máximo de 10 metros [37] e só opera no modo slave do

protocolo Bluetooth. Existem outros produtos que têm alcances até 100 metros [38] e suportam

diferentes perfis de operação [39]. No entanto, são bastante mais caros, rondando os 30 dólares, ao

passo que os módulos baseados no HC-06 podem ser adquiridos por cerca de 3.5 dólares3. Dado

que o Bluetooth irá ser usado apenas para o dispensador comunicar com um dispositivo local, o

alcance de 10 metros é suficiente. Para além disso, será sempre o dispositivo externo a iniciar a

comunicação com o dispensador, razão pela qual o facto do módulo apenas poder operar como slave

não traz qualquer inconveniente.

Relativamente às restantes especificações, o HC-06 implementa os standards da versão

Bluetooth 2.0 e suporta ritmos de comunicação série até 1382400 Baud [37]. Opera a uma tensão de

3.3 V [37] e tem um consumo de corrente da ordem dos 30 a 40 mA no processo de emparelhamento

e de 8 mA durante a comunicação [36]. O HC-06 inclui já uma antena integrada no módulo [37].

A nível de configuração, o HC-06 suporta a recepção de comandos AT, que permitem alterar

alguns dos parâmetros de funcionamento, como o ritmo de transmissão dos dados da comunicação

série, o nome e a chave usada no processo de emparelhamento do Bluetooth. O envio de comandos

AT para o módulo só é possível antes do emparelhamento [37]. A partir desse momento, o módulo

passa apenas a servir de ponte de conversão entre as interfaces série e Bluetooth.

3 www.ebay.com

27

No contexto do projecto aqui descrito, o HC-06 é utilizado integrado num módulo que possui

um LED de sinalização do estado de emparelhamento do dispositivo e permite a sua alimentação

com tensões entre os 3.6 e os 6 V [40]. Este módulo encontra-se ilustrado na figura 14.

Figura 14 – Módulo de comunicação baseado no dispositivo HC-06. Retirado de [40].

3.4.4 Módulo RTC

Para garantir que as horas e a data são mantidas certas, será usado um RTC (Real-Time

Clock). Sendo um componente muito usado, existem opções de vários fabricantes, suportando

interfaces de comunicação como I2C e SPI [41] [42]. Um factor selecção inicial foi a existência de

módulos prontos a utilizar e de baixo custo, com uma interface I2C (uma vez que requer menos pinos

que o SPI). Das soluções analisadas, destacam-se os RTC DS1307 e DS3231 da Maxim Integrated

[43] [44], os quais servem de base a vários módulos com preços de cerca de 1 euro4.

A diferença mais relevante entre ambas as soluções prende-se com a sua precisão, uma vez

que o funcionamento do DS1307 usa um cristal de quartzo externo [43] e o DS3231 um cristal

integrado no chip, com compensação de temperatura através de condensadores ajustáveis na sua

malha de ressonância [44]. Uma vez que, entre outros factores, a precisão de uma malha de

ressonância baseada num cristal de quartzo é afectada pela temperatura do ambiente onde opera,

considerou-se o DS3231 uma opção superior. Assim, escolheu-se este RTC, que mantém a data e

hora com uma precisão de ± 2 minutos por ano [44].

Do ponto de vista da energia, pode ser alimentado com uma tensão entre 2.3 e 5.5 V, bem

como pode funcionar com uma bateria de reserva. A mudança da alimentação para a bateria é

efectuada automaticamente através de um circuito comparador de tensão. Internamente, a tensão de

operação é de 3.3 V [44]. Quando alimentado por uma tensão de 5.5 V, o consumo médio

especificado pelo fabricante é de 300 µA, enquanto que se essa mesma tensão for fornecida pela

bateria este valor baixa para os 150 µA [44].

O circuito RTC seleccionado fornece informação referente a segundos, minutos, horas, dia,

mês e ano, com ajuste automático para meses com menos de 31 dias e compensação de anos

bissextos (válido até 2100). Essa informação pode ser lida através da interface I2C [44].

Utiliza-se o DS3231 integrado num módulo, o qual se encontra representado na figura 15.

Este inclui um adaptador para colocar uma bateria e, adicionalmente, possui o circuito AT24C32 [45],

que corresponde a uma memória EEPROM de 4 KB da Atmel, também acessível por I2C [46].

4 www.ebay.com

28

Figura 15 – Módulo RTC que usa o DS3231 e a EEPROM AT24C32. Retirado de [45].

3.4.5 Motor

Para movimentar a estrutura circular que contém os compartimentos para os medicamentos

considerou-se o uso de um motor de passo (step motor). Um motor de passo é um dispositivo cuja

rotação normal do eixo consiste em movimentos angulares discretos, sendo adequado para

aplicações nas quais os sinais de controlo são pulsos digitais, ao invés de tensões analógicas [47].

Um pulso digital faz com que o motor incremente a posição do eixo por um ângulo preciso, razão pela

qual podem trabalhar em malha aberta (sem feedback) [47]. Assim, considera-se preferível este tipo

de solução face a um motor DC normal, uma vez que permite controlar de forma precisa os

movimentos angulares e alinhar correctamente os compartimentos.

Para evitar usar mais uma tensão de alimentação, procurou-se um motor que operasse a 5 V,

que é a tensão da maioria dos componentes utilizados. Outro dos requisitos impostos foi o de possuir

um sistema de desmultiplicação interno, garantindo assim que teria força suficiente para movimentar

a estrutura circular e evitando o trabalho mecânico de implementar esta desmultiplicação.

Dado que a estrutura circular irá ser dividida em 29 compartimentos (28 para medicação e um

para ser deixado vazio no início, uma vez que está logo acessível), ter-se-á um valor de

aproximadamente 12.4º de arco para cada compartimento, razão pela qual se especificou que o

ângulo correspondente a cada passo do motor teria de ser igual ou inferior a 0.1º.

Das soluções analisadas optou-se por utilizar o motor 28BYJ-48, ilustado na figura 16, que

corresponde a um motor de passo que opera a 5 V e cujas especificações indicam que possui uma

desmultiplicação interna de 1/64 e um ângulo por passo de 5.625º/64 [48] (aproximadamente 0.088º).

Estes valores correspondem a 4096 passos por rotação completa, satisfazendo assim os requisitos

anteriores. Para além disso, este modelo é produzido em grandes quantidades para unidades de ar

condicionado e ventiladores, razão pela qual pode ser comprado por um valor bastante reduzido [49].

Figura 16 – Motor de passo 28BYJ-48. Retirado de [48].

O 28BYJ-48 é um motor de quatro fases [48], pelo que são necessários quatro pinos digitais

de um microcontrolador para o controlar. Dado ser necessária uma corrente significativa para

29

movimentar o motor, o microcontrolador comandará o circuito integrado ULN2803, que corresponde a

um array de transístores na configuração Darlington [50], que pode fornecer a corrente necessária.

Importa referir que os testes experimentais executados com o 28BYJ-48 revelaram que os

valores especificados pelos vendedores para a desmultiplicação se encontram errados, o que foi

corroborado por informação fornecida por outros utilizadores do motor. Assim, o valor real é de

63.68395:1 [51], o que corresponde a aproximadamente 4075.773 passos por rotação completa.

3.4.6 Sensor de controlo de posição

Conforme referido anteriormente, o uso de um motor de passo garante uma elevada

fiabilidade no controlo da plataforma com os medicamentos. No entanto, considerou-se que tal não

invalida o uso de um mecanismo de feedback, que permitirá corrigir eventuais erros pontuais

ocorridos durante a movimentação. Para além disso, em caso de falha na alimentação do

dispensador, é fundamental ter um mecanismo que permita reposicionar o motor numa posição de

referência conhecida. Para implementar este mecanismo, considerou-se o uso de um sensor óptico

(optocouplador) ou de um sensor magnético (sensor de Hall).

Os sensores de Hall são dispositivos que detectam campos magnéticos e produzem um sinal

analógico ou digital, de acordo com a intensidade deste campo [52]. Já os optocopladores são

dispositivos que consistem num emissor de sinal óptico (tipicamente, um LED infra-vermelho) e num

receptor do sinal (um fototransístor) [53]. Quando o LED é alimentado, produz um sinal óptico que o

fototransistor capta e converte novamente para um sinal eléctrico [53]. Se existir algum objecto no

caminho do sinal óptico, o fototransístor deixa de o detectar, deixando de ser produzido um sinal na

saída. A figura 17 resume o princípio de operação de ambas as soluções.

Figura 17 – Princípio de funcionamento de um sensor de Hall (acima) e de um optocouplador

(abaixo). Adaptado de [53] [52].

Tendo em conta a explicação anterior, a solução que utiliza um sensor de Hall obrigaria ao

uso de ímans na estrutura circular, ao passo que para o optocoplador bastaria apenas que esta fosse

desenhada com extrusões plásticas nos compartimentos que se pretendessem detectar. Dado que

ambos os dispositivos podem ser adquiridos a preços relativamente baixos (inferiores a 1 euro),

considerou-se mais cómoda a solução baseada no optocoplador, que evita a aplicação dos ímans.

30

Optou-se pelo uso do modelo ITR9608 da Everlight, o qual consiste num LED infra-vermelho

e num fototransístor NPN, encapsulados num invólucro plástico [54], conforme ilustrado na figura 18.

O eixo óptico do optocouplador encontra-se na ranhura central do dispositivo, com o fototransistor e o

LED nas extremidades [54]. O pico de sensitividade espectral do dispositivo corresponde ao

comprimento de onde de 940 nm [54], o que reduz interferências causadas pela luz visível.

Figura 18 – Optocouplador ITR9608 (à esquerda) e diagrama eléctrico correspondente (à direita).

Adaptado de [54] [55].

3.4.7 Teclado

Para facilitar a interacção directa com o dispensador, considerou-se o uso de um teclado

alfanumérico, para facilitar a navegação nos menus e a introdução de valores numéricos nos campos

de configuração. Como tal, pretendia-se uma solução que pudesse acomodar os botões referentes

aos dígitos de “0” a “9”, quatro teclas de navegação e duas para funcionalidades de “ok” e “cancelar”.

Para satisfazer o requisito anterior, optou-se por utilizar um teclado genérico de membrana de

quatro linhas e quatro colunas, de baixo custo, o qual se encontra ilustrado na figura 19. A disposição

apresentada para as teclas não é a mais adequada para um produto final, pelo que o seu contexto de

utilização é apenas pertinente para o protótipo. Assim, as teclas numéricas serão utilizadas para a

introdução de dígitos, as teclas “*”, “#”, “C” e “D” para navegação nos menus (esquerda, direita, cima

e baixo) e as teclas “A” e “B” como “Ok” e “Cancelar”, respectivamente.

Figura 19 – Teclado de membrana utilizado no protótipo (à direita) e correspondente esquema

eléctrico (à esquerda). Adaptado de [56].

3.4.8 Display

Para dar suporte à interacção directa com o cuidador (para configurar o dispositivo) e face à

diversidade de informação que é conveniente poder visualizar, torna-se imprescindível o uso de um

display. Esse display será também utilizado para mostrar avisos e mensagens à pessoa cuidada.

31

Dado estar-se perante um protótipo pretende-se, nesta fase, simplificar o processo de

desenvolvimento e validar a abordagem proposta, possibilitando a demonstração das

funcionalidades. Como tal, optou-se pelo uso de um display LCD muito simples e económico.

Uma vez que existe uma enorme variedade de LCDs dentro das especificações anteriores, a

escolha baseou-se no número de caracteres pretendido. Como tal, considerou-se razoável um

número de oitenta caracteres para possibilitar a escrita de mensagens textuais com alguma margem.

Assim, optou-se pelo LCD QC2004A, o qual se encontra organizado em quatro linhas de vinte

caracteres, opera à tensão de 5 V e tem um consumo de corrente de 1.6 mA, com a retroiluminação

inactiva [57]. O referido LCD encontra-se ilustrado na figura 20. Cada caracter tem uma dimensão

2.94 mm × 4.74 mm e um espaçamento de caracteres adjacentes de cerca de 0.6 mm [57].

Figura 20 – LCD QC2004A, utilizado no protótipo. Retirado de [58].

A interacção com este display requer oito sinais para envio de dados [57], obrigando ao uso

de oito pinos para o seu controlo. Para simplificar esta interacção e tornar o sistema mais modular,

optou-se pelo uso de um módulo de interface dedicado que usa comunicação I2C. Este módulo é

baseado no circuito integrado PCF8574 e permite fazer a conversão entre I2C e uma interface de

entrada/saída de 8 bits [59], reduzindo assim o número de pinos necessários do microcontrolador.

Considerando os padrões actuais, o mais adequado seria usar um display gráfico. No

entanto, constatou-se que o uso deste tipo de display coloca outro tipo de dificuldades de

implementação, tornando o desenvolvimento complexo. Para além da vertente técnica, existem

aspectos relacionados com o desenho e estética da interface, que estão fora do âmbito do projecto.

3.4.9 Bezouro

Para gerar o sinal sonoro do dispensador recorreu-se a um bezouro (buzzer) genérico de 5 V.

Optou-se por escolher um buzzer passivo, permitindo assim controlar a frequência do som emitido.

Uma vez que se pretende ter a possibilidade de controlar a intensidade do som gerado pelo

buzzer, optou-se pelo uso de um potenciómetro digital, que permite controlar a tensão do sinal

eléctrico aplicado. A escolha de um potenciómetro digital oferece a vantagem de o volume poder ser

controlado por software, possibilitando ao cuidador configurar este parâmetro remotamente. A

solução adoptada usa o circuito integrado MCP41010, que pertence a uma família de potenciómetros

digitais de 256 posições, controlados por SPI [60].

32

Este dispositivo em concreto corresponde à versão de 10 kΩ, com um valor nominal de 52 Ω

e incrementos de 39.0625 Ω. Opera numa gama de tensões entre os 2.7 e os 5.5 V e tem um

consumo máximo de 500 µA de corrente quando activo [60].

3.5 Selecção do módulo de processamento

3.5.1 Entradas/saídas e periféricos do microcontrolador

No que diz respeito à interacção com os dispositivos analisados, a tabela 1 resume o número

de pinos de entrada/saída (IO) e as interfaces de comunicação necessárias. Conforme se pode

observar, será necessário um número considerável de pinos de IO, suporte para I2C, SPI e, no

mínimo, três UARTs para a comunicação série.

Cumprir estes requisitos não será problemático na medida em que o hardware

correspondente a estas interfaces de comunicação é relativamente simples e normalizado, sendo

muito comum em vários microcontroladores. Apesar de o número exacto de três UARTs ser uma

característica pouco comum, existem bastantes alternativas com um número superior.

Tabela 1 – Requisitos de entradas/saídas e interfaces de comunicação para o microcontrolador

Módulo / dispositivo Pinos de IO UART I2C SPI

GSM 0 X - -

Bluetooth 0 X - -

Wi-Fi 0 X - -

LCD 0 - X -

Teclado 8 - - -

Motor de passo 4 - - -

Optocouplador 1 - - -

RTC 0 - X -

Botões de pressão 3 - - -

Potenciómetro digital - - - X

Buzzer e LED 2 - - -

Total 18 3 1 1

Para além de quantificar os recursos necessários, importa ter em consideração a

necessidade de interacção quer com o utilizador quer com o cuidador, mais concretamente no que diz

respeito aos tempos de reacção aos eventos. Por exemplo, ao carregar no botão de dispensa, o

procedimento de disponibilização dos comprimidos deverá ser iniciado de imediato, na perspectiva do

utilizador. Da mesma forma, a interacção do cuidador com o teclado e consequente resposta no

display deve ocorrer de forma suave e fluída. Como tal, consideram-se adequados tempos de

reacção que não ultrapassem um décimo do segundo, o que é percepcionado como instantâneo.

Dado que se tomou a decisão de relegar para os módulos de comunicação a implementação

dos protocolos correspondentes (GSM, Wi-Fi e Bluetooth), grande parte do esforço de

33

processamento foi retirado do microcontrolador, que apenas tem de interagir com os mesmos através

de comunicação série. Para além disso, considerou-se desnecessário o uso de um sistema operativo,

que teria um overhead considerável.

Tendo em conta as observações anteriores, considerou-se suficiente o uso de um

microcontrolador que tenha uma capacidade de execução de instruções da ordem da dezena de

milhão por segundo. Este valor é adequado para o tipo de funcionalidades a implementar, permitindo

igualmente responder aos eventos assíncronos em tempos aceitáveis. Como actualmente a

generalidade dos microcontroladores implementam arquitecturas RISC que lhes permitem executar

um MIPS (Million of Instructions per Second) por cada MHz, considera-se suficiente uma velocidade

de relógio da ordem das dezenas de MHz.

No que diz respeito à dimensão da memória de programa, é difícil fazer uma estimativa

precisa. Existem factores que influenciam o tamanho final da aplicação, que vão desde detalhes de

implementação não inicialmente previstos à optimização que o compilador realiza ao código. No

entanto, sabe-se de antemão que o facto de se pretender permitir a configuração do dispensador

através do teclado e do LCD se irá traduzir em inúmeros menus, com muitas cadeias de caracteres

(strings), implementados com uma quantidade considerável de código. Para além disso, pretende-se

ter uma boa margem de manobra para a eventual implementação de funcionalidades inicialmente não

previstas, pelo que se estabeleceu um valor próximo da centena de KB para a memória de programa.

Para analisar a capacidade de memória RAM necessária, consideraram-se as principais

estruturas de dados que se antecipam ser necessárias na aplicação, as quais se encontram indicadas

na tabela 2. Uma vez que o display utilizado suporta um máximo de 80 caracteres, considerou-se 60

bytes a dimensão máxima das mensagens textuais (para ter uma linha disponível para colocar

alguma informação acessória). Todas as mensagens textuais estarão guardadas na EEPROM, pelo

que, a cada momento, só será necessário ter em RAM os dados correspondentes às mensagens do

alarme e notificação actuais, tal como as correspondentes informações de disparo.

Em relação ao protocolo de comunicação, considerou-se a criação de uma solução

decomposta em comandos simples e compactos, pelo que se antecipou que a mensagem de

dimensão maior corresponderia à configuração de uma mensagem textual, a qual, adicionada dos

cabeçalhos associados ao protocolo, se estimou não ultrapassar os 80 bytes.

O valor de 160 bytes para o buffer surge pelo facto de a recepção de bytes nas UARTs ser,

tipicamente, efectuada com recurso a interrupções, para não se perderem dados no caso de se estar

a efectuar algum outro procedimento. Como as interrupções têm de ser rápidas, não é viável realizar

verificações aos dados recebidos dentro das mesmas. Como tal, considerou-se uma implementação

na qual as interrupções colocam os dados num buffer inicial, sem qualquer tipo de verificação, sendo

depois transferidos para um buffer de mensagem quando o processador se encontrar disponível,

realizando-se neste procedimento toda a verificação referente à estrutura do protocolo. Uma vez que

se pretende ter os três canais de comunicação a operar de forma independente, cada UART terá de

ter associada uma destas estruturas.

Para o caso de existir algum problema com os canais de comunicação remotos, considerou-

se ainda uma pilha para guardar as notificações geradas, para posterior envio.

34

Tabela 2 - Principais estruturas de dados a utilizar e dimensão correspondente.

Estrutura de dados Dimensão

[bytes]

Quantidade Dimensão total

[bytes]

Buffer de recepção de dados da UART 160 3 480

Mensagem textual 60 2 120

Informação de disparo do alarme 10 1 10

Informação de disparo do aviso textual 10 1 10

Pilha para notificações remotas pendentes 100 2 200

Total 820

Conforme se pode verificar, chegou-se a um valor de aproximadamente 820 bytes, ao qual é

necessário adicionar todos os dados de configuração do funcionamento do dispensador, as variáveis

auxiliares na implementação da aplicação, o eventual uso de bibliotecas de programação e o espaço

para a pilha (stack) associada ao funcionamento do microcontrolador. Como tal, considera-se uma

dimensão para a memória RAM não inferior a 4 KB.

Apesar de o módulo RTC seleccionado dispor de uma EEPROM, considerou-se preferível

guardar os dados referentes a mensagens e alarmes numa memória do microcontrolador, para um

acesso mais rápido. Tendo em conta a existência de 28 alarmes, 30 mensagens textuais e 30 avisos,

chega-se a um valor mínimo de 2380 bytes. Considerando ainda a restante informação acessória que

poderá ser necessário guardar, definiu-se como dimensão mínima para a memória EEPROM interna

ao microcontrolador o valor de 4 KB de dimensão (como 2 KB seria insuficiente e as capacidades das

memórias são uma potência de 2, este é o valor mais adequado).

Importa deixar claro que os valores especificados correspondem à análise efectuada antes de

se iniciar o desenvolvimento da aplicação. Como tal, as especificações foram estimadas com base

nos módulos electrónicos escolhidos, bem como no planeamento inicial para a aplicação. Como se

verá adiante, o processo de desenvolvimento levou a algumas alterações, as quais puderam ser

acomodadas em virtude da escolha de uma plataforma de desenvolvimento com uma tolerância

razoável nos recursos disponíveis.

3.5.2 Placa de desenvolvimento

Dentro das opções disponíveis que cumprissem as especificações anteriormente descritas

para o microcontrolador, procurou-se uma placa de desenvolvimento pronta a utilizar, apenas com o

hardware mínimo necessário ao carregamento e execução de aplicações. Para além disso, procurou-

se uma solução bem documentada, com ferramentas de desenvolvimento estáveis e fáceis de utilizar.

Dada a enorme lista de microcontroladores existentes, produzidos pelas mais variadas

empresas [61], optou-se por reduzir a procura a duas das soluções mais divulgadas no mercado,

mais concretamente as famílias PIC da Microchip e AVR da Atmel. Em ambos os casos, existem

diversos microcontroladores que cumprem as especificações requeridas [62] [63], razão pela qual se

optou por tomar a decisão com base nas placas de desenvolvimento existentes.

35

Apesar de existirem várias placas baseadas em microcontroladores PIC [64], a opção

escolhida recaiu pela família de placas Arduino, que utilizam marioritariamente microcontroladores

AVR [65]. Esta decisão resulta do facto de esta plataforma ter uma comunidade de suporte

consideravelmente superior [66], com imensas bibliotecas de programação auxiliares que facilitam

todo o processo de desenvolvimento [67].

Para além disso, o Arduino possui uma linguagem própria com funções que escondem muitos

dos detalhes de baixo nível necessários para interagir com um microcontrolador, apesar de suportar

código normalizado em C e C++ [68]. Assim, permite balancear a abstracção das referidas funções

com a possibilidade de optimizar secções de código críticas, possibilitando o uso de bibliotecas AVR

e o acesso directo aos registos internos do microcontrolador [69].

3.5.3 Placa “Arduino Mega”

O Arduino é uma plataforma open source utilizada para o desenvolvimento de projectos de

sistemas embebidos e de electrónica [70]. Consiste numa placa com um microcontrolador

programável e dispõe de um IDE (Ambiente de Desenvolvimento Integrado) que executa num

computador (com sistema operativo Windows ou Linux) e é utilizado para desenvolver e carregar o

código para a placa [70]. Esta plataforma tornou-se bastante popular porque não necessita de

hardware auxiliar (programador) para carregar código para o microcontrolador, sendo apenas

necessário um cabo USB [70], para efectuar a ligação entre o dispositivo e o computador. O cabo

USB também pode ser usado para alimentar a placa.

No que diz respeito ao ambiente de desenvolvimento, o referido IDE permite editar, compilar

e carregar o código para a placa [71]. O código é desenvolvido numa linguagem modelada a partir da

linguagem Processing, que é traduzida para C e passada ao compilador avr-gcc, que faz a tradução

final para a linguagem do microcontrolador [72]. No entanto, estes passos de tradução são

efectuados automaticamente no IDE, não sendo necessário qualquer tipo de software auxiliar.

Importa referir que o ambiente de desenvolvimento é tão versátil que não necessita de

funcionar com uma placa Arduino [71]. Assim, apesar de se estar a desenvolver uma aplicação para

um protótipo, pode-se mais tarde utilizar o mesmo código numa PCB feita à medida para o

dispensador, bastando para tal utilizar um microcontrolador da mesma família da placa Arduino.

Embora se mencione genericamente “placa Arduino”, na realidade existe um conjunto muito

diversificado de placas de desenvolvimento que usam microcontroladores da família AVR, com

diferentes características [65]. De entre as variantes existentes, considerou-se que o Arduino Mega, o

qual se encontra ilustrado na figura 21, seria o mais adequado. Este utiliza um microcontrolador AVR

ATmega2560 [73] da Atmel, com arquitectura RISC de 8 bits [74]. O microcontrolador pode operar a

uma frequência de 16 MHz, numa gama de tensões entre 4.5 V e 5.5 V [74]. Possui uma memória

EEPROM de 4 KB para armazenamento persistente, uma memória Flash de programa de 256 KB e

uma memória SRAM de dados de 8 KB [74].

Do ponto de vista de comunicação com periféricos externos, é suportado o uso das interfaces

SPI, I2C e série, com 4 UARTs distintas [73]. Dos 86 pinos de I/O que o microcontrolador possui, o

Arduino Mega possibilita o uso de 54 pinos digitais, quer para entrada quer para saída, bem como 16

36

pinos para leitura analógica, com uma resolução de 10 bits [73]. Os pinos digitais operam a uma

tensão de 5 V e podem receber ou fornecer, no máximo, uma corrente de 40 mA [73]. Os pinos

analógicos operam numa gama de tensões entre os 0 V e os 5 V [73]. Dos referidos 54 pinos digitais,

15 possibilitam gerar sinais PWM (Pulse Width Modulation) [73].

Figura 21 – Placa de desenvolvimento Arduino Mega. Retirado de [73].

Conforme se pode concluir, o Arduino Mega cumpre todos os requisitos necessários ao

desenvolvimento da aplicação. No que diz respeito aos pinos de entrada/saída, o número disponível é

superior ao necessário, tal como a dimensão da RAM. No entanto, esta é a placa que mais se

aproxima do especificado, sendo que a outra solução que cumpre os requisitos (o Arduino DUE [65])

é ainda mais poderosa e, consequentemente, mais cara. As restantes placas de desenvolvimento

falham em cumprir um ou mais dos requisitos anteriores, pelo que foram descartadas.

3.6 Outros componentes do sistema

De modo a dar maior robustez à solução desenvolvida, o dispensador será alimentado a partir

de uma fonte principal, ligada à rede eléctrica, e incluirá uma fonte de reserva constituída por uma

bateria. Desta forma, em caso de falha da fonte principal, o dispensador comuta automaticamente

para a bateria, sendo possível manter o seu funcionamento normal. Adicionalmente, é possível avisar

o cuidador da falta de energia (através de uma notificação remota), o qual poderá tomar qualquer

medida que se mostre necessária caso esta situação se alongue demasiado no tempo.

Para a fonte principal utiliza-se um transformador de 9 V e para a fonte de reserva uma

bateria de chumbo de 6 V, com uma capacidade de 1200 Ah. Para implementar a comutação

automática entre ambas, recorreu-se a um circuito com dois díodos, configurados como indicado na

figura 22. Este circuito garante que a alimentação é realizada a partir da fonte principal se ambas

estiverem presentes e a partir da bateria caso a fonte principal falhe [75].

Para tal, a tensão da fonte principal necessita ser superior à tensão da bateria [75], o que

justifica os valores escolhidos para a bateria e para o transformador. Importa referir que o díodo da

fonte de menor tensão irá garantir que não há corrente a fluir nesse sentido [76], desde que se

respeite o valor de tensão inversa máximo suportado.

Para monitorizar qual das fontes se encontra activa num dado momento, recorreu-se a um

divisor de tensão resistivo, dimensionado com resistências de igual valor, pelo que a tensão de saída

37

é igual a metade da tensão de entrada. Como tal, a tensão de alimentação da fonte principal (9 V) é

convertida para 4.5 V, o que corresponde a um nível TTL, monitorizável por um pino digital do

microcontrolador e permitindo identificar de forma binária se esta se encontra ou não activa.

Uma vez que os módulos e circuitos utilizados no dispensador operam com tensões de 5 e

3.3 V, recorreu-se ao uso de dois reguladores de tensão, conforme indicado na figura 22. No caso da

regulação da tensão da bateria para os 5 V, foi necessário especial cuidado pois existe uma diferença

de tensão entre o valor de entrada e o valor de saída muito baixa (inferior a 1 V). Como tal, utilizou-se

o regulador LM2940, que permite diferenças de tensão entre a entrada e saída de 0.5 V (valor tipico

para uma corrente de saída de 1 A [77]), bem como se optou pelo uso de diodos Schotky, que têm

valores de queda de tensão inferiores (bem como velocidades de comutação superiores) [78].

Figura 22 – Esquema eléctrico do circuito de alimentação do dispensador.

O esquema eléctrico da solução final encontra-se representado na figura 23.

Para permitir desligar alguns dos módulos do dispensador e, desse modo, reduzir o consumo do

circuito quando não estão a ser usados, incluíram-se MOSFETs de potência no circuito da

alimentação do LCD e dos módulos Wi-Fi e Bluetooth. Desta forma, permite-se que o

microcontrolador ligue e desligue os módulos indicados.

Dado que é necessário recorrer a um botão de pressão para ligar e desligar o módulo de GSM,

esta técnica não lhe pôde ser aplicada. Porém, esta limitação seria facilmente ultrapassada no

desenho do circuito de um produto final.

38

Figura 23 – Esquema eléctrico do protótipo desenvolvido.

Na configuração usada, o MOSFET opera como um interruptor, deixando ou não fluir corrente

de acordo com os valores aplicados ao seu pino de Gate, em referência ao pino de Source.

Controlando a tensão na Gate é possível colocar o MOSFET a operar na região de saturação (existe

condução) ou corte (não existe condução) [79]. O valor do limiar de tensão que define a transição

entre estes dois estados depende do modelo utilizado, razão pela qual se optou por utilizar o

MOSFET IRF9Z24, que apresenta uma tensão de limiar máxima de 4 V [80], podendo então ser

controlado de forma binária por uma saída do microcontrolador.

Uma vez que a Gate do MOSFET tem capacidades parasitas associadas, é fundamental o

uso de uma resistência em série com o pino digital para evitar picos de corrente durante as transições

de estado, que poderiam danificar o microcontrolador.

Importa referir o MOSFET não funciona como um interruptor ideal. Na realidade, existe uma

pequena corrente de fuga, que neste circuito é desprezável, quando o dispositivo se encontra no

estado off (500 µA para o MOSFET utilizado [80]), bem como uma resistência associada ao estado de

condução (0.28 Ω para o MOSFET utilizado [80]).

Conforme referido, utiliza-se um optocouplador como mecanismo de feedback no controlo da

estrutura que contém os medicamentos. Para converter o sinal analógico da saída do optocouplador

num sinal digital, utilizou-se um esquema no qual o fototransistor está configurado numa montagem

de amplificação de emissor comum [81], a qual irá colocar um valor de tensão correspondente a VCC

39

quando o sinal óptico se encontra bloqueado e a GND caso o sinal óptico atinja o fototransístor [82].

Desta forma, pode-se monitorizar de forma binária se o espaço entre o transistor e o LED se encontra

ou não obstruído.

Dada a natureza esporádica das dispensas, a percentagem de tempo de utilização do

optocouplador é extremamente baixa. Como tal, optou-se por realizar a sua alimentação a partir de

um pino digital do microcontrolador, permitindo ligar o dispositivo apenas quando necessário e

evitando assim um gasto contínuo e desnecessário de energia.

Um dos maiores problemas que se fez sentir foi o ruído eléctrico introduzido pelo funcionamento

dos diversos módulos. Este problema manifestou-se, em particular, no controlo do motor de passo,

que operava de maneira incorrecta ou irregular.

De forma a resolver o referido problema, aplicaram-se condensadores de filtragem e de

estabilização de tensão na alimentação dos diferentes módulos e circuitos integrados. Esta técnica

permite não só reduzir o ruido como também reduzir o efeito das quedas de tensão na fonte de

alimentação, uma vez que os condensadores acumulam carga eléctrica que fornecem quando essa

situação ocorre [83].

O problema do esquema possuir módulos a operar a 3.3 V e a 5 V estende-se para além da

alimentação e afecta também as interfaces de comunicação. Uma vez que o Arduino opera a 5 V e os

módulos de Bluetooth e Wi-Fi a 3.3 V, é necessário efectuar a conversão de tensão dos sinais

gerados pela UART do microcontrolador. No sentido oposto não é necessário este procedimento

porque os sinais a 3.3 V são interpretados pelo microcontrolador como ainda correspondentes ao

nível lógico “1”. É necessário ter um especial cuidado na escolha do método de conversão para não

afectar a forma e rapidez das transições dos sinais eléctricos.

Recorre-se ao circuito integrado MCP41010 para realizar um controlo digital da intensidade

sonora do bezouro, de forma a limitar a corrente fornecida. No entanto, o MCP41010 apenas suporta

um valor máximo de corrente de 1 mA [60], razão pela qual não pode ser usado para controlar

directamente o bezouro. Como tal, utiliza-se um transistor numa montagem de colector comum para

controlar o sinal aplicado ao bezouro. Assim, o potenciómetro digital serve apenas para controlar o

sinal de entrada, sendo percorrido por uma corrente mínima. A corrente necessária ao funcionamento

do bezouro é então fornecida pela fonte externa, evitando danificar o pino de controlo do

microcontrolador e o potenciómetro.

40

4 Detalhes de implementação

4.1 Estrutura do programa

No contexto da aplicação a desenvolver para executar no microcontrolador, considerou-se

não ser necessário o uso de um sistema operativo. Esta abordagem levaria a um maior consumo de

memória e a uma perda de eficiência, associado ao próprio funcionamento do núcleo operativo, e

colocaria restrições na escolha do microcontrolador, por razões de compatibilidade, face ao núcleo

operativo que viesse a ser seleccionado.

Assim, após uma análise prévia das funcionalidades a implementar e do paralelismo das

acções a executar, concluiu-se que o uso de um ciclo principal, complementado com o recurso a

interrupções, seria suficiente. As interrupções são fundamentais para lidar com a quantidade de

eventos assíncronos possíveis, em particular para a comunicação e interacção com o utilizador.

De modo a tornar as interrupções o mais rápidas possível, estas são utilizadas apenas para

capturar a informação que gerou a interrupção, sendo depois sinalizado o ciclo principal, por meio de

flags ou contadores, que determinado procedimento deve ser executado. Desta forma, a função de

tratamento do evento é relegada para o ciclo principal, o que é particularmente relevante caso o

processamento a executar seja intensivo. A tabela 3 resume as interrupções utilizadas.

Tabela 3 – Listagem das interrupções utilizadas no programa desenvolvido.

Interrupção Utilização Observações

Temporizador 5 Actualização da hora e data numa

representação interna usada no

microcontrolador

Sempre activa.

Envio e recepção de

dados nas UARTs

Comunicação série com os

módulos Bluetooth, Wi-Fi e GSM.

Activas quando a UART

correspondente está activa.

Utilizadas internamente pela

biblioteca de comunicação série.

INT4, INT5 e PCINT6

(pinos PE4, PE5 e PB6

do microcontrolador [84])

Detecção de actuações nos botões

de dispensa, PRN e

estabelecimento de comunicação

GSM.

Sensíveis à transição do nível

lógico 1 para o nível lógico 0.

PCINT23 (pino PK7 do

microcontrolador [84])

Detecção de falta de energia na

fonte de alimentação principal.

Sensível à mudança do nível

lógico.

No que diz respeito às técnicas de programação, tentou-se encontrar um balanço entre uma

abordagem genérica e eficiente. Conforme expectável, o uso de um microcontrolador implica certas

41

restrições nos recursos disponíveis, obrigando a um estilo de programação compatível com as

mesmas. No entanto, o ATmega2560 é um microcontrolador que apresenta um poder de

processamento considerável, pelo que se considerou pertinente dar maior ênfase a uma

implementação modular e escalável, que permita uma fácil reutilização e adaptação do código, com

vista a facilitar uma eventual transição para um produto final.

Conforme foi referido, existem imensas bibliotecas de programação para a plataforma

Arduino, que permitem facilitar quer a interacção com periféricos quer a implementação de várias

funcionalidades. No entanto, estas seguem, tipicamente, abordagens genéricas que permitem

satisfazer diferentes contextos de aplicação, à custa de perda de alguma eficiência. Como tal, optou-

se por utilizar essas bibliotecas apenas quando o esforço necessário para a sua implementação de

raiz fosse demasiado elevado ou quando não houvesse garantia de obter um melhor desempenho.

4.2 Data e hora

Para a garantir o correcto funcionamento de todos os eventos de dispensa e geração de

avisos textuais, é fundamental manter de forma correcta a data e hora durante um período de tempo

significativo (superior a 4 semanas), sem ser necessário ao cuidador efectuar acertos do relógio.

Na implementação proposta, a informação relativa à data e hora é mantida numa variável

global acessível a qualquer função, mais concretamente num array de 6 bytes que contém o ano

(últimos dois dígitos), o mês, o dia, a hora, o minuto e o segundo actuais. É a esta variável que as

funções de gestão dos alarmes e avisos textuais acedem para verificar o momento dos eventos

A passagem do tempo é contabilizada com recurso a um temporizador interno do

microcontrolador, o qual é programado para disparar com a periodicidade de um segundo. A cada

disparo do temporizador, é executada uma rotina de interrupção responsável exclusivamente por

assinalar ao ciclo principal a passagem de um novo segundo, de modo a executar o algoritmo de

actualização da data e hora.

No Arduino Mega, o relógio interno é gerado a partir de uma malha de ressonância

constituida por um cristal de quartzo de 16 MHz e dois condensadores [73]. A precisão na frequência

do sinal gerado por este tipo de circuito está dependente de factores ambientais como a temperatura,

bem como pela precisão no valor dos condensadores usados. Como tal, o erro resultante destas

variáveis manifesta-se nos temporizadores, cuja precisão é significativamente afectada. Nos testes

preliminares realizados ao funcionamento do algoritmo de actualização da hora, verificou-se um

atraso de cerca de meio minuto por dia, o que se considerou intolerável pois obrigaria a um acerto

regular da data e hora do dispensador pelo cuidador.

Para solucionar este problema, utiliza-se um módulo com um RTC (Real-Time Clock),

descrito no capítulo anterior, para actualizar o relógio interno do sistema. Assim, a cada trinta

minutos, os valores de data e hora do RTC são lidos através da interface I2C e utilizados para corrigir

os valores mantidos na aplicação. Esta periodicidade permite evitar o acesso constante ao relógio

externo e garante que o erro acumulado é sempre mantido a níveis aceitáveis.

Para manter a coerência entre os valores do relógio interno e do RTC, sempre que o cuidador

configura a data e a hora ambos os valores são actualizados.

42

O funcionamento do relógio interno do dispensador opera de forma independente das

restantes funcionalidades, tendo um comportamento modular e genérico, que o permitem ser utilizado

em contextos para além deste trabalho.

4.3 Dispensa de medicação

Para reduzir a probabilidade de erro de configuração, desenvolveram-se dois modos de

funcionamento distintos para o dispensador. No primeiro modo, designado de modo de configuração,

o cuidador pode realizar a configuração dos alarmes de dispensa e dos medicamentos PRN. Neste

modo não ocorre o disparo de alarmes nem pode ser dispensada medicação.

Uma vez configurados os alarmes e os medicamentos PRN, o cuidador deve colocar o

dispensador no segundo modo, designado modo de operação, no qual ocorre o disparo dos alames e

a medicação pode ser dispensada. No entanto, existe a possibilidade de efectuar correcções pontuais

a eventuais erros de configuração após início da operação, conforme descrito adiante.

Na transição do modo de configuração para o modo de operação existe um procedimento

auxiliar, no qual o cuidador pode visualizar os valores definidos para cada alarme e medicamento

PRN, sendo que a estrutura circular é movimentada para o compartimento correspondente. Desta

forma, pretende-se minimizar a probabilidade de erros na configuração.

Na transição do modo de operação para o modo de configuração, todos os registos de

alarmes e medicamentos PRN são eliminados, para permitir nova configuração. O dispensador pode

ser colocado no modo de configuração a qualquer momento.

4.3.1 Alarmes de dispensa

Apesar de, conceptualmente, o tratamento de alarmes aparentar ser algo simples, a

implementação de todas as funcionalidades que lhe estão associadas engloba um enorme conjunto

de pormenores, tornando a implementação complexa e susceptível a erros.

Um alarme tem sempre associada uma data e uma hora de disparo, a qual é directamente

comparada com a data e hora do dispensador. Caso coincidam, então ocorre o disparo do alarme.

Dado que a granularidade com que se consegue definir o alarme é o minuto, esta comparação é

efectuada apenas uma vez a cada 60 segundos, evitando assim operações desnecessárias.

Conforme explicado em pormenor mais adiante, as informações relativas aos alarmes

encontram-se guardadas na memória EEPROM do microcontrolador, por ordem crescente de data e

hora de disparo. No entanto, para evitar acessos repetidos a esta a cada minuto, as informações

referentes ao próximo alarme a disparar encontram-se em RAM. Como tal, assim que um alarme

dispara, o conteúdo do próximo alarme tem de ser imediatamente carregado da EEPROM para RAM

e tem de se iniciar a verificação da sua hora de disparo. No caso genérico, um alarme pode ter vários

compartimentos, os quais são representados em memória como alarmes adjacentes com a mesma

estampilha temporal, tal como ilustrado na figura 24.

43

Figura 24 – Representação em memória de alarmes associados a múltiplos compartimentos.

A possibilidade de um alarme estar associado a vários compartimentos torna o seu

tratamento um pouco mais complexo, na medida em que é necessário verificar quantos alarmes

adjacentes têm a mesma estampilha temporal, para determinar quantos compartimentos é necessário

dispensar. A figura 25 demonstra o procedimento executado quando é disparado um alarme. Importa

referir que as informações carregadas para a dose antecipada, tempo de tolerância e índice da

mensagem correspondem às presentes na primeira entrada da EEPROM. Os alarmes adjacentes

com a mesma estampilha temporal servem apenas para a contagem do número de compartimentos e

as suas restantes definições são ignoradas, mesmo que sejam diferentes.

Figura 25 – Carregamento de alarmes para memória RAM.

Para um alarme disparado que envolva múltiplos compartimentos, o utilizador deve carregar

no botão de dispensa tantas vezes quantas o número de compartimentos a dispensar. Só após todos

os compartimentos serem dispensados (ou a dispensa falhar) é que o alarme deixa de ser sinalizado.

Para o tempo de tolerância optou-se por uma abordagem simples, que evita a manipulação

de datas. O tempo de tolerância de cada alarme, especificado em horas e minutos, é convertido para

minutos no momento de disparo do alarme. A partir daí, a cada minuto, esse valor é decrementado e,

caso se atinja o valor zero sem ter sido efectuada a dispensa, a toma é considerada falhada.

Na implementação descrita, pode existir um conflito no caso do tempo de tolerância do

alarme i ser superior ao momento de disparo do alarme i+1 (partindo do princípio que a dispensa não

é efectuada antes desse disparo). Neste caso, quando é atingido o momento de disparo do alarme

i+1, a toma do alarme i é considerada automaticamente como falhada, mesmo que ainda restasse

tempo de tolerância, tal como ilustrado na figura 26. Apesar de ser improvável que os alarmes sejam

44

configurados de forma a que tal ocorra, é necessário definir o que acontece neste tipo de situações

limite, para evitar erros de operação e comportamentos inesperados do dispensador.

Figura 26 – Exemplo de conflito entre o tempo de tolerância de um alarme e o disparo do seguinte.

Relativamente à funcionalidade de dose antecipada, o intervalo com que se pode adiantar a

dispensa dos comprimidos é também especificado em horas e minutos. Neste caso, no momento em

que o alarme em questão é carregado para a memória RAM, é calculada a estampilha temporal a

partir da qual a dose antecipada pode ser pedida, a partir deste intervalo e da data e hora de disparo

do alarme. À passagem de cada minuto, este valor é comparado com a data e hora do dispensador,

para determinar o momento em que coincidem. A dose antecipada é devidamente assinalada no LCD

do dispensador e pode ser executada carregando no botão de dispensa. Mesmo para alarmes com

vários compartimentos é possível definir a possibilidade de dose antecipada, sendo que o utilizador

deve carregar uma vez no botão de dispensa por cada compartimento.

Existe também um possível conflito no caso do tempo de tolerância do alarme i se sobrepor

ao momento de disponibilização da dose antecipada do alarme i+1. Nesse caso, a dose antecipada

do alarme i+1 só pode ser disponibilizada após esgotar-se o tempo de tolerância do alarme i. Claro

que, se a dispensa do alarme i for efectuada antes do tempo de dose antecipada do alarme i+1, não

existe conflito, independentemente do tempo de tolerância definido. A situação descrita encontra-se

ilustrada na figura 27.

Figura 27 – Exemplo de uma situaçao de conflito nos alarmes, causada pela dose antecipada. No

primeiro caso existe conflito, enquanto que no segundo não.

Por fim, importa referir que, mesmo após entrada no modo de operação, é possível editar,

remover e adicionar alarmes. No entanto, não é possível remover alarmes já disparados para

45

adicionar novos alarmes, uma vez que estas funcionalidades foram criadas apenas para efectuar

alterações pontuais e não para configurar todo o regime de medicação, sendo que esse procedimento

deve ser efectuado no já referido modo de configuração.

A implementação destas funcionalidades requereu um cuidado especial com a coerência das

estruturas de dados. Por exemplo, ao editar um alarme, a mudança da sua estampilha temporal pode

fazer com que tenha de ser reposicionado na lista, de forma a respeitar a ordenação crescente por

data e hora. No entanto, é fundamental garantir que o compartimento de medicação correspondente

se mantenha, mesmo que tal implique que alarmes adjacentes não estejam em posições seguidas, o

que obriga a um algoritmo de dispensa mais complexo.

4.3.2 Modo diário

Para facilitar a configuração de regimes de doses regulares, criou-se o designado modo

diário, que opera de forma semelhante ao método de configuração oferecido pelos produtos

comerciais analisados. Neste modo, o utilizador deve apenas especificar quais as horas do dia a que

as dispensas devem ser efectuadas (e, obviamente, a restante informação de dose antecipada,

tempo de tolerância e mensagem textual), bem como o número de alarmes que pretende configurar

desta forma, que irão ocorrer em dias consecutivos. A partir destes dados, o dispensador gera os

alarmes para os vários dias, os quais ficam com uma data específica de disparo associada.

A figura 28 ilustra um exemplo da configuração de alarmes utilizando o modo diário (para

simplificar, omitem-se as informações relativas à dose antecipada, tempo de tolerância e mensagem

textual). Este exemplo coloca em evidência uma das características do algoritmo, nomeadamente o

facto de que o primeiro alarme a ser configurado é aquele cuja hora definida é superior à hora actual

do dispensador. Se a hora do dispensador for superior à hora de todos os alarmes da lista do modo

diário, então os alarmes efectivos serão programados a partir do dia seguinte.

Figura 28 – Configuração dos alarmes usando o modo diário.

O modo diário foi desenhado para coexistir com a configuração individual de alarmes,

fornecendo mais versatilidade à solução. Todos os alarmes assim gerados podem ser posteriormente

eliminados e editados de forma independente (o que inclui modificar a data), bem como podem ser

adicionados novos alarmes individuais, desde que haja espaço disponível.

46

Uma vez que a activação do modo diário elimina todos os alarmes previamente configurados

em memória, só é possível realizar o procedimento em modo de configuração. Também a adição,

remoção e edição de alarmes de forma manual devem ser realizadas após a activação deste modo.

4.3.3 Medicação PRN

A gestão de medicação PRN foi implementada de forma independente dos alarmes de

dispensa já descritos, havendo apenas a restrição de que o total de compartimentos de medicação e

o mecanismo de dispensa são partilhados.

Uma vez requisitado um medicamento PRN, a possibilidade de pedir outro deste tipo é

bloqueada durante um intervalo de segurança, previamente configurado pelo cuidador. Para evitar ter

de guardar e comparar datas e horas, este valor é convertido em minutos e carregado para um

contador, que é decrementado a cada minuto que passa após a última dispensa. Quando atingido o

valor zero, poderá ser dispensado novo medicamento PRN, caso esteja disponível.

Importa referir que a necessidade de ter um botão dedicado para as dispensas de medicação

PRN está relacionado com o conflito que poderia ocorrer com a dispensa de doses antecipadas.

Assim, caso estivesse disponível uma dose antecipada de uma dada dispensa e, simultaneamente, a

possibilidade de acesso a um medicamento PRN, não haveria maneira de distinguir entre ambos.

4.3.4 Monitorização de tentativas de dispensa não autorizadas

No que diz respeito a tentativas de dispensa fora do horário programado, considerou-se

importante monitorizar quer o acesso aos comprimidos normais quer o acesso aos comprimidos PRN.

Em ambos os casos, a monitorização é feita em intervalos de tempo configuráveis, após um

clique no botão de dispensa fora do horário permitido. A partir desse primeiro clique, futuras

actuações no botão são contabilizadas incrementando um contador e reiniciam o intervalo de

monitorização. Caso decorra um periodo de tempo igual ao intervalo de monitorização sem novas

actuações, o evento é então registado e o contador reinicializado. Alternativamente, é possível

configurar o dispensador para fazer a monitorização em intervalos fixos, ou seja, para não reiniciar o

intervalo de monitorização a cada novo clique, de acordo com o ilustrado na figura 29.

Figura 29 – Funcionamento da monitorização de tentativas de dispensa não autorizadas.

47

Naturalmente, o carregar no referido botão pode ocorrer por acidente, não sendo indicativo de

qualquer estado de confusão por parte do utilizador. Desta forma, é possível definir um limiar mínimo

de número de cliques a partir do qual a informação é registada em memória não volátil.

4.4 Mecanismo de dispensa

Conforme descrito anteriormente, equipou-se o dispensador com um optocouplador que

permite detectar pontos de referência na plataforma rotativa que guarda os medicamentos. Para

aproveitar esta característica, assinalou-se um dos compartimentos com uma extrusão, o que permite

detectar quando o sensor está alinhado com essa marca, que corresponde ao compartimento zero.

Assim, a partir de qualquer posição arbitrária, é possivel alinhar o motor com o compartimento

de origem. Tal é particularmente útil para o caso de a alimentação eléctrica falhar, pois permite

regressar a um ponto conhecido quando a energia voltar a ficar disponível. A decisão de ter apenas

um ponto de referência permite identificar sem ambiguidade o compartimento zero.

Para além de permitir recuperar de falhas, o mecanismo de feedback é utilizado para forçar o

alinhamento do dispensador com o compartimento de origem sempre que se inicia o modo de

operação, o que garante que pelo menos uma vez em cada ciclo de dispensas há uma correcção da

posição, evitando assim a acumulação de eventuais erros ao longo de múltiplos ciclos de operação.

Quando ocorre a dispensa de medicamentos, o compartimento correspondente é alinhado

com a abertura existente no invólucro plástico externo do dispensador, a partir da qual o idoso pode

recolher os medicamentos, de forma semelhante ao MedSmart (ver sub-secção 2.2).

No protótipo desenvolvido, é seguida uma abordagem em que, quando se atinge a hora de

uma dispensa, isso é apenas assinalado com os alarmes visual e sonoro, sem se executar qualquer

mudança de compartimento. Só após o utilizador carregar no botão de dispensa é que a estrutura

circular roda, alinhando o compartimento correspondente com a abertura do dispensador. Desta

forma, se a dispensa falhar, o motor não é movimentado e o dispensador mantém-se num

compartimento vazio. Evita-se assim que os medicamentos possam ser tomados mais tarde,

eventualmente já na proximidade de outra toma.

Para tornar mais versátil o dispensador, o algoritmo criado permite a movimentação de um

qualquer compartimento i para um outro compartimento arbitrário j. Esta flexibilidade é fundamental

para permitir as funcionalidades de re-armar, editar, adicionar e remover alarmes após início do

funcionamento. É também com recurso a essa capacidade que se implementou a dispensa dos

medicamentos PRN em que, havendo permissão para executar a dispensa, a estrutura circular é

movida para o compartimento do próximo medicamento PRN disponível.

Uma vez que o motor de passo pode deslocar-se nas duas direcções de rotação, tira-se

partido desta característica para optimizar a movimentação entre dois compartimentos, seguindo-se

sempre o caminho mais curto. Para garantir a fiabilidade das movimentações, quando o movimento a

efectuar implica a passagem no compartimento zero, é efectuada uma sincronização.

O referido algoritmo foi criado de forma modular. Foi desenvolvida uma função genérica que

permite a movimentação do motor num espaço de 360º dividido num conjunto discreto de arcos

(neste caso, os 29 compartimentos) e com um ponto de origem. Assim, a função que comanda o

48

motor recebe como argumento a posição actual e a posição de destino, independentemente do tipo

de dispensa a realizar. O código é adaptável para um número diferente de compartimentos.

Importa referir que a atribuição de compartimentos aos alarmes e PRN só é realizada na

transição do modo de configuração para o modo de operação. Nessa transição, os compartimentos

são atribuídos em sequência, de acordo com a ordem dos alarmes de dispensa regular (que já se

encontram ordenados de acordo com a data e hora de disparo). A partir do último compartimento, são

alocados os compartimentos para os medicamentos PRN. Desta forma, minimiza-se a distância

percorrida na transição de compartimentos aquando das dispensas regulares

4.5 Avisos textuais

Para além dos já referidos alarmes, é possível definir avisos textuais, nos quais é impressa

uma mensagem na hora definida, sem estar associada nenhuma dispensa. Desta forma, é possível

sinalizar ao utilizador outros eventos, incluindo mensagens não relacionadas com assuntos médicos.

A configuração destes avisos é bastante semelhante aos alarmes, sendo necessário definir

uma data e uma hora de disparo. Existe também um campo com um objectivo semelhante ao da

tolerância nos alarmes, que corresponde ao tempo durante o qual o aviso se manterá activo e o

utilizador pode confirmar a sua visualização, carregando no botão de dispensa.

Por fim, é necessário associar ao aviso a mensagem que lhe corresponde. O espaço de

mensagens para avisos é partilhado com os alarmes de dispensas, permitindo que possam partilhar

mensagens comuns.

Para sinalizar que está disponível um aviso textual é também utilizado o bezouro e o LED,

cujas configurações (intensidade, frequência, tempo on e tempo off) são partilhadas com os alarmes.

É também registada a data e a hora na qual o utilizador confirma a visualização da mensagem, bem

como é registada uma falha no caso de ser ultrapassado o tempo de tolerância definido.

Tendo em conta que os avisos textuais são confirmados pelo utilizador da mesma forma

como numa dispensa (carregando no botão), bem como que utilizam os mesmos recursos para

sinalizar o evento, foi necessário definir um esquema de prioridades entre ambos. Assim, definiu-se

que uma dispensa é mais prioritária que um aviso. Como tal, se um aviso textual disparar quando um

alarme de dispensa ainda está activo, este não será sinalizado até o alarme ser tratado (utilizador

carrega no botão de dispensa ou o tempo de tolerância esgota).

Da mesma forma, se um aviso textual estiver a ser sinalizado e entretanto disparar um alarme

de dispensa, o que será visualizado será o texto associado à dispensa e o pressionar do botão levará

à disponibilização do respectivo compartimento. Uma vez tratado o alarme de dispensa, o aviso

textual pendente voltará a ser mostrado, excepto se o seu tempo de duração se tiver esgotado.

A duração do aviso textual n não se pode sobrepor ao momento de disparo do aviso n+1,

sendo seguida a mesma lógica já descrita para os alarmes. Se ocorrer sobreposição, o aviso n é

considerado falhado e procede-se à sinalização do aviso n+1.

No caso dos avisos textuais não existe nenhum modo de configuração específico. Como tal,

podem ser adicionados, removidos e editados a qualquer momento, independentemente de já terem

49

ou não disparado (relembre-se que, no caso dos alarmes associados a dispensas, a eliminação de

alarmes já disparados obriga à entrada no modo de configuração).

4.6 Comunicação com o dispensador

Conforme descrito anteriormente, um dos grandes factores de inovação do protótipo criado

está relacionado com as suas capacidades de comunicação sem fios, permitindo interagir quer com

dispositivos próximos (usando Bluetooth) quer remotos (usando a Internet ou a rede GSM). Destas

capacidades, destaca-se a possibilidade de comunicação com Tablets e Smartphones, que

possibilitam o desenvolvimento de interfaces mais simples e intuitivas, permitindo automatizar muitos

dos processos de configuração e recolha de informação.

Uma vez que a interacção com os módulos de comunicação é feita pelas UARTs do

microcontrolador, criou-se um protocolo com um formato dos dados simples e compacto, permitindo a

troca de informação de forma eficiente. Este protocolo é usado para comunicar com os módulos

Bluetooth e Wi-Fi, visto que o módulo de GSM é apenas utilizado para envio de mensagens SMS com

notificações para o cuidador, que usam um formato de texto legível. Usando este protocolo é possível

enviar comandos para configurar o dispensador e aceder aos eventos registados.

Por fim, importa referir que o módulo Arduino usado possui integrado um conversor de

interface série para USB, o qual pode ser utilizado para estabelecer comunicação série com um

computador. Este modo encontra-se funcional e foi utilizado durante a fase de testes ao referido

protocolo. No entanto, no protótipo final, a porta USB do módulo Arduino foi utilizada para realizar a

sua alimentação, que usa uma tensão de 5V [73]. A outra alternativa de alimentação do módulo usa

uma ficha própria que obriga ao fornecimento de uma tensão entre 7 e 12 V [73] o que colocaria

problemas quando o circuito operasse alimentado pela bateria (tem uma tensão de apenas 6 V). Por

este motivo, no protótipo final, a ligação por USB não está disponível.

4.6.1 Comunicação Bluetooth

O Bluetooth é utilizado para estabelecer comunicação sem fios com dispositivos existentes na

proximidade do dispensador. Como tal, faz sentido o seu uso apenas para envio de comandos, não

se tendo implementado qualquer esquema de envio notificações. Naturalmente, uma vez na

proximidade do dispensador, é fácil obter informações relativas aos eventos registados, procedimento

que pode ser automatizado pela aplicação que executa no dispositivo.

O módulo Bluetooth usado emula uma comunicação série, pelo que o microcontrolador limita-

se a enviar e a receber os dados em série de forma transparente, como se estivesse a comunicar

directamente com o dispositivo destino.

4.6.2 Comunicação Wi-Fi

Outra das tecnologias de comunicação suportadas é o Wi-Fi, através do módulo ESP-01, que

permite a conexão do dispensador à Internet. No contexto do protótipo, o ESP-01 é utilizado como

ponte de ligação entre o agente remoto e o módulo Arduino. Antes de poder iniciar qualquer

50

comunicação, o módulo de Wi-Fi tem de se registar numa rede local, momento a partir do qual obtém

um endereço IP e passa a poder estabelecer conexões através de sockets. Estabelecida uma

ligação, o módulo Arduino limita-se a enviar e receber dados pela porta série, de forma transparente,

como se estivesse a comunicar directamente com o dispositivo destino.

Apesar do módulo ser vendido com um firmware que permite interagir com o dispositivo

através do envio de comandos AT para a sua porta série, os testes realizados mostraram que era

pouco fiável, o que levou ao desenvolvimento de uma aplicação personalizada.

Para simplificar a criação de aplicações para o ESP8266, existe um projecto para suportar o

dispositivo no IDE do Arduino [85], permitindo o desenvolvimento de aplicações num ambiente

bastante simples, o qual se utilizou para facilitar o processo.

A aplicação criada no contexto do protótipo permite então que um cliente remoto se conecte

ao ESP8266 e envie comandos para o dispensador. Da mesma forma, permite ao dispensador enviar

notificações de eventos (como por exemplo, tomas falhadas) para um servidor remoto. Assim, o

ESP8266 opera simultaneamente como servidor e cliente.

Uma vez que não existe suporte a multi-threading, quer para o Arduino quer para o módulo de

Wi-Fi, os pedidos são tratados de forma sequencial, o que é aceitável dado que a comunicação é,

conforme descrito adiante, baseada num esquema de “reply-request”, e a quantidade de dados

trocados é relativamente reduzida. Desta forma, é suposto que o cliente que esteja a tentar

comunicar com o dispensador apenas envie um novo comando quando receber a resposta ao

anterior ou, naturalmente, após um tempo de timeout. Para além disso, não é de esperar que existam

múltiplos cuidadores a tentar comunicar simultaneamente com o dispensador e, caso aconteça, basta

às aplicações remotas implementarem um esquema de retransmissão em caso de falha.

Optou-se por implementar a comunicação directamente através de sockets e com um

protocolo compacto para minimizar os tempos de latência. No entanto, a aplicação é facilmente

escalável para comunicar através de HTTP.

Importa referir que, em consequência do ESP8266 ter sido recentemente introduzido no

mercado, a quantidade de informação e ferramentas de desenvolvimento é ainda bastante escassa.

Apesar do uso do referido IDE simplificar bastante o desenvolvimento de aplicações, encontra-se

ainda em fase de maturação e apresenta várias limitações.

4.6.3 Comunicação GSM

O suporte à comunicação por GSM usa um módulo baseado no SIM900. O dispositivo é

comercializado com um firmware que permite o seu controlo através de comandos AT [25], que

podem ser enviados através da sua porta série. Estes permitem, entre outras funcionalidades, o envio

de mensagens SMS e a realização de chamadas [27]. Os testes realizados inicialmente permitiram

demonstrar que o funcionamento deste firmware é bastante fiável.

A principal funcionalidade do módulo é permitir o envio de avisos ao cuidador acerca de

vários eventos. Para não obrigar ao uso de um Smartphone com uma aplicação dedicada à recepção

dos dados, os avisos são enviados como mensagem textual, num formato legível para uma pessoa.

51

A comunicação com o módulo é feita através de uma das UARTs do microcontrolador, com a

particularidade de que os dados necessitam respeitar a estrutura dos comandos AT suportada pelo

módulo. A figura 30 esquematiza o processo de envio de uma notificação.

Figura 30 – Processo de envio de uma notificação por GSM.

Apesar de o SIM900 suportar a recepção de SMS, considerou-se que esse meio não seria

cómodo para configurar o dispensador. Para além disso, uma vez que a formatação da mensagem

seria feita pelo cuidador, haveria grande probabilidade deste cometer erros na sua estruturação. Não

obstante, testou-se com sucesso a recepção de SMS no microcontrolador.

4.6.4 Envio de comandos

Conforme referido, é possível proceder ao envio de comandos para o dispensador através de

Bluetooth ou Wi-Fi. Dado que estes módulos dialogam com o microcontrolador através de

comunicação série, foi necessário definir um esquema de comunicação adequado com os mesmos.

Para ler e escrever dados das UARTs, optou-se pelo uso da classe Serial, definida na

linguagem de programação usada na plataforma Arduino para simplificar a comunicação. Esta classe

esconde os detalhes de implementação de baixo nível inerentes ao microcotrolador de cada placa,

disponibilizando uma interface uniforme e portável entre diferentes dispositivos da família Arduino.

Internamente, esta classe utiliza as interrupções geradas no microcontrolador quando um

byte é recebido, havendo uma interrupção distinta para cada UART [74]. Desta forma, evita-se um

esquema de polling, tornando a comunicação mais eficiente. Os bytes recebidos são guardados num

buffer circular (distinto para cada UART), com tamanho configurável.

No que diz respeito ao envio de dados, este é igualmente baseado nas interrupções

suportadas pelo microcontrolador [74], evitando assim bloquear a execução durante o tempo de

envio. Tal como no caso da recepção, existe um buffer de envio de dados que guarda os bytes

pendentes. Em ambos os casos, os referidos buffers são mantidos em memória RAM, o que se

traduz num consumo significativo deste recurso.

52

Esta implementação trata de forma indistinta os dados recebidos, que são imediatamente

colocados nos buffers internos, para tornar as interrupções o mais curtas possível. Mas, para a

aplicação desenvolvida, foi necessário estruturar os dados e atribuir-lhe um significado, tendo sido

definido um protocolo de comunicação que é simples e, ao mesmo tempo, oferece um grau adequado

de robustez e fiabilidade. O processamento da informação recebida encontra-se ilustrado na figura

31, sendo executado no ciclo principal, quando o microcontrolador se encontrar disponível. Apesar de

mais dispendioso do ponto de vista computacional, este método a dois passos permite reduzir a

probabilidade de erros e de perda de dados.

Figura 31 – Procedimento de cópia e estruturação dos dados recebidos.

Assim, definiu-se que a comunicação com o dispensador é feita através de comandos, de

acordo com a estrutura ilustrada na figura 32. Conforme indicado, todos os comandos devem ser

delimitados pelos bytes 255 e 254 no início e fim, respectivamente. Como tal, os dados recebidos só

são copiados dos buffers de baixo nível para os buffers da aplicação (que guardam os bytes dos

comandos recebidos) após a recepção do byte 255, bem como só são interpretados após a recepção

do byte 254. Todos os bytes recebidos fora destes delimitadores são ignorados.

Figura 32 – Estrutura das mensagens de comunicação com o dispensador.

Para distinguir os comandos, o segundo byte indica qual a operação que o dispensador deve

executar (código de operação). Os bytes seguintes, cujo número depende do comando, contêm os

dados necessários à sua execução. Existem comandos cuja dimensão dos dados é fixa, enquanto

que outros têm conteúdo de tamanho variável. Neste último caso, o byte imediatamente a seguir ao

código de operação deve indicar o número de bytes de dados que irão ser recebidos, permitindo

assim verificar se foi ou não perdida informação.

Para aumentar a robustez do protocolo e evitar o uso de dados corrompidos por erros de

transmissão, inclui-se um byte de checksum, para confirmação de integridade da mensagem.

Para permitir o envio dos bytes 254 e 255 como dados (e não como delimitadores), é

necessário incluir um mecanismo de escape. Assim, sempre que é enviado o byte 253, o byte

53

imediatamente a seguir é interpretado como pertencente aos dados, incluindo o próprio valor de

escape. Os bytes de escape são também contabilizados para o checksum.

O funcionamento do algoritmo que gere a comunicação encontra-se esquematizado no anexo

A.1. Como se pode verificar, não é necessário qualquer mecanismo de timeout, uma vez que, caso a

recepção de uma mensagem não seja terminada, o envio de um novo comando reinicia o

procedimento. Mesmo os comandos com dados de dimensão variável têm um limite máximo de

tamanho definido, o qual é utilizado para garantir que não existe um overflow dos buffers.

Para que a entidade que comunica com o dispensador possa obter uma confirmação da

correcta execução dos comandos enviados para o dispensador, este deve enviar uma resposta

adequada. Para tal, são usadas mensagens com uma estrutura semelhante à descrita anteriormente,

conforme indicado na figura 33. Com este mecanismo, é possível à aplicação externa que interage

com o dispensador implementar, por exemplo, um esquema de retransmissão em caso de falha.

Figura 33 – Estrutura das mensagens de resposta aos comandos.

Os vários comandos existentes foram criados com vista a permitir configurar totalmente o

funcionamento do dispensador a partir de uma aplicação externa, bem como para facilitar o teste do

sistema. Notar que todas as acções que podem ser realizadas directamente no dispensador, usando

o teclado e LCD, podem também ser executadas remotamente usando o protocolo descrito. No anexo

A.2. encontra-se uma lista detalhada de todos os comandos disponíveis.

Importa salientar que o protocolo utilizado para a comunicação série é genérico e pode ser

utilizado em contextos diferentes deste projecto. Foi implementado de forma modular, sendo que o

algoritmo de recepção da mensagem, processamento de caracteres de escape e verificação do

checksum opera de forma independente da estrutura lógica atribuída aos dados. Também o envio da

resposta é implementado por um algoritmo genérico que apenas trata da colocação dos bytes

delimitadores da mensagem, escape de caracteres e checksum, sendo a estruturação lógica do

conteúdo da resposta da responsabilidade das funções de tratamento dos comandos.

Da mesma forma, já no caso específico da aplicação em análise, a adição de novos

comandos ao protocolo é bastante simples e modular, conforme descrito na figura 34. De acordo com

o ilustrado, basta criar uma função de tratamento distinta para cada novo comando, sendo os dados

agulhados para a função correspondente de acordo com o código de operação da mensagem.

54

Figura 34 – Esquema de tratamento dos comandos recebidos.

4.6.5 Notificações remotas

Conforme referido, tirou-se partido das capacidades de comunicação remota com o

dispensador para implementar um sistema de notificações, que possibilita ao cuidador ser avisado da

ocorrência de certos eventos relevantes da sua operação, com particular ênfase para o

acompanhamento do estado das tomas.

As notificações correspondem a mensagens enviadas pelo dispensador aquando da

ocorrência de um evento, as quais incluem informação acerca do mesmo. Estas operam de forma

completamente independente do protocolo de comunicação de envio de comandos acima descrito.

Cabe ao cuidador configurar que tipo de notificações se encontram activas (Wi-Fi e/ou GSM).

O formato das notificações Wi-Fi segue uma estrutura de dados orienada ao byte, semelhante

à utilizada nos comandos, estando descrita na figura 35. Neste caso, compete à aplicação de destino

o processamento do conteúdo da mensagem e posterior apresentação ao utilizador de forma

adequada. Essa aplicação deverá responder à notificação, confirmando assim a sua recepção.

Figura 35 – Formato de uma notificação textual, cuja dimensão depende do tipo de notificação.

No caso do GSM, as notificações são enviadas ao cuidador no formato de SMS, razão pela

qual são estruturadas em texto (caracteres ASCII) antes do envio. Não é esperada nenhuma resposta

às notificações enviadas, uma vez que tal obrigaria ao cuidador a enviar uma SMS de retorno. No

entanto, o módulo de GSM retorna um código de confirmação de sucesso no envio da SMS [86], o

qual se utiliza para identificar eventuais falhas na comunicação.

Em ambos os casos, a obtenção da resposta ou confirmação demora um tempo não

desprezável, razão pela qual se criou um esquema não bloqueante de envio de mensagens. Assim,

uma vez transferidos os dados para o módulo que trata do seu envio, a função retorna

imediatamente, assinalando numa variável global que existe uma confirmação pendente. Uma vez

recebida a confirmação do envio, o dispensador fica disponível para tratar uma nova notificação.

Caso o tempo pré-definido para a recepção da confirmação esgote, a mensagem é re-enviada.

Durante o período de espera pela confirmação da notificação, o programa continua a sua execução.

55

Na abordagem descrita, poderia surgir uma nova notificação com a anterior ainda pendente.

Assim, para cada uma das tecnologias, criou-se um buffer onde é colocada a informação de cada

nova notificação. Desta forma, caso haja uma notificação pendente, as informações de novos eventos

são guardadas até haver disponibilidade para envio, evitando a perda dos dados.

O procedimento de salvaguarda das informações dos eventos é implementado com recurso a

um buffer circular, com dimensão configurável (na aplicação desenvolvida, tem uma dimensão de dez

notificações para cada tecnologia). A decisão de utilizar um buffer circular foi tomada considerando

que é preferível perder os dados de eventos mais antigos do que mais recentes.

Importa referir que o envio de notificações é uma funcionalidade opcional, que pode ser

desactivada. No anexo A.3 encontra-se uma listagem das notificações existentes.

4.6.6 API

Para facilitar o desenvolvimento de aplicações que interajam com o dispensador, criaram-se

três APIs distintas. Destas, duas foram criadas em Java, nomeadamente para comunicação Bluetooth

para Android e comunicação série e Bluetooth para PC. Criou-se também uma API em Python para

comunicação através da Internet usando o módulo Wi-Fi.

Com base na API para Android, criou-se uma aplicação de demonstração do envio de alguns

comandos, a partir de um Smartphone. Na figura 36 encontram-se algumas imagens ilustrativas.

Figura 36 – Exemplo de alguns menus da aplicação desenvolvida para Android.

Estas APIs utilizam o paradigma da programação orientada por objectos para oferecer ao

programador de aplicações uma classe com métodos que permitem dialogar com o dispensador,

abstraindo os detalhes da estrutura das mensagens (bytes delimitadores, verificação de checksums,

colocação da dimensão dos argumentos) e das tecnologias de comunicação utilizadas. Assim, são

fornecidos métodos simples de alto nível, como “lê data” ou “adiciona alarme”.

Nesta fase, tendo em conta que apenas se pretende demonstrar o conceito e testar as

funcionalidades associadas à comunicação, os métodos fornecidos correspondem às acções simples

que os comandos do protocolo de comunicação contemplam. Na generalidade dos casos, estes

56

métodos recebem vectores de bytes dos dados de configuração e retornam vectores de bytes com os

dados das respostas. No entanto, é simples estender estas classes e criar camadas de maior

abstração no topo das funcionalidades oferecidas.

4.6.7 Realização de chamadas

Para além das funcionalidades referidas, dotou-se o dispensador da capacidade de realizar e

receber chamadas de voz, disponibilizando ao cuidador uma forma de entrar em contacto directo com

a pessoa cuidada, o que pode ser particularmente importante caso se verifique uma falha numa toma.

Assim, é possível realizar uma chamada directamente para o número do cartão SIM

associado ao dispensador, que pode ser configurado para realizar um atendimento automático ou

carregando num botão. Apesar de o modo de atendimento automático poder levantar problemas de

privacidade, podem existir situações nas quais estado físico e mental da pessoa cuidada o justifique.

Para iniciar uma chamada, basta ao utilizador carregar no mesmo botão, desde que não

esteja nesse momento a ser contactado. De forma a manter a simplicidade, apenas é possível definir

um número de destino para a chamada, uma vez que múltiplos números implicariam a necessidade

de o utilizador ter de interagir com o teclado ou outro mecanismo para realizar a mudança de número.

Para terminar uma chamada, basta ao utilizador carregar no referido botão. Caso seja o

cuidador a terminá-la, esta é automaticamente encerrada no dispensador.

Apesar do principal objectivo do equipamento ser a dispensa de medicação, considerou-se

que a possibilidade de realizar e receber chamadas é um factor distintivo dos restantes produtos.

4.7 Interacção directa com o dispensador

Conforme referido, é possível interagir directamente com o dispensador a partir do seu

teclado e display LCD, possibilitando a execução da sua configuração e consulta das ocorrências

registadas.

Apesar de este método não ser algo inovador face a outras soluções, a sua implementação

requereu bastante tempo de desenvolvimento, dados os inúmeros pormenores envolvidos. Tal deve-

se a apenas existirem funções de baixo nível para interagir com o teclado e com o LCD. Para o

teclado, apenas é possível obter a tecla pressionada num dado momento. Para o LCD, existem as

funcionalidades de eliminar o conteúdo existente no ecrã, escrever conteúdo textual, posicionar o

cursor e activar ou desactivar a presença do cursor, que é constituído por uma barra a piscar.

Como tal, todos os elementos da interface criada e a sincronização entre os eventos do teclado e

correspondente efeito no display foram implementados de raiz a partir destas funções elementares.

4.7.1 Organização dos menus

A interface de interacção directa com o dispensador encontra-se organizada em diversos

menus, para facilitar a navegação e acesso aos dados. De forma genérica, estes encontram-se

divididos em três níveis de profundidade, conforme indicado na figura 37. O menu principal permite ao

cuidador navegar até ao menu das funcionalidades a que deseja aceder. Dependendo da

57

complexidade das funcionalidades oferecidas, cada menu pode encontrar-se ou não dividido em sub-

menus.

Figura 37 – Organização estrutural dos menus do dispensador.

Os menus podem conter informação para o cuidador e campos de entrada de dados, para

efectuar as várias configurações necessárias. Importa referir que se considerou conveniente limitar

algumas das configurações que são possíveis usando esta interface. Tal deve-se ao facto de

algumas serem demasiado específicas, sendo mais adequadas para o programador de aplicações

que interagem com o dispensador. Naturalmente, as configurações não contempladas nesta interface

podem ser acedidas através do protocolo de comunicação.

Para complementar os menus, existem ainda as designadas janelas de avisos, que permitem

informar o cuidador de erros, avisos e pedidos de confirmação da execução de procedimentos. Estas

são utilizadas para, por exemplo, pedir ao utilizador que confirme se pretende remover um alarme,

informá-lo que a configuração de alarmes a partir do modo diário foi bem sucedida.

Para facilitar a navegação no menu principal e nos menus que apresentam sub-menus, é

possível introduzir o número correspondente à entrada de destino a que se pretende aceder. Por

exemplo, estando no menu principal e pretendendo-se aceder ao menu 4, basta clicar na tecla “4” do

teclado para navegar automaticamente para essa entrada. Naturalmente, isto é igualmente possível

para percorrer as várias entradas de informação nos menus de acesso a dados registados.

4.7.2 Implementação dos menus

Dada a quantidade considerável de menus existentes no dispensador e a necessidade

constante de realizar pequenas alterações durante o processo de desenvolvimento, procurou-se uma

abordagem escalável e relativamente genérica para a implementação desta interface.

Um dos problemas encontrados prende-se com os campos de entrada de dados e a

movimentação do cursor ao longo dos mesmos. Conforme indicado na figura 38, os vários campos

não são adjacentes. Como tal, o movimento do cursor ao longo dos mesmos não é contínuo, sendo

necessário saber qual a posição, de entre as oitenta possíveis do LCD, que deve ser usada.

Para resolver este problema, utilizou-se uma estrutura de dados global que, para cada menu,

contém a informação correspondente às linhas e colunas nas quais o cursor pode ser movimentado.

Para cada uma das linhas desta estrutura, o conteúdo presente em cada posição indica quais as

posições navegáveis para o cursor na linha correspondente do LCD. Como se usa uma estrutura

única, a dimensão máxima de cada linha deve ser tal que permita guardar a informação relativa ao

58

menu com maior número de posições navegáveis. A figura 38 exemplifica o conteúdo correspondente

à referida estrutura para um menu com vários campos de entrada.

Dada a quantidade de menus existentes, não era comportável guardar em memória RAM

uma estrutura destas para cada menu, razão pela qual é executado um procedimento de

configuração da única estrutura existente antes de se transitar para um dado menu.

Figura 38 – Exemplo da representação interna das posições navegáveis de um menu.

Baseado na estrutura descrita, quando é pressionada a tecla de movimentação do cursor

para a direita, este é movido para a próxima posição. Caso se chegue ao fim das posições existentes

nessa linha, o cursor é movimentado para a primeira posição da próxima linha com um número de

posições de entradas não nulas. O procedimento de procura é circular, isto é, se no exemplo anterior

o cursor se encontrar na linha 4 e posição 9 e se pressionar a tecla de movimentação para a direita, o

cursor irá ser colocado na posição 2 da linha 2. Quando se pressiona a tecla de movimentação do

cursor para a esquerda, ocorre um procedimento similar mas em sentido oposto.

Para as teclas que movimentam o cursor para cima e para baixo, este é colocado na primeira

posição da próxima linha acima ou abaixo, respectivamente, com um número de posições não nulas.

Uma vez que os dados introduzidos nos campos de entrada só são utilizados quando o

cuidador carrega no botão de aceitação, estes têm de ser guardados após serem introduzidos. Mais

uma vez, optou-se por uma estrutura de dados semelhante à descrita anteriormente, tal como

ilustrado na figura 39. Esta abordagem é genérica e não impõe nenhuma estrutura ou significado aos

dados, que são apenas tratados como dígitos independentes. Ao executar o procedimento

correspondente, a função deve aceder à referida estrutura e interpretar os dados de acordo com o

necessário.

Figura 39 – Exemplo da estrutura que guarda os dígitos introduzidos nos campos de entrada.

Outro problema resultante da leitura dos campos de entrada prende-se com a gama de

valores que estes podem aceitar. Por exemplo, um campo no qual deverão ser introduzidas horas

não poderá ter valores superiores a 24. Assim, quando o utilizador introduz um valor numérico, existe

59

uma verificação que só permite a aceitação caso esse valor esteja de acordo com o formato

adequado. Caso contrário, o cursor mantém-se na mesma posição e o valor não é introduzido.

4.8 Registo persistente de informação

Todos os dados necessários à operação do dispensador e os registos de eventos pertinentes

são guardados na memória EEPROM (não volátil) do microcontrolador.

No que diz respeito aos alarmes, cada um ocupa um total de 17 bytes em memória, tal como

ilustrado na figura 40. Como se permite ao cuidador definir não só a hora de disparo (hora e minutos)

como também a data (ano, mês e dia), são necessários 5 bytes para guardar esta informação.

Para definir a tolerância durante a qual o utilizador pode recolher os medicamentos após

disparo do alarme, são utilizados 2 bytes (hora e minutos). Da mesma forma, são reservados 2 bytes

para a definição do tempo de dose antecipada. Para associar a cada alarme uma mensagem textual

utiliza-se um byte (que funciona como um índice na lista de mensagens) e, para registo da data e

hora a que ocorreu a toma efectiva, são usados 5 bytes.

Uma vez que se permite a edição de alarmes após o inicio do funcionamento do dispensador,

é necessário manter a informação relativa ao compartimento associado a cada alarme, uma vez que

uma alteração da sua ordem de disparo pode levar a uma alteração da sua ordem na lista de

alarmes. Como tal, é reservado um byte por cada alarme para manter esta informação.

Por fim, para garantir que a informação relativa aos alarmes não foi corrompida, o último byte

da estrutura associada a cada alarme guarda o checksum do alarme.

Figura 40 – Estrutura dos alarmes.

Importa referir que o limite de 28 alarmes de dispensa não está relacionado com limitações na

memória mas sim na estrutura física que guarda os comprimidos, podendo este valor ser facilmente

aumentado caso o dispositivo mecânico de dispensa o permita.

Para os avisos textuais são necessários apenas 14 bytes, conforme indicado na figura 41. A

estrutura de dados é bastante semelhante à utilizada para os alarmes de dispensas, uma vez que o

mecanismo de disparo e registo de informação é igual, com a particularidade de, neste caso, não

estar associado nenhum compartimento de medicação nem dose antecipada

60

Contrariamente aos alarmes, não existe qualquer limitação mecânica que defina o número

máximo de avisos textuais possíveis, tendo-se imposto um número máximo de 30 apenas para evitar

uma ocupação excessiva da memória. No entanto, este valor pode ser facilmente alterado.

Figura 41 – Estrutura dos avisos textuais.

Anteriormente, foi referido que é possível configurar os alarmes usando o modo diário. Neste

caso, não é necessário especificar a data, sendo apenas indicada a hora e os minutos do disparo. No

entanto, para manter o mesmo esquema de disparo e registo de informação, os dados referentes ao

modo diário são usados para configurar as estruturas de dados dos alarmes descritas anteriormente,

pelo que necessitam conter toda a demais informação. Assim, cada elemento do modo diário ocupa 8

bytes. Manter estes dados permite não obrigar o cuidador a reintroduzi-los neste modo cada vez que

necessitar de reconfigurar o dispositivo, uma vez que é expectável que os horários das tomas se

mantenham constantes durante longos períodos.

Para a medicação PRN, basta a estrutura indicada na figura 42. Como estes medicamentos

são pedidos conforme a necessidade, apenas é necessário saber qual o compartimento

correspondente e registar o momento de dispensa.

Figura 42 – Estrutura das entradas associadas aos medicamentos PRN.

Para as mensagens textuais definiu-se um máximo de 60 caracteres. A estrutura de dados

usada possui um byte que indica a dimensão do texto e um byte adicional para guardar um

checksum, conforme ilustrado na figura 43.

Figura 43 – Estrutura de uma mensagem textual.

Para os registos dos cliques no botão de dispensa e PRN fora do horário permitido, são

apenas necessários 6 bytes, conforme indicado na figura 44. É apenas usado um byte para guardar a

61

informação relativa ao número de vezes que o botão foi premido, o que implica que a contagem pode

atingir, no máximo, 255. Este valor não é limitativo na medida em que o interesse desta

funcionalidade visa identificar possíveis dificuldades ou estados de confusão. Assim, 255 já

representa um valor elevadíssimo, que claramente evidencia algum problema com o utilizador.

Figura 44 – Estrutura de um evento de tentativa de acesso a medicação fora do horário permitido.

O registo de erros de operação do dispensador segue uma estrutura semelhante ao registo

de cliques nos botões de dispensa e PRN fora do horário estipulado, com a particularidade de o byte

que regista o número de cliques ser substituido por um byte que guarda o código de erro.

O restanto espaço disponível é utilizado para guardar variáveis de configuração, como o

volume do bezouro, a intensidade do LED ou o número de alarmes configurados.

No anexo A.4. encontra-se um resumo das dimensões totais ocupadas pelos diferentes

conjuntos de dados em memória. De notar que a memória interna estará acessível, quer para leitura

quer para escrita, usando o protocolo de comunicação. No entanto, não existe qualquer mecanismo

de protecção, pelo que a sua alteração pode causar o funcionamento incorrecto do dispensador.

Assim, esta funcionalidade deve ser usada apenas para teste (por exemplo, para forçar erros no

checksum de um bloco de dados e visualizar o comportamento do dispensador).

Para dar uma maior versatilidade, fornece-se um espaço de memória adicional, para ser

utilizado por aplicações externas. Como tal, os 4 KB da memória EEPROM presentes no módulo do

RTC encontram-se disponíveis para o programador de aplicações utilizar como achar conveniente.

Este espaço pode ser acedido para leitura e escrita a partir do protocolo de comunicação.

Uma vez que os dados de configuração se encontram guardados em memória, é possível

recuperar o estado de operação após uma falha na alimentação eléctrica. Para garantir esta

possibilidade, quando uma configuração é alterada, os dados referentes são guardados na EEPROM.

Assim, quando o programa do microcontrolador começa a sua execução, existe uma primeira fase na

qual estas variáveis de configuração são carregadas, antes de se iniciar o ciclo principal.

No caso dos alarmes e avisos textuais, uma vez que dependem do valor da data e hora, é

necessário verificar em que ponto o dispensador se encontrava antes da falha energética e verificar

quantos alarmes ainda se encontram válidos, com a nova hora (carregada a partir do RTC, que

dispõe de uma bateria de reserva e lhe permite manter a informação actualizada). Todos os alarmes

e avisos que se encontravam por disparar e que são agora anteriores à nova hora são invalidados.

Como resultado da salvaguarda de dados na EEPROM, existe a possibilidade de ocorrer o

corrompimento dos dados, o que poderá afectar o correcto funcionamento do dispensador. Como tal,

utiliza-se um mecanismo de checksum associado a cada entrada de dados, com um código de

verificação com dimensão de um byte. O checksum é calculado quando se gravam os dados e

actualizado sempre que estes são alterados.

62

No registo de informação referente a tentativas de dispensa não autorizadas e erros de

operação, a corrupção dos dados não causa problemas de funcionamento ao dispensador, pelo que

apenas se apresenta uma mensagem de que estão corrompidos caso se lhes tente aceder.

As situações mais críticas correspondem a erros nos dados dos alarmes de dispensa e dos

medicamentos PRN, que podem comprometer o momento de disparo e a informação do

compartimento de medicamentos correspondente.

No caso dos alarmes, caso se detecte um erro, essa dispensa é ignorada e passa-se para a

dispensa seguinte. Caso o erro corresponda a um de vários compartimentos de uma dispensa, então

esse compartimento é ignorado. Naturalmente, isto requer que o algoritmo que identifica várias

dispensas seja mais robusto e complexo, visto que existem agora mais situações a considerar. Cita-

se como exemplo uma situação na qual existem três compartimentos para o mesmo alarme e o

segundo se encontra corrompido. Neste caso, a condição de paragem do algoritmo deixa de ser

apenas que o alarme seguinte seja diferente do actual, mas também que este não esteja corrompido.

Para os medicamentos PRN, em caso de erro, os dados são ignorados e passa-se a outro

compartimento que esteja disponível. Isso é possível pois assume-se que apenas existe um tipo de

medicamento PRN, sendo indiferente qual o compartimento dispensado.

Para os avisos textuais, em caso de corrupção, os dados são ignorados e carrega-se o aviso

seguinte. Apesar de não haver uma dispensa associada, a mensagem correspondente ao aviso

textual corrompido pode igualmente ser importante para a saúde do utilizador.

Para estes três últimos casos descritos, é gerada uma notificação remota para o cuidador

quando o erro é detectado, para que este possa corrigir a situação. Para que o alerta seja enviado

atempadamente, os erros são verificados no processo de carregamento do alarme/aviso textual para

memória RAM e não no momento de disparo (ver descrição na secção 4.3.1). Como os

medicamentos PRN são dispensados a pedido do utilizador e não de acordo com um horário

programado, a identificação do erro é feita no momento da dispensa, pelo que, na dispensa do

penúltimo PRN disponível, é feita uma verificação antecipada do checksum do último compartimento,

para evitar deixar o utilizador sem comprimidos em caso de erro.

No caso da corrupção dos dados ocorrer na mensagem textual associada ao evento, é

igualmente gerada uma notificação para o cuidador.

Refere-se ainda que, após configurar o dispensador e ao passá-lo para o modo de operação,

é verificada a informação de todos os alarmes de dispensa e medicamentos PRN, sendo que se for

detectado algum erro é impressa uma mensagem no display e o procedimento é abortado, sendo

apenas possível continuar após rectificada a situação.

4.9 Segurança

A segurança da informação e a protecção contra o acesso indevido de pessoas não

autorizadas são questões importantes a ter em consideração. No entanto, a análise e implementação

de mecanismos de segurança sofisticados transcende o contexto do projecto, pelo que se optou por

dotar o dispensador de apenas alguns mecanismos simples, para demonstrar que estes aspectos

foram considerados e abrir caminho a soluções futuras, mais robustas.

63

A possibilidade interagir directamente com o dispensador a partir do seu teclado e display

levanta algumas preocupações de segurança. Assim, nada impede que um indivíduo não autorizado

tenha acesso ao dispensador e altere as configurações ou aceda à informação registada. Existe

ainda a possibilidade de o próprio utilizador poder causar modificações acidentais nas configurações.

Apesa de existirem soluções simples, como colocar o teclado no interior do dispensador e

torná-lo acessível apenas com uma chave, optou-se por uma solução baseada em software, que

funciona independentemente da estrutura mecânica final.

Desta forma, disponibiliza-se a possibilidade de definir um PIN para o teclado, para impedir o

acesso indevido. Assim, antes de aceder aos menus de configuração do dispensador, é necessário

introduzir o referido PIN. No entanto, esta é uma funcionalidade opcional e pode ser desactivada.

Para dar alguma versatilidade a esta solução, pode-se configurar a dimensão do PIN para um

valor entre um e dez dígitos, bem como o número de falhas antes do bloqueio. Uma vez bloqueado o

teclado, só se poderão realizar novas tentativas de introdução do código após um intervalo de tempo,

também configurável.

O envio de comandos por Bluetooth também coloca o problema de uso não autorizado.

Assim, definiu-se um comando no protocolo de comunicação que permite o envio de um código de

segurança de dimensão configurável até 32 bytes, o qual deve ser enviado antes de qualquer outro

comando. Uma vez enviado o código correcto, a entidade remota passa então a poder enviar todos

os restantes comandos. Naturalmente, o uso deste mecanismo é opcional.

Neste caso, a possibilidade de tentar vários códigos até acertar (ataque brute force) é mais

crítica, uma vez que o atacante pode agora automatizar o procedimento no dispositivo remoto. Como

tal, existe um limiar de tentativas máximo de introdução do código que, uma vez atingido, bloqueia o

canal de comunicação durante um período de tempo. Ambos os parâmetros são configuráveis.

Apesar de se ter definido um comando no protocolo que permite explicitamente encerrar o

diálogo com o dispensador, existe como medida auxiliar um tempo pré-definido ao fim do qual a

comunicação é encerrada, obrigando a novo envio do código. Assim, caso esse comando não seja

recebido, o dispensador acaba por reverter automaticamente para um estado seguro.

Importa referir que este é um método de autenticação, não se tendo implementado qualquer

tipo de cifra dos dados. Desta forma, nada impede um eventual atacante de capturar e analisar a

informação, dado que esta é transmitida sem fios. No entanto, dado o alcance máximo de 10 metros

para o módulo Bluetooth utilizado, é razoável assumir que o atacante teria de estar próximo do

dispensador, pelo que, em condições normais, seria facilmente detectado pelo cuidador.

Esta solução não é utilizada para a comunicação por Wi-Fi pelo facto de que não existe a

possibilidade de controlar o percurso efectuado pelos dados entre os dois extremos da comunicação,

os quais podem ser facilmente capturados e analisados, uma vez que não são cifrados.

No que diz respeito ao GSM, optou-se por ter um especial cuidado no que diz respeito à

possibilidade de receber chamadas telefónicas. Assim, implementou-se a possibilidade de limitar a

recepção de chamadas a um conjunto máximo de três números, evitando a recepção de telefonemas

de pessoas não autorizadas. Naturalmente, esta é uma configuração opcional.

64

4.10 Gestão de energia

Conforme descrito anteriormente, a alimentação dos módulos de comunicação e do LCD

pode ser ligada e desligada sob controlo do microcontrolador. Para o LCD, é ainda possível desligar a

sua retroiluminação, mantendo o seu funcionamento. Neste caso, a comutação é realizada através do

envio de um comando para o controlador do LCD, não sendo necessário nenhum MOSFET.

Importa referir que, no caso de se desligar o LCD, continua a ser possível aceder aos menus

de configuração, por interacção directa com o dispensador.

Todas estas configurações podem ser realizadas directamente nos menus do dispensador ou

através de outro dispositivo, utilizando o protocolo de comunicação.

Dada a possibilidade de ligar e desligar os módulos indicados acima, implementou-se uma

funcionalidade de gestão energética mais sofisticada, que permite desligar de forma automática os

módulos seleccionados quando é detectada a mudança para alimentação pela bateria, possibilitando

aumentar a sua autonomia. Adicionou-se também a possibilidade de configurar o módulo de Wi-Fi

para se ligar apenas quando existem notificações a enviar, desligando-se automaticamente ao fim de

um período de tempo pré-definido sem novas notificações. Estas configurações são opcionais.

Esta funcionalidade tem ainda como característica o facto de guardar a informação de se os

módulos se encontram ligados ou desligados no momento anterior à comutação para a bateria, o qual

é automaticamente recuperado assim que a alimentação principal é restaurada.

Dado que se tratam de configurações avançadas e tendo em conta as limitações da interface

directa com o dispensador, definiram-se 3 modos energéticos que permitem configurar directamente

no dispensador o que acontece quando se comuta para a bateria:

Modo 0: o dispensador continua a funcionar sem qualquer alteração.

Modo 1: a retroiluminação do LCD é desligada, o módulo de Wi-Fi só é ligado quando

existem notificações pendentes e o módulo de bluetooth é desligado.

Modo 2: os módulos de comunicação e o LCD são desligados.

A partir do protocolo de comunicação é possível definir todas estas configurações de forma

independente, havendo por isso uma maior liberdade de combinações possíveis.

Para complementar as funcionalidades descritas, existia ainda a possibilidade de colocar o

microcontrolador em modo de sleep [74], permitindo diminuir o seu consumo. No entanto, existem

vários factores a considerar quando se utiliza estes modos, como o tempo de comutação, o consumo

energético de transição [87] e os eventos que acordam o microcontrolador [74].

Na aplicação desenvolvida, o microcontrolador teria de acordar pelo menos uma vez por

segundo para lidar com as interrupções associadas à manutenção da hora, pelo que não se pode

garantir, sem uma análise mais profunda, que a poupança energética iria compensar os consumos de

transição. Para além disso, seria necessário garantir que o tempo de transição era tal que permitisse

não falhar os eventos assíncronos, com particular ênfase para a comunicação com outros

dispositivos.

Tendo estas questões e o limite no tempo de desenvolvimento, optou-se por concentrar o

esforço nas já referidas funcionalidades de gestão dos periféricos, cujo impacto é mais significativo.

65

5 Análise dos resultados

5.1 Testes

De forma a testar a robustez da solução desenvolvida, realizou-se um conjunto de testes para

confirmar o correcto funcionamento dos vários componentes do sistema. Nesta secção referem-se

apenas os testes mais relevantes efectuados, tendo-se verificado o correcto funcionamento do

dispensador de forma exaustiva ao longo do processo de implementação das suas funcionalidades.

Para testar o funcionamento da dispensa de medicação e dos avisos textuais, simularam-se

vários cenários de utilização, incluindo o teste das situações de sobreposição e conflito de alarmes e

avisos textuais, descritas nas secções anteriores. Para além disso, introduziram-se também erros nos

dados guardados, para verificar se a resposta do dispensador era a adequada. Nestes testes, o

dispensador demonstrou operar de forma robusta, respondendo a todas as situações de conflito e de

erro dos dados de acordo com o planeado.

Destaca-se também a precisão do RTC que, associado ao algoritmo de manutenção de data

e hora criado, se verificou permitir contabilizar o tempo de forma correcta. Apesar da imprecisão

existente no relógio implementado no microcontrolador, o esquema de correcção a partir do RTC

demonstrou realizar a correcção dos valores, garantindo assim que os eventos são gerados no

momento adequado.

No que diz respeito à dispensa de medicação, confirmou-se o correcto funcionamento de todo

o mecanismo, não se tendo observado quaisquer problemas mesmo quando a medicação se

encontra em compartimentos não adjacentes. Verificou-se igualmente a precisão do motor de passo

que, associada ao mecanismo de feedback usado, garante uma elevada fiabilidade, sem se terem

verificado quaisquer falhas no posicionamento da estrutura circular. Este último ponto é fundamental

para garantir a segurança da pessoa cuidada, pelo que se consideram os resultados muito positivos.

Na interacção directa com o dispensador, verificou-se que a navegação nos menus é fluida,

havendo uma total coerência entre os cliques nos botões do teclado e a correspondente resposta no

LCD, com tempos de resposta percepcionados como instantâneos. Verificou-se também o correcto

funcionamento de todas as funcionalidades fornecidas por esta interface, cumprindo-se o objectivo de

permitir a configuração do dispensador sem recurso a dispositivos externos.

No acompanhamento remoto da operação do dispensador, verificou-se de forma extensiva a

geração e envio de notificações para o cuidador. Verificou-se também o mecanismo de salvaguarda

das notificações em caso de falha, tendo-se concluido que este opera de forma adequada, o que

permite uma maior robustez face a problemas nas entidades que comunicam com o dispensador.

Para testar a fiabilidade da comunicação por Bluetooth e do protocolo criado, realizou-se um

primeiro teste com o envio de 20000 comandos de leitura de data e hora (comando com dimensão de

66

4 bytes). Seguidamente, testou-se o envio de 2000 comandos de leitura de 50 dos parâmetros de

configurações do dispensador (comando com dimensão de 54 bytes), intercalados com mensagens

de tamanho aleatório entre 1 e 60 bytes, compostas por conteúdo aleatório. Em ambos os casos, a

totalidade das mensagens de resposta foram recebidas de forma correcta, não se tendo observado

qualquer corrompimento. O teste foi realizado utilizando um computador equipado com Bluetooth

para comunicar com o dispensador.

No caso da comunicação Wi-Fi, repetiram-se exactamente os mesmos testes, tendo a

comunicação sido estabelecida entre um computador portátil, através de Wi-Fi, e o dispensador, a

operar numa rede local. Importa referir que o router e o dispensador se encontravam em divisões

distintas, o que demonstra que o módulo utilizado tem um alcance bastante bom.

Neste caso, para o primeiro teste, verificou-se a correcta execução de todos os comandos, à

excepção de 10 tentativas de contacto que não foram possíveis de estabelecer, bem como em 6 das

conexões houve ausência dos dados na resposta recebida. Apesar de não ter sido possível

determinar a causa exacta destas falhas, supõe-se que poderão ter tido origem no facto de o módulo

estar consideravelmente distante do router, o que poderá ter causado problemas na comunicação. No

entanto, tendo em conta a percentagem de erros face ao total de mensagens enviadas e a

possibilidade de implementar mecanismos de retransmissão, consideram-se os resultados aceitáveis.

Testou-se igualmente a resposta do módulo Wi-Fi face a falhas no access point. Desta forma,

após registo do módulo de Wi-Fi na rede local, desligou-se o router e voltou-se a ligar, sendo que o

módulo restabeleceu a ligação automaticamente quando o router voltou a ficar activo. Este

comportamento é muito importante para evitar que o cuidador fique sem este método de

comunicação ao dispensador apenas por ter ocorrido uma falha na cobertura de sinal ou uma curta

falha de energia eléctrica.

Para complementar os testes à comunicação, analisou-se o tempo de envio de alguns

comandos, confome indicado na tabela 4. Os tempos apresentados correspondem à média dos

valores obtidos para a totalidade de comandos enviados e incluem todo o processamento realizado

em ambas as APIs. Para os comandos que implicam a escrita de dados na EEPROM, testou-se com

um número inferior de mensagens para evitar escritas excessivas nesta memória, que tem um limite

máximo de ciclos de escrita a partir do qual a sua fiabilidade começa a ficar comprometida.

Importa referir que as diferenças de tempo verificadas entre ambas as tecnologias dependem

de vários factores, o que inclui os próprios protocolos de comunicação (Wi-Fi e Bluetooth) e ao facto

das APIs terem sido implementadas em linguagens de programação diferentes (Python e Java).

Assim, uma análise mais aprofundada destas diferenças encontra-se fora do contexto do projecto.

67

Tabela 4 – Tempo de envio de alguns dos comandos do dispensador.

Comando Tempo

Wi-Fi [s]

Tempo

Bluetooth [s]

Nº de comandos

enviados

Lê data e hora 0.082 0.043 100

Lê mensagem (dimensão igual a 16 bytes) 0.080 0.061 100

Lê mensagem (dimensão igual a 60 bytes) 0.082 0.113 100

Adiciona mensagem (dimensão igual a 16

bytes)

0.200 0.181 20

Adiciona mensagem (dimensão igual a 60

bytes)

0.362 0.533 20

Adiciona alarme 0.145 0.143 20

Adiciona alarme ao modo diario 0.104 0.095 20

Configura alarmes utilizando lista do modo

diário (28 alarmes)

1.808 1.697 20

Para comandos simples, como ler a data e a hora, os tempos são bastante reduzidos. Para

os comandos de leitura de mensagens de memória, que necessitam de um acesso à EEPROM do

microcontrolador, os tempos continuam a ser relativamente baixos. No caso da adição de uma nova

mensagem, a sua dimensão tem já um efeito significativo, o que é explicado pela necessidade de

escrever na EEPROM, que é uma operação demorada.

Para os tempos do comando de adicionar alarme, os testes foram realizados com os alarmes

ordenados pela sua estampilha temporal. Tal deve-se ao facto de que o algoritmo de adição garante

que estes são inseridos ordenados em memória, pelo que assim se minimiza o número de operações

de leitura e escrita na EEPROM que o microcontrolador realiza, resultando em menor latência.

Por fim, considerou-se interessante analisar o tempo de execução do comando de

configuração dos alarmes a partir do modo diário, cujos valores são explicados pela necessidade de

colocar na EEPROM todos os alarmes efectivos gerados.

Tendo em conta o baixo custo de ambos os módulos de comunicação, considera-se que os

resultados obtidos são bastante satisfatórios, com particular ênfase para a sua fiabilidade. No que diz

respeito aos tempos de comunicação, consideram-se os valores obtidos adequados.

5.2 Análise de custos

A presente secção tem como objectivo a enumeração e análise sucinta dos custos do

material necessário ao desenvolvimento do protótipo.

Importa deixar claro que criação de um produto final envolve um enorme número de factores

que condicionam o seu custo e que estão muito para além dos gastos com os componentes

electrónicos. Num projecto desta natureza, é expectável que uma quantidade significativa de dinheiro

seja gasta na criação dos moldes para as peças plásticas, cuja diluição em cada dispensador está

indexada à quantidade de unidades vendidas. Da mesma forma, há que ter em conta os custos de

68

montagem, divulgação do produto e desenvolvimento da infra-estrutura tecnológica de suporte (como

por exemplo, as aplicações para Smartphone), entre outros.

A análise dos referidos factores é complexa e requer um estudo cuidado, estando fora do

contexto deste trabalho. No entanto, considera-se relevante fazer uma análise inicial, para que se

possa ter uma ordem de grandeza dos custos da implementação da electrónica do dispensador.

Apesar de não se ter tido como objectivo fundamental a redução dos custos, tentou-se

sempre que possível escolher os componentes com o menor preço (sem sacrificar as

funcionalidades) e utilizar soluções viáveis para uma futura adaptação para um produto.

No anexo A.5 encontra-se uma listagem do custo dos componentes electrónicos utilizados,

bem como algum material auxiliar necessário. Os componentes foram adquiridos no website de

vendas Ebay (www.ebay.com), razão pela qual os valores enumerados, registados no momento da

compra, poderão ser diferentes dos encontrados actualmente.

O valor total do material utilizado ascende a aproximadamente 60 euros. Para analisar este

valor, é necessário ter em conta que todos os componentes foram adquiridos em unidades individuais

ou em pequenas quantidades, razão pela qual não se beneficia dos descontos que eventualmente se

poderiam obter na compra do material em grandes quantidades para a produção de um produto final.

Outro factor a ter em conta é a impossibilidade de usar componentes SMD que, tipicamente,

têm um custo mais reduzido e apresentam um maior leque de opções. Assim, para além da redução

da área total ocupada pelos componentes, permitiriam uma redução substancial no preço final.

Para além disso, a opção de utilizar módulos electrónicos funcionais implica um custo extra

que não existiria caso apenas fossem usados os componentes estritamente necessários. Também é

necessário ter em consideração que cerca de um terço do valor total corresponde ao módulo de GSM

que, em muitos casos, pode não ser necessário. Assim, deixa-se a sugestão de, num eventual

produto, o módulo de GSM ser vendido em separado, possibilitando a sua aquisição apenas em caso

de necessidade.

Tendo em conta as considerações anteriores e face aos preços dos vários produtos

existentes no mercado que foram analisados, juntamente com as novas funcionalidades introduzidas

no protótipo desenvolvido, considera-se que o custo total obtido corresponde a um valor bastante

satisfatório, aparentado ser viável uma transição para um produto.

5.3 Consumo energético

Importa deixar claro que, dadas as limitações no leque de escolha dos componentes

electrónicos, não se teve como principal objectivo reduzir o consumo energético mas sim obter um

elevado nível funcional. No entanto, o aspecto do consumo esteve sempre presente nas opções

tomadas, tendo conduzido à opção de desligar módulos que possuem um consumo elevado e apenas

são necessários em momentos específicos do funcionamento do dispensador.

Na tabela 5 descrevem-se os valores de corrente medidos para os componentes mais

relevantes do circuito do dispensador. As medições foram feitas com recurso a um multímetro digital,

razão pela qual não é possível medir o consumo de eventos de curta duração, como por exemplo o

69

envio de mensagens pelo módulo de Wi-Fi ou GSM. No entanto, seria interessante, com acesso a

equipamento mais sofisticado, fazer uma caracterização dos picos de consumo do dispensador.

Tabela 5 – Consumo de corrente dos principais componentes do sistema.

Descrição Consumo [mA]

Circuito de alimentação (sem carga) 16

Arduino Mega 70

Circuito mínimo (Arduino, RTC, reguladores de tensão, ULN2803, conversor de

nivel, MOSFETs e Potenciometro digital)

98

LCD (retroiluminação desligada) 7

LCD (retroiluminação ligada) 44

Módulo Bluetooth (não emparelhado) 20 - 48

Módulo Bluetooth (emparelhado) 15

Módulo Wi-Fi (conectado a um access point, sem estabelecer comunicação por

socket)

75

Módulo GSM (registado na rede, sem estabelecer comunicação) 40

Módulo GSM (em chamada, sem microfone e altifalante) 90

Modulo GSM (em chamada, com microfone e altifalante no volume máximo) 250

Motor de passo (em operação) 158

LED de sinalização (intensidade máxima) 3

Bezouro (intensidade máxima, frequência = 1 kHz) 86

Bezouro (metade da intensidade máxima, frequência = 1 kHz) 30

Conforme se pode observar, o próprio circuito de alimentação tem um consumo não

desprezável, correspondente ao consumo em repouso dos próprios reguladores de tensão. No caso

do regulador de 3.3 V, este consumo vale 5 mA [88], enquanto que no caso do regulador de 5 V vale

10 mA [77], o que justifica a corrente total medida.

No que diz respeito à placa Arduino a operar de forma isolada, obteve-se um consumo de

cerca de 70 mA para a execução da aplicação desenvolvida. Este valor é bastante superior aos 20

mA referidos no datasheet do microcontrolador para uma tensão de operação de 5 V e uma

frequência de operação de 16 MHz [74]. Este valor resulta do consumo dos restantes componentes

que compõem a placa Arduino, citado-se como exemplo o controlador ATmega8U2, utilizado para

implementar a comunicação USB [73], que tem um consumo de 13.5 mA [89].

Num desenho final, os componentes auxiliares poderiam ser reduzidos para o mínimo

estritamente necessário, o que permitiria reduzir bastante o consumo. Por exemplo, a placa Arduino

Mega possui um LED de sinalização da alimentação e um conversor de tensão de 3.3 V para

alimentar outros componentes, que poderiam ser removidos sem qualquer impacto no circuito, bem

como o próprio controlador USB, visto que esta interface não é utilizada. Outra forma interessante de

reduzir o consumo passa por analisar a possibilidade de colocar o microcontrolador a operar a uma

frequência de 8 MHz, o que permitiria baixar o seu consumo para 10 mA [74]. Naturalmente, esta

70

alteração teria de ser devidamente analisada para garantir que não iria afectar as funcionalidades

implementadas e os tempos de resposta aos eventos.

No que diz respeito aos módulos de comunicação, os valores obtidos estão concordantes

com os valores tabelados. No caso do Bluetooth, o valor apresentado na secção 3.4.3 diz respeito

apenas ao HC-06, pelo que a diferença registada poderá ser resultado dos componentes extra

existentes no módulo utilizado, que incluem um LED de sinalização. No caso do módulo Wi-Fi, a

diferença poderá resultar do facto de existirem placas ESP-01 com ligeiras variações nos seus

componentes.

Para o LCD, verificou-se que a retroiluminação do módulo apresenta um consumo

considerável. Neste caso, a diferença entre os valores medido e tabelado para o consumo do módulo

com a retroiluminação desligada é justificada com o consumo do conversor para a interface I2C que,

mais uma vez, contém também um LED de sinalização.

No caso do módulo GSM, existe a já referida limitação de se ter de utilizar um botão de

pressão para ligar e desligar, o que não permite, nesta implementação, o uso de um MOSFET para

permitir reduzir o seu consumo. No entanto, poder-se-ia aplicar o mesmo conceito num eventual

produto, no qual se utilizasse apenas o SIM900. É também interessante verificar que uma parte muito

significativa do consumo resulta do microfone e do altifalante, quando em chamada.

Apesar de o motor de passo ter um consumo considerável, este opera apenas numa curta

fracção do tempo total de operação, não tendo qualquer consumo durante o restante tempo.

Para a sinalização dos alarmes, o consumo quer do bezouro quer do LED de sinalização

dependem da intensidade dos mesmos e da percentagem de tempo durante o qual estão activos. No

entanto, os valores máximos de consumo com intensidade máxima são de 3 e 86 mA,

respectivamente. No caso do bezouro, não se limitou o consumo de corrente porque se pretende que

o som gerado possa ser bastante elevado, visto que os idosos tendem a ter dificuldades auditivas.

Face aos consumos dos periféricos de comunicação, considera-se que a possibilidade de os

poder desligar tem um impacto significativo. Como se observa, com estes módulos desactivados (e

com o GSM também desligado), o consumo total do circuito mantém-se próximo dos 100 mA, o que é

um valor razoável. Adicionalmente, utilizando os modos de gestão de energia, pode-se realizar um

controlo do funcionamento do dispensador que permite maximizar o tempo de operação em bateria,

caso a alimentação principal falhe.

É assim possível obter uma autonomia aproximada de 12 horas para a bateria utilizada (tem

uma capacidade de 1.2 Ah), o que é razoável tendo em conta a tecnologia utilizada. Importa também

referir que o uso de uma bateria de chumbo deveu-se apenas ao baixo custo e facilidade de

aquisição da mesma. Naturalmente, num produto, seria pertinente utilizar uma tecnologia que permita

uma maior densidade energética, quer para aumentar a autonomia do dispensador quando

alimentado por bateria quer para reduzir a dimensão e peso do dispositivo.

Numa perspectiva geral, ficou claro o impacto de se utilizarem módulos electrónicos no

consumo que, em consequência dos vários componentes auxiliares não necessários, acabaram por

ter um overhead muito significativo no consumo final. Assim, uma solução criada numa PCB com os

71

componentes necessários teria um consumo consideravelmente inferior, o que permitiria ainda

escolher reguladores de tensão mais eficientes, uma vez que as correntes totais seriam inferiores.

5.4 Recursos utilizados no microcontrolador

O microcontrolador usado foi seleccionado com base numa estimativa inicial dos recursos

necessários (secção 3.5.1). No entanto, dada a dificuldade em antecipar com precisão esses

recursos, procurou-se ter uma tolerância razoável.

No que diz respeito às interfaces de comunicação (SPI, UART e I2C), os recursos estimados

foram os suficientes, dado que não se adicionou nenhum módulo electrónico para além dos

inicialmente propostos.

Relativamente à capacidade de RAM, os valores inicialmente calculados foram

consideravelmente inferiores ao que veio a ser usado, embora não tenha sido excedida a capacidade

do microcontrolador (8 KB). Assim, foi usado um total de aproximadamente 5000 bytes face aos 820

bytes estimados inicialmente para as principais estruturas de dados.

Esta diferença deveu-se principalmente à necessidade de estruturas de dados auxiliares não

previstas, como no caso da interface com o LCD. No que diz respeito à comunicação através das

UARTs, não foram também considerados os buffers de envio necessários para guardar os dados.

Também todas as restantes variáveis de configuração e outras pequenas estruturas de dados

acabaram por ter um impacto superior ao esperado.

Por fim, menciona-se que várias das bibliotecas utilizadas contêm código genérico, que acaba

por consumir uma porção considerável de RAM.

No que diz respeito à memória de programa, o valor total ficou, como esperado, com cerca de

100 KB. Deste valor, uma percentagem significativa corresponde a strings dos menus que, por serem

constantes, são guardadas nesta memória. Ainda assim, face ao total de 256 KB de memória de

programa que o ATMega2560 possui, existe uma grande margem para eventuais futuras adições de

funcionalidades.

No que diz respeito à frequência de operação do microcontrolador, 16 MHz mostrou-se

suficiente para conseguir implementar todas as funcionalidades pretendidas sem problemas de

desempenho. Destaca-se a interface com o utilizador, cujos eventos são tratados com uma rapidez

suficiente para que as respostas sejam percepcionadas como instantâneas.

Deixa-se apenas como nota que, apesar de não se ter utilizado no desenho final, fizeram-se

alguns testes com um LCD a cores de 240 x 230 pixéis, controlado por SPI, no qual a velocidade de

resposta se verificou ser um pouco limitada. Como tal, a futura adopção de um display deste tipo

poderá obrigar a outro tipo de solução, como por exemplo utilizar um microcontrolador dedicado com

uma velocidade de comunicação superior.

72

6 Conclusão

O presente trabalho teve como principal objectivo a criação de um protótipo funcional de um

dispensador de medicamentos. O equipamento desenvolvido destina-se a auxiliar pessoas com

problemas de memória ou degradações cognitivas a cumprirem os seus regimes terapêuticos,

tentando minimizar a ocorrência de erros e esquecimentos, que podem ter consequências nefastas

para a saúde.

Apesar de já existirem no mercado alguns produtos que ajudam a gerir a medicação, uma

análise das características dos mesmos revelou algumas limitações, com particular ênfase para a

falta de versatilidade e o facto de serem sistemas fechados, sem possibilidade de serem melhorados

ou integrados em soluções mais abrangentes.

Assim, procurou-se resolver as limitações destes produtos com a criação de uma solução

aberta e versátil, com capacidade de interacção com dispositivos como computadores, Smartphones

e Tablets, possibilitando a outras entidades o desenvolvimento de aplicações que interajam com o

dispensador e possam automatizar vários procedimentos. Desta forma, possibilita-se não só optimizar

as interfaces de interacção para os cuidadores tradicionais (familiares e outras pessoas próximas)

bem como o seu uso em contextos mais amplos, com a possibilidade de integração com equipas

cuidadoras domiciliárias ou integração em ambientes do tipo lar ou semelhante.

A implementação do protótipo proposto requereu todo um extenso trabalho em diversas áreas

da engenharia. Numa primeira fase, foi necessário conceber toda a estrutura electrónica do

dispensador. Apesar de se ter recorrido a alguns módulos funcionais, nomeadamente a nível das

comunicações, houve a necessidade de realizar um trabalho vasto de selecção e uso de

componentes discretos, com vista à obtenção de um protótipo funcional e com todas as

características requeridas. Isto implicou um grande investimento de pesquisa e aquisição de novos

conhecimentos, sendo o protótipo desenvolvido uma solução nova, desenhada de raiz para satisfazer

os objectivos definidos.

Face à complexidade considerável do sistema desenvolvido, surgiram vários problemas com

os quais foi necessário lidar. Destes destacam-se os problemas relacionados com o ruído elétrico e a

fonte de alimentação, tendo sido necessário regular as tensões para os níveis correctos e garantir o

fornecimento adequado de corrente a todos os módulos. Adicionalmente, houve grandes dificuldades

na obtenção de certos componentes, cujos tempos de entrega foram em média de três semanas,

dificultando imenso o processo de desenvolvimento.

Para além do desenho e implementação do hardware foi necessário desenvolver todo o

software de controlo do dispensador. Apesar da plataforma Arduino e suas bibliotecas oferecerem

algumas abstracções que facilitam a implementação, o desenvolvimento foi feito maioritariamente em

C, tendo exigido muitos cuidados com as limitações inerentes ao uso de um microcontrolador. Assim,

73

o estilo de programação teve de ter em consideração as limitações de memória e de velocidade de

processamento, o que implicou um cuidado especial na implementação de procedimentos mais

complexos. Ainda assim, foi feito um esforço significativo para tornar o software o mais modular e

flexível possível, no sentido de facilmente poder ser adaptado a um produto final ou até,

eventualmente, a outros projectos.

Ainda relativamente ao desenvolvimento da aplicação de controlo, destacam-se todos os

detalhes que foram necessários ter em conta para a implementação das funcionalidades propostas.

Dada a necessidade de interagir com o utilizador e o cuidador, é fundamental contemplar todas as

situações limite que podem ocorrer, como por exemplo a configuração de alarmes que se sobrepõem

ou a tentativa de entrar em operação com alarmes inválidos. Estes são apenas dois exemplos das

múltiplas situações de conflito com que foi necessário lidar. Todos estes detalhes se traduzem num

código extenso e complexo, difícil de testar e susceptível a erros, que nem sempre são evidentes à

primeira vista.

Da mesma forma, o desenvolvimento da interface de interacção directa com o dispensador,

através do teclado e do display, traduziu-se num desafio considerável, com uma extensão e

dificuldade de implementação muito superior à inicialmente esperada. Para a sua implementação,

praticamente todas as funcionalidades tiveram de ser pensadas de raiz, com um código extenso e

relativamente complexo para permitir alguma flexibilidade e capacidade de adaptação e expansão.

Apesar de se terem utilizado módulos de comunicação que implementam os respectivos

protocolos e permitem uma interacção directa com o microcontrolador, tal não significou um trabalho

simples. Na realidade, a documentação e informação disponível é relativamente escassa, o que

dificultou o seu uso. Destes módulos, destaca-se o ESP8266 que, por ter sido recentemente

introduzido no mercado, possui ferramentas de desenvolvimento pouco maduras e com alguns

problemas.

Por fim, refere-se o trabalho efectuado a nível de linguagens de alto nível, para implementar e

testar a comunicação com o dispensador. Assim, foi necessário trabalhar não só a nível da

comunicação série como também utilizando comunicação por sockets, para testar todas as interfaces

de comunicação do dispensador. Para além disso, houve ainda a necessidade de trabalhar em

Android, cuja aprendizagem revelou não ser trivial, com o objectivo de demonstrar a capacidade de

diálogo com este tipo de dispositivo.

Em suma, o trabalho realizado abordou diversas áreas, tendo-se enfrentado vários desafios e

problemas que se revelaram bastante mais extensos e complexos do que se antecipava inicialmente.

No que diz respeito ao resultado final obtido, considera-se o protótipo como bastante

adequado. As funcionalidades propostas foram implementadas e validadas, sendo a solução final

bastante versátil e aberta, que introduz várias inovações face aos produtos existentes no mercado.

Destaca-se a possibilidade de interagir com dispositivos localizados na sua proximidade

(Smartphones e Tablets) que permitem configurar o dispensador a partir de aplicações optimizadas

para o contexto de uso, bem como as capacidades de comunicação remota, que permitem a

notificação de ocorrências através de SMS e mecanismos envolvendo a Internet.

74

Apesar de o objectivo principal ter sido o de desenvolver um protótipo que pudesse realizar

uma prova de conceito e demonstrar a viabilidade do que se propôs, considera-se que foi possível

obter uma solução com um baixo custo e elevado nível de funcionalidade. Da mesma forma, ao nível

do consumo energético e da autonomia de operação em bateria, obtiveram-se resultados bastante

satisfatórios, muito embora esse não fosse um objectivo inicial do protótipo.

Deixa-se como nota menos positiva o facto de não ter sido possível testar o protótipo com

utilizadores reais, nomeadamente idosos, uma vez que a estrutura física da solução final não o

permite. No entanto, conforme referido, não fazia parte do contexto do projecto o desenvolvimento da

estrutura mecânica final do dispensador. Para além disso, dada a natureza sensível deste produto, os

testes a realizar teriam de ser supervisionados e implicaria uma logística complexa.

Apesar de todas as funcionalidades e inovações implementadas, houve algumas ideias que

não puderem ser testadas, quer por falta de tempo quer por falta de recursos. Em seguida

apresentam-se algumas dessas ideias que seria interessante explorar no contexto de trabalho futuro.

Seria interessante adicionar sensores biométricos ao dispensador, permitindo assim

acompanhar o estado de saúde da pessoa cuidada. Nesta área, cita-se como exemplo a plataforma

Bitalino [90] e e-Health [91], as quais permitem a captura de múltiplos sinais que podem ir desde a

pulsação e pressão arterial até à realização de electrocardiogramas simplificados.

Outra adição pertinente seria um conjunto de sensores genéricos, como por exemplo,

temperatura, monóxido de carbono, fumo e fugas de gás. Desta forma, poder-se-ia monitorizar vários

parâmetros do meio ambiente, tornando possível evitar acidentes como incêndios ou intoxicações

com monóxido de carbono.

Neste caso, poder-se-ia utilizar o dispensador como ponto de recolha de informação

produzida pelos outros dispositivos. Uma vez que este já possui capacidades de comunicação remota

(Wi-Fi e GSM), não seria necessário dotar os restantes dispositivos destas interfaces, tornando-os

mais económicos.

A concluir menciona-se que o desenvolvimento do presente trabalho foi muito interessante e

permitiu aumentar bastante o nível de conhecimento e experiência nas áreas abordadas. A solução

desenvolvida mostrou responder aos objectivos definidos, constituindo uma abordagem aberta,

flexível e muito funcional, que se espera que possa contribuir para uma maior autonomia de pessoas

que estejam dependentes da toma de medicamentos e apresentem algumas limitações nas suas

capacidades cognitivas. A solução oferece também a possibilidade de familiares ou cuidadores

dessas pessoas acompanharem, remotamente, o processo de toma da terapêutica, oferecendo-lhes

uma maior segurança e tranquilidade.

75

7 Bibliografia

[1] E-pill. (n.d). MedSmart manual [manual]. Acedido em Setembro 25, 2014, disponível em

http://ep.yimg.com/ty/cdn/epill/medsmartmanual.pdf

[2] Alert Utah. Acedido em Setembro 25, 2014, disponível em http://alertutah.com/medication-

dispensers/medsmart-medication-dispenser/

[3] E-pill. (n.d). Epill MedSmart Brochure [folheto]. Acedido em Setembro 25, 2014, disponível em

http://ep.yimg.com/ty/cdn/epill/epillMedSmartBrochure.pdf

[4] E-pill. ORDER / products. Acedido em Setembro 25, 2014, disponível em

http://www.epill.com/bysku.html

[5] Philips. Manage Complex Medications with Philips Medication Dispenser. Acedido em

Outubro 1, 2014, disponível em http://www.managemypills.com/content/product-costs

[6] AbleData. Acedido em Outubro 2, 2014, disponível em

http://www.abledata.com/abledata.cfm?pageid=113582&orgid=113361&discontinuetoggle=1

[7] Silfen, E., Wirahadiraksa, R. (2010). Goldman Sachs European Medtech and

Healthcare Services Conference. Acedido em Dezembro 31, 2014, disponível em

http://www.philips.com/shared/assets/Downloadablefile/Investor/2010_09_09_Silfen_Wirahadi

raksa_GoldmanSachs_London.pdf

[8] Philips. Philips Medication Dispenser User Manual [manual]. Acedido em Outubro 5, 2014,

disponível em http://www.lifeline.ca/servlet/DownloadServlet?id=5429

[9] Philips. (2008). Frequently asked questions [folheto]. Acedido em Outubro 5, 2014, disponível

em http://www.managemypills.com/servlet/DownloadServlet?id=224

[10] Eclipse. Acedido em Outubro 5, 2014, diponível em

http://www.eclipsepd.com/areas/consumer

[11] MD News. (2011). Managing Medication at Home: Philips Medication Dispensing Service Now

Offered Through the American Red Cross. Acedido em Outubro 5, 2014, disponível em

http://www.mdnews.com/news/2011_12/05782_novdec2011_managing-medication.aspx

[12] Philips. Product details. Acedido em Outubro 1, 2014, disponível em

http://www.managemypills.com/content/product-details

[13] MedFolio. MedFolio electronic pillbox. Acedido em Outubro 4, 2014, disponível em

http://www.medfoliopillbox.com/product/medfolio-pillbox/

[14] MedFolio. MedFolio User Guide [manual]. Acedido em Outubro 4, 2014, disponível em

https://www.medfoliopillbox.com/wp-content/uploads/2013/03/MedFolio-english-web1.pdf

[15] Earth Flare. MedHelper App – Your Healthcare Assistant. Acedido em Dezembro 20, 2014,

disponível em http://medhelperapp.com/

76

[16] MedQ. MedQ Pill Box Dispenser. Acedido em Novembro 15, 2014, disponível em

http://www.lifesavingpillbox.com/

[17] Tabtime Ltd. Tabtime Super 8: Daily Pill Timer - Reminder. Acedido em Outubro 10, 2014,

disponível em http://www.tabtime.com/daily-pill-reminder.html

[18] PivoTell Ltd. PivoTell Automatic Pill Dispenser Mk3-11. Acedido em Novembro 11, 2014,

disponível em http://www.pivotell.co.uk/PivoTell%C2%AE_Automatic_Pill_Dispenser_Mk3-

11.htm

[19] Bindependend. MedReady GSM Cellular Dispenser. Acedido em Novembro 14, 2014,

disponível em http://www.bindependent.com/product/mr357/Cellular-Automated-MedReady-

Dispenser/

[20] Ivation. Ivation Automatic Pill Dispenser. Acedido em Outubro 20, 2014, disponível em

http://myivation.com/ivation-automatic-pill-dispenser.html

[21] Brigham Young University. (2013). Prescription drug regulator aimed at curbing painkiller

abuse. Acedido em Dezembro 14, 2014, disponível em http://news.byu.edu/archive13-apr-

medvaultcapstone.aspx

[22] Sparkfun. Integrated Circuits. Acedido em Dezembro 24, 2014, disponível em

https://learn.sparkfun.com/tutorials/integrated-circuits/ic-packages

[23] Adafruit. Adafruit FONA. Acedido em Janeiro 4, 2015, disponível em

http://www.adafruit.com/product/1963

[24] Sparkfun. GSM/GPRS Module - SM5100B. Acedido em Janeiro 20, 2015, disponível em

https://www.sparkfun.com/products/9533

[25] M2Mcom. SIM900. Acedido em Agosto 1, 2015, disponível em

http://www.simcom.eu/index.php?m=termekek&prime=1&sub=40&id=0000000147

[26] SIMCom. (Dezembro 15, 2010). SIM900 Hardware Design V2.00, disponível em

ftp://imall.iteadstudio.com/IM120417009_IComSat/DOC_SIM900_Hardware%20Design_V2.00.

pdf

[27] Getech. Arduino GPRS Shield. Acedido em Junho 29, 2015, disponível em

http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield

[28] Sparkfun. SparkFun WiFi Breakout - CC3000. Acedido em Janeiro 20, 2015, disponível em

https://www.sparkfun.com/products/12072

[29] Espressif Systems. (Outubro 12, 2013). Espressif Smart Connectivity Platform: ESP8266.

Acedido em Agosto 6, 2008, disponível em

http://www.adafruit.com/datasheets/ESP8266_Specifications_English.pdf

[30] Acedido em Agosto 6, 2015, disponível em https://github.com/esp8266/esp8266-wiki/wiki

[31] Acedido em Agosto 4, 2015, disponível em

http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

[32] Addicore. Addicore ESP8266 ESP-01 WiFi Wireless Tranceiver Module. Acedido em Agosto

11, 2015, disponível em http://www.addicore.com/Addicore-ESP8266-WiFi-Wireless-

77

Tranceiver-Module-V-p/130.htm

[33] Sparkfun. Bluetooth Basics. Acedido em Março 28, 2015, disponível em

https://learn.sparkfun.com/tutorials/bluetooth-basics/bluetooth-profiles

[34] Sparkfun. Acedido em Março 2, 2015, disponível em https://www.sparkfun.com/categories/115

[35] Digilent. PmodBT2 - Bluetooth Interface. Acedido em Março 10, 2015, disponível em

http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,401,947&Prod=PMOD-BT2

[36] Guangzhou HC Information Technology. (Setembro 6, 2006). HC-06 [datasheet]. Acedido em

Fevereiro 10, 2015, disponível em http://www.electronicoscaldas.com/datasheet/HC-

06_Wavesen.pdf

[37] SPP Bluetooth Modules. Acedido em Agosto 1, 2015, disponível em

http://wiki.pinguino.cc/index.php/SPP_Bluetooth_Modules

[38] Sparkfun. SparkFun Bluetooth Modem - BlueSMiRF Gold. Acedido em Março 12, 2015,

disponível em https://www.sparkfun.com/products/12582

[39] Roving Networks. (Junho 27, 2011). RN-41 [Dataheet]. Acedido em Março 12, 2015, disponível

em http://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/Bluetooth-RN-41-DS.pdf

[40] FastTech. JY-MCU HC-06 Bluetooth Wireless Serial Port Module. Acedido em Agosto 6, 2015,

disponível em https://www.fasttech.com/product/1129201-jy-mcu-hc-06-bluetooth-wireless-

serial-port-module

[41] Texas Instruments. Products for Real-time Clocks. Acedido em Junho 12, 2015, disponível em

http://www.ti.com/lsds/ti/clock-and-timing/real-time-clocks-products.page

[42] NXP. Acedido em Junho 12, 2015, disponível em

http://www.nxp.com/products/interface_and_connectivity/real_time_clocks/#products

[43] Maxim Integrated. DS1307 [datasheet]. Acedido em Junho 10, 2015, disponível em

http://datasheets.maximintegrated.com/en/ds/DS1307.pdf

[44] Maxim Integrated. DS3231 [datasheet]. Acedido em Junho 10, 2015, disponível em

http://datasheets.maximintegrated.com/en/ds/DS3231.pdf

[45] Box Electronica. DS3231 AT24C32 IIC module - precision Real time clock memory. Acedido

em Junho 10, 2015, disponível em http://boxelectronica.com/sensores/22-ds3231-at24c32-iic-

module-precision-real-time-clock-memory-.html

[46] Atmel. (2003). AT24C32 - 2-Wire Serial EEPROM [datasheet]. Acedido em Junho 10, 2015,

disponível em http://www.atmel.com/images/doc0336.pdf

[47] G. Guajardo. (Agosto 8, 2012). Stepper vs. Servo: Which is Better Served with My Electric

Cylinder [white paper]. Acedido em Junho 10, 2015, disponível em

http://www.bimba.com/Global/Homepage-Spotlights/BIM-

1154%20Stepper%20Whitepaper_FINAL.pdf

[48] Kiatronics. 28BYJ-48 – 5V Stepper Motor [datasheet]. Acedido em Janeiro 20, 2015, disponível

em http://robocraft.ru/files/datasheet/28BYJ-48.pdf

78

[49] Small Stepper Motor and Driver Board. Acedido em Junho 12, 2015, disponível em

https://arduino-info.wikispaces.com/SmallSteppers

[50] Texas Instruments. (Janeiro, 2015). ULN2803A Darlington Transistor Arrays [datasheet].

Acedido em Março, 2015, disponível em https://www.ti.com/lit/ds/symlink/uln2803a.pdf

[51] Stan. (Março 1, 2014). 28BYJ-48 Stepper Motor with ULN2003 driver and Arduino Uno.

Acedido em Maio 7, 2014, disponível em http://42bots.com/tutorials/28byj-48-stepper-motor-

with-uln2003-driver-and-arduino-uno/

[52] Electronics Tutorials. The Hall Effect Sensor. Acedido em Junho 15, 2015, disponível em

http://www.electronics-tutorials.ws/electromagnetism/hall-effect.html

[53] M. Rouse. Optoisolator (Optical Coupler Or Optocoupler) Definition. Acedido em Junho 10,

2015, disponível em http://searchnetworking.techtarget.com/definition/optoisolator

[54] Everlight. (Janeiro 20, 2014). Opto Interrupter ITR9608-F [datasheet]. Acedido em Abril 10,

2015, disponível em http://www.everlight.com/file/ProductFile/ITR9608-F.pdf

[55] Octopart . Everlight ITR-9608. Acedido em Abril 20, 2015, disponível em

https://octopart.com/itr-9608-everlight-12445677

[56] Praveen. (Dezembro 5, 2014). Interfacing hex keypad to arduino. Acedido em Abril 24, 2015,

disponível em http://www.circuitstoday.com/interfacing-hex-keypad-to-arduino.

[57] QC2004A [datasheet]. Acedido em Janeiro 22, 2015, disponível em

http://www.rcscomponents.kiev.ua/datasheets/20138519401472480.pdf

[58] 5V 2004 20X4 204 2004A LCD Display Module Blue Screen For Arduino. Acedido em Abril 20,

2015, disponível em http://www.banggood.com/Wholesale-Warehouse-5V-2004-20X4-204-

2004A-LCD-Display-Module-Blue-Screen-For-Arduino-wp-Uk-915064.html

[59] Philips. (Novembro 22, 2012). PCF8574 [datasheet]. Acedido em Março 20, 2015, disponível

em http://www.nxp.com/documents/data_sheet/PCF8574.pdf

[60] Microchip. (Julho 28, 2003). MCP41XXX/42XXX - Single/Dual Digital Potentiometer with SPI™

Interface [datasheet]. Acedido em Abril 15, 2015, disponível em

http://che126.che.caltech.edu/11195c.pdf

[61] Electronics News Line. List of Top Microcontroller Companies in the World. Acedido em

Fevereiro 20, 2015, disponível em http://electronicsnewsline.com/457/list-of-top-microcontroller-

companies-in-the-world.html

[62] Futurlec. Atmel Microcontrollers. Acedido em Fevereiro 11, 2015, disponível em

http://www.futurlec.com/ICAtmel.shtml

[63] Microchip. All 8-bit Microcontrollers Products. Acedido em Fevereiro 14, 2015, disponível em

http://www.microchip.com/ParamChartSearch/Chart.aspx?branchID=1012

[64] MikroElektronika. PIC Development Boards. Acedido em Fevereiro 12, 2015, disponível em

http://www.mikroe.com/pic/development-boards/

79

[65] Arduino. Compare board specs. Acedido em Fevereiro 11, 2015, disponível em

https://www.arduino.cc/en/Products.Compare

[66] B. Benchoff. (Março 10, 2013). Acedido em Fevereiro 17, 2015, disponível em

http://hackaday.com/2013/03/10/another-salvo-in-the-pic-vs-avr-holy-war/

[67] P. Torrone. (Fevereiro 10, 2011). Why the Arduino Won and Why It’s Here to Stay. Acedido em

Fevereiro 27, 2015, disponível em http://makezine.com/2011/02/10/why-the-arduino-won-and-

why-its-here-to-stay/

[68] Neil. Acedido em Março 20, 2015, disponível em http://nrqm.ca/mechatronics-lab-guide/lab-

guide-software-environment/

[69] EngBlaze. Microcontroller tutorial series: AVR and Arduino timer interrupts. Acedido em 20

Agosto, 2015, disponível em http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-

timer-interrupts/

[70] Sparkfun. What is an Arduino?. Acedido em Agosto 5, 2015, disponível em

https://learn.sparkfun.com/tutorials/what-is-an-arduino.

[71] Evans, B. (2011). Beginning Arduino Programming. New York, NY: Apress

[72] Banzi, M. (2008). Getting started with Arduino. California: O’Reilly

[73] Arduino. Arduino Mega 2560. Acedido em Maio 24, 2015, disponível em

http://arduino.cc/en/Main/ArduinoBoardMega2560

[74] Atmel. (2014). Atmel ATmega640/V-1280/V-1281/V-2560/V-2561/V [datasheet]. Acedido em

Maio 24, 2015, disponível em http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-

Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

[75] Yasin, S. (Dezembro 11, 2012). How to switch between power supplies using diodes. Acedido

em Maio 19, 2015, disponível em http://saeedsolutions.blogspot.pt/2012/12/how-to-switch-

between-power-supplies.html

[76] Automatically switching from 9V battery to DC wall adapter on insertion. Acedido em Maio 12,

2015, disponível em http://electronics.stackexchange.com/questions/130986/automatically-

switching-from-9v-battery-to-dc-wall-adapter-on-insertion

[77] Texas Instruments. (Dezembro, 2014). LM2940x 1-A Low Dropout Regulator [datasheet].

Acedido em Maio 5, 2015, disponível em http://www.farnell.com/datasheets/1882643.pdf

[78] Future Electronics. What is a Schottky Diode?. Acedido em Maio 10, 2015, disponível em

https://www.futureelectronics.com/en/diodes/schottky-diodes.aspx

[79] Electronics Tutorials. MOSFET as a Switch. Acedido em Julho 15, 2015, disponível em

http://www.electronics-tutorials.ws/transistor/tran_7.html

[80] Vishai. (Março 21, 2011). IRF9Z24 [datasheet]. Acedido em Agosto 2, 2015, disponível em

http://www.vishay.com/docs/91090/91090.pdf

[81] Sparkfun. Transistors. Acedido em Junho 10, 2015, disponível em

https://learn.sparkfun.com/tutorials/transistors/applications-ii-amplifiers

80

[82] TT electronics. (Dezembro, 2004). Application Circuits for the Phototransistor Switch. Acedido

em Abril 10, 2015, disponível em http://optekinc.com/pdf/App%20Bulletin%20213-

Opto%20Assemblies.pdf

[83] Schmitz, T., Wong, M. (Outubro 10, 2011). Choosing and Using Bypass Capacitors [nota de

aplicação]. Acedido em Junho 19, 2015, disponível em

https://www.intersil.com/content/dam/Intersil/documents/an13/an1325.pdf

[84] Arduino. ATmega2560-Arduino Pin Mapping. Acedido em Junho 10, 2015, disponível em

https://www.arduino.cc/en/Hacking/PinMapping2560

[85] Acedido em Junho 19, 2015, disponível em https://github.com/esp8266/Arduino.

[86] SIMCom. (Dezembro 24, 2010). SIM900 AT Command Manual. Acedido em Agosto 5, 2015,

disponível em

ftp://imall.iteadstudio.com/IM120417009_IComSat/DOC_SIM900_AT%20Command%20Manual

_V1.03.pdf

[87] Gupta, S., Kumar, M. (Novembro, 2010). Optimizing Low Power Embedded Designs. Acedido

em Abril 2, 2015, disponível em

http://www.element14.com/community/servlet/JiveServlet/previewBody/28096-102-1-

77297/OptimizingLowPowerEmbeddedDesignsFinal1.pdf

[88] STMicroelectronics. (Dezembro, 2006). LD1117 series [datasheet]. Acedido em Agosto 11,

2015, disponível em http://pdf1.alldatasheet.com/datasheet-

pdf/view/94381/STMICROELECTRONICS/LD1117.html

[89] Atmel. (Setembro, 2012). ATmega8U2 [datasheet]. Acedido em Agosto 10, 2015, disponível

em http://www.atmel.com/Images/doc7799.pdf

[90] Bitalino. Get Started. Acedido em Agosto 2, 2015, disponível em

http://www.bitalino.com/index.php

[91] Cooking Hacks. e-Health Sensor Platform V2.0 for Arduino and Raspberry Pi. Acedido em

Agosto 2, 2015, disponível em https://www.cooking-hacks.com/documentation/tutorials/ehealth-

biometric-sensor-platform-arduino-raspberry-pi-medical

81

Anexos

A.1. Algoritmo de funcionamento do protocolo série

Figura A.1.1 - Funcionamento do protocolo de recepção de dados por comunicação série.

82

A.2. Lista de comandos do protocolo de comunicação

Tabela A.2.1 – Comandos do protocolo de comunicação.

Comando Descrição

Actualiza data e hora Define a data e hora do dispensador.

Lê data e hora Lê a data e hora do dispensador.

Move dispensador Move a estrutura dos comprimidos para um determinado

compartimento.

Eco Retorna uma cópia da mensagem enviada para o dispensador.

Edita mensagem Edita uma mensagem textual da memória do dispensador.

Lê mensagem Lê uma mensagem textual da memória do dispensador.

Adiciona alarme Adiciona um alarme de dispensa.

Lê alarme Lê um alarme de dispensa da memória do dispensador.

Edita alarme Edita um alarme de dispensa.

Remove alarme Remove um alarme de dispensa.

Re-arma alarme Dispara novamente um alarme falhado.

Adiciona alarme à lista do

modo diário

Adiciona um novo alarme à lista de alarmes do modo diário.

Remove alarme da lista

do modo diário

Remove um alarme da lista de alarmes do modo diário.

Lê alarme do modo diário Lê um alarme da lista de alarmes do modo diário.

Configura alarmes a

partir do modo diário

Executa o algortimo de configuração dos alarmes de dispensa a

partir da lista do modo diário.

Adiciona aviso textual Adiciona um novo aviso textual.

Elimina aviso textual Elimina um aviso textual previamente configurado.

Lê aviso textual Lê um aviso textual da memória do dispensador.

Remove PRN Remove n medicamentos PRN previamente configurados.

Adiciona PRN Adiciona n medicamentos PRN.

Lê PRN Lê estado de um medicamento PRN da memória do dispensador.

Lê dados da EEPROM Lê dados de uma lista de posições da EEPROM do

microcontrolador.

Escreve dados na

EEPROM

Escreve dados de numa lista de posições da EEPROM do

microcontrolador.

Lê dados do espaço do

programador

Lê dados de uma lista de posições da EEPROM do RTC (espaço

livre para o programador).

Escreve dados no espaço

do programador

Escreve dados de numa lista de posições da EEPROM do RTC

(espaço livre para o programador).

Define o modo do

dispensador

Permite alternar entre o modo de configuração e o modo de

operação do dispensador.

83

Escreve configurações Define os valores de uma lista de configurações de operação do

dispensador.

Lê configurações Lê os valores de uma lista de configurações de operação do

dispensador.

Lê identificador do

dispensador

Lê o identificador de 32 bits do dispensador.

Lê nome de utilizador do

dispensador

Lê o nome de utilizador associado ao dispensador.

Define nome de utilizador

do dispensador

Escreve o nome do utilizador associado ao dispensador.

Lê outros registos Lê registos de tentativas de dispensa não permitidas e erros de

operação.

Lê temperatura Lê temperatura do sensor do RTC.

Lê código PIN Lê o código PIN definido.

Define código PIN Define o código PIN.

Lê código de

comunicação Bluetooth

Lê o código de comunicação Bluetooth definido.

Define código de

comunicação Bluetooth

Define o código de comunicação Bluetooth.

Define números GSM Define a lista de números autorizados a ligar para o dispensador,

bem como o número de destino das notificações remotas.

Lê números GSM Lê a lista de números autorizados a ligar para o dispensador, bem

como o número de destino das notificações remotas.

Envia código Bluetooth* Envia o código Bluetooth, para permitir a posterior comunicação.

Termina comunicação

Bluetooth*

Termina uma comunicação Bluetooth previamente iniciada,

deixando o canal num estado seguro.

*Aplicam-se apenas à comunicação Bluetooth.

84

A.3. Tipos de notificações remotas geradas pelo dispensador

Limiar pré-definido de tentativas de dispensa de medicação regular não autorizadas excedido.

Limiar pré-definido de tentativas de dispensa de medicação PRN não autorizadas excedido.

Erro de checksum num alarme, aviso textual, medicamento PRN ou mensagem textual.

Medicamento PRN dispensado.

Dispensa de todos os medicamentos PRN existentes.

Dispensa de medicação regular efectuada ou falhada.

Aceitação ou falha de aviso textual.

Dispensador sem medicação.

Limiar pré-definido de dispensas de medicação regular atingido.

A.4. Dimensões dos dados guardados em EEPROM

Tabela A.4.1 – Dimensões dos dados guardados na EEPROM do microcontrolador.

Descrição Dimensão individual

[Bytes]

Nº de unidades Dimensão total

[Bytes]

Alarmes 17 28 476

Avisos textuais 14 30 420

Mensagens textuais 62 30 1860

Alarmes do modo diário 8 28 224

Tentativas de dispensa fora

de hora

7 10 70

Tentativas de dispensa de

PRN fora de hora

7 30 210

Medicamentos PRN 7 28 196

Erros de operação 7 10 70

85

A.5. Custo dos componentes electrónicos utilizados

Tabela A.5.1 – Custo dos componentes utilizados no desenvolvimento do protótipo.

Componente Preço unitário

(euros)

Quantidade

utilizada

Preço total

(euros)

Módulo Arduino Mega (clone) 8 1 8

LCD 20x4 4.7 1 4.7

Módulo Wi-Fi (ESP-01) 2.5 1 2.5

Módulo Bluetooth (HC-06) 3.55 1 3.55

Módulo GSM (SIM900 + placa base) 20 1 20

Conversor 5V -3.3V 0.95 1 0.95

Motor 28BYJ-48 1.50 1 1.50

Optocouplador 0.25 1 0.25

Teclado 4X4 0.75 1 0.75

Módulo RTC + memória EEPROM 0.90 1 0.90

Conversor I2C para LCD 0.80 1 0,80

ULN2803A 0.15 2 0.30

Placa perfurada 0.40 1 0.40

Bateria do RTC 0.15 1 0.15

IRF9Z24N (MOSFET) 0.30 3 0.90

LM2940 (regulador 5V) 1 0.35 0.35

LD1117 (regulador 3.3V) 1 0.35 0.35

Buzzer 0.15 1 0.15

MCP41010 0.65 1 0.65

Bateria 6V 6.25 1 6.25

Transformador 9V 3.65 1 3.65

Outros materiais* 1.5 - 1.5

Total - - 58.55

*Inclui os custos aproximados dos componentes genéricos utilizados, como condensadores, díodos e

resistências, bem como os pinos, as fichas e os conectores.