エントリー

2024年09月の記事は以下のとおりです。

自転車のチェーンを交換してみた

 自転車のチェーンを自分で外したり取り付けたりすることが出来ることを,私は子どもの時から羨ましく思っていました。特殊な工具を使わないメンテナンスや調整は見よう見まねでやってきましたが,チェーンはプロだけが触ることを許される聖域だと思っていました。

 自分でチェーンを付け外ししたいと思った事が何度もあったからそう思ったのでしょうが,自分でやった修理の代表がパンク修理やチューブの交換なわけで,その作業にチェーンを外す必要などなく,なんでそんなことを考えたのか良く思い出せません。

 思い出すのは,1970年代や80年代の一般的な自転車というのは,なにかとメンテがしにくい構造だったなあということです。ママチャリはチェーンカバーがチェーンを完全に覆い隠していてアクセス不能,ブレーキもドラムブレーキなので後輪がさっと外せず,パンクの修理も大変です。

 前輪にはダイナモがついていて,これも修理には(もちろん走行にも)邪魔でしたし,そういえば今や気休めにもならない鍵も前輪についていました。鍵を夜の草むらで落として泣いた覚えが何度もあります・・・

 同じくらいメンテの障害だったものが,部品と工具の入手性です。自転車は街の自転車屋に持っていくのが普通だった時代,部品も工具もそこにしかありません。自分でやってみたいと思う人にも,やむなくプロの世話になっていた人が多かったんじゃないでしょうか。

 そして現在,なんでも通販で買える時代です。工具も部品も自分で選んですぐ届く。しかも安いとくれば,もともと自分でやろうと思っていた人にとってこんなにうれしい話はありません。

 私も自分の自転車(購入後23年)と,電動アシスト自転車(購入後9年)をこの夏にメンテして乗れるようにしたわけですが,部品の入手も簡単になり,メンテの手順もWEBで調べることが出来てと,本当に面白い時代になったと思います。

 そして,ひととおりのメンテが終わったと思ったところに,ふとチェーンの交換を思いつきました。

 チェーンは消耗品です。摩耗するので1000から2000kmごとに交換しないといけませんし,そうでなくても劣化が進むので10年くらいで交換する必要があるものです。とはいえ,交換しなくても乗れますのでいちいち自転車屋に持っていくこともなく,私もこれまで一度も交換したことなどありません。

 しかし,ちょっと調べてみると実に簡単にできることがわかり,やってみようと思い立ったわけです。

 まずは工具から。チェーンカッターが必要な事は分かっていましたが,分かっていなかったのはこの工具についてでした。私はてっきり,大きなハサミのようなものを想像していたのですが,それは「鎖」を断ち切るもので,自転車やバイクの駆動力を伝えるチェーンを切る物とは違いました。

 amazonでチェーンカッターを調べてみると,1000円くらいで手のひらサイズのものがいくらでも見つかります。チェーンのピンを押し込んで抜いてしまうもののようです。

 こんな簡単な工具でいいのか?,チェーンってそんなもんで切れてしまったらかえって危ないんじゃないのか?と思ったのですが,競技用のものでも同じ仕組みのようですので,これでいいんでしょう。ということで,PWTというブランドのBT-15Rというチェーンカッターを選びました。1280円。安い。

 チェーンのピッチは今も昔も変わっておらず,種類も1つしかないみたいですが,変速機の多段化で,薄いものがあって,これは互換性がないと言うこともわかりました。

 チェーンを繋ぐことも実は簡単で,変速する自転車の場合はピンを押し込む,変速なしか内装のものはミッシングリンクという専用のコマをCリングのようなクリップで固定するだけ,とわかりました。なーんだ,簡単やないけ。

 ではプジョーのCOM70Mから交換してみましょう。チェーンはシマノの7段用の安い物を調達しました。CN-HG40というもので,リンク数は116。お値段1914円。一昔前は1000円ほどだったそうです。

 届いた新しいチェーンはとても綺麗で,しなやかです。こんなものがamazonで買えて数日で手元に届くなんて,もうなんでもありだなと思いました。

 作業は土曜日の昼前に始めました。まずチェーンカッターで古いチェーンを切ります。テンションが一番小さくなるようにディレイラーを一番重くなるところにセットしておきます。

 次にどれでもいいので適当なピンを自転車の外側から押し込むと簡単に抜けます。チェーンを抜けばおしまいです。

 抜いたチェーンと新しいチェーンのリンク数を同じにするため,新旧2本をリンクごとに並べていきます。長さで揃えてしまうと,古いチェーンが摩耗で伸びてしまっている可能性があるので禁止です。

 同じリンク数のところでチェーンカッターでチェーンを切ります。これで交換の準備は済みました。

 続けて自転車に取り付けます。ディレイラー周りがややこしいのですが,元のようにチェーンを取り回していきます。今回のチェーンには表と裏はありませんのでどちらでも大丈夫です。

 1周したらチェーンクリップでチェーンを引っかけで,新しいチェーンに付属していたピンを差し込んでおきます。

 最終確認を行ったら,そのピンをチェーンカッターで押し込んで完了。綺麗に変速が出来るかどうか確認して終了です。30分ほどで終わるはずです。とても簡単でした。

 Bikke2eのものは,和泉チエンという会社のタフガードを選びました。130リンクのものですが,日本製(というより大阪製)で安く評判もいいので選びました。1808円。

 余談ですが大阪は自転車産業の本場で,堺を中心に自転車やその関連の会社が大小問わずたくさんあります。

  Bikke2eもママチャリですので,面倒なチェーンカバーがついています。これをさっさと外して,チェーンを切るのですが,この時チェーンカッターはいりません。ミッシングリンクを見つけて,ラジオペンチでCリングを外せば簡単に切ることができます。

 忘れないようにチェーンの取り回しを覚えておいたら,先程と同じように新しいチェーンとリンク数をあわせてカットし,取り付けます。こちらも表と裏はありませんが,もともとミッシングリンクを裏から表に差し込んであったので,今回も同じように揃えておきました。

 1周回したら,新しいチェーンに付属していたミッシングリンクで繋ぎます。Cリングもついていますので,これもをラジオペンチ使ってはめ込みます。

 私の場合,ここで少し心配なことがあり,元のチェーンを同じリンク数にした(長さもほとんど同じだった)のに,短くて取り付けにとても苦労しました。それだけテンションがかかるようになっているんだろうと思いますが,最初はリンク数を間違えたか,取り回しを間違ったのかと焦りました。

 どちらも間違いないことを確認したので,力業でチェーンを繋いだのですが,チェーンクリップが強く引っ張られてしまい,少し変形してしまうほどでした。

 チェーンを繋いだ後,テンションをみてみましたが,元のテンションと同じ程度にかかっているし,テンショナーも伸びきっていません。まあこんなもんだろうということで試運転をして終了。こちらも40分ほどで終了しました。

 驚いたのは,どちらの自転車もとても軽くこぐことが出来るようになったことです。COM70Mも軽快ですし,Bikke2eもアシストがなくなったときに大きな差がありました。

 それもそのはず,古いチェーンをみてみると,古い油と錆で固まっていて,しなやかに曲がりません。Bikke2eのものは引っ張らないと関節が伸びてくれないほどです。これはダメだよなあ・・・

 ということで,どちらもチェーン1つでこれほど快適になりました。長距離を乗る人でなければ,2,3年で交換前後の違いはわかりにくいと思いますが,10年も交換していないなら,もう劇的に変わります。まして20年を超えた物はすぐにでも交換したい所です。

 気にしないといけないのは,9段以上の変速の場合にはチェーンが薄くなっていて,裏と表があるとういことと,リンク数を元のチェーンと同じにすることです。着るのも繋ぐのも簡単なのでそこは心配ないですが,取り回しにミスがあって,一度繋いだ物をやり直すことは出来ないので,慎重に,そして最終確認を怠らないことでしょうか。

 自転車さんにお願いしたことはないのですが,2台で4000円ほどで交換が出来たわけで,それでこれほど快適になりました。チェーンの交換は日常的な作業であることを私も認識しておきたいと思います。

 チェーンを交換出来るようになると,ギヤ比を変えることも出来るようになります。COM70Mについては全体に少し重くして速度が出るようにしたいのですが,フロントの歯数を増やすか,リアの歯数を減らせばよいことになります。どちらにしてもチェーンの長さが変わってくるので,今回の交換の経験が役に立つことでしょう。

 

