正規のオンライン小売業者:
紹介
このレッスンでは、ラズベリーパイを使用して赤外線信号をデコードし、3つのLEDをリモートでON / OFFする方法を紹介します。
ラズベリーパイのブログでは、しばしばLIRCライブラリを使用してIR信号を処理することがあります。しかし、LIRCライブラリのインストールは少し複雑で、Raspbian OSが新しいバージョンにアップグレードされた後にうまく動作しないことがあります。
このチュートリアルでは、初心者がスムーズに赤外線リモコン信号をプログラムできるように、LIRCの代わりにラズベリーパイの基本的なGPIO機能のみを使用します。したがって、LIRCの問題について心配する必要はありません。単にPythonまたはC ++で私たちのコードファイルをダウンロードして実行するだけで、素晴らしい結果を得ることができます。
ハードウェアの準備
1 * Raspberry Pi
1 * ブレッドボード
1 * IRレシーバー(VS1838B)
1 * 赤外線リモコン
3 * LED
3 * 抵抗器(200Ω)
いくつかのジャンパーワイヤー
1 * T-エクステンションボード(40ピンケーブル付き)(オプション)
注:
1.このレッスンでは、PC上のPuTTyを介してラズベリーパイをリモートで制御します。ラズベリーパイの設定方法については、lesson 1: getting started with raspberry piを参照してください。
2. リモートコントローラーが機能しない場合は、ラズベリーパイをイーサネットケーブルで接続してください。
実験原理
このレッスンでは、VS1838B IRレシーバーを使用し、着信した赤外線信号をデジタルデータ出力に変換することができます。写真に示すように:
ラズベリーパイとVS1838Bの回路図:
注:ラズベリーパイのGPIOについて詳しく学びたい場合は、Introduction Of Raspberry Pi GPIOを参照してください。
IRレシーバーをプログラムするためにPythonを使用します。Pythonについて詳しく学ぶには、Raspberry Pi Starter Kit lesson 4に進んでください。
Step 1) I2Cが有効になっていない場合は、以下のコマンドを実行してI2Cを有効にしてください。
sudo raspi-config
次に、Interfacing Options->I2C->Yes->Ok->Finishを選択してください。
Step 2) 以下の2つのコマンドをPiターミナルに入力して、ダウンロードしてください。
wget -q http://osoyoo.com/driver/pi3_start_learning_kit_lesson_19/irtest.py -O irtest.py
Step 3) 以下のコマンドを入力して、Pythonプログラムを実行します。
python irtest.py
Step 4) プログラムの結果
プログラムが実行されると、IRレシーバーの1のボタンを押すと、最初のLEDがオンになっている場合はオフになり、オフの場合はオンになります。2と3を押すと、2番目のLEDと3番目のLEDが同時に点灯します。
Step 5) ターミナルでCtrl-Cを入力してプログラムを停止します。Ctrl-Cを入力した後、IRリモコンの任意のボタンを押す必要があります。その後、Piターミナルには次のように表示されます。
Ctrl-C pressed! Quitting
IRリモコンのボタンを押すと、Piボードに接続されたIRレシーバーに固有の16進コードが送信されます。
irtest.pyの11行目、12行目、13行目では、次のように3つの変数KEY_1、KEY_2、KEY_3を定義しています。
KEY_1=0xff30cf KEY_2=0xff18e7 KEY_3=0xff7a85
これらの変数には、各数字キー1、2、3の16進値が格納されます。
irtest.pyの76行から99行までで、プログラムはIRレシーバーからHexコードを読み取り、以下のように適切なアクションを実行します。
code = on_ir_receive(IR_PIN) if (code==KEY_1): if (status1==0): status1=1 GPIO.output(LED1, GPIO.HIGH) else: status1=0 GPIO.output(LED1, GPIO.LOW) elif (code==KEY_2): if (status2==0): status2=1 GPIO.output(LED2, GPIO.HIGH) else: status2=0 GPIO.output(LED2, GPIO.LOW) elif (code==KEY_3): if (status3==0): status3=1 GPIO.output(LED3, GPIO.HIGH) else: status3=0 GPIO.output(LED3, GPIO.LOW) else: print("Invalid code")
TVリモコンやエアコンリモコンでLEDを制御できますか?
はい。これは確かにできます。
まず、TVリモコンのキーの16進コードを知る必要があります。ircode.pyプログラムをダウンロードして、以下のコマンドに従って実行してください。
wget -q http://osoyoo.com/driver/pi3_start_learning_kit_lesson_19/ircode.py -O ircode.py python ircode.py
上記のコマンドを実行すると、以下のように表示されます。
IRリスナーの起動中
信号を待っています
IRリモコンでキーを押すと、そのキーの16進数コード(0xで始まる)が表示されます。例えば、Num 1キーを押すと、以下のように表示されます。
0xff30cf
TVリモコンを押して、正しいTVキーの16進数コードを見つけ、これらのコードをirtest.pyの11-13行目の16進数コードで置き換えてください。そうすれば、プログラムがTVリモコンのキーに反応するようになります(irtest.pyを編集するには、nano irtest.pyコマンドを使用できます)。
以下の3つのコマンドを使用して、同じプロジェクトをC++言語で実装することができます。回路の接続とテスト方法はPythonプログラムと同じです。
wget -q http://osoyoo.com/driver/pi3_start_learning_kit_lesson_19/irtest.cpp -O irtest.cpp g++ -Wall -o irtest irtest.cpp -lwiringPi ./irtest
DownLoad Url osoyoo.com