Androidアプリで制御されるピープルカウンターを作成する
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
![]() |
| × | 3 | |||
| × | 3 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 3 | |||
![]() |
| × | 3 | |||
![]() |
| × | 3 | |||
| × | 1 | ||||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
| |||
![]() |
|
このプロジェクトについて
説明
まず、ピープルカウンターは、入口を通過する人数を検知する装置です。 2週間の休暇で部屋を確保するために人をカウンターにすると思っていました。また、入室許可のない人に警告するアラームとしてピープルカウンターを使いたかったのです。レーザーは速度の性質上、LDRで正確に何かを数えるのに最適なオプションであるため、カウントジョブにはLDRでレーザーを使用することにしました。私の部屋には3つの入り口(2つのドアと1つの窓)があるので、3つのレーザーと3つのLDRを使用しました。しかし、どの入り口のレーザーが開いているか、またはアラームがオンかどうかを選択したい場合は、デバイスをリモートで制御する必要があることに気付きました。そのため、作成したAndroidアプリとデバイスと通信するためのHC-06Bluetoothモジュールを追加しました。さらに、Androidアプリは、観察したい入口に入る人の数を表示します。
私のプロジェクトや記事をサポートするには、こちらの私のWebサイトにアクセスしてください:)
<図>
<図>

アプリの作成
コードをHTMLからJavaに変換したり、Pythonでアプリをプログラミングしたりするなど、Androidアプリを作成する方法はたくさんあります。ただし、Androidアプリを作成する場合はドラッグアンドドロップの構造であるため、MIT App Inventorが最も簡単な方法ですが、iOSとの互換性がまだないことを忘れないでください。
ピープルカウンター!はアプリの名前で、Screen1とScreen2という名前の2つの画面が含まれています。
<図>
Screen1
<図>
メイン画面に進むのはホーム画面ですが、まずMIT AppInventorで設定したパスワードを正しく入力する必要があります。 (私が設定したデフォルトのパスワードは「counter」です。)
<図>



Screen2
<図>
これはメイン画面であり、Arduinoボードを制御するためのメニューであり、Arduinoによって送信されたピープルカウンターの結果がこの画面に表示されます。
この画面では、どのレーザーがオンになっているか、アラームが開いているかどうかを選択できます。さらに、人のカウンターの結果を確認し、ゼロから開始するように設定できます。
<図>


<図>




レーザーとLDRを使用して人々を対抗させる方法
レーザー(放射線の誘導放出による光増幅)は、基本的に非常に直線を介して光のパッケージをターゲットに送るデバイスです。また、LDR(光依存抵抗器)は、レーザーがそれ自体に直接向けられている場合、光の強度の増加を簡単に検出できます。レーザーとLDRの間に障害物がある場合、LDRは光の強度の低下を検出します。したがって、最適なレベルの範囲でそれぞれの減少を数えることができれば、人のカウンターがあります。 LDRでの私の実験によると、最適レベルの範囲は150〜350でなければなりません。
<図>


接続
- ArduinoUno-モジュール
- ピン2 --------- Laser_Module_1
- ピン3 -------- Laser_Module_2
- ピン4 -------- Laser_Module_3
- ピン5 --------ブザー
- ピン6 -------- HC-06 Bluetoothモジュール(TX)
- ピン7 --------- HC-06 Bluetoothモジュール(RX)
- ピン8 --------- Control_Led_1
- ピン12 --------- Control_Led_2
- ピン13 ---------- Control_Led_3
- ピン9 ------- RGB_Module(R)
- ピン10 ------ RGB_Module(G)
- ピン11 ------- RGB_Module(B)
- AO ------------ LDR_1
- A1 ------------- LDR_2
- A2 ------------ LDR_3