RD-2000EXアップグレード

  • 2024/09/11 14:20
  • カテゴリー:散財

 先日,ローランドからRD-2000EXのアップグレードの割引クーポンがメールで送られてきました。75%引きですって。

 この話,少し説明が必要でしょう。

 まず,RD-2000という,今もって最高レベルのステージピアノが登場したのが2017年。あくまで名称についてですがRD-500を始祖とするRD-800から,RDの初代機であるRD-1000の正統後継者であることをアピールするその名前からわかるように,RD-1000を含む様々な電気/電子ピアノを網羅するだけではなく,モデリングよる高品位なアコースティックピアノまで搭載する,まさに究極の1台として登場しました。

 この時の価格は275000円だったそうで,およそ25万円程度という線でした。

 私が買ったのが2020年ですが,その後VPiano ExpansionのGerman Concertを追加しました。内蔵のピアノは確かにモデリングらしい音だったと思いますが,本当に欲しい音だったかと言えば微妙なところで,表現力がやや狭いなと感じ演奏していてあまり楽しくなかったことに加え,ちょっと発音が遅れてしまうという問題もあって,積極的に使わなくなっていました。

 ところがGerman Concertは素晴らしく,高音から低音,大音量から小音量まで大きく変化し,しかも変化もスムーズで,とても表現力の高いピアノでした。演奏して本当に楽しい音で,発音の遅れもある程度解消されていて,私はこれでようやく,アコースティックピアノの代わりになるんじゃないかと思いました。

 価格は安いところなら23000円ほどなのですが,私はもうちょっと高いところで買ったような気がします。Roland Cloudで買うとドルベースで買うことになるので為替相場に影響されるのですが,一部のライフタイムライセンスについては一般の楽器店で買うことも出来るので,この場合は円で買うことになり,為替相場に振り回されることもなく,ポイントがつくお店だと得をします。

 で,先日RD-2000の後継機であるRD-2000EXが登場しました。7年ぶりの新機種ですが,EXがつくだけというマイナーチェンジモデルで,価格も30万円越え。高くなったなあと思いますが,昨今の様々な物の値上がりを考えると仕方がないところもあります。

 新機能は,German Concerに加え,アップライトのモデリングであるEssential Uprightの標準搭載で,後者は別売りされていないので欲しければRD-2000EXに買い換えるしかないわけですが,RD-2000EXがRD-2000に150ドル程度で売られるVPiano Expansionが2つがついてきたと考えれば,そんなに値段も上がったことにならないのかも知れません。

 ただ,他の機能はなにも変化なし。一部違いがあるそうですが,ソフトだけで対応出来るような機能なので,ハードウェアに違いはないとみて良いでしょう。

 そんなことを考えていたら,まさかのRD-2000EXへのアップグレードの案内です。RD-2000にアップグレードをインストールすると,RD-2000EXに生まれ変わるこのキット,お値段は199ドルなので,RD-2000ユーザーがこの値段で最新機種になるというのは,うれしいサービスだと思います。

 私もアップグレードを考えたのですが,すでにGerman Pianoも買いましたし,アップライトピアノが欲しいわけでもなく,他の機能も変わっていないということで,今回は見送ることにしました。

 そんな中で届いたのが,前述の割引クーポンです。このクーポン,German Concertを買った人だけに配布されているものです。

 75%割引という事ですので,RD-2000EXアップグレードの代金200ドルからGerman Concertの価格である150ドルを割り引いた価格にしてくれるという事ですので,お買い得と言うよりも同じ物をダブって買わないようにという,購入者の救済措置です。

 なので,German Concertを先に買った人でも,RD-2000EXアップグレードを新たに行った人と同じ負担でRD-2000EXに出来るという事で,私としてはRD-2000EXにアップグレードすることへの抵抗が一気に下がりました。

 しかしこのクーポンはROland Cloud専用です。昨今の円安で50ドルが8000円になるわけで,ちょっと高いかなあとおもいつつ,せっかくですのでRD-2000EXにアップグレードしました。

 まず,German Pianoはこれまでのインストールしたものがそのまま引き継がれます。新たにインストールする必要はありません。バージョンも同じですので,違いはないものと思います。

 設定などもそのまま引き継がれるほどですので,通常のファームウェアアップデートと同じ手順でRD-2000EXにしたあと,Essential Uprightをインストールすれば終了です。

 さて,何が変わったかといえば・・・なにも変わりません。起動時のメッセージが違うことくらいで,LEDも変わりません(まぶしいのもそのまま)し,機能の追加もありません。音色の追加もない,デモ曲さえも変わっていないことには,心底拍子抜けしました。

 悪く言えば,これは通常のシステムアップデートレベルです。あたらしいExpansionを追加するために必要となったファームの変更を,新製品と共に有償で行うようになったと言う感じでしょう。

 価格の改定で一番波風が立たないのは,新機種にしてしまうことです。旧機種を廃番にして新製品を値上げすれば,誰も文句は言いません。RD-2000EXの場合発売から7年も経っていますから,むしろ妥当と言えるでしょう。

 Essential Uprightは,本当なら欲しい人だけ買えば済むものだったと思いますが,RD-2000EXを発売する時の新しい音色として内蔵することで,価格アップを緩和していると考えると,良心的だとも思います。

 そのEssential Uprightですが,笑ってしまうほどアップライトです。リアルであることはもちろんですが,相当高級なアップライトだと思いました。グランドピアノの鍵盤を再現した鍵盤に,構造の異なるアップライトをくっつけることにどれだけの違和感があるかと気になりましたが,思っていたほど問題を感じません。

 それよりアップライトは,これはこれで楽しいですね。きらびやかさはありませんが,グランドピアノと違った感触があります。ロックピアノの場合,ちょっとグランドピアノだと派手過ぎるので,アップライトを上手く使えば演奏の幅が広がるように思います。

 そんなわけで,合計200ドルでRD-2000EXになりました。うれしいのは今後のアップデート対象機種になったことで,これからも現行機種としてサポートされるという安心感です。機能よりもサポート料金と考えて,今回のアップグレードを考えてみるのも良いかもしれません。

 

