モールス信号の自動送受信機を作って、分速1000文字をめざす | a24a24a24のブログ

a24a24a24のブログ

アメピグ残党。
釣り、温泉、お出かけ、パソコン。最近、電子工作。

 

モールス信号、知ってますか?

 

昔のスパイ映画や戦争映画で、連絡員がナゾの電鍵をコツコツ叩いて

「ピピー ピーピーピピ ピーピピー」みたいな電子音であやしく無線通信する、アレです。

 

 

手作業で送って、耳で解読するアナログさ。

携帯電話の普及でほとんど利用されなくなり、歴史の遺物になっているようですが、

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に表示します。

二台は微弱な電波のみでつながっています。

 

ザワザワ音がうるさくてすみません。

一応無線モジュール越しにモールス信号を拾えています。

最初の一行のみ文字化けするのが、受信開始時のノイズと思われます。

 

 

 

がんばったわりに、実用性皆無なのが、ツライ。

おしまい。