工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

LIRCなしでRaspberryPiでIRRemoteを使用する

RaspberryPiへのIRリモート入力を取得したかったのです。私はLIRCをインストールしてテストするように管理しました。最後のステップを除いて、すべてが大丈夫でした。 IRリモートキー値をPythonプログラムに渡したい場合、正しく渡されません。 anykeyにnull値を渡します。何が悪いのか理解できませんでした。私はあきらめて、LIRCを使用せずにIRリモートをキャプチャするPythonコードを書こうとしました。

IRリモート通信の方法について読んだ後、UARTシリアル通信を使用していることが明らかになりました。 IRリモートDIYキットHX1838を使用しました。 IRセンサーはIR波をデコードし、データをシリアルに渡します。私がやったことは、IRセンサーから出てくるデータ値を連続して読み取ることでした。これは、RaspberryPiで使用できる単純なアプリケーションのIRリモートを読み取るための大雑把ですが簡単な方法です。

UARTシリアル通信用のRaspberryPiの準備。

1。 cmdline.txtのttyAMA0エントリを削除する必要があります

sudo cp /boot/cmdline.txt /boot/cmdline_bp.txt

sudo nano /boot/cmdline.txt

残りのファイルは次のようになります

dwc_otg.lpm_enable =0 console =tty1 root =/ dev / mmcblk0p6 rootfstype =ext4elevator =deadline rootwait

次に、エディターを保存して閉じます。ファイルを保存します。Ctrl+ O。エディタを閉じます。Ctrl+ X

2。 inittab を更新します ttyAMA0をマスクするファイル

sudo nano / etc / inittab

行をコメントアウトします
‘X:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100’

#X:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100

次に、エディターを保存して閉じます。ファイルを保存します。Ctrl+ O。エディタを閉じます。Ctrl+ X

ステップ1:はじめに

pySerialのインストール

sudo apt-get install python-serial

これがインストールされると、Pythonコードはシリアルのインポートを実行することでそれを使用できます 。

IR信号を読み取るPythonコードは、非常に単純であることがわかりました。次のように。

 import serialser =serial.Serial( "/ dev / ttyAMA0")ser.baudrate =2400for i in range(0,15):#通常、キーのIR信号は約12〜16バイトですdata =ser.read( 1)#一度に1バイトを読み取るprint ord(data)#文字で読み取られたデータ、ordはASCII値に変換されます

これで、このコードは一度に1バイトずつIR信号を読み取り、値を出力します。

試行錯誤しながらボーレートを試し、2400BPSに落ち着きました。シリアル通信は最大115KBPSをサポートしますが、IRが低速を使用する理由は興味深いものです。私の推測では、IR信号が空中で1ビットまたは2ビット失われる可能性が少ないため、低速を使用する方が信頼性が高いと思います。

IRリモートキーをデコードする

次のステップは、キー値をデコードすることです。この取り組みには、標準のSamsung TVIRリモコンを使用しました。

最初の重要なポイントは、各キーのデータのバイト数を把握することです。 12〜16バイト異なる場合があります。 (私が試したもの)。通常、バイト長はすべてのキーで同じです。これらのバイトには、ヘッダーバイト、データバイト(キーを識別するため)、およびテールバイトがあります。ヘッダーバイトには、IRリモートのモデルの署名があります。 AntzyCarmasaicページに続く主要なデータ値を収集するためにExcelシートを使用しました

http://www.instructables.com/id/How-To-Useemulate-…

キャプチャされたキー値を詳しく調べると、バイト0〜5がヘッダーで構成されており、すべてのキーに対して繰り返されていることがわかります。バイト6から11のデータ値は、キー値を表します。いくつかのテール値がある可能性があります。バイト12は、サムスンのリモコンのテールです。

マッピングキー

このリモートの正確な方法は、バイト6〜11を配列に格納し、それを新しい着信キーと比較することです。代わりに、次のような簡単なアルゴリズムを実行しました。

keyidentity =byte [6] + 2 * byte [7] + 3 * byte [8] + 4 * byte [9] + 5 * byte [10] + 6 * byte [11]

すべてのキーにほぼ一意の値を与えます。これよりも優れたアルゴリズムを見つけることができます。

Pythonコードを拡張して、Samsungのリモートキー情報をキャプチャしました。マップされたキー値を計算したら、それをPythonプログラム自体に保存しました。

ファイルが添付されています。名前–ir_serial3samsung.py。 Samsungリモートは2セットのデータを送信します。そこで、RaspberryPiシリアルデータキャプチャバッファをフラッシュするために24バイトをキャプチャします。ただし、デコードには最初のセットのみを使用します。

このコードを実行すると、押されたキーが正しく識別されます。プログラムが出力する値「keyidentity」を確認することにより、リモートの残りのキーをデコードできます。次に、プログラムを追加してそれらを含めます。

結論

これは、PythonでRaspberryPiを使用してリモートコントロールを使用するための非常にシンプルで効果的な方法です。キーの合計バイト数、ヘッダーバイト、データバイト、テールバイトの長さを把握する必要があります。このプロセスのAからZまでを知っているので、アプリケーションに合わせて簡単に変更できます。これらは小さなPythonコードであるため、問題が発生した場合のデバッグは非常に簡単です。

詳細:LIRCを使用せずにRaspberryPiでIRRemoteを使用する


製造プロセス

  1. LabVIEWを使用したRaspberryPiの温度プロファイル
  2. DS18B20で温度を読み取る|ラズベリーパイ2
  3. RASPBERRYPIによる温度測定
  4. PythonとRaspberryPiの温度センサー
  5. ラズベリーパイで温度を監視する
  6. RaspberryPiを使用した天気のリモートモニタリング
  7. Node-REDを使用してBlynkへのSensorTag
  8. ラズベリーパイで雷を検出する
  9. RaspberryPiにアナログ入力のないアナログセンサー
  10. ラズベリーパイユニバーサルリモコン
  11. RaspberryPiを使用したモーションセンサー