夏休みの工作 - PC-6001のキーボードをUSBに! ~ QMK編

20240912142912.JPG

 さて,PC-6001のキーボードをUSBで繋ぐ夏休みの工作,今回は完結編として実際にキーボードをUSBで繋いでみたいと思います。

 分解清掃はいってみれば(ノウハウはあるにせよ)誰でも気軽に出来る仕事です。しかし,USBで繋ぐにはハードとソフトの知識に加え,諦めないという熱意も不可欠だと思います。

 とまあ,気合いを入れて取り組んでみたところ,昨今の自作キーボードの流行を支える便利なシステムの存在がわかり,おかげさまでたった2日,実質2時間ほどで完成してしまいました。

 それはQMKといいます。アマチュアの自作は言うに及ばず,市販品にも使われるファームウェアで,主流だったAVRはもちろん,最近ではRaspberryPi Pico(RP2040)にも実装されていて,様々なMCUで動作します。

 主な機能はもちろん,かなり特殊な機能も実装済みであり,我々はキーボードごとに異なる差分をコンフィギュレーションしていってビルドすれば,信頼性の高いキーボードが完成します。面倒なUSB周りも実装済みなのがうれしいところです。

 以前ADBをUSBに変換する基板を作る時,ATmega32U4を搭載したProMicroを使いましたが,これも定番です。私も当初これを使ってPC-6001のキーボードを繋いでみようと画策しましたが,ちょっとGPIOの数がギリギリすぎ(ローとカラムで18本,LED用の1本が足りない)なので,手持ちのRaspberryPi Pico(以下RPi Pico)を使うことにしました。

 さてこのQMK,実は歴史あるシステムでユーザーも多いのですが,今なお頻繁に変更や修正が加えられている「生きている」システムで,根幹にかかわる部分に半年ごとに手が入るようなムムムな状況です。

 おかげで半年前の先人達のメモが役に立たなかったり,一部読み替えないといけなかったりします。特に私のようなCに慣れた人にとってjsonのデータ構造を見るのはなかなか苦しい物があり,今回はとても良い勉強になりました。

 まずはインストールからです。今回はMacを使ってみましょう。

 Homebrewでインストールしますので,

brew install qmk/qmk/qmk

 としましょう。続けて,

qmk setup

 としてセットアップを済ませてしまいます。これでホームディレクトリにqmkフォルダが作られます。試しに,

qmk compile -kb clueboard/66/rev3 -km default

 としてサンプルをコンパイルし,正しくセットアップが出来ているかどうか確かめておきます。

 ではいよいよ作業開始です。まずは新規のキーボードを設定します。

