へのへのもへじ工作室
07 | 2017/08 | 09
S M T W T F S
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

赤外線データ通信を強化する(japanenoにチャレンジその10)
引き続き、鉄道とは離れた話です。プログラムが好きなわけではないのですが、目的があってやっているので今はガマンです。

実はちょっとした問題が、、、
自作リモコンでちょっとした問題があることがわかっています。向きを変えたり、距離をとったり、またテレビなど他の赤外線リモコンを使うと誤ったデーターを受け取ってしまうことです。リモコン制御で誤動作したり暴走したりするのも困るので、先に進める前に赤外線通信を強化しておきます。

何を変えるのか?
通信データをそのまま送るのではなく、いくつかの工夫をします。一つは、データが壊れたらそれがわかるように、2回データを送って比較し連続したデータのみ正解と判断させるようにします。もう一つは、データの最初と最後がわかるように印をつける(今回はゼロを印とする)ことです。例えば、"ABC”を送るときに赤外線は「ゼロ-A-A-B-B-C-C-ゼロ」と変換して送ります。
これらの処理を入れると多少余分に通信時間がかかりますが、気にしません。また受け取り側はその処理方法を知っているので、先頭と最後のゼロを除き、その後二回同じ文字を受信したら正解として"ABC"であると判定します。もし、お尻が切れたら(例えばリモコンの向きが変わって赤外線が途切れたら)それは、時間切れを検知し次の指令を待つようにします。

スケッチは?
送信側のarduiroのスケッチ(プログラム)は、
int sendIR(char *sdata)
{
int i=0;
Serial.write(byte(0));
for(i=0;sdata[i]!=0;i++)
{
Serial.write(byte(sdata[i])) ;
Serial.write(byte(sdata[i])) ;
if(i>20) return 0;
}
Serial.write(byte(0));
return i;
}
を使います。詳しいことはわからなくても送信したいときに、
 sendIR("ABC");
を実行すれば「ゼロ-A-A-B-B-C-C-ゼロ」を送信します。
"henohenomoheji"とか好きな文字を送ることができます。
なお、受信側はこの暗号めいたデータを、パズルを解くようにして送信文字をとりだすようになります。よって、送信側より複雑ですのでスケッチは省略します。

結果は?
とりあえず、リモコンの混信の影響があるデータは除去し、正常なものだけ受信できるようになりました。
このあたりはもっと良い方法があると思いますが、私は専門家でもないですし、こだわりもないので、今回はこれで完成にします。

AUTHOR: にしおか
DATE: 01/25/2011 22:46:05
これは人間の感覚的にも判りやすいデータ排出ですね。
参考になりました
スポンサーサイト
コメント

コメントの投稿














管理者にだけ表示を許可する



天気予報


-天気予報コム- -FC2-

プロフィール

へのへのもへじ

Author:へのへのもへじ
FC2ブログへようこそ!

最近の記事

最近のコメント

最近のトラックバック

カテゴリー

ブロとも申請フォーム

この人とブロともになる

アルバム

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。