Controlling and using the IR sensor
レッスン19"IRセンサーの制御と使用"をやっていく。
概要を引用
このレッスンでは、IRレシーバーの使用方法と、ミニIRリモコンから空気でIR(infra red;赤外線)コードを受信する方法を学習します。
この方法を使用すると、IRリモート上のボタンごとに異なるアクションを設定できるため、非常に便利です。 たとえば、ボタンを押すたびに異なるLEDをオンにしたり、サーボの動きを制御したりできます。 アラームをオフにするのはどうですか? このレッスンを学んだ後は、何でも可能です。
何を学習するか
このレッスンを終了すると、次のことができるようになります。
- IRレシーバーを制御し、IRリモートを介して信号を送信します
何が必要か
- 初期設定後のCrowPiボード
- IRリモコン(CrowPiキットに付属)
Requires switching modules using the switch
- いいえ
CrowPi上のIRセンサーの位置
一応これも引用しとくか
DH11センサーの右側でCrowPiロゴのすぐ下にあるIRセンサー。 これは、リモコンがコードを受信するための受信機として使用する3ピンの小さなLEDと見なすことができます。
CrowPiキットに含まれているIRリモコンも必要です。必ず取り出して、レッスンの準備をしてください。
↓受光部を取り付けたところ
レッスンPDFには説明ないけど、レッスンビデオではこう付けてたから問題ないだろ🤔
IRレシーバーの操作
解説の引用
IRレシーバーの操作は、思ったほど難しくはありません。
LIRCやPython-LIRCと呼ばれるライブラリを使用するIRレシーバーは、リモコンを使用して送信するコードを受信し、それらに基づいて特定のアクションを実行します。
Out変数には、押したボタンが含まれています。特定のボタンをクリックしたかどうかを確認するパラメーターを作成し、その情報に基づいてコマンドを実行できます。
このレッスンで使用するPythonスクリプトは以下の通り。
Examples/IR.py
import socket, signal import lirc, time, sys import RPi.GPIO as GPIO from array import array GPIO.setmode(11) GPIO.setup(17, 0) GPIO.setup(18, 0) PORT = 42001 HOST = "localhost" Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Lirc = lirc.init("keys") #lirc.set_blocking(False, Lirc) # Un-Comment to stop nextcode() from waiting for a signal ( will return empty array when no key is pressed ) def handler(signal, frame): Socket.close() GPIO.cleanup() exit(0) signal.signal(signal.SIGTSTP, handler) def sendCmd(cmd): n = len(cmd) a = array('c') a.append(chr((n >> 24) & 0xFF)) a.append(chr((n >> 16) & 0xFF)) a.append(chr((n >> 8) & 0xFF)) a.append(chr(n & 0xFF)) Socket.send(a.tostring() + cmd) while True: Out = lirc.nextcode() print(Out[0]) |
例のごとく、GPIO.setmodeとpin番号を修正。
って思ったら、なんか今までとコードの書き方が違う・・・
GPIO.setup()で直接pin番号を指定しているのはいいとして、
GPIO.setmode(11)の11って何だ?😯
GPIO.BOARDってことでいいのか?
まぁよくわからないが、このスクリプトを実行して、リモコンを押すと
って、あれっ!?反応しない
よくよくリモコンを見てみると電池が入っていないではないかっ!?
輸送の関係で入れられないのか?
それとも単にケチったのか?😒
仕方がないので以前別で買ったラズパイキットに同じようなリモコン付いてたからそちらから電池を拝借
するとちゃんと押したボタンがターミナルに表示されることを確認。
ちなみにもう一方のリモコンでも問題なく反応した。
ほぼ同じリモコンだが、ボタンの押した感じがちょっと異なる。
※コメント投稿者のブログIDはブログ作成者のみに通知されます