M5Stack で Morse です。
この M5Stack、マイコン界隈では RasPi をも凌ぐ人気ぶりです。
ESP32 を搭載しているので、WiFi・Bluetooth が使えて、Arduino 環境で開発ができます。標準で TFT カラーディスプレイ、ボタン 3 個、それにスピーカまで付いている。あの micro:bit よりメモリも大きいし……これで、一旦中止にしているプロジェクトの「和文電信トレーナ」も作れるはずなんですが。
ということで今回は、まず M5Stack で他人様のスケッチを使って、モールスを鳴らしてみました。
Morse trainer
自分で作る前に、まずは情報収集です。
正直、イチから作るのは面倒で。どこかに M5Stack で動くスケッチが落ちてないかと「M5Stack Morse」でググってみたけど……意外にもヒットが少なくて、ガッカリ。
で、検索の一番上に出てきた "Morse trainer" というスケッチを、使わせてもらうことにしました。
forum.m5stack.com
M5Stack のモールスがどんな感じに聞こえるのか、この trainer で体感してみたいと思います。
USB ドライバのインストール
Windows に、M5Stack 用のドライバ CP210x をインストールします。すでにインストール済みなら、デバイス一覧に CP210x がリストアップされます。

なければ「CP210x ドライバ」でググって、インストールします。
USB - UART ブリッジ VCP ドライバ - Silicon Labs
Arduino IDE の環境設定
① M5Stack のボードを追加する

「追加のボードマネージャーの URL」に、
https://dl.espressif.com/dl/package_esp32_index.json
を追加します。すでに何かアドレスがある場合は、; で区切って入力します。

ツール → ボード → ボードマネージャで、
- 検索窓に「ESP」と入れて検索します。
- 「esp32 by Espressif Systems」をインストールします。

ボードは「M5Stack-Core-ESP32」を選択します。
② M5Stack のライブラリを追加する

ツール → ライブラリを管理 → ライブラリマネージャで、
- 検索窓に「m5stack」と入れて検索します。
- 「M5Stack by M5Stack 0.2.5」をインストールします。
現時点の最新は 0.2.6 ですが、0.2.5 じゃないと Morse trainer は正常に動作しません(音が出ません!)。
スケッチを書き込む
スケッチを GitHub からダウンロードします。

- フォルダ「Morse-trainer」を作成し、この中に ZIP を解凍します。
- スケッチ名を「Morse-trainer.ino」に変更します。(スペースがあるとエラーになります。)

これで、スケッチは正常に書き込めます。
動作確認

① ボタン … スピーカから流れる音のとおりにこのボタンを押し、合っていれば次の文字へ進みます。
② ボタン … 画面に表示されているアルファベットのモールスが鳴動します。
”C” の ー・-・ のモールスを3回繰り返してみました。
"C" の -・-・ を、3 回繰り返してみました。どうですか、聞きづらくないですか。……はい。あまりにも遅くて、聞きづらいですよね。

そこで、dot_time の初期値を変更して、速度を速くしてみました。250 から 120 に変更することで、だいたい 10 wpm 程度の速度になると思います。
どうですか。少し速いほうが、聞きやすくないですか。モールスを始めるなら、最初からこのくらいの速度がよくて、耳に馴染むはずです。
ただ、この Morse trainer は、スピーカから聞こえる音と同じように②のボタンを押さないと次へ進めないのですが、結構厳格な 1:3 が求められて、短点を少し長めに押さないとダメで……。このような誤った感覚での練習は、続けないほうがいいんじゃないかと、正直、思ってしまいました。
これは、短点が正しい「短点」になっていないからで。こういう感覚で覚えてしまうと、電鍵でキレイなモールスが打てなくなるので、気を付けたほうがいいと思います。
横道 ・・・ 遅い速度での 1:3 について
ここで、M5Stack の話題から少し横道にそれます。遅い速度での、短点・長点の 1:3 の関係 についてです。
電鍵操作でモールスを送信するとき、手首の動きは、短点と長点でまったく違ったもの になります。

- 短点は、手首で「トン」。
- 長点は、手首で「ツー」と押さえる感じ。
このことから、モールスを「トンツー」と呼ぶんじゃないのかなぁ、と思うのです。
電鍵で遅いモールスを叩いたって、やっぱり短点は短点なんですよね。バグキーだって、短点の長さは一緒。錘の位置を変えて全体を遅くしても、短点が「ツー」とはなりません。エレキーやパソコンのモールスだけが、変なんです。
短点が長点のように「ツ~」と伸びるのは、とてもオカシイこと。これは 1:3 の遅いモールスばかり聞いているからで、長点のような(間延びした)短点を「短点」として体が覚えてしまい、短点の叩き方が長点と同じになってしまう。こういう電鍵操作は、ダメなんですよ。
長点 1 つは短点 3 つ分の長さに相当し、各点の間は短点 1 つ分の間隔をあける。
・・・と〝だけ〟定義しているのも、言葉足らずで問題ありなんですよね。まぁ、プログラムを作るときは、この定義どおり(短点を基準に全体を伸縮させる形で)書いたほうが簡単なので、そうなりがちなんですが。
この短点と長点の比率は、開局当初からスッキリしない、わたしの中の懸案事項のひとつなんです。
(念のため補足すると、標準のモールスの定義のうえでは、速度を上げれば短点も含めて全体が比例して縮みます。ここで言っているのは、その物理的な定義とは別に、「耳で聞いて心地よく、そして電鍵できれいに打てる符号にするには、短点はむやみに伸ばさず短く保つべきだ」という、実戦的な話です。)
ちなみに、拙作の cw mania や Learning Morse の最低速度は 10 wpm で、あえて、これより遅い速度は設定できないように作ってあります。

トンツーの「トン」は、いつでも「トン」。速度で変化するのは、各点の間隔と、長点の長さだけ、というのがわたしの考えです。
どうしても、ものすごく遅いモールスを聞く必要があるというなら、

こんな感じの符号(短点は短いまま、間隔と長点だけを伸ばす)じゃないと、聞き取れませんよね。
たとえば、1 文字を 1 分かけて "A" をパソコンで作っても、それを "A" だと分かる人はいないんじゃないかな。(正確な 1:3 だと、12 秒の短点、12 秒の間隔、36 秒の長点、です。12 秒もある「トン」なんて、もう短点には聞こえません。)
モールスは通信手段のひとつであり、相手に確実に伝わることが大切なんです。
★ ポイント ★ 短点の長さは、5 wpm でも 50 wpm でも同じになるのが正解、というのがわたしの持論です。
終わりに
今回は、海外の Morse trainer というスケッチを動かしてみましたが、ガチなハムの練習教材としては機能不足なところがあり、改修が必要だと感じました。
- 速度が自由に変更できない(デフォルトが遅い)
- 練習したい文字を選べない(必ず A から始まる)
- 音が大きすぎる(これはハード上の問題。外部にボリュームがない)
ということで、「micro:bit で始めるモールス入門」で和文バージョンのトレーナが作れなかったこともあり、この Morse trainer を参考にさせてもらいながら、新たに M5Stack で作ってみようかと思っています。
乞うご期待あれ。