モールス信号、知ってますか?
昔のスパイ映画や戦争映画で、連絡員がナゾの電鍵をコツコツ叩いて
「ピピー ピーピーピピ ピーピピー」みたいな電子音であやしく無線通信する、アレです。
手作業で送って、耳で解読するアナログさ。
携帯電話の普及でほとんど利用されなくなり、歴史の遺物になっているようですが、
Arduino+微弱無線モジュールの電子工作で、このモールス信号を「自動送受信」してみました。
モールス信号は、ちゃんとルールがありまして
1文字ごとに短音=「・」、長音=「-」を組み合わせた符号が決まっています。世界規格です。
また1文字送るごとの間隔、単語ごとの間隔も決まっています。
世間の速度の目安はこれくらいらしいです。
1級 ・・・ 1分間に60文字
名人 ・・・ 1分間に180文字
今回の目標 ・・・ 1分間に1000文字
(細かい話)
そもそもは、無線モジュールを使う際、標準ライブラリ「VirtualWire.h」がサーボのライブラリと相性が悪く
自前のプログラムでラジコンのように送受信できないか、と試したものです。
結果は、デジタル出力ピンにHIGH/LOW出力し送信モジュールのDATAピンにぶち込めば
そのまま受信モジュールのDATAピンから電源5V/3.3Vに応じたHIGH/LOW出力され、素直に作れそうです。
ただし受信機のDATAは、無通信が1.2秒ほど続くとノイズ状態になり、また受信直後0.5秒ほどノイズ?
を噛むようで、何らかの同期やエラー対策が必要と思われます。
3千円で買ったオシロスコープが大活躍でした。
(細かい話ここまで)
プログラムは、送信機は「・」と「-」を一方的に送るだけなので簡単。
受信機はちょっと手間で、待ち受け、「・」と「-」の音の長さを見分けて、空白を判別しつつ
文字に変換。さらに短すぎ長すぎはノイズ扱いで無視。
通信速度は固定ですが、プラスマイナス30%程度のブレは許容できるようにしました。
右下が自動送信機。モールス信号(適当な文章)を連続送信。
右上が自動受信機。モールス信号を受信して判別、1文字ごとにOLEDに表示します。
二台は微弱な電波のみでつながっています。
ザワザワ音がうるさくてすみません。
一応無線モジュール越しにモールス信号を拾えています。
最初の一行のみ文字化けするのが、受信開始時のノイズと思われます。
がんばったわりに、実用性皆無なのが、ツライ。
おしまい。