このセッションでは、デバイスをワイヤレスで制御するために使用できるRaspberryPiを使用したRFリモートコントロールを開発します。このRFリモコンを使用して、デバイスのオンとオフを切り替えることができます。以前、RF制御ロボット、ハンドジェスチャ制御ロボットなどのRFモジュールを使用して多くのプロジェクトを開発しました。それらをチェックして、RFモジュールの動作を理解してください。
必要なコンポーネント:
送信機側:
- RF送信機(ASKハイブリッド送信機)
- HT12E IC
- 4プッシュボタン
- 750k抵抗
- 9ボルト電池
受信側:
- ラズベリーパイ
- 16x2 LCD
- 10Kポット
- ブレッドボード
- 1K抵抗(5)
- 33K抵抗
- HT12D IC
- RF受信機(ASKハイブリッド受信機)
- LED(5)
- 10K抵抗(4)
- 接続線
- 電源
RFモジュール:
これはASKハイブリッド送信機であり、受信機モジュールは433Mhz周波数で動作します。このモジュールには、最適な範囲の正確な周波数制御を維持するための水晶安定化発振器があります。このモジュールの外部に必要なアンテナは1つだけです。
このモジュールは、長距離RF通信が必要な場合に非常にコスト効率が高くなります。この周波数とそのアナログ技術には多くのノイズがあるため、このモジュールはPCまたはマイクロコントローラーのUART通信を使用してデータを直接送信しません。このモジュールは、ノイズからデータを抽出するエンコーダーおよびデコーダーICの助けを借りて使用できます。
送信機の範囲は、最大供給電圧で約100メートルであり、5ボルトの場合、送信機の範囲は、シングルコード17cm長のアンテナの単純なワイヤーを使用して約50〜60メートルです。
RF送信機の機能:
- 周波数範囲:433 Mhz
- 出力電力:4-16dBm
- 入力電源:3〜12ボルトDC
RF Txのピンの説明:
- GND-アース電源
- データ入力-このピンはエンコーダからのシリアルデータを受け入れます
- Vcc- + 5ボルトをこのピンに接続する必要があります
- アンテナ-データを適切に送信するために、このピンにラップ接続します
RF受信機の機能:
- 感度:-105dBm
- IF周波数:1MHz
- 低消費電力
- 電流3.5mA
- 供給電圧:5ボルト
RF Rxのピンの説明:
- GND-アース
- データ入力-このピンは、出力シリアルデータをデコーダに提供します
- データ入力-このピンは、出力シリアルデータをデコーダに提供します
- Vcc- + 5ボルトをこのピンに接続する必要があります
- Vcc- + 5ボルトをこのピンに接続する必要があります
- GND-アース
- GND-アース
- アンテナ-データを適切に受信するために、このピンにラップ接続します
作業説明:
このプロジェクトの作業はとても簡単です。このプロジェクトでは、送信機側(リモートとして機能)の4つのボタンを使用して、受信機側の4つのLEDを制御しました。 4つのボタンのいずれかを押すと、エンコーダICが信号をエンコードしてRF送信機に送信し、RF送信機が環境内で信号を送信します。これで、RFレシーバーは送信された信号を受信し、デコーダーIC HT12Dを使用してデコードし、4ビット出力をRaspberryPiに送信します。次に、Raspberry Piがこれらのビットを読み取り、関連するタスクを実行して、それぞれのLEDを点灯させます。いずれかのキーが押されると、ブザーが1秒間鳴ります。 16x2 LCDは、すべてのLEDの「オンまたはオフ」ステータスを表示するためにも使用されます。
このプロジェクトでは、デモンストレーション目的で4つのLEDを使用しました。「RFリモート」のそれぞれのボタンを押すことで、任意のタスクをトリガーできます。同様に、リレーを使用してLEDの代わりにAC家電を接続し、同じ「RFリモート」を使用してそれらのアプライアンスをワイヤレスで制御することもできます。したがって、この同じ回路は、RaspberryPiを使用したRFベースのホームオートメーションプロジェクトとして機能します。私たちは以前、Bluetooth、DTMF、GSMなどを使用して制御される多くのホームオートメーションプロジェクトを開発しました。ここですべてのホームオートメーションプロジェクトを確認できます。
回路の説明:
このRaspberryPi RFリモコンの回路はシンプルで、Raspberry Piボード、プッシュボタンとLCD、RFペア、エンコーダー/デコーダーICが含まれています。Raspberry PiはLCDを制御し、入力を読み取り、入力に従って出力を送信します。ここではRaspberryPi 3を使用しましたが、どのRaspberryモデルでも機能するはずです。回路は2つの部分に分かれています。1つはRF受信機回路で、もう1つはRF送信機回路です。両方の回路を下の図に示します。
レシーバー部分では、LCDピンrs、en、d4、d5、d6、d7が4ビットモードのwireingPi GPIOピン11、10、6、5、4、1に接続されています。RF受信機はRF送信機から信号を受信し、HT12DICはそれをデコードします。HT12DデコーダICのD8、D9、D10、D11はwiringPI GPIOピン25、24、23、22に直接接続されています。出力LEDはwiringPi GPIOピン26、27、28、29に接続されています。ブザーはアラートにも使用されます。配線時に押されたキーPiGPIO0。
RF送信機回路には、HT12EエンコーダICと4つのLEDを制御するための4つの押しボタンが含まれています。エンコーダおよびデコーダICでは、すべてのアドレスラインがグランドに接続されています。
Raspberry PiへのwiringPiライブラリのインストール:
Pythonと同様に、 インポートRPi.GPIOをIO ヘッダーファイル としてインポートして 、Raspberry PiのGPIOピンを使用します。ここでC言語では、wiringPiライブラリ を使用してCプログラムでGPIOピンを使用する必要があり ます。以下のコマンドを1つずつ使用してインストールできます。このコマンドは、ターミナルまたはPuttyなどのSSHクライアント(Windowsを使用している場合)から実行できます。Raspberry Piの取り扱いと構成の詳細については、「RaspberryPi入門」チュートリアルを参照してください。
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git://git.drogon.net/wiringPi cdrwiringPi git pull origin cdwireingPi./build
以下のコマンドを使用して、wiringPiライブラリのインストールをテストします。
gpio -v gpio readall
プログラミングの説明:
まず、ヘッダーファイルをインクルードし、LCDのピンを定義します。次に、入力とLEDの表示を取得するためのいくつかの変数とピンを初期化します。
#include
その後、 void setup() 関数で使用されているすべてのGPIOピンに指示を出します。
void setup(){if(wiringPiSetup()== -1){clear(); print( "開始できません"); setCursor(0,1); print( "wiringPi"); } pinMode(led1、OUTPUT); pinMode(led2、OUTPUT); pinMode(led3、OUTPUT); pinMode(led4、OUTPUT);……………..。
コードでは、使用した digitalReadの デコーダの出力読み出す機能を digitalWriteを LEDまたはデバイスに出力を送信します。
…………….. while(1){setCursor(0,0); print( "D1 D2 D3 D4"); if(digitalRead(d1)== 0){flag1 ++; setCursor(0,1); if(flag1%2 == 1){print( "ON"); digitalWrite(led1、HIGH); }…………….。
このプロジェクトで使用されているその他の関数は次のとおりです。
関数 voidlcdcmd はコマンドをLCD に送信するために使用され、 void書き込み 関数はデータをLCDに送信するために使用されます。
関数は、 ()クリアボイド LCDをクリアするために使用され、 空隙はsetCursorが セットカーソル位置とするために使用される ボイドプリント LCDに文字列を送信します。
関数 voidbegin は、LCDを4ビットモードで初期化 する ために使用され、 void buzzer() はブザーを鳴らすために使用されます。
以下のこのラズベリーRFリモコンの完全なコードを確認してください。