スマートArduino水筒:リアルタイム監視とアラート機能付き
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | 1 | |
| 防水超音波センサー | 1 | 水位検出用 |
| リアルタイムクロック(RTC)モジュール | 1 | DS1307ベース自作または市販品 |
| 4桁7セグメント共通カソードディスプレイ | 1 | SparkFun製等 |
| ブザー | 1 | |
| タクトスイッチ 12mm | 1 | モード切替・ウェイクアップ用 |
| 汎用NPNトランジスタ(2N2222等) | 4 | 7セグメント桁駆動用 |
| Li-Ionバッテリー 1000mAh | 1 | |
| Adafruit USB Li-Ionバッテリー充電器 | 1 | |
| 221Ω 抵抗 | 8 | 7セグメントセグメント制限用 |
| 1kΩ 抵抗 | 4 | トランジスタベース電流制限用 |
| 4.75kΩ 抵抗 | 2 | RTCプルアップ用(SDA/SCL) |
必要な工具
- ハンダごて
- ホットグルーガン
使用するアプリとオンラインサービス
- Arduino IDE
プロジェクト概要
はじめに
十分な水分摂取は健康に不可欠です。肌の調子改善、全身の健康、生産性と脳機能の向上、エナジーレベルアップ、ダイエット効果などが期待できます。しかし忙しい現代生活では、家でもオフィスでも外出先でも、ついつい水分摂取を忘れがち。アメリカ人の約75%が慢性的な脱水状態だと言われています。
健康的な水分摂取習慣を身につけるには、毎日の摂取量をトラッキングすることが重要です。そこでArduinoを使って水筒をスマート化しました。主な機能:
- 日々の水分摂取量をトラッキング
- 週間平均摂取量を算出
- 水分補給リマインド(アラート)
- 前回摂取時刻を記録
- 単一充電で1ヶ月以上動作
RTCモジュールの自作
摂取ログに日時を記録するため、DS1307ベースのRTCモジュールを自作しました。バックアップ電池なしでVBATをGNDに落としています(システム全体がバッテリー駆動のため)。DS3231(内蔵発振子)を使えば外付け水晶不要でより簡単です。市販の小型RTCモジュールを使っても構いません。
DS1307の主要ピン:
- 5Vピン:HIGHでデータ送信、LOWでバックアップ電池駆動
- GND:共通グランド
- SCL:I2Cクロック、Arduino SCL(A5)に接続
- SDA:I2Cデータ、Arduino SDA(A4)に接続
- VBAT:バックアップ電池入力。未使用時はGNDに接続
7セグメントディスプレイ基板の自作
コンパクトな4桁共通カソード7セグメントモジュールを使用。各セグメントはアノード共通でマルチプレクス駆動、各桁は独立したカソードを持ち個別にオン/オフ可能。これにより制御ピンを32本から11-12本に削減できます。
LEDセグメントには電流制限抵抗が必要(5Vなら330-470Ω、Li-ion駆動なら220Ω)。全セグメント点灯時(数字8)は40mAを超えるため、ドライバートランジスタ(2N2222)で電流増幅しています。1kΩでベース電流制限、220Ωでセグメント電流制限。
ArduinoのD10-D17でセグメント(a-g, dp)、D6-D9で桁(D0-D3)を駆動。タクトスイッチをD2(INT0)に接続し、外部割り込みでスリープからウェイクアップ可能にしています。
ディスプレイ基板とArduino Pro Miniの接続
回路図通りにセグメントピンをArduinoに、4つの共通カソードをトランジスタコレクタに、ベースをArduinoピンにハンダ付け。タクトスイッチをD2(INT0)に接続。確実にD2に接続してください(外部割り込みウェイクアップ用)。
RTCモジュールとブザーの接続
- RTC SDA → Arduino A4 (SDA)
- RTC SCL → Arduino A5 (SCL)
- ブザー → Arduino D3
超音波センサーのボトルキャップ取り付け
ボトルキャップに穴を開け、超音波センサーの4線を通してキャップ中央に固定。センサーはキャップ内側に、中心位置に配置します。
- VCC → VCC
- GND → GND
- Trigger → D4
- Echo → D5
プログラム書き込みとテスト
以下のライブラリが必要です:
- OneButtonライブラリ(ボタン処理)
- LowPowerライブラリ(スリープモード)
- DS1307RTCライブラリ(RTC読み取り)
ウォッチドッグタイマーと外部割り込み(INT0)でスリープから復帰。センサーを3回読み取って平均化し、必要情報を計算・10秒表示後、1分間スリープ。ボタン押下時はいつでもウェイクアップして情報表示。
計算アルゴリズム概要:
- 5回読み取り平均で水位算出(精度向上)
- 日次摂取量は24時間でリセット
- 週間平均は直近7日間の日次摂取量から算出
- 2時間摂取なしなら15分ごとに二重ビープでアラート、摂取検知で2時間アラート停止
コードをダウンロードしてArduino Pro Miniに書き込み、全モジュール接続して動作確認。ディスプレイに結果が出れば成功です。
Arduinoをボトルキャップに固定
ホットグルーでArduino Pro Miniをボトルキャップ上面に固定。すべての部品がキャップ内に収まるよう十分な量のグルーでしっかり固定。
バッテリーと充電モジュールの取り付け
Li-ionバッテリーをArduino上面に固定(露出ピンとショートしないよう注意)。充電モジュールをキャップに取り付け、USBポートを外側からアクセス可能に配置。
完全防水化
水筒なので水滴がかかっても壊れないよう、USBポート以外のすべての露出部分にホットグルーをたっぷり塗布して防水化。キャップの形状もグルーで整えて元のキャップらしく仕上げます。※キャップごと水に沈めないでください。
完成!
これであなた専用のスマート水筒の完成です。毎日の水分摂取を可視化し、健康的な習慣をサポートします。
製造プロセス