qmk new-keyboard

 いろいろ聞かれますので,今回の条件に合うように入力していきます。名前とかそんなのはどうでもいいのですが,大切なのはDefault Layoutでnone of the aboveを選ぶ事と,MCUにRP2040を選ぶ事です。

 こうして新規にプロジェクトを作ったら,~/qmk_firmware/keyboards/以下に,自分の命名したキーボードのフォルダが出来ており,この中にkeyboard.jsonとdefault/keymap.cが出来ているはずです。

 この2つを修正するのが今回の作業の中心です。なお,このファイルの構成は時期によって異なっているみたいで,config.hだった時代もあれば,info.jsonだった時代もあるようです。最新の状況は上記のようにkeybord.jsonとkeymap.cですが,これを解説した初心者向けのページはまだ引っかからないようでした。

 個人的には,近い将来keymap.cもcからjsonになるだろうと思うので,今回の情報もいつまで通用するかわかりません。

 では早速keyboard.jsonです。

{
    "manufacturer": "gshoes",
    "keyboard_name": "pc6001_rp2040",
    "maintainer": "gshoes",
    "bootloader": "rp2040",
    "diode_direction": "COL2ROW",
    "features": {
        "bootmagic": true,
        "command": false,
        "console": false,
        "extrakey": true,
        "mousekey": true,
        "nkro": true
    },
    "matrix_pins": {
        "cols": ["GP14","GP15","GP16","GP17","GP18","GP19","GP20","GP21"],
        "rows": ["GP0","GP1","GP2","GP3","GP4","GP5","GP6","GP7","GP8","GP9"]
    },
    "processor": "RP2040",
    "url": "",
    "usb": {
        "device_version": "1.0.0",
        "pid": "0x27DB",
        "vid": "0x16C0"
    },
    "indicators": {
        "caps_lock": "GP22",
        "on_state": 0
    },
    "layouts": {
        "LAYOUT": {
            "layout": [
                {"matrix": [0, 0], "x": 0, "y": 0},
                {"matrix": [0, 1], "x": 1, "y": 0},
                {"matrix": [0, 2], "x": 2, "y": 0},
                {"matrix": [0, 3], "x": 3, "y": 0},
                {"matrix": [0, 4], "x": 4, "y": 0},
                {"matrix": [0, 5], "x": 5, "y": 0},
                {"matrix": [0, 6], "x": 6, "y": 0},
                {"matrix": [0, 7], "x": 7, "y": 0},
                {"matrix": [1, 0], "x": 0, "y": 1},
                {"matrix": [1, 1], "x": 1, "y": 1},
                {"matrix": [1, 2], "x": 2, "y": 1},
                {"matrix": [1, 3], "x": 3, "y": 1},
                {"matrix": [1, 4], "x": 4, "y": 1},
                {"matrix": [1, 5], "x": 5, "y": 1},
                {"matrix": [1, 6], "x": 6, "y": 1},
                {"matrix": [1, 7], "x": 7, "y": 1},
                {"matrix": [2, 0], "x": 0, "y": 2},
                {"matrix": [2, 1], "x": 1, "y": 2},
                {"matrix": [2, 2], "x": 2, "y": 2},
                {"matrix": [2, 3], "x": 3, "y": 2},
                {"matrix": [2, 4], "x": 4, "y": 2},
                {"matrix": [2, 5], "x": 5, "y": 2},
                {"matrix": [2, 6], "x": 6, "y": 2},
                {"matrix": [2, 7], "x": 7, "y": 2},
                {"matrix": [3, 0], "x": 0, "y": 3},
                {"matrix": [3, 1], "x": 1, "y": 3},
                {"matrix": [3, 2], "x": 2, "y": 3},
                {"matrix": [3, 3], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [4, 0], "x": 0, "y": 4},
                {"matrix": [4, 1], "x": 1, "y": 4},
                {"matrix": [4, 2], "x": 2, "y": 4},
                {"matrix": [4, 3], "x": 3, "y": 4},
                {"matrix": [4, 4], "x": 4, "y": 4},
                {"matrix": [4, 5], "x": 5, "y": 4},
                {"matrix": [4, 6], "x": 6, "y": 4},
                {"matrix": [4, 7], "x": 7, "y": 4},
                {"matrix": [5, 0], "x": 0, "y": 5},
                {"matrix": [5, 1], "x": 1, "y": 5},
                {"matrix": [5, 2], "x": 2, "y": 5},
                {"matrix": [5, 3], "x": 3, "y": 5},
                {"matrix": [5, 4], "x": 4, "y": 5},
                {"matrix": [5, 5], "x": 5, "y": 5},
                {"matrix": [5, 6], "x": 6, "y": 5},
                {"matrix": [5, 7], "x": 7, "y": 5},
                {"matrix": [6, 0], "x": 0, "y": 6},
                {"matrix": [6, 1], "x": 1, "y": 6},
                {"matrix": [6, 2], "x": 2, "y": 6},
                {"matrix": [6, 3], "x": 3, "y": 6},
                {"matrix": [6, 4], "x": 4, "y": 6},
                {"matrix": [6, 5], "x": 5, "y": 6},
                {"matrix": [6, 6], "x": 6, "y": 6},
                {"matrix": [6, 7], "x": 7, "y": 6},
                {"matrix": [7, 0], "x": 0, "y": 7},
                {"matrix": [7, 1], "x": 1, "y": 7},
                {"matrix": [7, 2], "x": 2, "y": 7},
                {"matrix": [7, 3], "x": 3, "y": 7},
                {"matrix": [7, 4], "x": 4, "y": 7},
                {"matrix": [7, 5], "x": 5, "y": 7},
                {"matrix": [7, 6], "x": 6, "y": 7},
                {"matrix": [7, 7], "x": 7, "y": 7},
                {"matrix": [8, 0], "x": 0, "y": 8},
                {"matrix": [8, 1], "x": 1, "y": 8},
                {"matrix": [8, 2], "x": 2, "y": 8},
                {"matrix": [8, 3], "x": 3, "y": 8},
                {"matrix": [8, 4], "x": 4, "y": 8},
                {"matrix": [8, 5], "x": 5, "y": 8},
                {"matrix": [8, 6], "x": 6, "y": 8},
                {"matrix": [8, 7], "x": 7, "y": 8},
                {"matrix": [9, 0], "x": 0, "y": 9},
                {"matrix": [9, 1], "x": 1, "y": 9},
                {"matrix": [9, 2], "x": 2, "y": 9},
                {"matrix": [9, 3], "x": 3, "y": 9},
                {"matrix": [9, 4], "x": 4, "y": 9},
                {"matrix": [9, 5], "x": 5, "y": 9},
                {"matrix": [9, 6], "x": 6, "y": 9},
                {"matrix": [9, 7], "x": 7, "y": 9}
            ]
        }
    }
}

 最初に用意されるサンプルコードは4x4のキーパッドのものですのであまり役には立たず,ちょこちょこと修正すればOKというほど甘い物ではありません。

 今回のようにフルキーボードの場合には自分で調べて記述する必要もあり,それがまた楽しい作業だったりしました。

 今回のポイントです。

(1)matrix_pins

 以前はマトリクスの大きさ(4x5とか)を先に指定する必要もあったようですが,今はマトリクスについてはこの記述だけで良いようです。

 ピンの指定にはそれぞれのMCUに指定された端子名を書く必要があるので,RP2040ならGPxxなどの番号を,ATmega32U4ならBxxやCxxという番号で記述します。

 ProMicroだと,基板のを端子名はATmega32U4の端子名と違っているので読み替えないといけないですから,結局回路図が必要だったりするのですが,RP2040の場合RPi Picoの基板に書かれている端子名がRP2040の端子名と一致しているのでそのまま書けば問題ありません。これは楽です。


(2)USBのpidとvid

 アマチュアの工作であれば誰もうるさいことを言わないと思いますが,今回私が使ったIDは条件付きながらアマチュアであれば無償で使っていい物ということで,ありがたく使わせて頂きました。


(3)LED

 LEDについては,jsonでのサンプルコードが見つからず,試行錯誤をしました。まずQMKにはCapsLockなどのLED制御の仕組みは含まれているので,使いますという宣言をするだけで動いてくれます。自分でコードを書く方法もありますが,そこまでする必要は薄いでしょう。

 書き方ですが,indicatorsのcaps_lockにLEDを割り当てた端子名を記述,そしてその論理をon_stateに書きます。負論理だったら0,正論理だったら1です。

 で,この0や1は文字ではなく数値扱いですので,""で囲んでしまったらエラーになります。

 後述しますが私はcaps_lockをかなキーに割り当てました。なぜならかなキーの横にあるLEDを点灯させたいと思ったからで,この記述でCapsLockがロックされるとLEDが点灯するようになりました。ちょっと感動しますよ。


(4)laouts

 ここはおまじないのような感じがします。用意したキーボードのマトリクスの構造を記述します。PC-6001の場合,Xが0から7までの8本,Yが0から9までの10本ですので,順番に書いていくだけです。


 次にkeymap.cです。

// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H
#include "keymap_japanese.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    [0] = LAYOUT(
    KC_NO  ,KC_LCTL,KC_LSFT,KC_LCMD,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,
    JP_1   ,JP_Q   ,JP_A   ,JP_Z   ,JP_K   ,JP_I   ,JP_8   ,JP_COMM,
    JP_2   ,JP_W   ,JP_S   ,JP_X   ,JP_L   ,JP_O   ,JP_9   ,JP_DOT ,
    JP_3   ,JP_E   ,JP_D   ,JP_C   ,JP_SCLN,JP_P   ,KC_F1  ,JP_SLSH,
    JP_4   ,JP_R   ,JP_F   ,JP_V   ,JP_QUOT,JP_AT  ,KC_F2  ,JP_UNDS,
    JP_5   ,JP_T   ,JP_G   ,JP_B   ,JP_RBRC,JP_LBRC,KC_F3  ,KC_SPC ,
    JP_6   ,JP_Y   ,JP_H   ,JP_N   ,JP_MINS,JP_CIRC,KC_F4  ,JP_0   ,
    JP_7   ,JP_U   ,JP_J   ,JP_M   ,KC_NO  ,JP_YEN ,KC_F5  ,KC_NO  ,
    KC_ENT ,KC_STOP,KC_UP  ,KC_DOWN,KC_RGHT,KC_LEFT,KC_TAB ,KC_ESC ,
    JP_CAPS,KC_INS ,KC_DEL ,KC_BSPC,KC_HOME,KC_NO ,KC_NO   ,KC_NO  
    )
};
 
 これは短いのですが,結構重要な記述があります。ファイル名の通りC言語の記述方法ですので,慣れている私は助かりました。

(1)include

 ライブラリやマクロの定義などを読み込ませる記述ですが,サンプルに含まれるQMK_KEYBOARD.Hはそのままに,keymap_japanose.hもincludeしておきます。

 というのは,PC-6001がJIS配列だからです。QMKは標準ではUS配列です。ですのでSHIFT+2では@ではなく"が出ます。さらに;や',[や]の位置も違いますので,これを上手くアサインするのは難しいです。

 私も最初はPC-6001をUS配列でキーをアサインしていたのですが,途中でどうにもならなくなり,調べたところ便利なJIS配列でのアサイン方法が見つかりました。

 通常,アサインにはKC_xxというコードで記述を行うのですが,JIS配列のキーについてはJP_xxで書けば良いです。もちろん,JISとUSで同じキー(例えばカーソルキーなど)はKC_xxのままで構いません。


