アプリ版:「スタンプのみでお礼する」機能のリリースについて

 PICを使って赤外線通信をしたいんですが、
いくつか教えていただきたいことがあります。

(1)赤外線の通信仕様・方式なについてなんですが、
下記の2つのページを参考にしたんですが、
http://www.picfun.com/appframe.html
http://www.sendai-ct.ac.jp/~ckuma/micom/3048/ir. …

1つ目のページには、リーダー部(8bit)、データ部(16bit)、データ部連送(16bit)の40bitを送ると載っています。

しかし、2つ目のページには、リーダー部()、カスタム部、カスタム反転、データ部、データ部反転の順番で送っているようです。

これって、どちらの方式で送っても、受信した際のソフトの書き方で対応しろってことなんでしょうか?
それとも、自分が使用する受信モジュールによって、どっちの送信方法で送れっていうのが決まっているのでしょうか?

(2)そもそも、38KHzで変調するということがピンとこないんですが、
例えば上の1つ目のページでいうと、送信する40bit分を1/38K=26mSec周期にしろってことなんでしょうか?

ちなみに、PIC16f873、赤外線受信モジュールはSPS440-1を使用しています。
初歩的な質問で申し訳ありませんが、よろしくお願いしますm(_ _)m

A 回答 (3件)

>これって、どちらの方式で送っても、受信した際のソフトの書き方で対応しろってことなんでしょうか?


>それとも、自分が使用する受信モジュールによって、どっちの送信方法で送れっていうのが決まっているのでしょうか?
送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。ちなみに送信フォーマットにスタートビットやらストップビットが必要なのはノイズによる誤動作対策です。

>2)そもそも、38KHzで変調するということがピンとこないんですが、
例えば上の1つ目のページでいうと、送信する40bit分を1/38K=26mSec周期にしろってことなんでしょうか?
変調の意味が分からないみたいですね。
ビットレート(速度)と変調周波数はまったく関係がありません。変調が必要な理由は赤外線受信モジュールが38Khz変調した赤外線しか受け付けないためです。
受信モジュールは、38Khz変調した赤外線を受け取ると1の信号と判断します。それ以外は0と判断して出力ピンに信号を出しています。ただし負論理で出力する受信モジュールがあるのでデータシートで確認のこと。
赤外線の送信側は、1の信号を送信したい場合は38KHzで変調して赤外線LEDを駆動します。0の場合は赤外線LEDを消します。
38Khzで変調している理由は、自然光の赤外線などのノイズと区別するためです。
    • good
    • 0
この回答へのお礼

大変詳しい説明ありがとうございます。

もう少しお聞きしたいんですが、
>送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。

と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか?
(例えば、スタートビットのビット数を変えたり、データ部を16ビット以上にするなどしてもいいのでしょうか?)

お礼日時:2007/08/01 20:45

>と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか?


>(例えば、スタートビットのビット数を変えたり、データ部を16ビット以上にするなどしてもいいのでしょうか?)
自由にして良いです。気を付ける点は家庭にある赤外線リモコンとは違う信号にしておかないと家庭内で実験中に思わぬ機器が反応しますので注意してください。急にエアコンが動いたり、TVが点いたり(笑)。

>例えば、00101というデータを送りたいときは、
>1/76000秒=12μ秒なので
>プログラム的には、まずスタートビットを立ち上げた後に、(この時点をt=0とすると)、その後に
>off (0 < t < 12 μSec)
>off (12 < t < 24 μSec)
>off (24 < t < 36 μSec)
>off (36 < t < 48 μSec)
>on (48 < t < 60 μSec)
>off (60 < t < 72 μSec)
>off (72 < t < 84 μSec)
>off (84 < t < 96 μSec)
>on (96 < t < 108 μSec)
>off (108 < t < 120 μSec)
>とすればいいのでしょうか?
>初歩的で申し訳ないんですが、よろしくお願いします。
合ってます。ただし、こんなに高速なビットレートで信号は送れません。限界に挑戦するのも面白いので挑戦してみてほしいのですが、勘で少なくとも1つのビット辺り8周期(12μSecx16)ぐらいは最低限でも必要な気がします。この辺りは送受信環境などの使う場所で変わりますので実際の実験で調整していってください。
    • good
    • 0
この回答へのお礼

あっりがとうございます!
明日早速プログラム組んで、実験してみます☆
ほんと親切にありがとうございました!

お礼日時:2007/08/01 23:09

補足します。


>赤外線の送信側は、1の信号を送信したい場合は38KHzで変調して赤外線LEDを駆動します。0の場合は赤外線LEDを消します。
変調してって書き方が誤解を生みそうなので書き直します。
赤外線の送信側は、1の信号を送信したい場合は38KHzの周波数で赤外線LEDをON/OFFします。0の場合は赤外線LEDをOFFにします。
※ 注意。38Khzとは1/38000秒周期でON/OFFが1組の動作です。ですので、実際には1/72000秒毎にON/OFFを反転してやらないとだめです。

>38Khzで変調している理由は、自然光の赤外線などのノイズと区別するためです。
ここも言葉不足でした。38Khzで変調している理由は、自然光や電球、蛍光灯など赤外線を発するものをノイズとして区別するためです。
    • good
    • 0
この回答へのお礼

度々ありがとうございます。
申し訳ないんですが、もう一つ聞きたいんですが、

>38Khzとは1/38000秒周期でON/OFFが1組の動作です。ですので、実際には1/76000秒毎にON/OFFを反転してやらないとだめです。

とありますが、ちょっと確認してよろしいでしょうか?

例えば、00101というデータを送りたいときは、
1/76000秒=12μ秒なので
プログラム的には、まずスタートビットを立ち上げた後に、(この時点をt=0とすると)、その後に
off (0 < t < 12 μSec)
off (12 < t < 24 μSec)
off (24 < t < 36 μSec)
off (36 < t < 48 μSec)
on (48 < t < 60 μSec)
off (60 < t < 72 μSec)
off (72 < t < 84 μSec)
off (84 < t < 96 μSec)
on (96 < t < 108 μSec)
off (108 < t < 120 μSec)

とすればいいのでしょうか?
初歩的で申し訳ないんですが、よろしくお願いします。

お礼日時:2007/08/01 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!