スマートフォンの近接センサーで自動ロック式のオフィスドアを作る
Pssst –ホームオフィス用のハイテク保護、または「ワークショップ」用の秘密のロックが必要です(わかりました、わかりました。実際にはダンジョン/ゲームルームです) 子供たちが理解できないと?私たちはあなたをカバーしました。そこにいるときは自動的に検出し、いないときはロックするDIYスマートロックを作成しましょう。
それはどのように機能しますか?誰も知らない!より具体的には、Bluetooth。
コンセプト
スマートフォンは、自分自身に関する情報を常に外の世界に公開する強力なデバイスです。これを行う1つの方法はBluetoothです。
検出モードでは、一意の識別番号をブロードキャストしますが、それ自体が検出されることを明確に許可していない場合でも、そのアドレスを知っている人は誰でもpingを試みることができます。応答が聞こえた場合、それは範囲内にあるかどうかを示します。
Bluetoothアダプターを備えたRaspberryPiをセットアップして、スマートフォンが範囲外にあるときは常に監視し、範囲外になると、リレーが作動してドアをロックします。
必要になります
- Raspberry Pi – CPUを集中的に使用するタスクではないため、どのモデルでも機能するはずですが、私は古いモデルBを使用しており、GPIOのピン配置はモデルによって若干異なる場合があります。以下のオンボードモードのセクションを参照してください。また、有線イーサネット接続やWi-Fiの構成などの基本事項も必要です。さらに、SDカードとマイクロUSB電源ケーブル。
- BluetoothUSBアダプター。 Adafruitは、動作が確認されたBluetooth 4.0 BLEモジュール(Bluetooth 4.0とは何ですか?)を販売していますが、このプロジェクトのためだけに新しいモジュールを購入する前に、すでに横になっているものをテストする必要があります。日本で購入した古い標準のBluetoothミニアダプターが正常に動作しているように見えます。転送速度や接続の信頼性は気にしません。デバイスが正常に動作しているかどうかを確認するために、すばやくハンドシェイクを送信するだけです。
- GPIOブレイクアウトボード(「コブラー」)とジャンパーケーブル。 Piのピンから直接作業することもできますが、各ピンにラベルを付けるとはるかに簡単になり、とにかくたったの6ドルです。
- リレーボード。ここにはさまざまな選択肢があります。マイクロコントローラーで使用するように設計されていて、5アンペアで少なくとも12ボルトを駆動できる場合は、何でも機能します。私はこれに似た一般的な4チャンネルボードを約5ドルで使用しましたが、あなたが自分の作業方法を知っていると仮定します。
- 12 / 24V電磁石ロック。ただし、電子ソレノイドロックも機能するはずです。私が購入したものは180KGの保持力があり、取り付けプレートと説明書が付属しており、約35ドルです。
- 12 / 24V電源。マグネットロックには別の電源が必要です。何をするにしても、Piから電源を引き出そうとしないでください。
- Lock.py Pythonアプリですが、これについては説明します。
Bluetoothの操作
Bluetoothはこのプロジェクトの中心であるため、Bluetoothサポートをインストールして、アダプターをテストすることから始めましょう。これは、Piから直接行うことも、リモートでSSHで接続することもできます(PiにSSHで接続するようにWindowsを設定する方法)。
sudo apt-get install bluez python-bluez
ドングルをまだ挿入していない場合は挿入し、報告内容を見てみましょう。
hcitool dev
出力に何かがリストされている場合は、問題ありません。次に、Pythonスクリプトを使用して、近くのBluetoothデバイスをポーリングし、一意のデバイスアドレスを取得します。これを行う必要があるのは、デバイスごとに1回だけです。
wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py python query.py
「0台のデバイスが見つかりました」と表示された場合は、互換性のあるUSB Bluetoothドングルがないか、スマートフォンが検出されません。ただし、絶望しないでください。iPhoneでBluetooth設定ページを実際に開いて検出モードにする必要があることがわかりました。その後、これが発生しました:
では、検出を行うソフトウェアの最初のステージを作成しましょう。 detect.py というPythonアプリを作成します 、Nanoで開きます。
nanodetect.py
このサンプルコードを貼り付けます:
#!/ usr / bin / python import bluetooth import time while True:print "Checking" + time.strftime( "%a、%d %b%Y%H:%M:%S "、time.gmtime())result =bluetooth.lookup_name('78:7F:70:38:51:1B '、timeout =5)if(result!=None ):print "User present" else:print "User out of range" time.sleep(10)
Bluetoothデバイスのアドレスで次の行を調整します。
result =bluetooth.lookup_name('78:7F:70:38:51:1B '、timeout =5)
CTRL-X を押します および Y 閉じて保存します。同じコードを実行すると、次のように表示されます:
Pythonに触れたことがない場合でも、コードは非常に簡単に理解できる必要があります。10秒ごとに特定のBluetoothデバイスをスキャンし、見つかったかどうかに応じて異なるメッセージを出力します。携帯電話のBluetoothを切り替えて、範囲内外への移動をシミュレートします(実際には約4m)。スキャンの間隔は増減できますが、ドアのロックが解除されるまで10秒待つのが妥当な時間だと感じました。これが、このプロジェクト全体での作業です。
追加する必要があります。これを行うことによる消費電力についてはわかりませんが、デバイスにpingを頻繁に実行すると、必然的により多くの電力が消費されると思います。テストで明らかなパフォーマンスの問題は見られませんでしたが、バッテリーの寿命が深刻な懸念事項である場合は、スキャンループをアクティブまたは非アクティブにするスイッチをオフィス内に設置することを検討してください。そうすれば、中に入るとロックを一時停止できます。システムを終了し、離れるときにスキャンを再度アクティブにします。
おめでとうございます。これで、範囲内にいることを認識できるPythonアプリができたので、それに基づいて行動を開始できます。
GPIOボードモード
続行する前に、使用するボードモードを把握する必要があります。正解も不正解もありません。リテラルのPIN番号を指定するか仮想GPIOのPIN番号を指定するかに影響するだけです。
デフォルトでは、文字通りのピン番号(「ボードモード」)を使用します。左下のピン1から始まります(右側にUSBポートがあるPiを見下ろす場合)。ピン2はそのすぐ上にあります。
ただし、GPIOブレイクアウト(「コブラー」)ボードを使用している場合、使用しているラベルは「BCM」(Broadcom SOCチャネル)と呼ばれる代替モードのものであり、通常、番号の前にGPIOまたはPが付けられています。 GPIOブレイクアウトは厳密には必要ありません。それは、物事を簡単にするだけです。ブレイクアウトボードがなく、購入したくない場合は、次の図を使用してください。
元のモデルBリビジョン1、リビジョン2、およびモデルB +とPi2はすべて異なるピン配列を持っていることに注意してください。ボードに適した図については、このStackExchangeの質問を参照してください。
このプロジェクトコードでは、私が持っているAdafruitブレイクアウトボードに対応するBCMGPIOナンバリングシステムを使用しています。リテラルピンモードを使用する場合は、若干の変更が必要です。
リレーの配線
ブレイクアウトボードを取り付け、ピン1と2(Piの隅にあるもの)からのワイヤーがブレイクアウトの3v3と5V0に接続されていることを確認します。これを確認するには、電圧テスターを引き出すことをお勧めします。
先に進む前に、他の誰かがRaspberry Piで特定のリレーを使用したかどうかを確認してください(または、動作することがわかっているリレーを事前に見つけてください)。アクティブにするために5Vを必要とするものもありますが、RPiはGPIO出力ピンに3.3Vしか供給できません。たまたま、私が使用しているものは3.3Vに満足しているので、追加の回路は必要ありませんでした。 5V0からVCC だけです。 、 GNDからGND 、および最初のリレー入力用のGPIOピン23 。
GPIOに関する以前のチュートリアルでは、必要に応じてトランジスタ回路を配線して3.3Vを完全な5Vにスケールアップする方法を示しました(実際、そのチュートリアルでは同じリレーボードを使用しましたが、5Vは必要ありませんでした。結局のところ)。
リレーが作動するとカチッという音が聞こえるので、電磁石を配線する必要はありません。
次に、GPIOポートと対話するためのコードをいくつか取得しましょう。
まず、Pythonの外部でテストして、すべてがポート自体で機能していることを確認します。いくつかの便利なコマンドラインツールを提供するwiringPiをインストールします。
git clone git://git.drogon.net/wiringPi cd wireingPi ./build
インストールしたら、GPIOピン23を出力として構成します。
gpio -g mode 23 out
次に、すべてのポートをクイックスキャンして確認します
gpio -g readall
これに似たものがありますが、GPIOピンが多いため、モデルB +またはPi2では長くなる可能性があります。
詳細:スマートフォン近接センサーを使用してオフィスのドアを自動ロックする
製造プロセス
- 銀行の金庫室
- シンプルな近接センサー回路とアプリケーションの操作
- Bluetoothベースのスマートセンサーネットワークの最大の問題を検討してください
- サイプレス:Bluetooth MCUは、ユビキタススマートフォン接続を備えたメッシュネットワーキングを提供します
- RPiを備えたライントラッキングセンサー
- RPiを使用した環境センサーAPI
- デジタルインターフェースを備えたシンプルなアナログ近接センサー(Raspberry Pi用)[最終更新日:2014年2月7日]
- Portentaおよび熱電対センサー(MAX6675を使用)
- K30センサーによるCO2モニタリング
- LEDを制御するBluetoothを搭載したArduino!
- ArduinoまたはESP8266を搭載した静電容量式指紋センサー