すべての部品の接続を完了する前に、レーザーがLDRに直接向いていることを確認してください。
デバイスをテストしてテストビデオを録画した後、デバイスを3つの異なる入口用に3つの部分に分割しました。私はそれらを使用して以来、私の部屋のセキュリティについて疑問を持っていませんでした。
コード
- PeopleCounter_with_Lasers.ino
PeopleCounter_with_Lasers.ino Arduino
///////////////////////////////////////////////レーザーを使用してピープルカウンターを作成する//// Androidデバイス上で//// KutluhanAktarによる//// ///////////////////////// ////////////////////////プロジェクトの目的は、レーザーとLDRを使用して部屋に入る人の数を検出する人カウンターを作成することです。 androidアプリで制御します。////1Kオームの抵抗でLDRの片方の脚をGNDに接続します。////レーザーがLDRに直接向いていることを確認します。////必要に応じてピープルカウンターの結果は正確です。LDRの最適レベルを正しく設定してください。//////接続://// Arduino Uno // Laser_Module_1 //ピン2 ------------ ------------ // Laser_Module_2 //ピン3 ------------------------ // Laser_Module_3 //ピン4 ------------------------ //ブザー//ピン5 ------------------------ // HC-06Bluetoothモジュール//ピン6 ----------- -------------- TX //ピン7 ------------------------ RX // Control_Led_1 //ピン8 ------------------------ // Control_Led_2 //ピン12 ------------------ ------ // Control_Led_3 //ピン13 ------------------------ // RGB_Module //ピン9 ------ ------------------ R //ピン10 ------------------------ G //ピン11 ------------------------ B // LDR_1 // AO ----------------- ------- // LDR_2 // A1 ------------------------ // LDR_3 // A2 ------- ----------------- #includeint LaserPin_1 =2; //レーザーセンサーのピンを定義します。intLaserPin_2=3; int LaserPin_3 =4; int BuzzerPin =5; //ブザーpin.intControl_RX =6; // SoftWareSerialライブラリのRXおよびTXピン.intControl_TX =7; int RedPin =9; // RGBLEDセンサーのPWMピン.intGreenPin =10; int BluePin =11; int Control_Led_1 =8; //各LEDを各レーザーモジュールのステータスのマークとして設定します。intControl_Led_2=12; int Control_Led_3 =13; int LDR_1 =A0; // LDRのアナログピン.intLDR_2 =A1; int LDR_3 =A2; int LDR_1_Read; // LDRの値をグローバル変数として定義します。intLDR_2_Read; int LDR_3_Read; int Counter =0; //カウンターのデフォルト値をゼロに設定します。volatilebooleanAlarm_is_Activated=false; //アラームをオンにするかどうかを選択します。volatilebooleanAlarm_Initial=false; volatile boolean Counter_Detect =false; // Arduino.SoftwareSerial Control(Control_RX、Control_TX);に遅延時間を与える変数です。 // BluetoothModuleと通信するためのRxピンとTxピンを定義します。StringName="Control"; //モジュールに名前を付け、そのパスワードを設定します。intPassword=1111; String Uart ="9600,0,0"; void setup(){Serial.begin(9600); Control.begin(9600); //通信するHC-06Bluetoothモジュールを開始します。 // Change_BluetoothModule_Defaults(); // Bluetoothモジュールのデフォルトを変更する場合は、これをアクティブ化できます。 pinMode(LaserPin_1、OUTPUT); pinMode(LaserPin_2、OUTPUT); pinMode(LaserPin_3、OUTPUT); pinMode(RedPin、OUTPUT); pinMode(GreenPin、OUTPUT); pinMode(BluePin、OUTPUT); pinMode(Control_Led_1、OUTPUT); pinMode(Control_Led_2、OUTPUT); pinMode(Control_Led_3、OUTPUT);} void loop(){get_Data_From_LDR(); // LDRセンサーからデータを取得します。 if(Control.available()){// HC-06 Bluetoothモジュールが使用可能な場合、Commands()が続行されます。 char c =Control.read(); Serial.println(c); //端末を使用してアプリによって設定される文字を制御します。コマンド(c); } 目覚ましを設定する(); //アラーム機能を初期化します。 Set_Counter(); //ピープルカウンターを開始します。 } void Commands(char i){//特定の文字がアプリからArduinoに送信されるときに発生するイベントを選択します。 switch(i){case '1':Control.print(Counter);壊す;ケース「2」:Alarm_is_Activated =true;壊す;ケース「3」:Alarm_is_Activated =false;壊す;ケース「4」:digitalWrite(LaserPin_1、HIGH); digitalWrite(Control_Led_1、HIGH);壊す;ケース「5」:digitalWrite(LaserPin_1、LOW); digitalWrite(Control_Led_1、LOW);壊す;ケース「6」:digitalWrite(LaserPin_2、HIGH); digitalWrite(Control_Led_2、HIGH);壊す;ケース「7」:digitalWrite(LaserPin_2、LOW); digitalWrite(Control_Led_2、LOW);壊す;ケース「8」:digitalWrite(LaserPin_3、HIGH); digitalWrite(Control_Led_3、HIGH);壊す;ケース「9」:digitalWrite(LaserPin_3、LOW); digitalWrite(Control_Led_3、LOW);壊す;ケース 'r':カウンター=0;壊す; }} void get_Data_From_LDR(){// LDRセンサーのデータを取得します。 LDR_1_Read =analogRead(LDR_1); LDR_2_Read =analogRead(LDR_2); LDR_3_Read =analogRead(LDR_3); } void Set_Counter(){//ピープルカウンターを設定します。 if(LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150){//モーションが検出された場合。 Counter_Detect =true; } else {Counter_Detect =false; } if(Counter_Detect ==true){Counter =Counter + 1; delay(500); //部屋に正確に入る人の数を取得するために少し時間を与えます。 } if(Counter_Detect ==false){Counter =Counter; }} void Set_Alarm(){//調整可能な警報システムを設定します。 if(Alarm_is_Activated ==true){if(LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150){//モーションが検出された場合。 Alarm_Initial =true; } else {Alarm_Initial =false; } if(Alarm_Initial ==true){tone(BuzzerPin、500); Color_Change(255、0、0); delay(50); Color_Change(0、255、0); delay(50); Color_Change(0、0、255); delay(50); Color_Change(255、255、0); delay(50); Color_Change(80、0、80); delay(50); Color_Change(0、255、255); delay(50); Color_Change(255、255、255); delay(50); }} if(Alarm_is_Activated ==false || Alarm_Initial ==false){noTone(BuzzerPin); Color_Change(0、0、0); }} void Color_Change(int red、int green、int blue){// RGBモジュール変数を簡単に変更します。赤=255-赤;緑=255-緑;青=255-青; analogWrite(RedPin、red); analogWrite(GreenPin、緑); analogWrite(BluePin、blue);} void Change_BluetoothModule_Defaults(){//選択した値に関係なくBluetoothモジュールのデフォルト値を変更します。 Control.print( "AT + NAME"); //名前を変更します。 Control.println(Name); Serial.print( "名前が変更されました:"); Serial.println(Name); delay(2000); Control.print( "AT + PSWD"); //パスワードを変更します。 Control.println(パスワード); Serial.print( "パスワードが変更されました:"); Serial.println(パスワード); delay(2000); Control.print( "AT + UART"); //ボーレートを変更します。 BluetoothモジュールがHC-05の場合、ボーレートのデフォルト値は38400です。Control.println(Uart); Serial.print( "ボーレートが設定されています:"); Serial.println(Uart); delay(2000); Serial.println( "タスクが完了しました。"); //端末を使用してタスクが正しく完了したかどうかを確認できます。}
カスタムパーツとエンクロージャー
People Counterのコードファイル! 回路図

製造プロセス