bump - Sistema de Monitorização de Batimentos Cardíacos e Quedas em Grávidas e Idosos

Autores: Miguel Duarte, João Souza e Pedro Silva

No caso das grávidas e idosos uma queda repentina pode mudar tudo em poucos segundos. Para os familiares destas pessoas, uma das maiores preocupações é “E se acontecer alguma coisa quando não estou presente?”.

Criámos o bump (referência a bump de queda e de baby bump), que é um sistema de monitorização remota de utentes em tempo real. O sistema utiliza microcontroladores e sensores para deteção de quedas e monitorização dos batimentos cardíacos, e envia notificações em tempo real através de Wi-Fi (Dashboard e Telegram).

O principal objetivo é atuar de forma preventiva e garantir que ninguém passa por uma emergência sozinho. Porque cuidar é estar presente, mesmo à distância.

Sobre o Projeto

O bump é uma solução IoT baseada em microcontroladores ESP32 e ESP8266MOD e em sensores como MPU6050 (acelerómetro/giroscópio - para deteção de quedas) e como AD8232 (eletrocardiograma - batimentos cardíacos). O objetivo principal é a monitorização remota e preventiva de idosos e grávidas, distinguindo movimentos quotidianos de quedas reais através da análise combinada de aceleração e inclinação, bem como a monitorização constante de batimentos cardíacos e partilha em tempo real com os cuidadores (cuidadores e médicos).

Inspiração e Motivação

Como é sabido por todos Portugal tem uma população idosa muito numerosa, um número significativo de quedas na terceira idade e muitos nascimentos a caminho do hospital, em espaços públicos e em casa, de acordo com [1, 2, 4, 5, 7].

Pessoas idosas em Portugal

  • Em 2024, cerca de 24–25% da população portuguesa tinha 65 ou mais anos, o que corresponde a aproximadamente 2,4–2,6 milhões de pessoas num país com cerca de 10,7 milhões de habitantes [11, 12, 13].​

  • Os Censos de 2021 indicam que cerca de 2,42 milhões de idosos (≥65 anos) residentes em Portugal, confirmando um dos índices de envelhecimento mais elevados da Europa, segundo [3].​

Quedas em idosos

  • De acordo com estes estudos efetuados em Portugal [3, 8] as quedas são a principal causa de acidentes atendidos nas urgências, com maior impacto na faixa etária dos 65 ou mais anos.​

  • Neste estudo português com idosos [2], cerca de 49% apresentavam algum risco de queda e um grande número tinha histórico de pelo menos uma queda no último ano, com várias quedas em alguns casos.​

  • A maioria das quedas em idosos ocorre em casa ou nas imediações, com destaque para quintal e rua como locais frequentes de ocorrência [3].

Gravidez e Nascimentos fora do Hospital em Portugal

Segundo o Programa Nacional de Rastreio Neonatal, em 2023 ocorreram 85 764 nascimentos, mais 2328 que em 2022 [4,5].

Relativamente ao número de nascimentos fora do Hospital (em ambulâncias, espaços públicos ou em casa), tem-se evidenciado um aumento nos últimos anos, colocando em risco a saúde dos bebés e das mães.

  • Em 2022, foram registados em Portugal 25 nascimentos em ambulâncias, 18 em espaços públicos e 126 em casa [6, 7].

  • Em 2023, 18 nascimentos em ambulâncias, 15 em espaços públicos e 140 em casa [6, 7]. Nota-se um ligeiro aumento global dos partos fora de maternidade, sobretudo em casa [6, 7].

  • Em 2024, os valores subiram para 28 nascimentos em ambulâncias, 17 em espaços públicos e 144 em casa [6, 7].

  • Relativamente a 2025, ainda não existem dados concretos oficiais, mais sabe-se que o INEM reportou pelo menos 32 partos em ambulâncias entre janeiro e setembro, devido a constrangimentos nos serviços de ginecologia/obstetrícia [6, 7].

Construção do Sistema bump

