心拍数異常をメール&SMSで即時通知 - Arduino Mega+Bolt IoT
必要なパーツと材料
| パーツ | 数量 | 備考 |
|---|---|---|
| 心拍センサーモジュール | 1 | 出力ピン→Arduino D2 |
| Arduino Mega 2560 | 1 | |
| Bolt WiFiモジュール | 1 | クラウド連携用 |
| ジャンパーワイヤー | 7本 |
使用クラウドサービス
- Bolt Cloud(デバイス管理・シリアル通信)
- DigitalOcean VPS(Python監視スクリプト実行用)
- Mailgun(メール送信API)
- Twilio(SMS送信API)
プロジェクト概要
24時間心拍監視し、異常値(デフォルト:57未満または100超過)検知時にメールとSMSでアラート通知するシステム。フィットネスバンドのようなウェアラブルに、通知機能を追加したイメージです。
ステップ1:心拍センサー接続
- センサー出力 → Arduino D2
- センサー VCC → Arduino 5V
- センサー GND → Arduino GND
ステップ2:Arduinoスケッチ
10秒ごとにパルス数をカウントし、BPM(拍/分)に換算してシリアル出力。Boltモジュールがこのデータを読み取ります。
ステップ3:Bolt WiFiモジュール接続
- Bolt 3V3 → Arduino 3.3V
- Bolt TX → Arduino RX
- Bolt RX → Arduino TX
シリアル通信でArduinoから心拍データを取得し、Bolt Cloud経由でクラウドに送信。
ステップ4:Mailgun設定(メール送信)
- アカウント作成・電話認証
- Domains → Add Recipient → 招待メール送信
- 生成されたサンドボックスの認証情報(APIキー、SMTP認証情報等)を控える
ステップ5:Twilio設定(SMS送信)
- 無料アカウント作成・電話認証
- Programmable SMSとPhone Numbersを有効化
- プロジェクト作成後、Account SID、Auth Token、発行された電話番号を控える
ステップ6:DigitalOcean VPSで監視スクリプト実行
専用Linuxサーバー(またはVM)でPythonスクリプトを常駐実行。Bolt Cloudから心拍データをポーリングし、閾値判定してアラート送信。
設定ファイル:conf.py
# Twilio認証情報
SID = 'あなたのTwilio Account SID'
AUTH_TOKEN = 'あなたのTwilio Auth Token'
FROM_NUMBER = 'Twilio発行の電話番号'
TO_NUMBER = '通知先電話番号(+81から開始)'
# Mailgun認証情報
MAILGUN_API_KEY = 'MailgunプライベートAPIキー'
SANDBOX_URL = 'MailgunサンドボックスURL'
SENDER_EMAIL = 'test@あなたのSANDBOX_URL'
RECIPIENT_EMAIL = '通知先メールアドレス'
# Bolt認証情報
API_KEY = 'Bolt Cloud APIキー'
DEVICE_ID = 'あなたのBoltデバイスID'
監視スクリプト:heart_rate.py
import conf, json, time
from boltiot import Email, Bolt, Sms
MIN_HEART_RATE = 57 # 下限閾値
MAX_HEART_RATE = 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.SID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
while True:
response = mybolt.serialRead(2) # シリアルポート2から読取
data = json.loads(response)
sensor_value = data['value']
try:
hr = int(sensor_value)
if hr > MAX_HEART_RATE or hr < MIN_HEART_RATE:
mailer.send_email("Alert", f"The Current Heart Rate is {hr}")
sms.send_sms(f"Alert! The Current Heart Rate is {hr}")
except Exception as e:
print(e)
time.sleep(10)
実行方法
sudo apt-get update
sudo apt install python3-pip
sudo pip3 install boltiot
sudo python3 heart_rate.py
Arduinoコード
unsigned long highCounter = 0;
int pulse = 0, 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++;
}
// 10秒ごとにBPM出力
if (millis() - oldMillis >= 10000) {
oldMillis = millis();
int bpm = highCounter * 6;
if (highCounter > 1) Serial.println(bpm);
highCounter = 0;
}
}
回路図

注意点
- 医療用途ではないため、診断目的では使用しないでください
- VPSの代わりに自宅サーバーやRaspberry Piでも運用可能
- 閾値は年齢・状況に合わせて調整推奨
製造プロセス
- データとストーリーテリングでメンテナンスプロジェクト承認を勝ち取る方法
- 仕事を守りキャリアを加速する9つの実証済み戦略
- アンチシーズ潤滑剤がMROで時間・コスト・悩みを解消する5つの理由
- 緊急対応:小森28インチオフセット印刷機の突然停止を解決
- 産業用切断ブレード購入時に考慮すべき4つの重要要素
- 家庭用自動加圧ポンプの選び方:実践ガイド
- ネジとボルトの種類を理解して最適な組み立てを実現する
- ネジとボルトの違い:種類、用途、選び方のポイント
- セールスメール完全攻略:注目を集め、リードを転換させる
- 溶剤回収装置(スティル)を最高性能で維持するエキスパートメンテナンスガイド
- 採掘現場でショベルとダンプトラックの組み合わせを最適化し、効率と利益を最大化する