インターネットに接続された赤外線レプリケーター
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
アプリとオンラインサービス
|
このプロジェクトについて
少し前に、WIFI経由でエアコンを制御する目的で赤外線ACリモコンのデコードを始めました。
私はその過程でたくさんのことを学びました。将来のプロジェクトで役立つ場合に備えて、その知識を皆さんと共有したいと思いました(将来の私:私もあなたを見ています)。パーティクルフォトンを使用しましたが、このプロジェクトで使用されているIRremote Arduinoライブラリ(Ken Shirriffから)は他の多くのライブラリをサポートしているため、別のMCUを使用することもできます。こちらも公式ページです。
たくさんあります そのページの情報の一部を読んで、IR信号がどのように機能するかを深く理解してください。ただし、次のセクションでいくつかの重要なポイントを再現します。
IRコードの背景
以下は、作者の元の投稿の転写です:
IRリモコンは、特定のパターンでLEDをオン/オフすることで機能します。ただし、太陽光や光などの赤外線源からの干渉を防ぐために、LEDは安定してオンになるのではなく、変調周波数(通常は36、38、または40KHz)でオンとオフになります。変調信号が送信されている時間はマークと呼ばれ、LEDがオフの時間はスペースと呼ばれます。
リモコンの各キーには特定のコード(通常は12〜32ビット)が関連付けられており、キーが押されるとこのコードがブロードキャストされます。キーが押されている場合、リモートは通常、キーコードを繰り返しブロードキャストします。 NECリモコンの場合、コードを繰り返し送信するのではなく、キーを押したままにすると特別な繰り返しコードが送信されます。 Philips RC5またはRC6リモコンの場合、キーを押すたびにコードのビットが切り替わります。受信機はこのトグルビットを使用して、キーが2回押されたときを判断します。
受信側では、IR検出器がこの信号をデモジュレートし、信号を受信しているかどうかを示す論理レベルの信号を出力します。 IR検出器は、その周波数が送信者の周波数と一致する場合に最適に機能しますが、実際にはそれほど重要ではありません。
これで、次のステップの準備が整いました...
IR受信機回路を構築する
赤外線信号をデコードするには、赤外線レシーバーダイオードが必要です。
<図>
そして、ライブラリに記載されているように受信回路を構築します。
<図>
ピン配置は次のとおりです:
<図>私のブレッドボードは次のようになりました:
<図>
今のところ、レシーバーダイオード(黒いもの)の接続に焦点を合わせ、トランスミッター(透明なもの)のことは忘れてください。後で処理します。
一部のIR信号をデコードします
プロジェクトは受信したコードをシリアルライン経由でダンプするため、コンピューターに接続する必要があります。 USBケーブルでPhotonの電源を入れ、コンピュータのUSBポートに接続します。これで、接続されているファームウェアをフラッシュするのに最適なタイミングになります。
コンソールまたはターミナルを開き、ParticleCLIを使用してUSBポートを監視します。
注: パーティクルCLIをインストールしていない場合は、こちらのドキュメントに従ってインストールしてください。
Ubuntu Linuxでは、これはPhotonのシリアルポートを監視するために入力する必要があったものです:
$ sudo chmod 666 / dev / ttyACM0 $パーティクルシリアルモニター
コンピュータとオペレーティングシステムによっては、ポートの名前が異なる場合や、chmodを実行する必要がない場合があります。
注: 他のソフトウェアを使用して、コンピューターのUSBシリアルポートでデータを受信できます。
これが完了したら、デコードするリモコンをIRレシーバーダイオード(黒色のLEDに似たコンポーネント)に向けることができます。リモコンのボタンを押し始めて、コンソールに何が印刷されているかを確認します。
すべてがうまくいけば、次のようなものが得られます:
<コード> 1FEA05F29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,1500,550,500,500,1500,550,500,550,450,550,500,500,500,550、ENDを3,3,2,0、1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 、0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 、0,0,0,0,0,0、END
- 1行目(1FEA05F)と3行目:今は忘れてください
- 2行目:この行は、リモートから送信されたIRコマンドを出力します
最初にデコードされたIRコマンド
受信したIRコマンドについて話しましょう:
29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500、
IRライブラリには次のように記述されているため、最初の値(この場合は29168950)を破棄できます。「受信バッファは、最初のマークの前のギャップスペースの期間から始まります 「。テストの合間に経過した時間、またはリモコンのボタンを押すのにかかった時間なので、その期間は気にしません。
したがって、受信した出力から、これは本当に興味深いものであり、IRコマンドを形作るものです:
8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,500,500,500,550,500,500,550,500,1500,550,1
これらの数値は、マイクロ秒単位の赤外線パルスの持続時間を表します。必要に応じて、次のコードを使用してこのコマンドを送信できます。
function sendIt(){unsigned int ircommand [59] ={8550,4000,550,1500,550,450,550,500,500,550,500,1550,500,500,500,500,550,500,500,500,550,500,500,500,550,500,500,1500,550,500,500,500,550,500,500,500,500、 、500,500,550,500,500,500,550,450,550}; irsend.sendRaw(ircommand、59,38); }
しかし、そのためには、送信回路を構築する必要があります。次にそれをしましょう。
IR送信回路を構築する
最も単純な回路は次のようになります:
<図>ただし、この回路では1メートル未満の範囲しか得られません。
可能であれば、以下のような回路を配線して、範囲を改善します(約10メートル):
<図>
これは私の回路の送信機側です:
<図>
IR送信機回路のテスト
Samsung TVの音量を制御するために、ファームウェアにいくつかの機能を追加しました。これは、SamsungTVが周囲にある場合に送信機回路が機能しているかどうかをテストできるようにするためです。
送信機のLEDをテレビに向けて、sendSamsungVolumeUp()関数とsendSamsungVolumeDown()関数を押すだけです。
注: IRが表示されるので、携帯電話のカメラを使用してIRLEDが送信されているかどうかを確認できることを忘れないでください。
<図>
IRコマンドを読みやすくする
500前後の値を0で、1500前後の値を1で識別する場合、この選択は任意であり、5000を超える値に3を割り当て、4000前後の値に2を割り当てると、次のようになります。
3,3,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0、 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1、 0,0,0,1,0,0,0,0,0,0,0,0,0、END
ここで、この完全に任意のエンコーディングでは、次のことを覚えておいてください。
- 3は8500マイクロ秒のパルスを意味します
- 2は4000マイクロ秒のパルスを意味します
- 1は1500マイクロ秒のパルスを意味します
- 0は500マイクロ秒のパルスを意味します
なぜ数字でエンコードするのか、あなたは尋ねるかもしれません。
コマンドの視覚化と比較に役立つことを願っています。このようにして、異なるコマンド間で変化する、または同じままであるパルスを比較することがより簡単になります。
例:ACリモコンの場合、温度を18度と19度に設定するコマンド間で何が変わるかを比較したいですか? 1と0があると簡単になります。
IRコマンドをファームウェアコードに保存するためのこのフォーマットも気に入っています。送信する直前にそれらをパルスに変換することを忘れないでください(ファームウェアで関数convertToPulseDuration()を呼び出すことによって)。
読書リソース
私はトピックを理解できるようにたくさんのサイトを読みました。それらのいくつかのリストは次のとおりです:
- エアコンのIRリモートコントロールプロトコルのリバースエンジニアリング
- arduinoIRremoteライブラリで任意のリモコンを使用する
- パーティクルコミュニティのこのスレッド
- エアコンのリモコンのIRプロトコルを理解する
- adafruitに関するこのブログ
結論
いくつかの作業、MCU、およびいくつかのコンポーネントを使用すると、家の周りにある多くのリモートをデコードおよび複製できるようになります。いくつかの制限がありますが、これにより、携帯電話、タブレット、ラップトップ、コンピューターからこれらすべてのデバイスを制御でき、さらにはそれらの単純な自動化を作成することもできます。かっこいいね
<図>
これで、Blynkの追加、Ionic Frameworkでのアプリの作成、Google NowまたはAlexaとの会話、Porterでの制御について考えることができます。
私はこの知識を家中のいくつかのデバイスを制御するために適用することを計画しており、将来的にはさらに多くの記事を作成したいと思っています。しばらくお待ちください!
2018年2月5日の更新:
このプロジェクトの実装の1つは、インターネットから制御される赤外線暖炉です。
ヘルプが必要ですか?
あなたのプロジェクトで専門家の助けが必要な場合は、gusgonnet @ gmail.comであなたのニーズについて私に一言書くことを躊躇しないでください。ありがとうございます!
コード
infraredReplicator
ソースコードhttps://github.com/gusgonnet/infraredReplicator 回路図

製造プロセス
- 貨車がインターネットに接続されている方法
- モノのインターネットとコネクテッドカーにおける5Gの役割
- サイバーセキュリティとモノのインターネット:バイオメトリクスの時間?
- モノのインターネット:コネクテッドワールドのウェブ
- モノのインターネットでどのように教育を容易にすることができますか?
- Leap Motionレーザータンク!
- UnifiedWater v1
- Pi-Arduinoインターネットラジオ
- モバイル投票ボックス
- コネクテッド エアコンプレッサー、インダストリー 4.0、モノのインターネット
- 圧縮空気とガス A ~ Z のブログ:IOT、インターネット 4.0、コネクテッド コンプレッサー