Raspberry Pi Pico

Raspberry Pi Picoを使った赤外線リモコンと受信機

2024年5月25日

Raspberry Pi Picoを使って、赤外線リモコンと受信機を作成したので、そのメモ。
20240525-controller.jpg
20240525-receiver.jpg

赤外線リモコン

リモコン(送信機)の回路図は、以下の通り。
20240525-schematic1.png

3V の電池駆動で、いずれかのボタンを押したときに回路図上側の MOSFET(2N7000) がアクティブになり、Pi Pico に給電される仕組み。この回路では、ボタンを押さないときの消費電流は最小限(測定すると、30 μA ほど)に抑えられているため、まったく使わなければ3年ほどは持つ計算。

赤外線 LED の駆動には、Pi Pico の昇圧回路から発生する 3.3 V を使っているため、電池が少々減っても、安定した出力が期待できる。昇圧回路の発振ノイズを軽減するため、47 μF のキャパシターを接続してある。このキャパシターは、発信機と受信機の距離が短いときのシグナル認識を向上させるようだ。LED の駆動は、回路図下側の MOSFET で行っている。LED と直列に接続している抵抗(10-150 Ω)の値をどれぐらいにすればよいのかは、使用する LED によって異なる。私が使った LED では、30 Ωぐらいが一番成績が良かった。なお、使用する LED が発する赤外線の波長は、赤外線リモコンでは一般的に 950 nm 付近が使われるようである。

リモコンのボタン数を作例では 7 個としたが、用途によって最大 25 個まで増やすことができる。各々にダイオードを接続して、MOSFET のゲートに繋げればよい。マトリックスを組めば、より多くのボタンの押下を認識することができるはず(ただし、ソースコードの大々的な変更が必要)。

Pi Pico のソースコードは、以下の GitHub レポジトリーに載せた。自分の用途に応用するには、main.c の「#define BUTTON_INPUT_MASK」の部分と「// Check button」以降の部分を編集して、ビルドする事。
https://github.com/kmorimatsu/ir_controller

赤外線受信機

リモコン受信機の回路図は、以下の通り。
20240525-schematic2.png

この回路図では、赤外線センサーからの入力のみしかないように見えるが、実際は、出力は USB を介して PC に送信される。PC に接続するバーチャルキーボードとして機能する。

赤外線センサーは、手元にある Sharp 製の GP1UD26XK を使用した。既に廃番になっているが、アクティブローで 3.3 V で機能する物であれば、殆どの物が使えると思われる。ただし、38 kHz 点滅の 950 nm 付近の赤外線に反応する物を選ぶこと。

Pi Pico のソースコードは、GitHub に上げた。
https://github.com/kmorimatsu/ir_receiver_keyboard

どの赤外線データーを認識させるかは、input.c 内の check_button() 関数内のコードを編集する。また、バーチャルキーボードとして、どのキーを送出するかを変更するには、main.c 内の hid_task() 関数内、「bool button_0 = check_button(0);」等の記述と、「if ( button_0 )」などの記述以降の行を、編集する。

32 ビットデーターの取得

ここで利用している 32 ビットの送受信データーは、MachiKania を持っている人であれば、IR_RX クラスを用いて、簡単に取得することができる。IR_RX クラスのヘルプファイルに使用例があるので、それをそのまま用いればよい。ただし、MachiKania に赤外線受信モジュールを接続する必要がある。

MachiKania を持っていないけれど、上の赤外線受信機を作成した人なら、次のようにしてデーターを抽出する事が可能。

1.ここから、uf2 ファイルを含むアーカイブをダウンロード
2.uf2 ファイルを、Pi Pico にアップロード
3.Pi Pico が COM ポートとして認識されるので、PuTTY や Tera Term などのシリアルコンソールで接続する
4.赤外線受信機に向けて、赤外線リモコンから送信する

コメント

コメントはありません

コメント送信