Arduino ESP32と受信回路で赤外線リモコンをハック! 趣味で電子工作 Day4
こんにちは,くよりす(@qyoris)です!
今回は・・・みなさん,やりました!やりましたよっ!
さてさて,くよりすは何かをやらかしてしまったようですね.
そんな気になる内容を眺めてみることにしましょう.
Day 4
まずは作業の様子を動画でどうぞ!
今回もなかなかいい感じの動画になっていたのではないでしょうか???(威圧)
ぜひチャンネル登録をお願いします!応援してね🥺👉 🔔チャンネル登録🔔
技術的なお話
さて,今回は「赤外線受信回路を組み、信号をハックする」ということで,
具体的なステップは次の通りです.
1. 赤外線受信回路の設計
2. 受信回路を組む
3. IRremoteライブラリのインストール
4. サンプルプログラムを使って信号ハック!
順にみていきましょう.
1. 赤外線受信回路の設計
今回使用している赤外線受信モジュールは,PL-IRM0101(38kHz)シールド付(秋月電子)です.受信回路の作り方を調べてみると,設計というほどもなく単純に配線するだけで良さそうでしたので詳しくは割愛します(笑)
2. 受信回路を組む
そんなわけで,赤外線を受信するための回路を次の通り組みました!
センサの受信部を手前にして,左から Vout, GND, Vcc という足の並びです(仕様書はこちら).ジャンパー線を3本繋いだだけですね😂
センサで受信した信号の出力がVoutですので,これをESP32に取り込むためにGPIO14に接続しています(黄色の配線).
サンプルプログラムの初期設定では赤外線を受信する端子が11番ピンになっているのですが,最終的に14番ピンに変更しました.経緯は後述します.
3. IRremoteライブラリのインストール
赤外線を受信するプログラムを調べていると,IRremoteというライブラリが見つかりました.赤外線の送受信関連のプログラムが揃っています.今回はこれを利用することにしました.ライブラリのインストールについてはこちらを参考にさせて頂きました.
4. サンプルプログラムを使って信号ハック!
長らくお待たせしました。いよいよ赤外線リモコンをハッキングするときがやってきました!
と言いたいところなのですが,この後の道のりが長かったのでしたw
今回使用したサンプルプログラムは,IRrecvDumpV2です.とりあえず書き込んで動作でもみてみようと思ったらまさかのコンパイルエラーでした笑 Google先生に聞いたところ,こちらに解決策がありました.
IRremote.h
というヘッダファイルの中身を以下のように変更するとエラーが解決しました.
そして書き込みが完了!ハックするときがきたぜとワクワク感を楽しみつつ,シリアルモニタを起動してリモコンのスイッチを押すも
も?
も??
押すも・・・なんとピクリとも動じなかったのです!泣
本来なら受信された値が表示されるはずなのですが...
ここだけの話,動画ではカットしていますが,実は3時間くらい調べまくりました
が,解決策がわからず...Twitterで強硬手段に出ることにしました.
名付けて わかりそうな人にリプしちゃえ作戦! です.
突然のリプ失礼します。
— くよりす (@qyoris) 2020年3月30日
ESP32でIRremoteモジュールを使って赤外線を読みたいのですが、シリアル通信が上手くいかず画像のような状況で値が取得できません…何かアドバイス頂けないでしょうか🙇🏻♂️ pic.twitter.com/yiRSOEuWOD
この作戦が功を奏し(@copperceleさんがご親切にもリプに返答してくださり),その後自分なりに試行錯誤した結果,IRrecvDumpV2.ino
に次の改良を加えることでうまくいきました.
@copperceleさん本当にありがとうございました🙇♂️ いやはや,優しい方もいるものですね.まだまだ世の中捨てたもんじゃないです(何目線)
ESP32の通信速度のデフォルトは115200bpsらしいので,9600bpsから115200bpsに変更しました.しかしこれでもGPIO11では動作せず,GPIO14に変更した結果,見事に赤外線リモコンのボタンを押すたびに値を受信できるようになったのでした👏
実際に取得した値です↓ (NECフォーマットで受信できている様子がわかりますね!)
こんな感じで,赤外線リモコンのハックに成功しました😎✨
次回は解析などを行いたいと考えていますのでお楽しみに!!
【宣伝】note始めました
そして,電子工作とは関係ないのですが,noteを始めました.こちらでは,日々の気づきなどを中心に発信していきたいと思っていますのでぜひよろしくお願いします☺️