A construção do sistema bump, vem no seguimento de uma Unidade Curricular de Sistemas Embebidos onde foram explorados conceitos relacionados com este tipo de componentes e sensores.

Este projeto pretende explorar com maior detalhe como podemos utilizar estes componentes para criar soluções de baixo custo que têm como principal objetivo solucionar problemas reais que afetam o dia a dia da população portuguesa.

Existem alguns projetos que utilizam estes componentes de forma isolada (apenas deteção de quedas, ou leitura de ECG ou batimentos cardíacos), no entanto, funcionam de forma independente e não efetuam qualquer comunicação/partilha de dados em tempo real [9, 10].

Deste modo, nasceu o bump. Um sistema que utiliza ferramentas open-source e acessíveis (baixo custo) e pretende providenciar um atendimento médico mais rápido, acessível e personalizado a todos os utentes, mesmo em zonas remotas e de difícil acesso.

Hardware e Software Utilizados

  • Linguagens

    • C++ (Arduino) para programação dos microcontroladores;
    • JavaScript/TypeScript (React Native) para o desenvolvimento da aplicação móvel cross-platform (Expo Snack para protótipo).
  • Hardware e Sensores

    • ESP8266 NodeMCU (ESP8266MOD);
    • ESP32 com OLED integrado para protótipos com visualização;
    • Módulo MPU6050 (GY‑521) – acelerómetro e giroscópio de 6 eixos para deteção de quedas;
    • Módulo AD8232 ECG – sensor de batimentos cardíacos e monitorização de ECG;
    • Breadboard e jumpers para prototipagem.
  • Bibliotecas

    • MPU6050_light para ler e filtrar dados do acelerómetro/giroscópio;
    • Wire (I²C) para comunicação entre ESP, MPU6050 e AD8232;
    • Adafruit_SSD1306 e Adafruit_GFX para mostrar dados no ecrã do ESP32;
    • BlynkSimpleEsp8266 para integração com dashboard do Blynk (gráficos BPM);
    • UniversalTelegramBot e ArduinoJson para bot de Telegram (alertas de queda);
    • React Native + Expo (react-native-chart-kit, expo-notifications) para app móvel Android/iOS.
  • Software, Plataformas IoT e Serviços

    • Blynk IoT - dashboard web/mobile com gráficos de batimentos cardíacos em tempo real;
    • Telegram Bot API - manda notificações em tempo real a alertar as quedas;
    • Expo Snack - para prototipagem rápida da aplicação móvel cross-platform (Android/iOS);
    • Servidor Blynk Cloud - servidor gratuito para receber dados dos ESP, mostrar em dashboard e enviar para app mobile.
  • Ferramentas de desenvolvimento

    • Arduino IDE para código, compilação e upload de firmware dos microcontroladores;
    • Expo Snack (snack.expo.dev) para desenvolver e testar a app;
    • Monitor Série do Arduino IDE para debug e testes;
    • Blynk para visualização dos dados na web (dashboard);
    • Telegram para receber alertas de emergência sobre as quedas.

Explicação da Escolha do Telegram A escolha do Telegram para enviar dados, deve-se à sua arquitetura centrada na privacidade e segurança, desta forma os alertas são transmitidos de forma encriptada. O Telegram oferece uma API robusta que protege a identidade do utilizador e garante a integridade dos dados sensíveis.

Lógica de Funcionamento - Algoritmo para Deteção de Quedas

Para efetuar a lógica de funcionamento do sistema, utilizou-se o algoritmo apresentado em [9]. A biblioteca MPU6050_light extrai dados recolhidos pelo sensor MPU6050 e lógica de deteção baseia-se no cálculo da magnitude do movimento e da aceleração total:

$$\vec{|a|} = \sqrt{a_x^2 + a_y^2 + a_z^2}$$

O algoritmo segue quatro etapas:

  1. Impacto Inicial: Ativado quando $\vec{|a|} > \text{IMPACT_THRESHOLD}$.

  2. Análise da Posição: Dentro de um intervalo de tempo ($WINDOW$), o sistema calcula a variação do ângulo:

$$\Delta X = |angleX_{atual} - angleX_{impacto}|$$

$$\Delta Y = |angleY_{atual} - angleY_{impacto}|$$

  1. Classificação do Movimento: A queda é confirmada se houver mudança brusca de ângulo e a inclinação final for superior ao $TILT_THRESHOLD$.

  2. Recuperação: Existe um período de reset ($RECOVERY$) que limpa as variáveis para evitar deteções duplicadas.

Lógica de Funcionamento - Algoritmo para Leitura de ECG e BPM

A lógica para deteção de batimentos cardíacos, cálculo de BPM via intervalos RR (60000/RR) e HRV (Heart Rate Variability) por RMSSD segue métodos padronizados validados clinicamente, suportados por literatura científica [14, 15, 16, 17].

A função computeRMSSD() implementa a fórmula padrão de HRV em domínio temporal [17], amplamente usada para avaliar atividade e variabilidade batimento-a-batimento [14, 15, 16, 17].

  • Quando o valor dos batimentos ultrapassa determinado valor (THRESHOLD) e passa o tempo refratário (REFRACT_MS), conta como um novo batimento.

    • Calcular o intervalo RR (tempo entre batimentos).
    • Converter o RR em BPM instantâneo = 60000 / RR(ms).
    • Guardar uma sequência dos últimos 20 RR para calcular o HRV (RMSSD).
    • A cada 15 s, calcula e envia o BPM médio.

A função computeRMSSD() aplica a fórmula:

$$ RMSSD = \sqrt{\frac{1}{N-1} \sum_{i=1}^{N-1} (RR_{i+1} - RR_i)^2} $$

Este valor indica a variação natural entre batimentos cardíacos, um indicador de stress ou recuperação cardiovascular.

Desafios

  • Componentes: Foi necessária uma pesquisa inicial sobre os componentes utilizados de forma a garantir que haviam pinos suficientes no mesmo microcontrolador e que este microcontrolador tinham capacidade de processar e enviar dados em tempo real.

  • Entender os valores recolhidos pelo sensor do ECG: Foi importante pesquisar e entender o funcionamento de sensor AD8232 para entender que tipos de dados eram recolhidos e como podiam ser apresentados numa dashboard com informação relevante.

  • Reset de Variáveis: Foi necessário corrigir variáveis que ficavam "presas" e não devam reset após detetarem a primeira queda.

  • Estabilidade I2C: Resolver falhas de comunicação no arranque do microcontroladores e os sensores.

  • Falsos Positivos/Threshold das Quedas: Foi fulcrar efetuar diversos testes para encontrar o threshold ideal para os testes e distinguir de uma queda de 5 cm de um movimento mais brusco (Este aspeto ainda necessita de ser refinado e melhorado).

  • Threshold do ECG: À semelhança dos falsos positivos no sensor para detetar quedas, o mesmo se aplica ao sensor MPU6050. Foi importante encontrar valores padrão que permitissem detetar os batimentos cardíacos de forma correta (Ainda necessita de melhorias, mas conseguimos bons dados em teste).

Lições Aprendidas

  • Importância de calibrar os sensores: A precisão dos sensores é essencial quando as leituras estão relacionadas com aspetos críticos da saúde.

  • Estado do sistema: Importância de atualizar regularmente o estado do sistema, dar resets para garantir que é um sistema robusto e fácil de encontrar bugs/erros.

  • Gestão de recursos: Fundamental usaryield() no microcontrolador para evitar resets inesperados durante o processamento dos dados.

Próximos Passos

Gestão de Energia - Um dos aspetos fulcrais a ter em conta no futuro é a gestão de energia e como será efetuada a alimentação de energia aos protótipos desenvolvidos. Bateria, Pilhas ou carregamento USB-C são as hipóteses que temos disponíveis de momento, temos de perceber como iremos integrar no sistema.