(2)LAYOUT

 前述の通り,USはKC_xxで,JISはJP_xxでアサインを行っていきます。

 手持ちのPC-6001の資料からキーマトリクスは分かっていますし,コネクタの配列も回路図から判明していますので,その通りに入力していきます。

 これはノウハウというよ私の考え方なのですが,ファンクションキーは無理に拡張せず,F1からF5までとしました。PC-6001ではSHIFT+F1でF6と言う具合にF10まで扱えるようになっていたのですが,今回はそこまではやりませんでした。そもそもファンクションキーなんか使いませんし。

 また,かなキーはCapsLockキーに割り当てました。前述の通りLEDを使いたいからですが。使用頻度が低いので迷いもありました。しかし,PC-6001でもかなキーの使用頻度は低く,同じような物だと思えば気分良く割り切ることができました。

 BackspaceキーはPC-6001にはないキーなのでどこにアサインしようかと考えたところ,位置的にページ切り替えキーが良さそうだったので割り当てました。回っている矢印なので意味は違ってきますが,左向きの矢印も書かれているので良しとしましょう。

 HOME_CLRキーは該当するキーがありませんが,HOMEキーがあるので割り当てました。ほとんど使い道がありませんが,STOPキーに比べればまだましです。そのSTOPキーですが,なんとKC_STOPというキーがアサイン出来るので,割り当てました。Macはもちろん,Windowsでもこんなキーを見た事がないので,きっとザ実在しないキーなのでしょう。

 ただでさえ少ないキーなので使わないキーを割り当てるのはもったいないのですが,もともと実用を考えたキーボードではありませんので,オリジナルの機能を優先することにしました。

 さて最後にGRAPHキーです。グラフィックキャラクタを打ち込むためのキーですが,MacにもWindowsにもそんなものはありません。その上絶妙な位置にあります。ここはcommandキーに割り当てることにします

 WindowsならALTキーになるんだろうと思いますが,これでショートカットも日本語ON/OFFも思いのままです。

 修正が終わったら,以下でコンパイルしましょう。

qmk compile -kb pc6001 -km default

 コンパイルできたら書き込みです。RPi Picoにあるボタンを押しながらUSBを差し込むとフォルダがマウントされますが,これが書き込み可能な状態です。この状態で,

qmk flash -kb pc6001 -km default

 とすれば書き込みが出来ます。終わったら勝手にリセットがかかって今書いたファームが動き出しますので,早速テストしてみましょう。

 っと,その前にハードウェアですね。

 もともと電気屋さんなのに最近はハードウェアの組み立てよりも先にコードを用意するようになり,手を動かすのが億劫になっているんだなあと自覚することもあるのですが,今回は配線数こそ多いものの簡単なので,まずはブレッドボードで作ってみました。

 RPi Picoをブレッドボードにのせて,アサインした端子とキーボードから出ているコネクタを配線していきます。実は最初,コネクタに書かれている番号をそのまま信じて配線したのですが全く動かず,よく調べてみるとこの数字の並びは逆になっていた事が判明し,すべての配線を入れ換える羽目になりました。

 LEDについてはX8がかなキーのLEDでカソードが,X9が電源LED(ESCキーの上)のアノードで電源に,X10が電源LEDのカソードなので抵抗を介してGNDに落とします。

 X9はRPi Picoの3V3OUTに繋げば,キーボードがUSBで繋がった時点でLEDが点灯しますので,本物っぽいですよ。

 PC-6001の回路図によると,このLED用の抵抗は220Ωとかなり小さい値が使われています。ざっと15mA程も流すことになりますが。今どきのLEDはすの数分の一で十分なので,時代を感じます。今回は電源電圧が3.3V程度ですので220Ωでもよいと思いますが,オリジナルの光り方を追求するなら100Ω程度でも良いかもしれないです。


 さて,こうして完成したUSB接続のPC-6001キーボードですが,昨日書いたようになかなか快適なキーボードです。反発力が大きく変化するので,ストロークの割には軽いタッチで入力できますし,底打ちするまで押し込むこともありませんので,メンブレン型の他のキーボードや,RealForceなんかとは別の種類の打ち心地です。

 軸もグラグラせずしっかりとしつつ,引っかかりのないスムーズな打鍵で,キーによる押し心地のムラもありませんので,実に快適です。キートップの真ん中へんが窪んでいるところもポイント高いです。やはりアルプスはいい仕事をしていたんだなあと思います。

 今も日本語をゴリゴリとPC-6001のキーボードで書いているのですが,この新鮮さは何だろうと思って考えてみると,私が触った最古のキーボードである一方で,ローマ字による日本語の入力をほとんど行った事がないことに気が付きました。

 PC-6001のキーボードはもっぱらゲームと,プログラミングに使われるキーボードだったのです。だから,PC-6001でかな漢字変換というのは,今回が初めての体験になるわけです。

 ということで,PC-6001のキーボードをUSBにする夏休みの工作,あっという間に完成してしまいました。強いて言うなら専用の基盤を作ってブレッドボードからおさらばするのが残っていますが,それはもう簡単ですから,後は時間のあるときにやればいいでしょう。

 ここまでくると,PC-6001の筐体に小さいPCでも仕込むか,それこそRaspberryPiでも仕込んで,一体型PCを作ってみても面白いと思いますが,オリジナルの筐体を削るのも気が引けますし,作ったところで使う物でもないので,やめておきます。

 それにしても,ネタで始めた工作ですが,思いのほか収穫がありました。RPi Picoを初めて使ったこともそうですし,QMKを使って自分のやりたいことが実現したこともそうです。

 こうなってくると完全自作キーボードを作る事も気軽な物に見えてきますが,USBで繋ぐというのも今さらな感じがしますし,今のキーボードで満足しているので,変な配列のキーボードを作ろうと思わない限り,作る事はないでしょう。

 ただ,応用としてどんなキーボードでもUSBに出来るとわかった以上は,例えば当時から絶賛されていたFM-7のキーボードやAppleIIのキーボード,ファミリーBASICのキーボードや汎用機の端末やオフコンのキーボード,果てはポケコンのキーボードやM5のゴムキーなどを繋いでみることも可能なわけで,ある特定のキーボードに思い入れのある人には福音となる技術かも知れません。

 個人的にはPC-6001のキーボードの素晴らしさがわかったところで満足です。

 1981年生まれのホビーマシンのくせに,ちゃんとCTRLキーもTABキーもESCキーも正しい位置に備えています(ちなみに兄貴分のPC-8001にはTABキーはありませんでした)。アンダーバーも\もあるし,独立したカーソルキーはとても使いやすいです。

 グレーにオレンジの配色もいいですねえ。こうして現代のマシンに繋いでやりさえすれば,特に違和感も我慢もせずに即戦力になるあたり,大したものだと感心しました。

