図2に、受信ユニットの構成を示します。
図3に、FT232RL USBシリアル変換モジュールのピン配列を示します。
図4に、赤外線受信モジュールの外観を示します。
図4の赤外線受信モジュールの一番左側にある1番ピンは出力です。図3のFT232RLモジュールの赤枠で囲んだRXDに接続します。
赤外線受信モジュールの一番右側にある3番ピンを、FT232RLモジュールの赤枠で囲んだVCCと接続することで電力を供給できます。そして、赤外線受信モジュールのグランドに当たる中央の2番ピンは、FT232RLモジュールの赤枠で囲んだGNDと接続します。
図5に、送信ユニットの回路を示します。
D4に接続していたキーがなくなっていること以外は同じなので、前回の記事をご参照ください。
リスト1に、Arduino nanoのマイコンにより送信ユニットからASKで変調してアルファベットの符号を送信させるためのプログラムを示します。
1:void on(int num){
2: for(int i = 0; i < num; i++) {
3: PORTD |= 8;
4: delayMicroseconds(9);
5: PORTD &= ~8;
6: delayMicroseconds(17);
7: }
8:}
10: void setup(){
11: pinMode(3, OUTPUT);
12: }
14:void loop(){
//1000-0010 0x41 'A'
//0111-1101
17: on(32);
18: delayMicroseconds((17+9)*32); //0
19: on(32*5); //11111
20: delayMicroseconds((17+9)*32); //0
21: on(32); //1
22: delay(200);
23: }
1行目は、送信ユニットの赤外線LEDからONの信号を送出する関数です。引数にONの信号を生成する際、キャリア(38kHzの搬送波)を何度繰り返すかを指定します。一般的に、家庭用の赤外線リモコンの場合32となります。1ビットは搬送波32個分となります。
3〜6行目は搬送波を生成するコードとなります。搬送波のパルスはデューティ比が50%ではありません。搬送波の波形は山が9μsに対して谷が17μsと谷の時間が山に比べて2倍近く長くなっています。
11行のsetup関数ではD3ピンを出力に設定しています。
14行目からはloop()関数になります。ここでASCIIコードの「A」の符号を送出しています。上位ビットから送出されますが最初の15行目はスタートビットです。1文字送り終えると200msの間をおきます。これを繰り返します。
送信ユニットと受信ユニットを対面に置き、受信ユニットをUSBケーブルでPCに接続します。そうすると、PC側のTeraTermの画面で、「A」の文字が一定間隔で表示されるのを確認できました。
ASKは、光通信に用いられるデジタル変調方式の中では最も基本的なものと言えます。他のより高度な変調方式もASKが基準になっている場合もあります。次回以降もさまざまな変調方式を用いて光通信に挑戦してみたいと思います。お楽しみに。(次回に続く)
光通信入門事始め――古代の人々ののろしと同じように光で信号を送ってみよう
USBシリアル変換モジュールが必要なら、代わりにArduinoを使えばいいじゃない
忘年会に最適!? 使い捨てライターで離れた場所にあるLEDを点灯するガジェット
「コイル」は受動素子ナンバーワンの不思議ちゃんCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク