自作キーボードでLEDが点灯しない時のテスト方法と対処方法
salicylic-acid3 さんが作成・販売されている自作キーボードのNaked48LED - 自キ温泉街販売所 - BOOTHとSetta21 - 自キ温泉街販売所 - 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データシートより)。
また、 ProMicro のピン毎の説明は次の図のとおり(製造元の SparkFunのWebページ より)。
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 の DIN と、点灯していない LED の DIN をジャンパワイヤーなどで接続する。(@mteiさんのツィートより)
もし、この方法で点灯していない LED が点灯した場合、点灯している LED の DOUT が壊れているので、点灯していてもその LED チップは交換しないといけない。
一方、この方法でも点灯していない LED が引き続き点灯しない場合、点灯していない LED は壊れていると思われるので、交換する必要がある。
何だかまどろっこしい確認方法であるが、 LED チップが壊れているか否かは、点灯のための電力を供給している状態で、 DIN に制御信号を送り込んで点灯するかどうかで調べるしか無い模様なので、面倒でもこの方法で進めるしか無い。
まとめ
以上の内容が、私が調べたり教えていただいた情報を自分なりにまとめたものである。
プログラミングのデバッグ作業とは異なり、「点灯しない」というメッセージ以外のエラーメッセージが表示されないので、骨が折れる作業である。
その分、全部の LED が点灯した時はとても嬉しいので、この記事が誰かの参考になれば幸いである。
本記事の執筆で参考にした記事
- m.tei / ishiiさんのツイート
- コルネキーボードを作りました ~LED取り付けに四苦八苦記~ | キオクノロンダリング
- QMK Firmware でオリジナルキーボードのファームウェアを作成する - Qiita
- DiscordのSelf-Made Keyboards in Japanサーバで教えていただいた方々の投稿
Config Options - QMK Firmwareの
RGB Light Configuration
にて確認した。 ↩︎