- ベストアンサー
PICを用いた赤外線通信について
- 赤外線通信におけるPICの使い方や通信方式について教えてください。
- 赤外線通信でのデータ送信の仕組みやリーダー部、データ部の送信方法について知りたいです。
- 赤外線通信において、変調周波数と送信周期の関係について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>これって、どちらの方式で送っても、受信した際のソフトの書き方で対応しろってことなんでしょうか? >それとも、自分が使用する受信モジュールによって、どっちの送信方法で送れっていうのが決まっているのでしょうか? 送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。ちなみに送信フォーマットにスタートビットやらストップビットが必要なのはノイズによる誤動作対策です。 >2)そもそも、38KHzで変調するということがピンとこないんですが、 例えば上の1つ目のページでいうと、送信する40bit分を1/38K=26mSec周期にしろってことなんでしょうか? 変調の意味が分からないみたいですね。 ビットレート(速度)と変調周波数はまったく関係がありません。変調が必要な理由は赤外線受信モジュールが38Khz変調した赤外線しか受け付けないためです。 受信モジュールは、38Khz変調した赤外線を受け取ると1の信号と判断します。それ以外は0と判断して出力ピンに信号を出しています。ただし負論理で出力する受信モジュールがあるのでデータシートで確認のこと。 赤外線の送信側は、1の信号を送信したい場合は38KHzで変調して赤外線LEDを駆動します。0の場合は赤外線LEDを消します。 38Khzで変調している理由は、自然光の赤外線などのノイズと区別するためです。
その他の回答 (2)
- zwi
- ベストアンサー率56% (730/1282)
>と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか? >(例えば、スタートビットのビット数を変えたり、データ部を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)ぐらいは最低限でも必要な気がします。この辺りは送受信環境などの使う場所で変わりますので実際の実験で調整していってください。
お礼
あっりがとうございます! 明日早速プログラム組んで、実験してみます☆ ほんと親切にありがとうございました!
- zwi
- ベストアンサー率56% (730/1282)
補足します。 >赤外線の送信側は、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で変調している理由は、自然光や電球、蛍光灯など赤外線を発するものをノイズとして区別するためです。
お礼
度々ありがとうございます。 申し訳ないんですが、もう一つ聞きたいんですが、 >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) とすればいいのでしょうか? 初歩的で申し訳ないんですが、よろしくお願いします。
お礼
大変詳しい説明ありがとうございます。 もう少しお聞きしたいんですが、 >送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。 と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか? (例えば、スタートビットのビット数を変えたり、データ部を16ビット以上にするなどしてもいいのでしょうか?)