赤外線(IR)通信モジュールで通信を行います。
マイコン同士の通信を目的にした通信を行います。
紹介するもの
IR Receiver Module
外観
IR Transmitter Module
外観
使用感
モジュール自体は簡単な配線ですぐに実験ができます。
市販のリモコンからもマイコンの制御ができるので実験や実用の用途が広がりそうです。
購入時からアングルタイプのピンヘッダが実装されていますが、ブレッドボード上で通信させるには作業性が悪いので、ストレートのピンヘッダへ換装しています。
準備するもの
ライブラリ
Arduino IDEのライブラリマネージャからIR通信用ライブラリをインストールします。
今回、「IRremote by shirriff, z3t0, ArminJo」を使用します。
動作確認時のバージョンは 3.9.0です。
ライブラリ名 | 検索 |
---|---|
IRremote by shirriff, z3t0, ArminJo | irremote |
使うもの
絵 | 名称(型番) | 用途 |
---|---|---|
Raspberry Pi Pico 2枚 | USB対抗通信に使用 画像では、YD-RP2040とPico-BOOTを使用しています。 | |
IR Transmitter 2枚 | 赤外線送信に使用 | |
IR Receiver 2枚 | 赤外線受信に使用 | |
赤外線リモコン (エアコンやテレビでも可) | 赤外線受信機の通信確認に使用 |
加工
アングルピンヘッダでは作業しにくいので、ストレートに換装します。
1.ピンヘッダの取り外し
ピンヘッダをペンチで引っ張りながら作業を行います。
ピンヘッダの半田箇所に半田ごてしばらく当てると、熱で樹脂が柔らかくなり1本だけ抜けます。
同じ要領で、すべてのピンを抜きます。
2.スルーホールの半田除去
半田バキュームでスルーホールの半田を吸い取ります。
3.ピンヘッダの半田付け
新しいストレートのピンヘッダをはんだ付けします。
スケッチ
IR受信側
説明
COMから入力した文字のASCIIコードをIR出力します。
配線
Raspbery Pi Pico | 配線 | IR Receiver Module |
---|---|---|
3V3 | 赤 | VCC |
GND | 黒 | GND |
GPIO0 | 黄 | OUT |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【マイコン基板】
Raspberry Pi Picoで確認
【スケッチの説明】
IR受信したらCOMに結果を出力する。
【ライブラリ】
Raspberry Pi Pico/RP2040 > Raspberry Pi Pico
IRremote by shirriff, z3t0, ArminJo
【準備】
Raspberry Pi Pico <-> IR Receiver Module
3.3V <-> VCC
GND <-> GND
GPIO0 <-> VOUT
【バージョン情報】
2023/1/8 : 新規
**********************************************************************/
#include <IRremote.h>
#define PIN_IRRECEIVE 0 //受信GPIOピン
IRrecv irrecv(PIN_IRRECEIVE); // IR通信を行うための受信オブジェクト
void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // 赤外線受信開始
}
void loop()
{
decode_results IR_Result; // 受信情報の保存先
//IR受信状態の確認 (0 = 未受信 / 1 = 受信あり)
if (irrecv.decode(&IR_Result) == 1)
{
Serial.printf("%08x\r\n", IR_Result.value); //結果表示
irrecv.resume();
}
}
結果
IRリモコンを受信モジュールに向けてボタンを押すと、COMにはIRを読み取った結果が表示されました。
ボタンを長押しすると「FFFFFFFF」を読み取るようです。
似たようなリモコンで試してみると、図のような結果になりました。
同じメーカのリモコンだと思いますが、ボタンの位置でIR送信コードが決まっているようです。
リモコンから送られてくるコードと、受信側がそのコードを受信することによりどのような処理をするかは「決め(設計)」のことなので、使用するリモコンごとにどのボタンでどのコードが送信されるかを調査する必要があります。
IR送信側
説明
IR受信があれば、結果をCOMに出力します。
配線
Raspbery Pi Pico | 配線 | IR Transmitter Module |
---|---|---|
3V3 | 赤 | VCC |
GND | 黒 | GND |
GPIO0 | 黄 | DAT |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【マイコン基板】
Raspberry Pi Picoで確認
【スケッチの説明】
COMから入力したASCIIコードをIRに出力する。
【ライブラリ】
Raspberry Pi Pico/RP2040 > Raspberry Pi Pico
IRremote by shirriff, z3t0, ArminJo
【準備】
Raspberry Pi Pico <-> IR Receiver Module
3.3V <-> VCC
GND <-> GND
GPIO0 <-> VOUT
【バージョン情報】
2023/1/8 : 新規
**********************************************************************/
#include <IRremote.h>
#define PIN_IRTRANSMIT 0 //IR送信GPIOピン
#define IR_DELAY 50 //IRを連続送信するためのウエイト
void setup()
{
Serial.begin(115200);
IrSender.begin(PIN_IRTRANSMIT); //IR送信通信開始
}
void loop()
{
//COM受信バッファの確認 (0 = 無 / else = 有)
if(Serial.available() != 0)
{
char buf = Serial.read(); //COM受信
IrSender.sendNEC((uint32_t)buf, 32); //IR送信
delay(IR_DELAY);
}
}
結果
確認にはTeratermを2つ起動します。(ArduinoIDEシリアルモニタでも可)
受信側には先に確認したIR受信側を使用します。
今回送信側がCOM192, 受信側がCOM15で認識されました。
COM192側から文字を入力すると、COM15側にASCIIコードが表示されました。
コメント