光通信のデジタル変調の基礎「振幅偏移変調(ASK)」を試す空間伝送で学ぶ光通信入門(2)(2/2 ページ)

» 2026年03月27日 07時00分 公開
[今岡通博MONOist]
前のページへ 1|2       

受信ユニット

 図2に、受信ユニットの構成を示します。

図2 図2 受信ユニットの構成

 図3に、FT232RL USBシリアル変換モジュールのピン配列を示します。

図3 図3 FT232RL USBシリアル変換モジュールのピン配列 出所:秋月電子通商Webサイト

 図4に、赤外線受信モジュールの外観を示します。

図4 図4 赤外線受信モジュールの外観 出所:秋月電子通商Webサイト

 図4の赤外線受信モジュールの一番左側にある1番ピンは出力です。図3のFT232RLモジュールの赤枠で囲んだRXDに接続します。

 赤外線受信モジュールの一番右側にある3番ピンを、FT232RLモジュールの赤枠で囲んだVCCと接続することで電力を供給できます。そして、赤外線受信モジュールのグランドに当たる中央の2番ピンは、FT232RLモジュールの赤枠で囲んだGNDと接続します。

送信ユニット

 図5に、送信ユニットの回路を示します。

図5 図5 送信ユニットの回路

 D4に接続していたキーがなくなっていること以外は同じなので、前回の記事をご参照ください。

ASKで変調してアルファベットの符号を送信するプログラム

 リスト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 ASKで変調してアルファベットの符号を送信するプログラム

 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が基準になっている場合もあります。次回以降もさまざまな変調方式を用いて光通信に挑戦してみたいと思います。お楽しみに。(次回に続く)

⇒MONOist編集部へのご意見はこちらまで

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR