- Bluetooth通信に必要なパッケージのインストール:
- Bluetoothを介したデバイスとRaspberryPiのペアリング:
- 回路図:
- AndroidアプリBlueTermを使用したACアプライアンスの制御:
- プログラミングの説明:
Raspberry Piは、インターネットを介したワイヤレス通信のシームレスな機能により、IoTプロジェクトで非常に人気があります。Raspberry Pi 3にはWi-FiとBluetoothが組み込まれており、Bluetoothは非常に人気のあるワイヤレス通信プロトコルです。そこで本日は、Raspberry Pi3とBluetoothを使用してスマートフォンから家電製品を制御します。
ここでは、Bluetoothが組み込まれているRaspberry Pi 3を使用しているため、外部USBBluetoothドングルを使用する必要はありません。それとは別に、このワイヤレスホームオートメーションプロジェクトにはリレーモジュールのみが必要です。ここでは、無線通信にRFCOMMBluetoothプロトコルを使用しています。
PythonでのBluetoothのプログラミングは、ソケットプログラミングモデルに従い、Bluetoothデバイス間の通信はRFCOMMソケットを介して行われます。RFCOMM(Radio Frequency Communication)は、エミュレートされたRS-232シリアルポートを提供するBluetoothプロトコルであり、シリアルポートエミュレーションとも呼ばれます。 Bluetoothシリアルポートプロファイルは、このプロトコルに基づいています。 RFCOMMは、幅広いサポートと公開されているAPIにより、Bluetoothアプリケーションで非常に人気があります。 L2CAPプロトコルにバインドされています。
Raspberry Pi 2を使用している場合は、外部BluetoothドングルまたはBluetoothモジュールHC-06を使用する必要があります。これらの外部Bluetoothデバイスの使用については、以前のプロジェクトを確認してください。Bluetooth経由のAndroidアプリを使用したRaspberry Pi GPIOの制御、およびRaspberryPiを使用した音声制御LED。また、以前のRaspberryPiプロジェクトといくつかの優れたIoTプロジェクトも確認してください。
Bluetooth通信に必要なパッケージのインストール:
開始する前に、RaspberryPiでBluetooth通信をセットアップするためのいくつかのソフトウェアをインストールする必要があります。RaspbianJessieがインストールされたメモリカードがRaspberryPiで準備されている必要があります。この記事をチェックして、Raspbian OSをインストールし、RaspberryPiの使用を開始してください。したがって、最初に以下のコマンドを使用してRaspbianを更新する必要があります。
sudo apt-get update sudo apt-get upgrade
次に、Bluetooth関連のパッケージをいくつかインストールする必要があります。
sudo apt-get install bluetooth blueman bluez
次に、RaspberryPiを再起動します。
sudoリブート
BlueZは、オープンソースプロジェクトであり、公式のLinuxBluetoothプロトコルスタックです。すべてのコアBluetoothプロトコルをサポートし、公式のLinuxカーネルの一部になりました。
Bluemanは、Bluetoothデバイスを管理および制御するためのデスクトップインターフェイスを提供します。
最後に、Python言語を使用してRFCOMMを介してデータを送受信できるように、Bluetooth通信用のPythonライブラリが必要です。
sudo apt-get install python-bluetooth
RaspberryPiのGPIOサポートライブラリもインストールします。
sudo apt-get install python-rpi.gpio
これで、RaspberryPiでのBluetooth通信に必要なパッケージのインストールが完了しました。
Bluetoothを介したデバイスとRaspberryPiのペアリング:
携帯電話などのBluetoothデバイスとRaspberryPiのペアリングは非常に簡単です。ここでは、AndroidスマートフォンをRaspberryPiとペアリングしました。以前、BlueZをPiにインストールしました。これは、Bluetoothデバイスを管理するための 「bluetoothctl」 と呼ばれるコマンドラインユーティリティを提供します。
次に、以下のコマンドで bluetoothctl ユーティリティを開きます。
sudo bluetoothctl
'help'と 入力すると、 bluetoothctl ユーティリティのすべてのコマンドを確認できます。今のところ、以下のコマンドを指定された順序で入力する必要があります。
#電源オン#エージェントオン#検出可能オン#ペアリング可能#スキャンオン
最後のコマンド 「スキャンオン」の 後、Bluetoothデバイス(携帯電話)がリストに表示されます。モバイルでBluetoothがオンになっていて、近くのデバイスから見えるようになっていることを確認してください。次に、デバイスのMACアドレスをコピーし、次のコマンドを使用してペアリングします。
ペア
次に、ターミナルコンソールでパスコードまたはPINの入力を求められ、そこにパスコードを入力してEnterキーを押します。次に、プロンプトが表示されたら携帯電話に同じパスコードを入力すると、RaspberryPiと正常にペアリングされます。また、このプロセス全体については、以前のGPIO制御チュートリアルで提供されたビデオで説明しました。こちらがYouTubeの直接リンクです。
前に述べたように、デスクトップインターフェイスを使用して携帯電話をペアリングすることもできます。Bluemanをインストールすると、以下に示すようにRaspberry Piデスクトップの右側にBluetoothアイコンが表示されます。これを使用すると、簡単にペアリングを行うことができます。
回路図:
このRaspberryPiベースのBluetoothControlled Home Automationの回路図は非常にシンプルで、リレーモジュールの入力信号ピンをRaspberry Piのピン40(GPIO 21)に接続し、他の2つのピン(リレーモジュールのVccとGND)をピン2と6に接続しました。 Raspberry Pi 3の。次に、回路図に示すように、ACCFLバルブをリレーに接続しました。
リレーを初めて使用し、リレーとACアプライアンスとの接続について詳しく知りたい場合は、この記事を確認してください。
AndroidアプリBlueTermを使用したACアプライアンスの制御:
携帯電話をペアリングした後、Bluetoothシリアルアダプターを使用してRaspberry Piと通信するためのAndroidアプリをインストールして、RaspberryPiのGPIOピンを制御できるようにする必要があります。前に述べたように、RFCOMM / SPPプロトコルはBluetoothを介したシリアル通信をエミュレートするため、このプロトコルをサポートするBlueTermアプリをここにインストールしました。
RFCOMMソケットを介した通信をサポートする他のBluetoothターミナルアプリを使用することもできます。
BlueTermアプリをダウンロードしてインストールした後、ターミナルから以下のPythonプログラムを実行し、BlueTermアプリからペアリングされた raspberrypi デバイスを同時に接続します。
接続が成功すると、以下に示すように、アプリの右上隅に connected:raspberrypi が表示 さ れます。
これで、BlueTermアプリから「1」または「0」を入力して、GPIOピンをそれぞれHIGHおよびLOWに することができます。これにより、このピンに接続されたリレーモジュールがトリガーされ、リレーに接続されたAC電球がさらに制御されます。'q'を押してプログラムを終了します。Google Voice Typing Keyboard を使用して、Voiceを使用してGPIOを制御でき ます。最後にあるビデオで完全なデモを確認してください。
これが、Bluetooth経由でAndroidアプリを使用してACアプライアンスをワイヤレスで制御する方法です。ArduinoでBluetoothを使用する方法も確認してください。
プログラミングの説明:
AndroidアプリでRaspberryPi GPIOを制御するためのPythonプログラムは、非常にシンプルで自明です。BluetoothRFCOMM通信に関連するコードについて少し学ぶ必要があるだけです。まず、Python言語でBluetoothを制御できるようにするBluetoothソケットライブラリをインポートする必要があります。前のセクションで同じライブラリをインストールしました。
Bluetoothをインポートする
以下は、Bluetooth通信を担当するコードです。
server_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)port = 1 server_socket.bind(( ""、port))server_socket.listen(1)client_socket、address = server_socket.accept()print "Accepted connection from"、address while 1:データ= client_socket.recv(1024)
ここで、それらを1行ずつ理解できます。
server_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM): BluetoothRFCOMM通信用のソケットを作成します。
server_socket.bind(( ""、port): -サーバーはホスト ''上のスクリプトをポートにバインドします。
server_socket.listen(1) :サーバーは一度に1つの接続を受け入れるようにリッスンします。
client_socket、address = server_socket.accept() :サーバーはクライアントの接続要求を受け入れ、Macアドレスを変数 アドレスに 割り当て ます 。client_socket はクライアントのソケットです。
data = client_socket.recv(1024): クライアントソケット client_socket を介してデータを受信し、 それを変数 dataに 割り当て ます 。一度に最大1024文字を受信できます。
最後に、すべてのプログラミングが終了したら、以下のコードを使用してクライアントとサーバーの接続を閉じます。
client_socket.close()server_socket.close()
他のすべてのコードは簡単で自明です。以下の完全なコードを確認してください。このプロジェクトを変更してみてください。これを使用して、他の多くのものをワイヤレスで制御したり、Androidフォンを介してロボットカーを制御したり、音声を使用してライトを制御したりできます。
また、次のようなさまざまなテクノロジーやマイクロコントローラーを使用した、さまざまなタイプのホームオートメーションプロジェクトも確認してください 。