Outras formas de comunicação - Grande parte dos idosos não tem acesso a Wi-Fi ou a tecnologias, então uma das opções futuras é colocar os dispositivos a comunicar em Bluetooth, LoRaWaN e MQTT.

Mais sensores - Adicionar um sensor NEO‑6M GPS que transmite as coordenadas GPS em tempo real quando existe uma queda, por exemplo.

Botão de Ajuda - Adicionar um botão de ajuda no futuro, integrado nos protótipos. Esta funcionalidade tem como objetivo permitir que o utilizador solicite ajuda manualmente em situações de mal-estar ou perigo. Sendo assim funciona como uma redundância para emergências que não envolvem quedas físicas.

Desenvolver vários protótipos: a serem desenvolvidos consoante diferentes necessidades.

- Protótipo 1

  • Componentes: Sensor MPU6050;
  • Objetivo: Apenas deteção de quedas;
  • Mais barato e menor consumo energético.

- Protótipo 2

  • Componentes: Sensores AD8232 e MPU6050;
  • Objetivo: Monitorização do ritmo cardíaco, ECG e deteção de quedas;
  • Ideal para idosos e grávidas.

- Protótipo 3

  • Componentes: Sensores MAX30100 e MPU6050;
  • Objetivo: Monitorização dos batimentos cardíacos, oxigénio no sangue e deteção de quedas;
  • Mais compacto e sem elétrodos, ideal para idosos e grávidas.

PCB e Caixas/Modelos 3D

  • Desenvolver uma PCB mais compacta para o sistema e que consiga conectar todos os componentes com maior facilidade.

  • Explorar opções de como podemos fazer a solução chegar aos utentes.

    • Pulseira para o protótipo 1 (Quedas).
    • Wearable de peito para o protótipo 2 (ECG e quedas).
    • Pulseira para o protótipo 3 (Oxímetro e quedas).

Referências

https://www.theglobaleconomy.com/Portugal/elderly_population/

https://pubmed.ncbi.nlm.nih.gov/40427996/

https://dspace.uevora.pt/rdpc/bitstream/10174/33214/1/Risco%20de%20quedas%20nos%20idosos.pdf

https://observador.pt/2024/01/12/portugal-registou-aumento-de-nascimentos-em-2023-revela-instituto-nacional-de-saude-dr-ricardo-jorge/

https://www.sulinformacao.pt/en/2024/01/nasceram-mais-bebes-em-portugal-em-2023/

https://www.theportugalnews.com/news/2025-09-20/increase-in-home-births/885273

https://au.news.yahoo.com/hospital-crises-lead-surge-ambulance-145230287.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cucGVycGxleGl0eS5haS8&guce_referrer_sig=AQAAAIq3GUOjZ6dlSBvTHSF3T3vmd3zv76nmOAOD0Bl-itUptCGJsDafWPM-uhWk-eDcJjcjX-qDxF4mk-lHYViY9lREG_Z16rX8K0FCAz0EW6-hPov59MyNrCFATHzK8wtFVA5nHA5oGvJJCYkUQ_T1Hx3BaBAoKC6r3ht_tZnvZvlZ

https://www.ordemenfermeiros.pt/arquivo/colegios/Documents/MCEER_FM_Guia_Profissionais_CMC.pdf

https://ray.yorksj.ac.uk/id/eprint/8671/1/Fall%20Detection%20System%20with%20Accelerometer%20and%20Threshold-based%20Algorithm.pdf

https://github.com/Ashithaby/IoT-based-low-cost-ECG-and-heart-monitoring-system-with-ESP32

https://data.worldbank.org/indicator/SP.POP.65UP.TO.ZS?locations=PT

https://www.theportugalnews.com/news/2025-09-30/portugals-ageing-and-declining-population/893509

https://onlinelibrary.wiley.com/doi/10.1155/2018/9138578

https://en.wikipedia.org/wiki/Pan%E2%80%93Tompkins_algorithm

https://www.kubios.com/blog/hrv-analysis-methods/

https://pmc.ncbi.nlm.nih.gov/articles/PMC5624990/

Built With

Share this project:

Updates