|
|||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2021.4.11 最終確認 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
オリジナルキーボードあってこそのPlus/512K USBキーボードではなく、ADBキーボードでもないまったくApple独自のPlus/512K用キーボード(M0110、拡張M0110A)は、キーボードケーブルも電話機のカールコードと同じRJ-10の4極4芯(4P4C)ストレートタイプとなっています。(日本ではRJ-9 受話用4極4芯モジュラーケーブル) (電話機用のケーブルはRJ-11タイプの6極2芯(6P2C)または6極4芯(6P4C)で、サイズも異なり使えません) 筆者の入手したPlusはキーボードケーブルの片端のRJ-10コネクタのロック部分が折れていたため、市販の受話機用の白カールコードを買いました。 USBでもPS/2でもADBでもないPlus/512Kは、いかに名機といえども、マウスとキーボードのどちらを失ってもただの箱です。 備えあれば憂えなし。本ページでは「Apple ADBマウスを改造してPlus/512Kで使う」に続き、Plus/512Kユーザーのために、いまも普通に入手できるWindows用(DOS/V機用)の入力デバイスを活用する例として、小規模の制御システムとしていま主流ともいえるArduinoマイコンボードを使って、PS/2キーボードをPlus/512K用に変換して使う方法を解説します。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PS/2-MacPlus キーボード 変換 |
Arduino UNO R3 (互換機) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
概要 【ことの発端】 https://blog.rekawek.eu/2016/12/08/mac-plus/ ある日、ArduinoがPS/2キーボードとPlusのあいだにあるという衝撃的なイラスト(Temek Rekawek氏のブログ)を見つけました。 リンクをたどっていくと、Teensyという会社がPS/2キーボードでArduinoに入力するためのライブラリを公開していて、GitHubサイトに置いてあるTemek Rekawek氏の変換プログラムも、中身は入出力間をキーマッピングでやっているようなので、「これはなんとかやれるのではないか。それに手元には友人に頼まれて余分に注文したときの残り物のArduinoが1台ころがっているし...」ということで、さっそくMiniDIN-8ソケットとRJ-9受話ケーブルを注文してやってみることにしました。 【Arduinoについて】 敷居が高かったPICマイコンボードに代わって、いまや小学生のプログラミングや電子工作で使われるほどの人気のArduinoですが、USBケーブル1本で開発環境(Arduinoアプリ)をインストールしたPCとハードウェアのArduinoボード部分をつなぎ、PCのArduino(アプリ)画面上でプログラミングしてそのままArduino ボード上のメモリに書き込めば、あとはそのArduino ボード単体で電源を投入するとプログラムがそのまま動作するという(やってみれば何とも簡単な)名刺サイズコンピュータです。 まるで初めてHyperCardをスクリプトで実行したときの、あの何とも「こんなのでいいのかな、Think Cを勉強しようとして結局1行も書けずに挫折したのに...」という気の抜けた記憶がよみがえってきました。 ちなみに筆者は、チャレンジした順に、FORTRAN、COBOL、BASIC、C言語を2回、アセンブラ、EXCELのマクロ言語(EXCEL4.0まで)、Mac でThink C、HyperCard(HyperScript)、ファイルメーカーのスクリプト、AppleScript(ファイルメーカーとQuarkXpressの連携)、Perl、VerilogHDL 、といくつかやりましたが、結局ものになったのは、Macがらみの EXCELのマクロ言語(EXCEL4.0まで) HyperCard(HyperScript) ファイルメーカーのスクリプト AppleScript(ファイルメーカーとQuarkXpressの連携) ぐらいで、これらはとことんやりきった自信はあります。(商品にしてお客様に納品できたレベルです) ほかの言語は学校の授業でやったものや自己研鑽として取り組んだもので、仕事上で使うものでなかったため自然と尻すぼみになってしまいましたが、それでも、のべ3回もチャレンジして何の成果も得られなかったC言語の挫折だけは生涯引きずっています。
Arduino は C/C++言語ベースの「Arduino言語」で記述するとはいえ、Cのような敷居の高さはないようです。 筆者はこの記事に向けて、今回、生涯で初めてArduinoにさわりました。そしてその翌日、当ページの目的は達成できました。 タネを明かせば、本記事ではArduinoを使うとはいいながら、プログラム(Arduinoではスケッチと呼びます)は借り物のため、自分では1行も書きませんので、「HyperCardでスクリプトを書いたことがあるぐらいの経験があれば何のことはない」ということなのです。 ソースプログラムとスケッチを公開提供してくれている Temek Rekawek氏に感謝します。
【必要な部品】 Arduino 1セット ( UNO、NANOなどモデルは何でも可=速度やメモリ容量は関係なし) USBケーブル(A-B)、MiniDIN 6Pソケット、4極4芯ケーブル(RJ-9受話器ケーブル) ほかにリード線やユニバーサル基板など必要に応じて(筆者は実験時は基本的に空中配線です) (注意)MiniDIN 6Pソケットは秋月電子でブレッドボード用変換基板と一緒に購入すると便利ですが、同社の変換基板はピン番号の並びが 印刷ミスで実物とは逆になっていますので、念には念を入れてテスターチェックしてください。
【変換プログラム】(プログラム開発もコンパイラも書き込み器も不要) 完成したプログラムが無償で公開されているので、プログラミングなしでArduinoに書き込むことができます。 公開サイトは「GitHub」で、無料のユーザー登録が必要です。
【全体の流れ】 PC(Windows、Mac、Linux)からUSBケーブルでArduinoへの書き込み作業が可能です。 (1)Arduinoの開発環境(アプリ)をダウンロードしてWindows7機にインストールします。 (2)GitHubサイトを取り込むための「git」コマンドと、圧縮するための「zip」コマンドを準備します。 (3)GitHubサイトからPS/2キーボード用のライブラリをダウンロードしてArduino(アプリ)に追加登録します。 (4)USBケーブルでPCにArduinoボードにつないで再起動し、使用するポートを指定します。(ポート指定はWindowsのみ必要) (5)GitHubサイトから公開プログラム(スケッチ)をダウンロードして、実行(コンパイルと書き込み)します。 (6)PS/2キーボードからの打鍵入力が確認できれば、Arduino完成です。 あとはArduinoごとケースに組み込んでください。 |
||
Windows7(64bit機)で作業 |
||
Windows7にArduino開発環境(IDE)アプリ Arduino 1.8.12 をインストールします。 「Windows Installer for Windows Xp and up」 ボタン 「JUST Download 」ボタン でそのままインストールをします。(PCはXp以降であれば32/64ビットを問わず) Program Files(x86)へ「Arduino」フォルダが作成されます。 |
||
Arduinoが初めての方 ネット上のArduinoサイトを参考に、王道のLチカ(LED点滅)ではなく、「Hello,World」のスケッチを作って練習するのが本ページでの成功の近道です。 (「Hello,World」表示は、各種言語プログラムのチュートリアルでのまさに王道です。もし、スイッチのON-OFFなどのハード制御をやっていくのであればLチカで基本を押さえるのがいいと思います)
インストールが完了したら、PCにArduino ボードをUSBケーブルでつなぎ再起動します。 スタートメニューまたはデスクトップアイコンからArduino.exeを実行します。 Windowsユーザーだけは、「ツール」メニューの「シリアルポート」で、Arduinoが使用しているCOMポート番号を選択します。 (Windows機のデバイスマネージャーのポート(COMとLPT)の項で、COM*となっている*番号と一致させます) Arduino使用中に「ツール」「シリアルポート」がグレー表示になったときは、PCを再起動させます。(使うPCのUSBポートを変更するときは必ず再起動) |
||
(この項では、ライブラリ登録のための準備を行います) Arduinoで作成する変換プログラムは PS2キーボードからの入力を処理する部分(=ライブラリ「PS2Keyboard」) 入力信号を変換してMacPlusに出力する部分 から構成されます。 ArduinoボードでPS2キーボードからの入力を受け付けるには、無料で公開されているGitHubサイトにある「PS2Keyboard」のソースファイルを、Arduinoに入力装置用の「ライブラリ」として事前登録しなければなりません。 Windows上でコマンドラインから、Arduino(アプリ)にライブラリ「PS2Keyboard」を登録するためには、 git コマンド zip コマンド の2つを事前にWindows7に組み込んで、ライブラリ「PS2Keyboard」をふくむzip形式のファイルを作成しておく必要があります。 |
||
Windowsに git コマンドとzip コマンドを組み込む作業は以下のとおりです。
(1)git コマンドのインストール から「git for Windows 」(執筆時Ver.2.28)をダウンロードして、そのままWindows7(10)へインストールします。
「Git Bash」というアプリケーションが作られます。
(2)zip コマンドのインストール http://gnuwin32.sourceforge.net/packages/zip.htm の「Download」から、DiscriptionのBinariesの「Zip」ファイルをクリックして(ダウンロードフォルダに)保存します。 (zip圧縮されたままPCにダウンロード保存されます。執筆時のバージョンは「zip-3.0-bin」) 「zip-3.0-bin」フォルダ内の「bin」フォルダから「zip(.exe)」をいったんデスクトップに取り出します。
同様に http://gnuwin32.sourceforge.net/packages/bzip2.htm の「Download」から、DiscriptionのBinariesの「Zip」ファイルをクリックして(ダウンロードフォルダに)保存します。 (zip圧縮されたままPCにダウンロード保存されます。執筆時は「bzip-1.0.5-bin」) 「bzip-1.0.5-bin」フォルダ内の「bin」フォルダから「bzip2.dll」をデスクトップに取り出します。
次に、コントロールパネルの「システムとセキュリティ」から「システム」を選んで、「システムの詳細設定」をクリックします。 「システムのプロパティ」ウインドウで「詳細設定」タブの「環境変数」のボタンをクリックします。
ユーザー環境変数の枠内の変数「Path」を選択して「編集」を押すと、変数値の項にディレクトリが表示されているのでメモします。 実際に、そのディレクトリのパス位置に相当するフォルダを開き、そこへ「zip(.exe)」と「bzip2.dll」の2つのファイルを置きます。 注意:事前にコントロールパネルの「デスクトップのカスタマイズ」から「フォルダオプション(Windows7)」または「エクスプローラのオプション (Windows10)」で隠しフォルダを表示させておかないと「AppData」フォルダは表示されません) |
||
ライブラリ「PS2Keyboard」の zipファイルの作成手順は以下の通りです。
https://github.com/PaulStoffregen/PS2Keyboard ここには、ArduinoでPS/2キーボードを使うための全てのプログラムソースや関連情報が置かれています。(完成プログラムも) 上記のWindowsへのgit コマンド組み込み作業(1)によってインストールされたGit Bashアプリを起動し、そのコマンドラインから以下のgit コマンドを実行して、PCの「ユーザー」フォルダ直下(例.¥User¥marushin¥)に、クローンを作ります。
$ git clone https://github.com/PaulStoffregen/PS2Keyboard.git (← $記号以下に空白が3つ入っています)
続けてGit Bashのコマンドライン(またはWindowsのコマンドプロンプト)から、以下のzipコマンドを実行し、同じ「ユーザー」フォルダ内に「PS2Keyboard.zip」という圧縮(zip)ファイルを作成します。 $ zip -r PS2Keyboard.zip PS2Keyboard (← $記号以下に空白が4つ入っています) (末尾の PS2Keyboard がArduinoのメニューに表示されるライブラリ名となります)
(PS2Keyboard.zip ファイル作成完了) |
||
クローンとは GitHubサイトの任意のURLをGit Bashアプリのコマンドラインから「$ git clone https://github.com/(アカウント名)/(プロジェクト名).git」と入力すると、そのプロジェクトに保存されているC++のソースファイル、ヘッダファイル、Read Meファイル、...などのすべてのファイルを、1個のフォルダとしてそのまま自分のPC上の「ユーザー」フォルダ直下(例.¥User¥marushin¥)にまるごとダウンロードして配置することができます。「まるごとダウンロードして配置」がクローンの意味となります。
GitHubアカウント PS2とMac Plusキーボード変換の完成済みのプログラムは、GitHubサイト上の無料公開プログラムを使います。 GitHubは、ソフトウェア開発プロジェクトのための共有ウェブサービスの名称です。 GitHubサイトは無料・有料を問わず、アカウント作成が必要ということですが、筆者が以下の作業をした範囲(gitコマンドの使用2回まで)は無条件で作業ができましたが、3回目のgitコマンド(クローン)に入ると途中でログイン要求が出て、以降は使えませんでした。 アカウント作成の日本語の解説ページは多いので、ぜひ無料アカウントを作ってからやりましょう。 (別のPCでやればまた2回分はOKかもしれません。) |
||
前もってArduinoを起動し「ツール」「ボード」で正しくArduinoの機種が選択され、ポートも正常である(=グレーアウトしていない)ことを確認しておきましょう。 ライブラリの組み込み作業は簡単で、 Arduinoの「スケッチ」メニュー → 「ライブラリをインクルード」→ 「.zip形式のライブラリをインストール...」 と進み、次の「開くウインドウ」内のPCの「ユーザー」フォルダ直下(例.¥User¥marushin¥)に、手順2で作成した「PS2Keyboard.zip」があるので、これを指定するとライブラリ登録完了です。
【登録の確認方法】 一旦、PCを再起動後、Arduinoを起動し、ライブラリ名「PS2Keyboard」が、「スケッチ」の「ライブラリをインクルード」のリストのずっと下の方にある「提供されたライブラリ」という区分で見つかればOKです。
【Arduinoボードへの配線とPS/2キーボード入力の確認】 まずPS/2キーボード側の4線だけをArduinoボードに実配線し、Arduino(アプリ)を起動して新規スケッチを起こします。 配線図はこちらのイラスト部分を参照。 https://github.com/trekawek/mac-plus-ps2/blob/master/READ.ME.md
https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html のページにある Exanple Program の48行(空白、注釈行を含む)をすべて、新規スケッチ画面にコピペします。 ただしこのサンプルプログラムでは、+DataピンをArduinoボードのデジタル8番に、CLKピンをArduinoボードのデジタル5番に接続する記述になっているので const int DataPin = 8; const int IRQpin = 5; の行を const int DataPin = 3; const int IRQpin = 2; に変更します。 Arduino(アプリ)画面左端の「検証(コンパイル)」、その右横の「マイコンボードに書き込む」がうまく完了したら、画面右端の「シリアルモニタ」を押して、画面出力にPS/2キーボードから打鍵文字が入力できれば、PS/2キーボード入力の部分は成功です。 |
||
(この項では、Windowsユーザーの場合のみ、PC機とArduinoボードのあいだの接続ポートの指定確認を行います)
Arduino ボードにPlus側の4線の信号を配線します。 USBケーブルでPCとArduino ボードをつなぎ、PCを再起動します。 スタートメニューまたはデスクトップアイコンからArduino(アプリArduino.exe)を実行します。
「ツール」「シリアルポート」の項目で、Arduinoが使用しているCOMポート番号を選択します。 (デバイスマネージャーのポート(COMとLPT)の項で、COM*となっている*番号と一致させます。) もし、Arduino使用中に「ツール」「シリアルポート」がグレー表示になったときは、PCを再起動させます。 |
||
いよいよ最後、Arduino用の完成スケッチ(プログラム)を、PCの「ユーザー」フォルダ直下(例.¥User¥marushin¥)にクローンします。 Windows上で手順2でインストールされたGit Bashアプリを起動し、そのコマンドラインから以下のgit コマンドを実行してPCの「ユーザー」フォルダ直下(例.¥User¥marushin¥)に、PS/2キーボードをPlusで使うためのクローン(完成アプリまでふくまれた開発環境まるごと)を作成します。
$ git clone https://github.com/trekawek/mac-plus-ps2.git (← $記号以下に空白が3つ入っています)
Arduino(アプリ)を起動してファイルメニューから、mac-plus-ps2フォルダ内にある 「mac-plus-ps2.ino」を開きます。 (Arduinoのスケッチファイルの拡張子は「.ino」です) Arduino(アプリ)画面左端の「検証(コンパイル)」を実行します。 さらに、その右横の「マイコンボードに書き込む」を実行します。 (PC機を使う作業は、ここで完了) |
||
Arduino(アプリ)ウインドウ内に、以下の2つのスケッチと2つのC言語用のファイルがタブ切換で表示されています。 mac-plus-ps2(.ino) PS2Keyboard.cpp PS2Keyboard.h Keymap(.ino)
(補足) メインプログラム mac-plus-ps2(.ino) では、 const int DataPin = 3; const int IRQpin = 2; となっているので、PS/2側の配線の変更も、スケッチの修正もするいっさい必要はありません。 |
||
ArduinoボードにつながれたRJ-9ケーブルを、Macintosh Plusのキーボード端子に接続して、Plusの電源を入れ起動します。 文字入力用の確認用画面として、「Teach Text 」や、本体のインタラプト押して出てくるROMバージョン確認用の文字入力ウインドウなどを起動し、実際にPS/2キーボードから入力できることを確認します。 (すべての作業完了) ** 開発用に使ったWindows7機とPlusの電源を落とし、USBケーブルもはずします。 Arduinoボードはその電源をOFFにしても、内部メモリにはプログラムが保存されたままとなります。 また、以後、ArduinoボードにはPlusのキーボード端子(黒ライン)から+5V(実際は4.7V程度)が電源供給されるので、Arduinoボードは単独で動作できます。 PS/2キーボードと、このArduinoだけでPlus へのキーボード入力が可能です。 |
||
PC用キーボード内部には必ずエンコーダー用のICが内蔵されています。 ノートPCのキーボードは18-24ピンのフラットケーブルでマザーボードに直接つながっています。 デスクトップ用キーボードも内部は同様に18-30ピンのフラットケーブルが出ていて、それがUSB、PS/2、ADBインターフェース変換回路につながり、最後にUSB、PS/2、ADBコネクタケーブルとなります。 88-120個あるキースイッチをそのままマザーボードやPCに接続しようとすると、配線は120x2=240本というおそろしいものになりますが、タテとヨコの並びの組み合わせでキーを指定すれば、30本以下、つまりふつうの配線用のケーブル類で事足りることになります。 このタテとヨコの並びの組み合わせを制御する(エンコードする)のがエンコーダーで、これはデスクトップ、ノートのいずれのキーボード内に装備されています。 デスクトップ用はそのあとのインターフェース変換用の部分とエンコーダー部分を1個のICで処理します。 ** PS/2キーボードが作れる= Plus用のオリジナルのキー入力デバイスが作れる 一般的には、エンコード/インターフェース変換用ICの部分はキーボードメーカーが独自のものを組み込んでいますが、台湾のメーカーが汎用品として出荷しているものがあります。 HOLTEK社 HT82K629A です。 40ピンDIP-Aタイプと表面実装48ピンSSOP-Aの2種類があり、Aliexpressなどではどちらも150円ぐらいです。 USB出力、PS/2出力、日本語対応ありのフルキーボードサポートです。 興味のある方はPDFのデータシートを入手ください。
** 【参考】 (注意:以下のキットはUSB接続ですので、Plusには使えませんが、USB接続で自由なキーボードを作れます) HT82K629Aを使った市販のキット FLINT キーボードを作ろうぜ!キット (4,000円前後) エンコーダーIC + キー用の端子109組 (キースイッチなし) これは、ICと端子群がのった基板に、1キーにつき2本のリード線で直接ハンダ付けをするものです。 IC単品購入で、データシートで一から作るのは難しいという方にはおすすめです。 |
||
Copyright © 2012-2024 Namio Nakajima www.marushin-web.com |
||||