正規のオンライン小売業者:

AMAZON
AMAZON
amzuk

紹介
このレッスンでは、ラズベリーパイを使用して赤外線信号をデコードし、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を参照してください。

ハードウェアのセットアップ

Pythonのソフトウェア


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

Pythonコードの説明(irtest.py):

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コマンドを使用できます)。

C++言語のソフトウェア

以下の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