セキュリティは私たちの日常生活における主要な関心事であり、デジタルロックはこれらのセキュリティシステムの重要な部分になっています。私たちの場所を保護するために利用できるセキュリティシステムには多くの種類があります。いくつかの例は、PIRベースのセキュリティシステム、RFIDベースのセキュリティシステム、デジタルロックシステム、バイオマトリックスシステム、電子コードロックです。この投稿では、Arduinoを使用して秘密のノック検出ドアロックを作成します。これは、ドアでのノックのパターンを検出でき、ノッキングパターンが正しいパターンと一致する場合にのみロックを開きます。適切に機能するデモについては、最後のビデオを確認してください。
コンポーネント:
- Arduino Uno
- ボタンを押す
- ブザー
- 1M抵抗
- 力
- 接続線
- ボックス
- サーボモーター
回路の説明:
このノッキングパターン検出器の回路図は非常にシンプルで、プロジェクトのプロセス全体を制御するためのArduino、プッシュボタン、ブザー、およびサーボモーターが含まれています。Arduinoは、ブザーまたはセンサーからパスワードを取得する、パターンを比較する、ゲートを開閉するためにサーボを駆動する、パターンをArduinoに保存するなど、完全なプロセスを制御します。
押しボタンは、アースに対してArduinoのピンD7に直接接続されています。また、ArduinoのアナログピンA0には、グランドに対してブザーが接続されており、A0とグランドの間にも1Mの抵抗があります。サーボモータはまた、アルドゥイーノのPWMピンD3に接続されています。
Arduinoでの摂食ノッキングパターン:
この回路では、ブザーまたはペイゾセンサーを使用してシステムのノック入力パターンを取得しました。ここでは、プッシュボタンを使用して、センサーからの入力を取得し、それをArduinoに保存できるようにしています。このシステムは、モールス信号のパターンからアイデアを取り入れて設計されていますが、それとまったく同じではありません。
ここでは、デモンストレーション用に段ボール箱を使用しました。入力を取得するには、プッシュボタンを押した後にボードをノックオーバーします。ここでは、500ミリ秒という時間を念頭に置いてノックしました。この500msは、コードで修正し、入力パターンがそれに依存しているためです。この500msの期間は、入力が1または0であったことを定義します。このことを理解するには、以下のコードを確認してください。
ノックすると、Arduinoは最初のノックから2番目のノックまでの時間を監視し始め、それを配列に入れます。このシステムでは、6回のノックを行っています。これは、5つの期間を取得することを意味します。
ここで、期間を1つずつ確認します。まず、最初のノックと2番目のノックの間の時間差が500ミリ秒未満の場合は0になり、500ミリ秒を超える場合は1になり、変数に保存されます。その後、2回目のノックから3回目のノックまでの時間をチェックします。
最後に、0と1の形式(バイナリ)で5桁の出力を取得します。
作業説明:
ノックベースのスマートロックプロジェクトの作業は簡単です。まず、システムにパターンを保存する必要があります。したがって、6回ノックするまでプッシュボタンを押し続ける必要があります。このプロジェクトでは、6回のノックを使用しましたが、ユーザーは必要に応じて変更できます。 6回ノックした後、Arduinoはノックパターンを見つけてEEPROMに保存します。入力パターンを保存した後、すぐにプッシュボタンを押して放し、センサーからArduinoに入力してロックを開きます。今、私たちは6回ノックする必要があります。その後、Arduinoはそれをデコードし、保存されたパターンと比較します。一致が発生した場合、Arduinoはサーボモーターを駆動してゲートを開きます。
注:プッシュボタンを押すか押し続けると、Arduinoは10秒のタイマーを開始して6回すべてノックします。ユーザーがこの10秒以内にノックする必要があることを意味します。また、ユーザーはシリアルモニターを開いてログを表示できます。
プログラミングの説明:
プログラムでは、まずヘッダーファイルをインクルードし、入力ピンと出力ピンを定義し、以下のコードセクションの完全なコードに示されているようにマクロと宣言された変数を定義します。
この後、 セットアップ 機能で、定義されたピンに方向を与え、サーボモーターを始動します。
void setup(){pinMode(sw、INPUT_PULLUP); myServo.attach(servoPin); myServo.write(180); Serial.begin(9600); }
その後、入力を受け取り、入力パターンまたはノック時間を配列に保存します。
void loop(){int i = 0; if(digitalRead(sw)== LOW){Serial.println( "Start"); delay(1000); 長いstt =ミリ秒(); while(millis()<(stt + patternInputTime)){int temp = analogRead(A0); if(temp> sensitive && flag == 0 && i <= patternLenth){….。…….。
その後、入力パターンをデコードします
for(int i = 0; i
そして、プッシュボタンがまだ押されている場合は保存します
if(digitalRead(sw)== 0){for(int i = 0; i
そして、プッシュボタンがまだ押されていない場合、Arduinoは入力されたデコードされたパターンを保存されたパターンと比較します。
else {if(knok == 1){for(int i = 0; i
一致するパスワードがある場合、サーボはゲートを開きます。それ以外の場合は何も起こりませんが、ユーザーはシリアルモニターで結果を確認できます。
Serial.println(acceptFlag); if(acceptFlag> = patternLenth-1){Serial.println( "Accepted"); myServo.write(openGate); delay(5000); myServo.write(closeGate); } else Serial.println( "Rejected"); }
以下の完全なコードは、デモビデオで確認できます。