9月11日追記:
 Aliexpressで,1つ250円(送料込み)のRPi Picoの互換品が売っていたので3つほど試しに買ってみました。早速QMKを書き込んで純正品と交換したところ,ちゃんと動いてくれました。RESETボタンもあるし,USBもTypeCなので,純正よりもむしろ便利なくらいです。

 

夏休みの工作 - PC-6001のキーボードをUSBに!〜 分解清掃編

 今年の夏休みは,恒例の夏休みの工作が全く出来ませんでした。小学3年生からずっと続けている習慣がこれで途切れてしまうのももったいない。

 そこで,ふと思いついた小ネタ夏休みの工作としたいと思います。

 ことの始まりは,きつい日差しです。


日差しがきつい ->
プラスチックの黄ばみを強力に漂白できる ->
そういやPC-6001の部品取り機のキーボードがひどい変色をしてたな ->
漂白するのはいいけど使ってないキーボードを漂白してどうする? ->
じゃ使えばいいんじゃないか ->
USBに変換して最新のマシンでPC-6001のキーボードを使うというのはおもろいかも

 ということで,決定です。

 冷静に考えてみると,最近流行の自作キーボードでは,自分でキーマトリクスを組んで,それにあわせてキーボードマイコンのファームを修正して動かしていますよね。いってみれば,PC-6001のキーボードをそのまま使うことで,キーボードマトリクスを組む作業をすっ飛ばして,自作キーボードをつくるようなものですので,実は全然大した事ではありません。

 何はともあれ,漂白です。9月には行っても日差しはきつく,    黄変と言うより茶変という感じで,まるでタバコのヤニみたいなヤケ方をしている予備のPC-6001のキーボードを分解して漂白を開始します。

 今回はジップロックで密封して漬け込みましたが,さすがに3日もかけると漏れてくるもので,後で掃除するのが大変でしたが,とりあえず変色は綺麗になりました。特徴的なオレンジ色がやや褪せてしまったのが残念ではありますが,かなり綺麗になったと思います。

 ちょっと余談を。

 PC-6001のキーボードって,いわゆるスカルプチャー型のキーボードではないため,チクレットキーボードと揶揄されることが多いのは,ご存じでしょう。

 今でこそ,私は40年も前にディスクリート型のキートップを実装した先進的なキーボードだと思っていますが,当時は後継機のPC-6001mk2ではスカルプチャー型になり,絶賛されたものです。それほどPC-6001のキーボードを難点に挙げられていたのです。

 当時の私も含めて,このチクレットキーボードというのはコストダウンだろうと思っていました。兄貴分のPC-8001が168000円,2年後に出たとは言え一部の機能はPC-8001を凌駕しているPC-6001が89800円ですから,こういうところでコストダウンが行われているんだろうとみんな思ってたわけです。

 しかし,今回の分解と清掃で,それが誤りであることを確信しました。

 PC-8001と比べると,確かにメカニカルスイッチではなく後にメンブレン方式と呼ばれるものには違いないのですが,リモコンや電卓のようなラバードームとキートップが一体になっているいわゆるゴムキーではなく,ラバードームと軸が別体で,軸には2色成形のキートップが差し込まれている,本格的なキーボードだったのです。

 この構造は評判の良かったPC-6001mk2のキーボードと同じなわけですが,PC-6001も同じ構造であることから,決してPC-6001がローコストを狙った訳でも,PC-6001mk2が評判の悪かったPC-6001のキーボードをお金をかけて改良したわけでもなかったのです。

 また,アメリカに輸出された北米版のPC-6001Aでは,キーボードが国内版とは違っていて,本格的な見た目のスカルプチャー型になっていました。PC-6001ファンとしてはこのキーボードが羨ましく,完璧なPC-6001の姿に見えるわけですが,配列が全く同じであることからも,わざわざ専用のキーボードユニットを作ったと言うよりは,キートップだけを交換した物というのが正しいでしょう。

 なら,なぜわざわざこんなオモチャみたいなキーボードにしたのか,疑問ですよね。

 その答えは,オーバーレイシートです。PC-6001は国産のホビーマシンとしては初のROMカートリッジのスロットを備えていて,電源を入れたら即座にソフトが動作するような,簡単に使いこなせる家庭用パソコンを目指した,志の高いマシンでした。

 パソコンはソフト次第でどんなことにも使えることが素晴らしいわけですが,まだまだキーボードに不慣れな日本人が多かった時代の話ですから,当時「キーボードアレルギー」と呼ばれた,キーボードへの抵抗感を減らして,専用機に匹敵する使い心地を考慮する必要があったのだと思います。

 しかし,キーボードに専用の機能を一々印刷するわけにもいきませんし,専用のキーやスイッチを設けることも出来ません。そこで,その頃よく見られたオーバーレイシートを使うことになります。

 オーバーレイシートはその名の通り,上から被せて使うシートですが,PC-6001の場合は本体のキーボードの面にぴったりフィットする大きさのシートに,キーが頭を出すように穴をあけ,専用機能の文字などはここに印刷することにしました。シートをソフトごとに付属し,使う時に交換すれば専用キーボードの出来上がりというわけです。

 標準ではカナが印刷されたオーバーレイシートが付属していました。グレーとオレンジのキーに,焦げ茶色のオーバーレイシートはとても映え,本体色のクリーム色ともマッチして,とてもフレンドリーでありながらも,デザイン的に洗練されていたと私は今でも思います。(蛇足ですがPC-8001は底板が金属,上ケースがFRPで成型されていたので成形時の制限もあったのですが,PC-6001は下ケースも上ケースもABSで,曲面を多用した非常に凝ったデザインが実現していました。ケースにABSを使ったNEC初のマシンでもあったのです。)

 実際,当時からPC-6001のキーボードのことを悪く言う人は実際に使ったことがない人か,AppleIIやPC-8801,FM-7などの本格的なキーボードを使っていた人が多くて,私自身はPC-6001のキーボードって,いわゆるゴムキーのような悪い物ではないなといつも思っていました。特にPC-6001mk2と比べても遜色ないというか,はっきり言えばどっちもそんなに良くないというか・・・

 その謎が確信に変わったのが今回のオーバーホールの結果だったのですが,こうして今実際にPC-6001のキーボードでこの文章を書いてみても,全然違和感がないですし,快適なのです。さすが往年のアルプス製と言いますか,反発力の調整が絶妙で,押した時は軽いのですが,徐々に重くなっていって,底打ちは余程の事がないと起きません。ぐっと反発力が増すところでさっとキーインされるあたりもまるでメカキーのようです。これはかなり本格的なタイピングが可能だと再認識しました。

 SHIFTキーやRETURNキーのような長いキーは丁寧に左側の軸とは別に右側にも軸が出ていて,これがキートップの穴に高精度にはまり込んで上品にストロークします。グラグラしないですし,左右のどこを押しても均等に沈み込んでくれます。しかもダンパーまで用意されているので打ち心地は快適です。

 また,当時から評判の良かった赤色のLEDも美しくて,今どきのギトギトしたレインボーカラーよりもこういうシンプルな表示の方が気が散らなくて好ましいです。

 残念なのは,やはりキートップが小さいので誤入力が起きやすいことと,ブラインドタッチが難しいことがあると思います。こういう異形のキートップは当時も今も熟練者ほど違和感を感じるのでしょう。

 それと,これは致命的とも言えるのですが,Nキーロールオーバーに対応しておらず,3つの同時押しにも対応しません。例えば大文字でLEDと入力するときに,SHIFTを押しながらEを押し,Eを離さずにDを押すと全然違うキーが入ります。これはゲーミングには使い物にならないでしょう。当時のPC-6001もこうだったっけなあ?

 とまあいうことで,PC-6001のキーボードを再生し,その志の高さが誤解されて安物扱いされた不運な歴史を語ったところで,次回は完結編,このキーボードをUSBで繋ぐことにします。

 まて次号。

