自作キーボードの極み「モールス信号キーボード」:注目デバイスで組み込み開発をアップグレード(7)(1/2 ページ)
注目デバイスの活用で組み込み開発の幅を広げることが狙いの本連載。第7回は、温故知新をテーマに、モールス信号を使ったキーボード「OneKey」を紹介する。
はじめに
今回のテーマは温故知新です。いわゆる「故きを温めて新しきを知る」ってやつですね。果たしてこの哲学(教え)を、現代のハイテクの分野で生きているわれわれはどのように実践すればいいのかを問う記事になっています。
⇒連載「注目デバイスで組み込み開発をアップグレード」のバックナンバー
ということで、ここからはコンピュータのキー入力とモールス信号について説明します。それを通して、ユーザーインタフェースの在り方などにも思いを巡らせてもらえば幸いです。
モールス信号とは
モールス信号は、遠くの相手に文字を伝達する方法として考案されました。電信とも言います。電気的な信号で伝達する方法もありますし、光の点滅(遮蔽と透過)で信号を伝達する方法もあります。1970年代に放映されていた「バビル二世」というテレビアニメで、何話だったか定かではありませんが、ビルの屋上のネオン管のちらつきで向かいのビルにモールス符号で秘密の伝文を送っていたという話がありました。
モールス信号で文字を伝達するにはモールス符号を用います。モールス符号とは長短のオンオフ信号の組み合あわせが伝送したい文字に対応しています。例えばアルファベットの“A”を伝えたい場合は、短い信号1回と長い信号1回の組み合わせで“A”のモールス符号を送ったことになります。
日本では短い信号を短点といい「トン」あるいは「ト」といいます。また長い信号を長点といい「ツー」と発音します。ですから“A”の場合は「ト、ツー」となります。これが欧米となると多少表現が異なり、短点が「ドット」、長点を「ダッシュ」と発音します。図1は、26個のアルファベットと10個の数字に対応するモールス符号です。
かつてモールス信号は、海運、国防、在外大使館などでの通信で大活躍しました。日本では当時の逓信省のお墨付きで優秀な電信の通信士を排出するために3つの電波高等専門学校(仙台、宅間、熊本)が設立されました。筆者と同期入社の高専生はそのころまで電信が必修だったそうです。つい40年前のことです。
モールス信号キーボード「OneKey」の仕組み
図2は、モールス符号を変換して、キーボードの代わりにPCに打電した文字を伝えるデバイスです。「OneKey」と命名しました。OneKeyの回路図やプログラムは以下のリポジトリから参照可能です。
⇒https://github.com/imaoca/OneKey
手前にあるの黒いノブを押さえてモールス符号を打鍵します。このノブはペットボトルのキャップで代用しています。ノブのキャップはブームに接着されています。ノブをたたくとブームの下側にあるタクタイルスイッチを押下します。これによってスイッチの接点が閉じる仕組みです。ブームはアイスキャンディーのスティックで、消しゴムを緩衝材にしてブレッドボードに固定しています。ノブを押下した後の戻り具合などは消しゴムとブームをつないでいるねじで調整します。そしてスイッチの接点はマイコンのGPIOとGNDに接続されています。
OneKeyの制御には、Arduino Leonardo互換のArduino Pro Microを使いました。両機種ともCPUに「ATmega32U4」が搭載されています。このCPUには8ビットのAVRコアに加え、USBインタフェース回路が内蔵されています。ですから、今回のようにPCにとってのキーボードのようなデバイス、いわゆるHIDデバイスをマイコンモジュール1個で実現するにはとても便利です。HIDとはHuman Interface Deviceの略で、キーボードやマウス、あとゲームパッドなどもそれに当たりますね。
ボードの右にあるUSBコネクターからPCに接続するとこのデバイスはPCからキーボードとして認識されますが、そのためにはプログラムが必要です(プログラムについては次ページで説明します)。図3内の右側にあるシルクハットのようなシンボルがタクタイルスイッチです。先に示したノブを押下することにより接点が閉じGPIOの9番がGNDに短絡します。GNDはグランドかアースとか言われるもので0Vの電位です。つまり、ノブが押下されるとGPIOの9番の電位が0Vとなります。
それではノブが押下されていない時はどういう状態なのかを少し説明しておきましょう。GPIOを入力に設定すると通常はハイインピーダンス状態になります。ハイインピーダンス状態とは、いわゆる抵抗値の高い状態なので、一定の電圧を印加していないと入力電圧が確定しません。図3の場合であれば、タクタイルスイッチが閉じていない状態ではどこにもGPIOの9番はつながっていないので入力電圧が確定しないのです。極めて不安定な状態でノイズやその他の外部環境の変化で値が不安定になります。
このような状態を避けるためにプルアップ抵抗を用います。これによりGPIOの入力がオープンの時、電源のプラス側の電位に引っ張ることができ、入力値を1に確定させられます。本来は外付けの抵抗が必要なのですが、今回使用するATmega32U4は、プログラムの設定によりCPU内部でプルアップ抵抗を設定できます。設定方法は次ページで説明します。
Copyright © ITmedia, Inc. All Rights Reserved.