
この記事は、先日の「
IchigoJamでモールス (2):赤外線ワイヤレス通信ごっこ」のIchigioJamプログラムの説明編です。
直接この記事におこしになられた方は、先に
こちらの記事と動画 をご覧されればと思います。
◆送信側のIchigoJam
・プログラム
10 IF !BTN() CONT ELSE BEEP 9,999:LED 1
20 PWM 2,421,-1263:WAIT -10:OUT 2,0:WAIT -10
30 IF BTN() GOTO 20
40 BEEP 0:LED 0:GOTO 10
・説明
ボタンを押している間は、OUT2番端子に、38KHzの周波数の断続信号を出力します。
補足:
- OUT2番端子:赤外線発光素子=赤外線LEDの駆動回路がつながれている
- 38KHz:受信側の回路に実装した赤外線受光モジュールの中心周波数に合わせた(キャリア信号)
- 断続信号:距離が離れると、38KHzを連続では、途中で信号が途切れる現象がになり、断続パルスにした方が安定して通信できる。
10行 |
ボタンが押されるまで待ち、ボタンが押されたら、ブザーを鳴らし始めてLEDも点灯させ
ます。 |
20行 |
(ボタンが押されたので)赤外線発光素子(小基板上のLED)の駆動を行います。
「PWM 2,421,-1236」
使用した赤外線受信モジュールの中心周波数が38KHzなので、38KHzの波形を2番の出力端子(赤外線発光素子回路がつながっている)に出力します。パルス幅は1/3duty(※1)になるようにしています。
パラメーター:
-1263: ここがマイナスなのでPWMコマンドの周期とパルス幅が通常(0.01msec)の1/480になります。なので、
2:出力端子は2番
421:パルス幅が、0.01msec x (1/480) x 421 = 0.0088ms
1236:周期が、0.01msec x (1/480) x 1263 = 0.02631ms
の波形が出力されます。
(周波数は1/0.02631msec=38KHz、の周波数で、duty比は0.0088/0.02631=1/3)
「WAIT -10」「OUT 2,0」
その出力状態を (1sec/60/261) x10 = 0.639msec 続けた後に、2番端子を0(LOWレベル)にして、38KHzを一旦止める(休ませる)ます。(※2)
「WAIT -10」※2
その休んだ状態を (1sec/60/261) x10 = 0.639msec 続けます。 |
30行 |
ボタンが押されて(押され続けて)いたら、前の20行に戻り、繰り返します。 |
40行 |
ボタンが押されていなかったら、ブザーを止めて、LEDを消灯させて、元の10行へ戻ります。 |
※1:パルス比は421の数値を変更していろんなパルス比で実験できます。1/3の設定は(回路の遅延の影響もあり)最適かどうかは分かりませんが、1/2よりも安定しています。1/3や421にこだわる必要はありません。
※2:「WAIT -10」は正直言って気休め的に入れています。(無くても良いです。)IchigoJamのコマンドの実行速度で制限されますのでPWM 2,421,-1263:OUT 2,0でもさほど変わりませんが、そのタイミングで少し待つ気持をプログラムに入れ込みました。
・OUT2端子の実測波形(ボタンを押した時)
◆受信側のIchigoJam
・プログラム
10 IF IN(1) CONT
20 BEEP 13,999:LED 1:C=0
30 IF !IN(1) C=0:WAIT -20:CONT
40 C=C+IN(1):WAIT -10
50 IF C<10 GOTO 30
60 BEEP 0:LED 0:GOTO 10
・説明
赤外線受光モジュール(IN1端子につないている)は、赤外線が来たら出力が0(Low)にしますので、IN1が0になったら、送信側でボタンが押されたと判断し、ブザー音を鳴らし始めてLEDを点灯させます。
そして、IN1がベタ1になったら、送信側のボタンが離されたと判断してブザーとLED を止めます。ここで、送信側は赤外線は断続的に送信しますので、断の時(IN1が1)には反応しないよう、一定間隔(※3)おいてIN1=1を複数回(※4)検出したら、送信側のボタンがOFFされたと判定をしています。
※3:一定間隔はWAIT -10としていますが、送信側同様にこれもいい加減な値ですし、実際には狙い通りの時間間隔にはなっていません。
※4:複数回数は10で判定しています(変数Cに加算して、Cが10なったら判定)が、これもカットアンドトライ的な値です。あまり多くし過ぎると、反応が遅れてきます。(信号が長めになる=キレが悪くなる。)
なお、今回使用したIchigoJamのファームウェアはVer. 1.3.1です。
最後に、
前回の記事と同じ実験動画をここにも掲載します。
動画の実験では、6.5m離しても大丈夫でしたが、今回のブログラムは※1~4は暫定値でまだまだ調整ができますし、プログラムを工夫をしたり、回路や受光・発光素子に工夫を加えたりして、もっと遠い距離まで届くようになるでしょう。 チャレンジされてはいかがでしょうか?
-・・・-
IchigoJamでモールスの記事の目次を
こちら にまとめましたのでご覧ください。
ここまで読んでいただいて、「IchigoJamってなに?」って方は、
こちらのコラムをご参照ください。
なお、IchigoJamは(株)jig.jpの登録商標です。
#IchigoHam #IchigoJam
#IchigoJamでモールス #CW #自作室
PR