自作キーボードでLEDが点灯しない時のテスト方法と対処方法

salicylic-acid3 さんが作成・販売されている自作キーボードのNaked48LED – 自キ温泉街販売所 – BOOTHSetta21 – 自キ温泉街販売所 – BOOTHを組み立てた際、LEDの取り付けで四苦八苦したので、その時にネットで集めた情報やDiscordのSelf-Made Keyboards in Japanで教えていただいた情報をまとめてみたいと思う。

LEDチップの向きの確認

LEDチップが点灯しない時、まず最初に確認するのは取り付けたLEDチップの向きである。LEDの向きが違えば当然点灯しないし、テスターを使う必要もない簡単な作業なので、まずはここから開始する。

もし向きが違っていた場合、一度外して再度取り付けることは可能である。しかし、自分の体験から言うと、取り外す時の熱でチップが壊れる可能性があるので、新品に交換した方がトラブルが少ないと思う。

ProMicroのLEDの確認

LEDチップの向きが正しいことが確認できたら、次はテスターを使った確認に進む…でも間違いでは無いが、テスター無しでもできる確認事項が1つあるので、それも行ってみる。

方法は、ProMicroにQMK Firmwareを書き込んだ後、基盤にProMicroを取り付けた上でPCとUSBケーブルで接続し、ProMicroのLEDが点灯するか確認するというものである。

ProMicroのLEDが点灯した場合、ProMicroからLEDに電力を供給するVCC(+)とGND(ー)はショートしていないことが確認できるので、その場合、次の確認作業に進むことになる。

テスターによるテスト

続いて、テスターを使って導通を確認する。

注意事項として、電源を供給しない状態のキーボードにテスターを当てて分かるのは「ショートの有無と基盤内の断線の有無」までで、LEDチップが壊れているか否かは、キーボードに電源を供給した上で、点灯しているLEDと点灯していないLEDを繋いでみないと分からない。

なので、テスターによる調査で全てが分かる訳では無いが、デバッグ作業では「原因では無いもの」を除外していくことが大事なので、この作業は省略できない。

基盤内の断線の有無の調査

まずは、基盤内の断線の有無を調べるため、LEDチップに点灯のための電力や制御信号を送信するProMicroの設置箇所から各LEDチップまでの導通を確認していく。

基本情報

フルカラーで輝度・色味を制御できるLEDチップの場合、電源のVCCとGNDパッドに加えて、輝度・色味を制御するためのDINとDOUTのパッドがある。それぞれのパッドの位置関係は次の図のとおり(SK6812miniデータシートより)

hogeまた、ProMicroのピン毎の説明は次の図のとおり(製造元の SparkFunのWebページ より)。

ProMicro DataSheet

VCCラインの導通確認

LEDチップを点灯させる電力はProMicroのVCCから供給されるので、基盤にProMicroを取り付けた際にVCCのピンが刺さるスルーホールにテスターの電極の片方を当て、もう片方を各LEDチップのVCCに当てる。これを全てのLEDチップに対して行っていく。

もし、ここが導通していなければ、基盤内部の電源供給ラインが断線している可能性が考えられる。

GNDラインの導通確認

ProMicroのVCCから供給された電力はGNDに戻るので、VCCラインを調査した時と同様に、GNDのピンが刺さるスルーホールにテスターの電極の片方を当て、もう片方を各LEDチップのGNDに当てていく。

GNDは複数のピンがあるので、どれがLEDチップと接続しているかは、試行錯誤して確認するしかない。

DINラインの導通確認

LEDチップの制御信号を送信するDINラインも確認するが、ProMicroのどのピンから制御信号が出ているかはキーボードによって異なる。

私が調べたところ、制御信号の出力ピンはconfig.hファイルの#define RGB_DI_PINで定義される1ので、そこを確認する。

ちなみに、QMK-Firmwareのディレクトリでgrep -r "#define RGB_DI_PIN" keyboards | cut -d ":" -f 2 | cut -d " " -f 3 | sort | uniq -c | sort -nr | awk -F, '{ sum += $1 } END{ print sum }'コマンドを実行したところ、一番多かったピンはD3(88件)で、二番目のE2(39件)の2倍以上であった。

何番のピンから制御信号が出力されているか確認できたら、これまでと同様に確認する。

ただし、LEDの制御信号は、ProMicroから最初のこの方法で確認できるのは、「ProMicroが送信した制御信号が通るラインが断線していないか」であって、「LEDチップ間のデータ送信の成功・不成功」は、次の方法で確認することになる。

DOUTラインの確認

LEDチップの制御信号を次のLEDチップに送信するのがDOUTになるが、これだけはProMicroと繋がっていない。

その代わり、1番目のLEDチップのDOUTは2番目のLEDチップのDINに繋がり、2番目のLEDチップのDOUTは3番目のLEDチップのDINに繋がり…という連結が繰り返されている。ただし、最後のLEDチップのDOUTはどこにも繋がらない形になる。

そのため、DOUTについては、ProMicroとの接続ではなく、次のLEDのDINとの接続を確認することになるが、電源を接続して確認する方が視覚的に分かりやすいので、確認方法は次で述べる。

LEDチップ間の導通確認・LEDチップの故障の調査

まず、作者のウェブサイトなどで、自分が組み立てているキーボードのLEDの順番を確認する。続いてキーボードに電気を供給するため、キーボードをPCに接続する。私が組み立てたSetta21の場合、次の順番となっている。(自作テンキーキット『Setta21』ビルドガイド – 自作キーボード温泉街の歩き方より)

LEDの順番それから、点灯していないLEDの一つ前にある点灯しているLEDのDINと、点灯していないLEDのDINをジャンパワイヤーなどで接続する。(@mteiさんのツィートより)

DINとDOUTの接続確認もし、この方法で点灯していないLEDが点灯した場合、点灯しているLEDのDOUTが壊れているので、点灯していてもそのLEDチップは交換しないといけない。

一方、この方法でも点灯していないLEDが引き続き点灯しない場合、点灯していないLEDは壊れていると思われるので、交換する必要がある。

何だかまどろっこしい確認方法であるが、LEDチップが壊れているか否かは、点灯のための電力を供給している状態で、DINに制御信号を送り込んで点灯するかどうかで調べるしか無い模様なので、面倒でもこの方法で進めるしか無い。

まとめ

以上の内容が、私が調べたり教えていただいた情報を自分なりにまとめたものである。

プログラミングのデバッグ作業とは異なり、「点灯しない」というメッセージ以外のエラーメッセージが表示されないので、骨が折れる作業である。

その分、全部のLEDが点灯した時はとても嬉しいので、この記事が誰かの参考になれば幸いである。


本記事の執筆で参考にした記事

DiscordのSelf-Made Keyboards in Japanサーバで教えていただいた方々の投稿


  1. Config Options – QMK FirmwareRGB Light Configurationにて確認した。