Arduino Nanoで作るスマートな動体検知水鉄砲
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3 | 1 | |
| PIR動体センサー(汎用) | 1 | |
| ハーフサイズ ブレッドボード | 1 | 半田不要 |
| 汎用NPNトランジスタ | 1 | 2N3904を使用 |
| 抵抗 330Ω | 1 | 厳密でなくても可、近い値でも動作 |
必要な工具と機器
- レーザーカッター(汎用)
プロジェクト概要
このプロジェクトは、Tinkernut氏の「Arduino Motion Detecting Squirt Gun」に触発されて制作されました。オリジナルでは「Raid Auto Trigger」という製品を使用していましたが、中国では入手困難だったため、Taobaoで類似品(約78.80元)を見つけ購入しました。この製品は内部改造不要で、プッシュボタンをブレッドボード/Arduino対応にするだけでハック可能でした。
ワークショップ向けに作成したため、スライド資料や大きなテキストが含まれています。
ステップ1: 水鉄砲のハック
水鉄砲のプッシュボタン部分を分解し、外部から制御できるように配線を引き出します。内部のスイッチ機構をバイパスし、トランジスタで制御できるよう端子を露出させます。複数の写真で分解手順を確認できます。
ステップ2: Arduinoとのインターフェース
PIRセンサーのテスト
まずArduino NanoでPIRモーションセンサーを単体テストします。以下のコードをアップロードし、シリアルモニターで動作を確認します。
/* PIRセンサー */
int calibrationTime = 10; // センサーのキャリブレーション時間(データシートによると10-60秒)
int outputPin = 2; // LED用出力ピン
int inputPin = 4; // PIRセンサー入力ピン
int pirState = LOW; // 初期状態:動きなし
int val = 0; // ピン状態読み取り用変数
void setup() {
pinMode(outputPin, OUTPUT);
pinMode(inputPin, INPUT);
digitalWrite(outputPin, LOW); // 起動時の誤作動防止
Serial.begin(9600);
// センサーのキャリブレーション待機
Serial.print("calibrating sensor ");
for(int i = 0; i < calibrationTime; i++) {
Serial.print(".");
delay(1000);
}
Serial.println(" done");
Serial.println("SENSOR ACTIVE");
delay(50);
}
void loop() {
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(outputPin, HIGH);
if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(outputPin, LOW);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
トランジスタと水鉄砲の接続
シリアルモニターでセンサーが正常に動作することを確認したら、水鉄砲を接続します。トランジスタ(2N3904)と抵抗(330Ω)を以下のように配線します:
- トランジスタのベースを抵抗経由でArduinoの出力ピン(D2)に接続
- コレクタを水鉄砲のスイッチ端子の一方に
- エミッタをGNDに
- 水鉄砲のもう一方の端子を電源(5V等)に接続
これで動体検知水鉄砲の完成です。ワークショップ用にレーザーカッターで木製ケースを作成しましたが、3Dプリンターでも代用可能です。
注意点
コードにはセンサーのキャリブレーション用に10秒の遅延を入れています。起動直後はセンサーが安定するまで待機してください。
完成写真
ケースに収めた完成品の写真です。動体を検知すると自動で水を発射します。
製造プロセス
- ポンプアクション水鉄砲の進化:発明から世界市場リーダーへ
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- K30 CO2センサで室内空気質をリアルタイム監視する
- デジタル身長計の自作:Arduino Nanoとレーザー距離センサーで成長記録
- Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
- PIRセンサー連動 インタラクティブLEDマトリクスドアディスプレイ - ホリデーグリーティング
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- ESP32で作るIoT環境モニター:温湿度・気圧・CO2をWebダッシュボードで可視化
- SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー