
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
No.1ベストアンサー
- 回答日時:
>これって、どちらの方式で送っても、受信した際のソフトの書き方で対応しろってことなんでしょうか?
>それとも、自分が使用する受信モジュールによって、どっちの送信方法で送れっていうのが決まっているのでしょうか?
送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。ちなみに送信フォーマットにスタートビットやらストップビットが必要なのはノイズによる誤動作対策です。
>2)そもそも、38KHzで変調するということがピンとこないんですが、
例えば上の1つ目のページでいうと、送信する40bit分を1/38K=26mSec周期にしろってことなんでしょうか?
変調の意味が分からないみたいですね。
ビットレート(速度)と変調周波数はまったく関係がありません。変調が必要な理由は赤外線受信モジュールが38Khz変調した赤外線しか受け付けないためです。
受信モジュールは、38Khz変調した赤外線を受け取ると1の信号と判断します。それ以外は0と判断して出力ピンに信号を出しています。ただし負論理で出力する受信モジュールがあるのでデータシートで確認のこと。
赤外線の送信側は、1の信号を送信したい場合は38KHzで変調して赤外線LEDを駆動します。0の場合は赤外線LEDを消します。
38Khzで変調している理由は、自然光の赤外線などのノイズと区別するためです。
大変詳しい説明ありがとうございます。
もう少しお聞きしたいんですが、
>送受信のフォーマットは自分で決めてプログラムで制御する必要があります。受信モジュールは何もしてくれませんので、全部プログラムで書きましょう。
と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか?
(例えば、スタートビットのビット数を変えたり、データ部を16ビット以上にするなどしてもいいのでしょうか?)
No.3
- 回答日時:
>と、ありますが、そうしたら上記のページの送信方法でなくとも、自分なりにデータの送り方を作ってしまってもいいということでしょうか?
>(例えば、スタートビットのビット数を変えたり、データ部を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)ぐらいは最低限でも必要な気がします。この辺りは送受信環境などの使う場所で変わりますので実際の実験で調整していってください。
No.2
- 回答日時:
補足します。
>赤外線の送信側は、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)
とすればいいのでしょうか?
初歩的で申し訳ないんですが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- docomo(ドコモ) +メッセージの送受信。 au(uq mobile)のデータ回線でdocomoの電話番号の+メッセージ 2 2022/09/14 16:09
- Android(アンドロイド) iPhoneには、なぜ僕が合計3台持ちしているGalaxy A22やXperiaXZ1、arrows 4 2022/07/12 18:42
- iPhone(アイフォーン) 皆さんiPhoneは、機能が少な過ぎますか?? iPhoneには、なぜ僕がAndroid合計3台持ち 2 2022/07/12 19:59
- HTML・CSS htmlのデータをwebページみたいに見る方法 5 2023/06/23 17:47
- Android(アンドロイド) Androidスマホのデータ移行が終わらない 1 2023/08/04 17:25
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- JavaScript Wordpressでヤフー知恵袋やgoo質問のような回答ページを作成したいです 4 2023/06/02 22:38
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
Outlookの「受信日時」「送信者...
-
ASP.NET C#でPOST受信
-
CRC-CCITTに関しての仕様とサン...
-
TCP/IP のパケットの分断と結合...
-
WinSockとWinPcapについて
-
winsockを使ったTCP及びUDP通信...
-
VBのMSCommコントロールを使っ...
-
パソコンに詳しい方教えて下さ...
-
バッチファイルでディレクトリ...
-
バックアップの用語
-
Lhaplusが発したと、みられるエ...
-
別のフォルダにファイルを移動...
-
Windows上のファイル操作の履歴...
-
Zipファイルをエクセルに指定変...
-
Batファイルでhostsを追加したい
-
java.lang.NumberFormatExcepti...
-
excel vba で 実行時エラー13...
-
ARCserveの復元方法
-
proftpdで共有ロックがしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
UDP受信時の通信異常検知について
-
Outlookの「受信日時」「送信者...
-
C#にてCTI。RS232Cの受信と送信...
-
VC++メッセージの送受信につい...
-
recv関数の戻り値について
-
RS232cを用いた送信プログラム
-
メーラー
-
PC98で232c送信winndowで受信で...
-
「TCPは全二重可能」の意味
-
VBのMSCommコントロールを使っ...
-
シリアル通信時のデータ受信方法
-
WinSockとWinPcapについて
-
マルチスレッドに挑戦したい
-
VC++ 2010 メッセージが文字化...
-
ネットワークでの受信バイト数
-
無線LAN、SIFSについて
-
winsockを使ったTCP及びUDP通信...
-
DHCPOFFERの受信について
おすすめ情報