はじめに
このページでは,ロボコンでは必須となる赤外線通信の技術について述べます.
高専ロボコンでは,"手動ロボットの操縦は、赤外線・可視光・音波による遠隔操縦とする。"とルールに規定されています(*1).このうち,扱いが容易であることから,赤外線による通信がほぼ全ての高専で採用されています.
赤外線通信の技術はハードルが高いと感じ敬遠する方が多い傾向がありますが,基礎をおさえれば決して難しいことはないので,どうか積極的に学習していただきたいと思います.希望としては,全員が赤外線通信に関する基礎事項を把握できている状態が望ましいです.
技術を学ぶには,実験は欠かせません.ただ漫然とこのページを読むのではなく,各自で積極的に回路を製作し,実験を行うことで赤外線通信というものを体得してください.
なお,赤外線通信には様々な回路,計算機に関する知識が必要となりますが,それに関しては適宜文献等を参照してください.
ディジタル通信の基礎
この章では,ディジタル通信の基礎について述べます.
ロボットを操作するにはコントローラを用いますが,その信号は全てディジタルとして扱われます.極めて平易に言えば,スイッチのON/OFFと同等です.
1つスイッチのON/OFFが最初の情報量の単位であり,1bitといいます.通信では,8bitを1まとまりとした1byte単位でデータを扱うことが多いです.
なお,2進数において,最上位の桁をMSB(Most Significant Bit),最下位の桁をLSB(Least Significant Bit)といいます.
パラレル通信とシリアル通信
ディジタル通信は,パラレル通信とシリアル通信の2つに大別されます.それぞれの解説を読んでいただければわかると思いますが,赤外線通信ではシリアル通信が採用されます.
パラレル通信
いま,伝送したい1byteのデータが"b7 b6 b5 b4 b3 b2 b1 b0"であるとします.パラレル通信では,この8bitのデータを一括して送出します.このため,通信線は伝送したいbit数と同じ8本必要となります.
具体的には,次の回路で実現できます.

PICのポートBに送信したいデータを出力します."clk"はクロックで,パラレル通信ではデータとデータの区切りをつけるために用いられます.具体的にはクロックの立ち上がりでデータを取得するなどといった使い方をします.
シリアル通信
パラレル通信に対し,使用する通信線は1本のみです.シリアル通信では,各bitを1つづつ送信します.

図は,"0x98"を送信している状態(MSB first)です.シリアル通信ではスタートビット,ストップビットを用いる調歩同期方式を採用することが多く,この場合はクロックは必要ありません.当然,1bitの時間幅は決められています.
プログラムでは,次のように実装します.

まず,ループで最初のビットが来るのを待ちます.通常の通信では,データの始まりを示すスタートビットを待つことになります.スタートビットの立ち上がりを検出すると,1bitの時間幅の半分の時間(300us)待機して,再度読み込みを行います.ここで"1"が読み出されるとスタートビットを受信したと判断し,以後600usごとにデータを読み込んでいきます.
ソースが必要な方は,shinまでご連絡ください.