質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

3回答

3139閲覧

Arduino IRremote 送信について

raspypy

総合スコア247

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2019/03/19 12:07

##やりたいこと
Arduino + IRremoteを使用してリモコンを作成したいです。

##これまでに試したこと
リモコンの学習は「IRrecvDumpV2」で行いました。
シリアルモニタに表示されたデータを送信プログラムに書き込み、Arduinoから赤外線信号を送信しています。
送信側のプログラムを掲載します。
(とりあえず、Onデータだけで試しています。)

html

1#include <IRremote.h> 2IRsend irsend(26); 3 4int khz = 38; 5unsigned int onData[131] = {3500,1750, 400,450, 450,1350, 400,450, 450,450, 400,500, 350,500, 400,450, 400,450, 400,500, 400,450, 450,450, 400,500, 400,450, 400,1350, 400,450, 400,450, 450,450, 400,450, 450,450, 450,450, 400,450, 400,1350, 400,1350, 400,1300, 450,450, 400,500, 400,1350, 400,450, 450,450, 400,450, 400,450, 400,450, 450,450, 450,450, 400,450, 450,450, 450,450, 400,450, 400,450, 400,450, 450,450, 400,450, 450,450, 400,500, 400,450, 400,450, 400,500, 400,450, 400,450, 450,450, 400,500, 400,450, 450,450, 400,450, 400,450, 400,450, 450,450, 400,1350, 450,1300, 450,450, 400,500, 400,450, 400,450, 400,450, 400}; 6unsigned int offData[] = {6,6,6}; 7 8void setup() { 9 Serial.begin(115200); 10 Serial.println(); 11} 12 13void loop() { 14 if (digitalRead(GPIO_NUM_0) == 0) { 15 irsend.sendRaw(onData, sizeof(onData)/sizeof(int), khz); 16 } else if (digitalRead(GPIO_NUM_15) == 0) { 17 irsend.sendRaw(offData, sizeof(offData)/sizeof(int), khz); 18 } 19}

##困っていること
irsend.sendRawを使用しています。
これは取得したPanasonicのリモコン(エアコン)のデータが次の通り(Encoding: Unknown)だったからです。
この信号を送信しているのですが、エアコンが反応してくれません。

html

1Encoding : UNKNOWN 2Code : 9DCF5C22 (32 bits) 3Timing[131]: 4 +3500, -1750 + 400, - 450 + 450, -1350 + 400, - 450 5 + 450, - 450 + 400, - 500 + 350, - 500 + 400, - 450 6 + 400, - 450 + 400, - 500 + 400, - 450 + 450, - 450 7 + 400, - 500 + 400, - 450 + 400, -1350 + 400, - 450 8 + 400, - 450 + 450, - 450 + 400, - 450 + 450, - 450 9 + 450, - 450 + 400, - 450 + 400, -1350 + 400, -1350 10 + 400, -1300 + 450, - 450 + 400, - 500 + 400, -1350 11 + 400, - 450 + 450, - 450 + 400, - 450 + 400, - 450 12 + 400, - 450 + 450, - 450 + 450, - 450 + 400, - 450 13 + 450, - 450 + 450, - 450 + 400, - 450 + 400, - 450 14 + 400, - 450 + 450, - 450 + 400, - 450 + 450, - 450 15 + 400, - 500 + 400, - 450 + 400, - 450 + 400, - 500 16 + 400, - 450 + 400, - 450 + 450, - 450 + 400, - 500 17 + 400, - 450 + 450, - 450 + 400, - 450 + 400, - 450 18 + 400, - 450 + 450, - 450 + 400, -1350 + 450, -1300 19 + 450, - 450 + 400, - 500 + 400, - 450 + 400, - 450 20 + 400, - 450 + 400 21unsigned int rawData[131] = {3500,1750, 400,450, 450,1350, 400,450, 450,450, 400,500, 350,500, 400,450, 400,450, 400,500, 400,450, 450,450, 400,500, 400,450, 400,1350, 400,450, 400,450, 450,450, 400,450, 450,450, 450,450, 400,450, 400,1350, 400,1350, 400,1300, 450,450, 400,500, 400,1350, 400,450, 450,450, 400,450, 400,450, 400,450, 450,450, 450,450, 400,450, 450,450, 450,450, 400,450, 400,450, 400,450, 450,450, 400,450, 450,450, 400,500, 400,450, 400,450, 400,500, 400,450, 400,450, 450,450, 400,500, 400,450, 450,450, 400,450, 400,450, 400,450, 450,450, 400,1350, 450,1300, 450,450, 400,500, 400,450, 400,450, 400,450, 400}; // UNKNOWN 9DCF5C22

