ラズベリーパイ用DIY赤外線モーションセンサーシステム
2015年7月に、コロラド州立大学で高校のインターンシップを修了しました。私が取り組んだプロジェクトの1つは、RaspberryPi用の赤外線近接センサーのプロジェクトでした。
この短距離赤外線センサーは、ライン追跡ロボットやモーションアクティブカメラなど、さまざまなアプリケーションに起因する可能性があります。
必要なもの:
1.ラズベリーパイ(1)
2.ブレッドボード(1)
3.穴あきプロトタイピングプリント回路基板–任意のサイズ(1)
4.コーティングされたワイヤー(できれば赤、黒、黄色)。
5.赤外線LEDエミッター(1)
6.赤外線LED検出器(1)
7.メス–メスジャンパーケーブル(3)
8.通常のLED–任意の色(1)
9.電気テープ–オプション(1)
10.ヘッダーピン–オプション(3)
11. LM358N9013オペアンプ(1)
12. 1kトリマポテンショメータ(1)
13. 39オーム抵抗(1)
15. 1kオーム抵抗(1)
16. 10kオーム抵抗(1)
17. 6.8kオーム抵抗(1)
18. 3.5kオーム抵抗(1)
19.小型ドライバー–ポテンショメーター(1)で使用
20.ワイヤーストリッパー(1)
21.ワイヤーカッター(1)
22.はんだおよびはんだごて(1)
実際にデバイスを作成する前に、まずブレッドボードを使用して上記の回路図に従ってプロトタイプを作成してください。電力はRaspberryPiの5vGPIOピンから供給され、赤外線エミッター、レシーバー、オペアンプ、およびポテンショメーターに分配されます。それぞれにそれぞれの抵抗があります。オペアンプは2つの異なる抵抗に接続されていることに注意してください。これは意図的なものであり、出力電圧を3.3v(入力ピンに許可される最大電圧)に下げる分圧器として機能します。完了したら、メス-メスジャンパーケーブルを使用して、プロトタイプをRaspberryPiにある5vおよびアースGPIOピンに接続します。 LEDが点灯しない場合は、ポテンショメータのつまみを慎重に右に回し、点灯したらすぐに停止してください。そうすることで、センサーの範囲と感度が最大になります。電源を入れたときにライトが点灯する場合は、ライトが消えるまでノブを左に回してから、ノブをゆっくりと右に回し、ライトがオンになるとすぐに停止します。
実用的なプロトタイプが作成されたら、そのコンポーネントを穴あき回路基板に慎重に移します。回路基板の正端子と負端子の側面を指定し(ブレッドボードの電源タップと同様)、各コンポーネントが適切に配置されていることを確認します。各コンポーネントを所定の位置にはんだ付けし、必要に応じてジャンパーケーブルを使用して接続します。最後に、アース、出力、および電源を3つのそれぞれのヘッダーピンに接続します。ワイヤーカッターを使用して突き出たワイヤーをすべて取り除き、メス-メスジャンパーケーブルを使用してデバイスが正しく機能しているかどうかをテストします。そうでない場合は、マルチメーターを使用して、すべての接続が適切に行われていることを確認することを検討してください。
注:必要に応じて、赤外線送信機に電気テープを追加します。そうすることで、センサーの範囲が広がります。
機能するデバイスを作成したら、センサーをRaspberryPiカメラと統合するためのコードを作成する必要があります。以下に2つの例を示します。
1.最初の「picam」は、モーション検出時に写真を撮る前に、プレビューウィンドウに名前を付けて設定するようにユーザーに促します。次に、プログラムは画像を表示するために必要なコマンドを出力します。
// PiCam:動きが検出されたときに写真を撮ります。ユーザーに画像名とプレビューの長さを入力するように求めます。
#include #include #include #include #define SEN 0 #define MAXSIZE 50 #define A "Y" #define B "O"
int system(const char * command);
int main(){wiringPiSetup(); pinMode(SEN、INPUT); char answer1 [MAXSIZE]; char answer2 [MAXSIZE];文字名[MAXSIZE] =B; char firstprefix [MAXSIZE] =“ raspistill -hf -hf -t“; char secondprefix [MAXSIZE] =“ xdg-open“; printf(“ \ n最初に画像に名前を付けますか?(Y / Nと入力してEnterキーを押します):“); scanf(“%s”、answer1); if(strcmp(answer1、A)==0){printf( "動画を何と呼びますか?:"); scanf(“%s”、name); strcat(name、“ .jpg”); } printf( "カメラが写真を撮るまでどのくらい待機しますか?(ミリ秒単位で時間を入力し、Enterキーを押します):"); scanf(“%s”、answer2); strcat(firstprefix、answer2); strcat(firstprefix、” -o“); if(digitalRead(SEN)==LOW)printf(“ \ nCAMERA OFF \ nエラー:配線を確認するか、センサーから離れてください。\ n”); else {printf(“ \ nCAMERA ON \ n1。写真を撮るには、ビデオカメラの前に立ちます。\ n2。指定した時間後に写真が撮られます。\ n3。画像を表示するには、表示されるコマンドを入力します。\ n \ n”); for(;;){if(digitalRead(SEN)==LOW){system(strcat(firstprefix、name));壊す; }}} strcat(secondprefix、name); printf( "*%s *と入力し、Enterキーを押して画像を表示します!\ n"、secondprefix); return(0); }
詳細:RaspberryPi用のDIY赤外線モーションセンサーシステム
製造プロセス