- 必要なコンポーネント
- 回路図
- ガレージドアを制御するためのRaspberryPiのフラスコ設定
- スマートガレージドアオープナー用のPythonスクリプトの作成
- Raspberry PiWebサーバーのHTMLページを作成する
- {{pins.name}} {%ifpins.state == true%} は現在開いています
スマートフォンを使ってすべてをリモートで制御できるIoT(モノのインターネット)の時代に、なぜ鍵を持ち歩くのか。RFID、Bluetooth、Wi-Fi、LoRaなどのデバイスのワイヤレス制御をサポートするテクノロジーはたくさんあります。以前、ドアをワイヤレスで開閉するためのドアアラームとドア制御回路をいくつか構築しました。
- ArduinoRFIDドアロック
- Arduinoを使用した自動ドアオープナー
- ホールセンサーを使用した磁気ドア警報回路
- Googleアシスタントが制御するIoTベースのドアセキュリティアラーム
このチュートリアルでは、RaspberryPiを使用してスマートガレージドアオープナーを作成します。ここでは、スマートフォンを使用してガレージのドアを開閉するためのRaspberry PiWebサーバーが作成されます。
必要なコンポーネント
- RaspbianがインストールされたRaspberrypiボード
- リレーモジュール
- 接続線
Raspberry Piはすでにオペレーティングシステムでフラッシュされており、インターネットに接続できると想定されています。そうでない場合は、先に進む前に「RaspberryPi入門」チュートリアルに従ってください。ここでは、RasbianJessieがインストールしたRaspberryPi3を使用してい ます。
ここでは、HDMIケーブルを使用した外部モニターをディスプレイとして使用してRaspberryPiに接続します。モニターがない場合は、SSHクライアント(Putty)またはVNCサーバーを使用して、ラップトップまたはコンピューターを使用してRaspberrypiに接続できます。Raspberry Piのヘッドレスセットアップの詳細については、こちらをご覧ください。
回路図
ガレージドア開放機構をリレーの出力に接続します。ここでは、デモンストレーション用にLEDとリレーを接続しました。
ガレージドアを制御するためのRaspberryPiのフラスコ設定
ここでは、Flaskを使用してWebサーバーを作成しました 。これは、WebページからRaspberry Piにコマンドを送信し て、ネットワーク経由でロボットを制御する方法を提供 します。Flaskを使用すると、WebページからPythonスクリプトを実行でき、Raspberry PiからWebブラウザーに、またはその逆にデータを送受信できます。FlaskはPython用のマイクロフレームワークです。このツールはUnicodeベースであり、開発サーバーとデバッガーが組み込まれ、ユニットテストのサポートが統合されており、安全なCookieがサポートされており、使いやすいため、愛好家にとって便利です。
次のコマンドを実行して、フラスコをRaspberryPiにインストールします。
sudo apt-get update sudo apt-get install python-pip python-flask
次に、pipコマンドを実行して、Flaskとその依存関係をインストールします。
sudopipインストールフラスコ
Flaskを使用したプログラミングの詳細については、こちらをご覧ください。また、Flaskを使用してWebサーバーを介してロボットを制御し、WebページからRaspberry Piにメッセージを送信し、SmartContainerのRaspberryPiに重み値を送信した以前のプロジェクトも確認してください。
次に、ガレージドアのWebサーバー用のPythonスクリプトを作成します。
スマートガレージドアオープナー用のPythonスクリプトの作成
このスクリプトは、Raspberry Pi GPIOと対話し、Webサーバーをセットアップします。したがって、これはアプリケーションのコアスクリプトです。ドアオープナー用の完全なPythonスクリプトは最後にあります。ここでは、そのいくつかの部分について説明しました。
まず、フォルダを作成します。他のすべての必須フォルダーは、このフォルダーにのみ存在する必要があります。以下のコマンドを実行して、フォルダーを作成し、 このフォルダー内に app.py という名前のPythonファイルを作成します。
mkdir garage_door cd garage_door nano app.py
これにより、スクリプトを作成する必要があるNanoエディターが開きます。
重要なライブラリを含めることから始めます。
フラスコから RPi.GPIOをGPIOとしてインポートしますimportFlask 、render_template、request app = Flask(__ name __、static_url_path = '/ static')
次に、 ピン として辞書を作成して、ピン番号、名前、およびピンの状態を保存します。必要に応じて、複数のピンを使用できます。
ピン= { 14:{'名前': 'ガレージドア'、 '状態':GPIO.LOW} }
次に、ピンを出力として設定し、最初はローにします。
ピンインピンの場合:GPIO.setup(pin、GPIO.OUT)GPIO.output(pin、GPIO.LOW)
ここで、ピンの状態を読み取り、この状態を変数に格納するmain関数を作成します。
@ app.route( "/") def main(): ピン内のピンの場合: pins = GPIO.input(pin) ..
入力ボタンの状態を制御できるように、このデータをhtmlページに渡す必要があります。
render_template( 'main.html'、** templateData)を返します
ここで、ピン番号とアクションを含むURLからのリクエストを処理する関数を作成します。
@ app.route( "/
ピンをURLから整数に変換します。
changePin = int(changePin)
URLのアクション部分が「オープン」の場合は、次のようにします。
if action == "open": GPIO.output(changePin、GPIO.HIGH) if action == "close": GPIO.output(changePin、GPIO.LOW)
このチュートリアルの最後から完全なスクリプトをコピーし、ctrl + xを使用して保存してから、Enterキーを押すことができます。Pythonスクリプトを使用しました。ここで、Pythonスクリプトと対話するためのHTMLページを作成する必要があります。
Raspberry PiWebサーバーのHTMLページを作成する
同じ garage_door フォルダーに、 templates という名前の別のフォルダーを作成し、このフォルダー内に以下のコマンドを使用して.htmlファイルを作成します。
mkdirテンプレート cdテンプレート nanomain.html
で ナノ テキストエディタ、HTMLコードを記述します。あなたは編集することができます ページの一部を選択し、選択に応じてスタイルを設定します。リンクタグを使用してサードパーティのcssスキームを使用しました。完全なHTMLコードを以下に示します。
ガレージドアWebサーバー
{ピンのピンの%%}{{pins.name}} {%ifpins.state == true%} は現在開いています
ここで重要な部分は、開閉扉をとに状態を割り当てるために、ボタンを作成することで 、オープン と クローズ ボタンを。ボタンは、PythonスクリプトからGPIO状態を送信およびフェッチします。
上記のHTMLコードをエディターで使用して保存できます。これで、Webサーバーを起動する準備が整いました。
ターミナルを開き、 garage_door フォルダーに移動して、以下のコマンドを実行します
sudo python app.py
ブラウザを開き、ラズベリーパイのIPアドレスを入力して、Enterキーを押します。IPアドレスを見つけるには、ターミナルで以下のコマンドを実行できます。
ホスト名-I
このようなページが表示されます。
リレーモジュールがラズベリーパイに接続されていることを確認してください。プレス オープン リレーをオンにするか、ガレージドアを開くためのボタン。リレーの状態も確認できます。リレーをオンにするとすぐに、ボタンのテキストが [閉じる] に変更され、リレーがオフになります。これで、ボタンをもう一度クリックすると、リレーがオフになり、ボタンのテキストが再び 開く に変更されます。
サーバーを停止するには、ctrl + cを押します。
したがって、このリレーを市場ですぐに入手できるドアオープナーメカニズムに接続し、スマートフォンを使用してガレージドアの制御を開始するだけです。
デモビデオを以下に示します。