Q.スマホのディスプレイの端っこに真っ黒な扇形があるんですが?

A.有機ELディスプレイの破損です。あきらめましょう。


 昨日,レシーバから通話の音声が聞こえないという致命的な故障が発生した私の変態スマートフォン,F(x)tec Pro1x。あわてて分解,接点の清掃でとりあえず治ったのですが,この手の問題は再発の可能性があるので,油断出来ません。

 そんなわけで,手持ちのイヤホンをペアリングしておき,いざというときにはこれで通話出来るようにしようと思ったのですが,ふと気が付くと画面の左下の隅っこが,綺麗に扇形に黒くなっています。

 お,Googleめ,なにやら新しいUIを実装してきたな,ここを右上にスライドするとタスクが切り替わるとか,そういう話かいな,と自らの自分勝手な妄想を一瞬楽しんだ(ついでにいうと実際に試してみた)直後,よく考えたらこの古い機種にそんなアップデートなどあるわけがないことに気が付いて,目の前の黒い扇形に静かに目を落としておりました。

 果たしてこれはなんなのか?

 当然のことながら,これは有機ELディスプレイの破損です。昨日の作業の直後に出たわけですので,作業がなんらかの影響を与えたことは否定できないと思うのですが,ひょっとしたらコネクタの差し込みミスとか,組み付けが悪くて画面の裏側に無理な力がかかっているとか,そういう問題があるのかも知れないと,もう一度バラして組み直すことにしました。

 しかし,これも当然ですが,変化無し。相変わらず半径5mmくらいの,90度の黒い扇形は,まだそこにあります。

 輝度を上げても全く明るくならないので,これは完全にこの部分のドットが死んだのだとおもいます。例えば縦に一本とか,横に一本とか,半分とか,そんな感じの死に方がLCDは普通なので,有機ELディスプレイの死に方がこんな感じになることを初めて知りました。

 左下の隅ですので,ダークモードにすれば全く気になる事はありません。この機会にダークモードに全面的に移行,目立たない画面と同時に電池寿命を延ばすこととディスプレイの劣化を抑えることを狙うことにしました。

 しかしですね,これがこの場所,この大きさで留まるかと言われれば,きっと違うでしょう。いずれ大きな面積で表示が出なくなったり,扇形が大きく広がるようになるんじゃないかと思います。

 そうなると,せっかく修理したのに,また諦めないといけません。まさに一難去ってまた一難。

 こういう時はAliexpressです。幸い交換用のディスプレイが5800円ほどで見つかったので,とりあえず購入しました。10月中旬に届くそうですが,とりあえず安心です。

 更に調べてると,ElephoneU /Uproのディスプレイと全く同じだそうで,どっちが流用したのかわかりませんが,交換の実績もあるそうです。ただ,これも同じ価格でしたので,わざわざこちらを選ぶ必要はありませんでした。

 ということで,有機ELディスプレイの不良は直線だけではなく,曲線で起こることも普通のようです。今回はダークモードで逃げましたが,基本的には交換以外に対策方法はありません。

 交換の部品が手に入ったから良いようなものですが,唯一無二のマシンを維持するのは,なかなか骨の折れることだと思いました。

 あ,そういえば電池が持たなくなってきているんだよなあ。電池って交換出来るようなものが手に入るのかなあ。

 

ページ移動

  • ページ
  • 1
  • 2

ユーティリティ

2024年09月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed