Arduino UNOで制御するスマートIR自動水栓 – 省水・エコフレンドリー
必要な部品と材料
| Arduino UNO × 1 |
| Texas Instruments L293D デュアルHブリッジ モータードライバー × 1 |
| ブレッドボード (汎用) × 1 |
| Digilent NI myRIO用モーターアダプター × 1 |
必要な工具と機器
- グルーガン (汎用)
プロジェクト概要
このプロジェクトは、日常生活における水の無駄遣いを解決するための自動水栓システムです。赤外線(IR)センサーを使用して手の有無を検知し、Arduino UNOがサーボモーターを制御して水栓の開閉を行います。人が手をかざすと水が出て、手を離すと自動的に止まるため、無駄な水の流出を防止できます。
動作原理
IRセンサーが物体(手など)を検知するとHIGH信号を出力し、Arduinoがこれを読み取ってサーボモーターを90度回転させ、水栓バルブを開きます。センサーから手が離れるとLOW信号になり、サーボが元の位置に戻ってバルブを閉めます。
回路図と配線
- IRセンサーのVCC → 5V、GND → GND、OUT → デジタルピン3
- サーボモーターの信号線 → デジタルピン9、電源 → 5V、GND → GND
- L293Dは外部電源が必要な場合にモーター駆動用として使用
ソースコード
#include <Servo.h>
const int sensorPin = 3;
const int servoPin = 9;
Servo servo;
int pos = 0;
void setup() {
servo.attach(servoPin);
pinMode(sensorPin, INPUT);
servo.write(0); // 初期位置: バルブ閉
}
void loop() {
int sensorValue = digitalRead(sensorPin);
if (sensorValue == HIGH) {
// 手が検知されたらバルブを開く (90度)
for (pos = 0; pos <= 90; pos += 3) {
servo.write(pos);
delay(15);
}
} else {
// 手が離れたらバルブを閉じる (0度)
for (pos = 90; pos >= 0; pos -= 3) {
servo.write(pos);
delay(15);
}
}
delay(100); // チャタリング防止
}
改良のポイント
- 元のコードには論理エラーがありました (`if(SensorPin==HIGH)` はピン番号と定数を比較しているだけ)。修正版では `digitalRead()` で正しくセンサー値を読み取っています。
- サーボの滑らかな動作のため、段階的な角度変更を実装しました。
- チャタリング防止のための遅延を追加しました。
応用アイデア
- 公衆トイレやキッチンへの設置で節水効果を発揮
- ソレノイドバルブを使えばより本格的な水栓制御が可能
- 太陽電池とバッテリーで完全オフグリッド化も可能
製造プロセス
- 全自動ドリップコーヒーメーカー:歴史、設計、将来動向
- Raspberry PiでTMP006赤外線温度センサーを使う – Pythonライブラリとセットアップガイド
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- ppDAQC Pi-PlateからInitialStateへ温度データをストリーミング - ヘッドレスRaspberry Piで実現
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry PiとTwilioで実現するトイレ占有センサー:音声通話とSMSで通知
- Acconeer A111パルスレーダーをRaspberry Piと統合:実践ガイド
- Phantom YoYo高感度水センサーをMCP3008 ADC経由でRaspberry Piに接続
- Arduino Unoベースの人間検知レスキューロボット:センサー統合ステップバイステップ
- 自動ウォーターポンプの仕組みと重要性
- 最先端無水染色技術:テキスタイルの持続可能性向上と廃棄物削減