##試したこと
同じ送信プログラムで、Toshibaリモコン(レコーダー)のリモコン送信を試したところ、
問題なく動作しました。
Toshibaリモコンのデータは次の通りでした。(リモコンはNEC製?)

html

1Encoding : NEC 2Code : A23D48B7 (32 bits) 3Timing[67]: 4 +8900, -4550 + 500, -1700 + 550, - 550 + 500, -1750 5 + 500, - 550 + 500, - 600 + 500, - 600 + 500, -1750 6 + 450, - 600 + 500, - 600 + 500, - 600 + 450, -1750 7 + 550, -1700 + 500, -1750 + 500, -1750 + 500, - 550 8 + 500, -1750 + 550, - 550 + 500, -1750 + 500, - 600 9 + 450, - 600 + 500, -1750 + 500, - 600 + 450, - 600 10 + 500, - 600 + 500, -1750 + 500, - 550 + 550, -1700 11 + 500, -1750 + 500, - 550 + 500, -1800 + 450, -1750 12 + 550, -1700 + 500 13unsigned int rawData[67] = {8900,4550, 500,1700, 550,550, 500,1750, 500,550, 500,600, 500,600, 500,1750, 450,600, 500,600, 500,600, 450,1750, 550,1700, 500,1750, 500,1750, 500,550, 500,1750, 550,550, 500,1750, 500,600, 450,600, 500,1750, 500,600, 450,600, 500,600, 500,1750, 500,550, 550,1700, 500,1750, 500,550, 500,1800, 450,1750, 550,1700, 500}; // NEC A23D48B7 14unsigned int data = 0xA23D48B7; 15

##質問内容
Panasonic製品のリモコンを扱う場合、irsend.sendRawではだめなのでしょうか。
他に策が思い浮かばず困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

送信するON/OFFの変調単位の時間をもうちょっときれいな値に直したもので送ってみたらどうでしょうか。
PanasonicのON/OFFの時間を見る限り、家製協(AEHA)フォーマットの時間に似ています。
家製協(AEHA)フォーマットの変調単位は425(μ秒)が基準のようなので、時間をその倍数に合わせてみたら。

リーダー部が8T,4T=3400,1700、データビットは0が1T,1T=425,425、1が1T,3T=425,1275という時間が理想だと思います。

もしくは、トレイラー分の8msを待たずに、信号を再送してしまい、相手側が認識に失敗しているとか。
loopで、ずっと送信しているようなので、送信終了後一応8ms程delayしてみるとか。またスイッチをONにしたら、送信は2回までにしてみるとか。

NECフォーマットはデータが固定長なので、連続送信をしても、うまく認識してくれていただけかもしれないです。

投稿2019/03/22 09:02

ta.fu

総合スコア1742

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

赤外線リモコン受信モジュール によっては、データ受信時間最大値がデータシートに記載されている物があります
例 Data word length = Max 100msec
http://akizukidenshi.com/download/ds/paralight/PL-IRM0101-3_20180307.pdf

別のモジュールで試してみては?

参考先
http://netakiri.net/diary/archives/629.html
http://kagemomiji.hateblo.jp/entry/2016/09/03/102809

投稿2019/03/20 15:58

koujikuu

総合スコア401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もしかして、リモコン信号はもっと長いんでは。
途中までしか受信していないってことはないでしょうか

投稿2019/03/19 12:16

y_waiwai

総合スコア88163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raspypy

2019/03/20 12:32

RAWBUFの値を301にして取得したデータでしたが、 さらに大きい値601にしてデータを取得しても、同じ結果でした。(質問に掲載させていただいたデータと同じ。)
y_waiwai

2019/03/20 12:45

リモコンの場合、同じデータを2回連続で受け取って有効とするものがあります。 2回連続で送ってみては
raspypy

2019/03/20 13:07

いつも回答ありがとうございます。 2回同じデータを送信してみましたが、反応してくれませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問