バックパックアラーム
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
バックパックアラームの必要性を感じたことはありますか?バックパックを持って公共の場所に座って、誰かがそれを盗むのではないかと恐れたことはありますか?もしそうなら、これはあなたのためのプロジェクトです!
LSM303コンパス/加速度計を使用して、このプロジェクトはバックパックが移動されたときにアラームを鳴らします。コンパスを使用して向きを監視し、10度を超える動きがあるとアラームを鳴らします。
ステップ1:Arduinoを配線する
LSM303ブレークアウトボードを次のようにArduinoに接続します:
- SDA-SDA
- SDL-SDL
- VIN-5v
- GND-GND
詳細については、Adafruitのガイドをご覧ください。
ピエゾブザーを次のようにArduinoに接続します:
- +からピン13
- -GNDへ
ステップ2:ライブラリをインストールする
Adafruit_LSM303DLHCライブラリとAdafruit_Sensorライブラリをzipファイルとしてダウンロードします。
ArduinoIDEを開きます。お持ちでない場合は、こちらからダウンロードしてください。
[スケッチ]> [ライブラリを含める]> [Add.ZIPライブラリ...]に移動します...
<図>次に、前にダウンロードした.ZIPファイルを見つけて選択します。
<図>
ステップ3:Arduinoをプログラムする
Arduino IDEを開き、新しいファイルを作成します。すでにそこにあるものをすべて削除し、次のコードを貼り付けます。
//ライブラリを含める#include #include #include #include //感度を調整しますconstint sens =10; / /同時にこのセンサーに一意のIDを割り当てますAdafruit_LSM303_Mag_Unifiedmag =Adafruit_LSM303_Mag_Unified(12345); void setup(void){//デバッグ用//Serial.begin(9600); //Serial.println("Starting ... "); //ピン13を設定しますpinMode(13、OUTPUT); //センサーを初期化しますif(!mag.begin()){// LSM303の検出に問題がありました...接続を確認してくださいdigitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW); delay(500); digitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW); delay(500); while(1); } // 5秒待つdelay(5000); //開始時にアラートを送信digitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW);} //センサー値を取得するための関数intgetDeg(void){//新しいセンサーイベントを取得しますsensors_event_t event; mag.getEvent(&event);フロート円周率=3.14159; //ベクトルの角度を計算しますy、x float heading =int((atan2(event.magnetic.y、event.magnetic.x)* 180)/ Pi); // 0-360に正規化しますif(heading <0){heading =360 + heading; } return heading;} void loop(void){//センサー値を取得しますint oldDeg =getDeg(); delay(1000); int newDeg =getDeg(); if(newDeg <(oldDeg-sens)&&oldDeg!=0 &&newDeg!=0){//アラームを鳴らすdigitalWrite(13、HIGH); //デバッグ用//Serial.println("Triggered "); //Serial.println( ""); } else if(newDeg>(oldDeg + sens)&&oldDeg!=0 &&newDeg!=0){//アラームを鳴らすdigitalWrite(13、HIGH); //デバッグ用//Serial.println("Triggered "); //Serial.println( ""); } //デバッグ用//Serial.print("New: "); //Serial.println(newDeg); //Serial.print("Old: "); //Serial.println(oldDeg); //Serial.println( "")。}
Arduinoを接続し、コードをコンパイルしてアップロードします。
ステップ4:テストしてください!
すべてが正しく行われた場合、Arduinoのリセットボタンを押した後、ビープ音が数回鳴り、3秒間沈黙し、さらに長いビープ音が鳴ります。 LSM303ブレークアウトを回転させると、アラームがオンになるのが聞こえるはずです。センサーの感度が高すぎる場合は、上部にあるコードの「sens」変数を増やしてください。より感度が必要な場合は、「sens」変数を減らします。
3秒の遅延の前に2回の長いビープ音が鳴る場合は、配線に問題があります。すべての接続を確認してください。
動作しないように見える場合は、ライブラリに適切な名前が付けられていない可能性があります。コードで、最初の「#include」ステートメントを削除します。次に、Sketch> Include Libraryに移動し、「Wire」、「Adafruit LSM303DLHC」、および「AdafruitUnifiedSensor」ライブラリを選択します。それでもうまくいかない場合は、近くに強い磁場がないことを確認してください。別の部屋、または外に行きます。また、ブレイクアウトボードがある程度水平で、地面と平行になっていることを確認してください。
ステップ5:キーを追加する
これでプロジェクトが機能するはずです。9VバッテリーをArduinoのバレルジャックに接続し、バックパックにマウントするだけで、準備完了です。ただし、アラームを作動/解除するたびにバッテリーのプラグを抜き差しするのはちょっと面倒です。そこで、6.35mmオーディオジャックが登場します。ほとんどの人がヘッドホンに持っている3.5mmジャックの代わりに、6.35mmジャックを使用するとセキュリティが向上します。ただし、代わりに使用したいキー付きスイッチまたはその他のスイッチがある場合は、遠慮なく使用してください。
とにかく、キーを追加するには、バッテリーとDCバレルジャックの間にスイッチ/キーを配線します。
<図>これらのいずれかを使用している場合は、ワイヤの1つを切断し、必要に応じて延長ワイヤを追加して、スイッチを追加します。私の場合、端子台バレルジャックを入手し、それを使用して配線しました。私はセキュリティについてあまり心配していないので、私のキーは単純なトグルスイッチですが、創造性を発揮することができます。リードスイッチとマグネット、RFID、さらにはスマートフォンアプリを使用してください!
ステップ6:マウントします!
おめでとうございます!これで、キー付きの完全に機能するアラームができました。あなたが今しなければならないのはあなたのバックパックにそれをマウントすることです。側面にブザー用と鍵穴用の穴を開けます。結束バンドを使用しましたが、より恒久的な解決策を使用することもできます。センサーが地面とある程度平行に取り付けられ、ブザーの穴が塞がれていないことを確認してください。
<図> <図> <図>
さらに進む
このアラームはバックパックに限定されません。ドア、クッキージャー、冷蔵庫、または保護したいものに追加します。可能性は無限大!
コード
- コード
コード Arduino
Arduinoコード//ライブラリを含める#include#include #include #include //感度を調整しますconstint sens =10; //同時にこのセンサーに一意のIDを割り当てますAdafruit_LSM303_Mag_Unifiedmag =Adafruit_LSM303_Mag_Unified(12345); void setup(void){//デバッグ用//Serial.begin(9600); //Serial.println("Starting ... "); //ピン13を設定しますpinMode(13、OUTPUT); //センサーを初期化しますif(!mag.begin()){// LSM303の検出に問題がありました...接続を確認してくださいdigitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW); delay(500); digitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW); delay(500); while(1); } // 5秒待つdelay(5000); //開始時にアラートを送信digitalWrite(13、HIGH); delay(500); digitalWrite(13、LOW);} //センサー値を取得するための関数intgetDeg(void){//新しいセンサーイベントを取得しますsensors_event_t event; mag.getEvent(&event);フロート円周率=3.14159; //ベクトルの角度を計算しますy、x float heading =int((atan2(event.magnetic.y、event.magnetic.x)* 180)/ Pi); // 0-360に正規化しますif(heading <0){heading =360 + heading; } return heading;} void loop(void){//センサー値を取得しますint oldDeg =getDeg(); delay(1000); int newDeg =getDeg(); if(newDeg <(oldDeg-sens)&&oldDeg!=0 &&newDeg!=0){//アラームを鳴らすdigitalWrite(13、HIGH); //デバッグ用//Serial.println("Triggered "); //Serial.println( ""); } else if(newDeg>(oldDeg + sens)&&oldDeg!=0 &&newDeg!=0){//アラームを鳴らすdigitalWrite(13、HIGH); //デバッグ用//Serial.println("Triggered "); //Serial.println( ""); } //デバッグ用//Serial.print("New: "); //Serial.println(newDeg); //Serial.print("Old: "); //Serial.println(oldDeg); //Serial.println( "")。}
回路図
コンパスへ: 青-SDA
黄色-SDL
黒-GND
赤-VIN
製造プロセス