Alertas Instantâneos por Email e SMS para Frequência Cardíaca Anormal
Componentes e materiais
| Componente | Quantidade |
|---|---|
| Módulo Sensor de Batimento Cardíaco | 1 |
| Arduino Mega 2560 | 1 |
| Módulo WiFi Bolt IoT | 1 |
| Fios jumper (genéricos) | 7 |
Aplicativos e serviços online
- Bolt IoT Bolt Cloud
- DigitalOcean - Serviço VPS para rodar o código de monitoramento de frequência cardíaca
- Mailgun - Serviço de automação de email
- Twilio SMS Messaging API
Sobre o projeto
Dispositivos de monitoramento de frequência cardíaca 24x7 como pulseiras fitness são comuns no mercado agora e você pode até ter um ou dois! E se você pudesse fazer um dispositivo similar mas que também envie SMS ou email ou ambos se uma anormalidade for detectada na sua frequência cardíaca? Animado? Este projeto é sobre como fazer isso da maneira mais fácil possível.
Passo 1: Conectando módulo sensor de frequência cardíaca ao Arduino
Usando fios jumper macho-fêmea, faça as seguintes conexões:
- Pino 2 do Arduino e pino de saída do módulo sensor de frequência cardíaca
- Pino 5V do Arduino e pino VCC do módulo sensor
- Pino GND do Arduino e pino GND do módulo sensor
Passo 2: Programação no Arduino
Instale Arduino IDE em arduino.cc e escreva o seguinte código:
unsigned long highCounter = 0;
int pulse = 0;
int val = 0;
int lastPulse = LOW;
unsigned long oldMillis = 0;
void setup() {
pinMode(2, INPUT);
Serial.begin(9600);
}
void loop() {
pulse = digitalRead(2);
if (pulse != lastPulse) {
lastPulse = pulse;
if (pulse == HIGH) highCounter++;
}
// imprime e reseta highCounter a cada 10 segundos
if (millis() - oldMillis >= 10000) {
oldMillis = millis();
val = highCounter * 6;
if (highCounter > 1) Serial.println(val);
highCounter = 0;
}
}
Salve, Verifique e Carregue o código.
Este código irá:
- Coletar dados do sensor de frequência cardíaca
- Calcular frequência cardíaca
- Imprimir o valor para que o módulo WiFi Bolt possa recebê-lo via comunicação serial
Passo 3: Conectando módulo WiFi Bolt ao Arduino
Usando fios jumper macho-macho, faça as seguintes conexões:
- Pino 3V3 do módulo Bolt WiFi e pino 3.3V do Arduino
- Pino TX do módulo Bolt WiFi e pino RX do Arduino
- Pino RX do módulo Bolt WiFi e pino TX do Arduino
Estas conexões alimentam o módulo Bolt WiFi e estabelecem comunicação serial entre o módulo Bolt WiFi e Arduino. Neste ponto, todas as conexões de hardware estão concluídas.
Passo 4: Configurando serviço de automação de email usando Mailgun
- Crie uma conta no Mailgun
- Após verificação do seu número de telefone, vá à seção
Domains. Clique no botãoAdd Recipient. - Clique no botão
Invite New Recipient. Insira o Email do Destinatário. - Após adicionar Email ID, um novo sandbox será gerado. Clique no ID do sandbox recém-gerado.
- A nova tela terá todas as credenciais necessárias para enviar email. Copie todas e salve no bloco de notas.
Passo 5: Configurando serviço SMS usando Twilio
- Acesse twilio.com e clique em
Get a Free API Keypara se cadastrar - Preencha todos os detalhes necessários no formulário de cadastro
- Insira e verifique seu número de telefone
- Clique em "Products" e habilite serviços SMS marcando as caixas para Programmable SMS e Phone Numbers
- Clique em "Continue". Clique novamente em "Continue" após inserir nome do projeto
- Clique em "Skip this step" quando pedir para convidar um colega
- Clique em "Project Info" para ver as credenciais da conta (Account SID e Auth token)
- No menu dropdown, escolha "Programmable SMS". Clique em
Get Startedpara gerar número de telefone - Clique em
Get a number. Então um popup aparecerá. Clique emChoose this number - Então um popup aparecerá com o número final. Copie este número e guarde com segurança
Passo 6: Usando VPS DigitalOcean para rodar código de monitoramento de frequência cardíaca
Nota: Você também pode manter um computador Linux dedicado ou rodar Linux em máquina virtual em vez de usar VPS como DigitalOcean.
- Acesse digitalocean.com e cadastre-se
- Crie um projeto. Então crie um droplet rodando Ubuntu e acesse a máquina usando PuTTY
- Faça login no Ubuntu usando credenciais enviadas por email
- Execute os seguintes comandos:
# Atualizar pacotes no Ubuntu
sudo apt-get -y update
# Instalar python3 pip3
sudo apt install python3-pip
# Instalar biblioteca boltiot usando pip
sudo pip3 install boltiot
# Criar arquivo python chamado conf.py
sudo nano conf.py
Escreva o seguinte código com dados corretos em conf.py:
# Credenciais do Twilio
SID = 'Encontre SID no seu Dashboard Twilio'
AUTH_TOKEN = 'Encontre no seu Dashboard Twilio'
FROM_NUMBER = 'Número gerado pelo Twilio. Encontre no Dashboard'
TO_NUMBER = 'Seu número. Adicione +55 no início'
# Credenciais do Mailgun
MAILGUN_API_KEY = 'Chave API privada do Dashboard Mailgun'
SANDBOX_URL = 'Encontre no Dashboard Mailgun'
SENDER_EMAIL = 'Será test@seu_SANDBOX_URL'
RECIPIENT_EMAIL = 'Seu Email Aqui'
# Credenciais do Bolt
API_KEY = 'Sua chave API da conta Bolt Cloud'
DEVICE_ID = 'ID do seu dispositivo Bolt'
Salve conf.py. Crie arquivo python chamado heart_rate.py:
sudo nano heart_rate.py
Escreva o seguinte código em heart_rate.py:
import conf, json, time
from boltiot import Email, Bolt
from boltiot import Sms, Bolt
minimum_limit = 57 # limite mínimo de frequência cardíaca
maximum_limit = 100 # limite máximo de frequência cardíaca
mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
mailer = Email(conf.MAILGUN_API_KEY, conf.SANDBOX_URL, conf.SENDER_EMAIL, conf.RECIPIENT_EMAIL)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
while True:
response = mybolt.serialRead(2)
data = json.loads(response)
sensor_value = data['value']
try:
sensor_value = data['value']
if sensor_value > maximum_limit or sensor_value < minimum_limit:
response = mailer.send_email("Alert", "The Current Heart Rate is " + str(sensor_value))
response = sms.send_sms("Alert! The Current Heart Rate is " + str(sensor_value))
except Exception as e:
print()
time.sleep(10)
Salve heart_rate.py. Execute Heart_rate.py:
sudo python3 heart_rate.py
Quando a frequência cardíaca ficar anormal, um SMS e email serão enviados para seu telefone e email respectivamente.
Código
Código Arduino
unsigned long highCounter = 0;
int pulse = 0;
int val = 0;
int lastPulse = LOW;
unsigned long oldMillis = 0;
void setup() {
pinMode(2, INPUT);
Serial.begin(9600);
}
void loop() {
pulse = digitalRead(2);
if (pulse != lastPulse) {
lastPulse = pulse;
if (pulse == HIGH) highCounter++;
}
if (millis() - oldMillis >= 10000) {
oldMillis = millis();
val = highCounter * 6;
if (highCounter > 1) Serial.println(val);
highCounter = 0;
}
}
conf.py (Python)
# Credenciais do Twilio
SID = 'Encontre SID no seu Dashboard Twilio'
AUTH_TOKEN = 'Encontre no seu Dashboard Twilio'
FROM_NUMBER = 'Número gerado pelo Twilio. Encontre no Dashboard'
TO_NUMBER = 'Seu número. Adicione +55 no início'
# Credenciais do Mailgun
MAILGUN_API_KEY = 'Chave API privada do Dashboard Mailgun'
SANDBOX_URL = 'Encontre no Dashboard Mailgun'
SENDER_EMAIL = 'Será test@seu_SANDBOX_URL'
RECIPIENT_EMAIL = 'Seu Email Aqui'
# Credenciais do Bolt
API_KEY = 'Sua chave API da conta Bolt Cloud'
DEVICE_ID = 'ID do seu dispositivo Bolt'
heart_rate.py (Python)
import conf, json, time
from boltiot import Email, Bolt
from boltiot import Sms, Bolt
minimum_limit = 57
maximum_limit = 100
mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
mailer = Email(conf.MAILGUN_API_KEY, conf.SANDBOX_URL, conf.SENDER_EMAIL, conf.RECIPIENT_EMAIL)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
while True:
response = mybolt.serialRead(2)
data = json.loads(response)
sensor_value = data['value']
try:
sensor_value = data['value']
if sensor_value > maximum_limit or sensor_value < minimum_limit:
response = mailer.send_email("Alert", "The Current Heart Rate is " + str(sensor_value))
response = sms.send_sms("Alert! The Current Heart Rate is " + str(sensor_value))
except Exception as e:
print()
time.sleep(10)
Esquemáticos
Faça as conexões conforme mostrado no esquemático do projeto original.
Processo de manufatura
- Como Usar Dados e Storytelling para Garantir Aprovação para Seus Projetos de Manutenção
- Nove Estratégias Comprovadas para Garantir Seu Emprego e Acelerar Crescimento na Carreira
- 5 Maneiras Como Lubrificantes Anti-Gripagem Economizam Tempo, Dinheiro e Evitam Dores de Cabeça na MRO
- Guia do Especialista: Mantendo Seu Alambique de Recuperação de Solventes para Desempenho Máximo
- Resposta Rápida: Como Resolvemos Parada Súbita em Impressora Offset Komori 28"
- Otimizando Pares Escavadeira-Caminhoneta para Máxima Eficiência e Lucro na Mineração
- 4 Fatores-Chave a Considerar ao Comprar Lâminas de Corte Industriais
- Escolhendo a Bomba Booster Automática Certa para sua Casa: Guia Prático
- Entendendo Tipos de Parafusos e Parafusos de Rosca para Montagem Ideal
- Parafuso vs. Parafuso de Rosca: Diferenças Principais, Tipos e Aplicações