虹色に光るペンライトを作った

TL; DR

Arduino Nano EveryとLEDテープライトを使い、キンブレをベースに虹色に光るペンライトを作りました。

結線図とSketchのソースコードは下の方にありますが、dirty hack的に実現してしまったのでマネしたい方はもう少し熟慮されたほうがよいかと思います。

www.youtube.com

なぜ作ったのか

推し事に関するお話であり込み入っており極めて技術的には関係のない話なので以下に折りたたみました。 要はきっかけと「なんか作りたい」のモチベーションが噛み合ったのでという感じです。

▶詳細はこちら

どうつくったのか

先行研究

以下のブログを読み、RGBが光るLEDをArduinoで制御すればよいのではと思いました。 ここでArduino+LEDテープライト(Neopixelで制御可能なもの)という設計は浮かんでいました。

13mzawa2.hateblo.jp

買ったもの

Arduinoの開発が初めてであったのでジャンパワイヤやブレッドボードなどがすべて含まれているスターターセットを購入し、おそらく使うだろうとArduino Nano Everyを購入しています。 なお、このあとに上記記事と同じDigispark Kickstarter ATtiny85互換の基板(2枚セット)を購入していましたが結局使いませんでした。

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]
https://www.amazon.co.jp/dp/B07VX7MX27

Arduino Nano Every (シングルボード)
https://amzn.asia/d/dG7Q6ef

BTF-LIGHTING WS2812B LEDテープライト 5050 SMD RGBIC 合金ワイヤー 1m 60LEDs 個別にアドレス指定可能 切断可能 プログラマブル可能 DC5V ドリームフルカラー 夢幻色 ネオピクセル 白PCB IP30 非防水 LEDストリングライト イルミネーション 室内照明 パーティー クリスマス適用可能
https://www.amazon.co.jp/dp/B08THDHNCG

他には導線、検証用の単4電池3本の電池ボックスなどを購入しています。

実装にあたってははんだ付けが必要そうでしたが、以前Helixを作ったとき温調付きはんだごて、はんだなどはあったのでそのまま流用しました。1

また、ガワとしてはキングブレードX10Vを使いました。既存の1本を使いました。
なお原状復帰しようと思っていましたが、ガッツリ分解・穴あけしてしまったので1本買い足しました。

ruifan.co.jp

なお、X10VにはBluetoothで自作のカラーコードを転送したり色順を登録する機能があり、技適マークがあります。今回の作成にあたっては完全に無線機能を殺したので問題ないはずですが…なにか問題がありそうだったら誰か教えてください。

試作

まずは「できている、わかっている部分を増やそう」ということでArduino Unoを使ってLEDを光らせていっています。

スターターセットを買ったのもこのためです。ジャンパワイヤや小さいブレッドボードなどはDigisparkの検証にも使えたので費用面では高く付きましたが買って正解でした。頭にはこのセリフが浮かんでいます。このあたりからどうにも仕事のような気持ちになってきています。

電源問題

一番苦労した点は電源問題でした。ArduinoはUSB給電と外部電源を利用する給電の2通りの給電が行えます。今回は小さくまとめるために乾電池からの外部電源を利用する予定でした。

LEDテープライトには5Vを印加する必要があります。Arduinoから5Vを供給できる2のですが、USB電源から電源を供給できれば安定して出力できているようですが、どうやら直流だと難しい様子。Arduino側に安定して5V以上を供給できないとArduino側の5Vピンもうまく電源供給できないように見えました。

もともとはガワとして使うキンブレの単4電池3本からの電源供給をアテにしていましたが、以下の理由で断念しました。

  • Digispark Kickstarterを利用する場合
    • Arduino自体は動いているようだが、乾電池3本からではLEDが光らない
    • しかも途中でUSBからの書き込みを受け付けなくなった
    • ピンヘッダつけると実装時に面倒そう…
  • Arduino Nanoを利用する場合
    • 乾電池3本からではArduino自体が動かない

以上の結果から乾電池給電を諦め、USB給電をすることにしました。
キンブレの底部に穴を開け、そこからUSBケーブルを通し、Arduino Nano Everyのmicro USBポートにモバイルバッテリーから給電し、5VピンからLEDに給電するという流れになりました。

穴は家にあった電動ドライバーのドリルビットとダイソーで買った手芸用ピンバイス、工作用ヤスリでこじ開けました。

組み立て問題

最後組み上がったあとに、上のキラキラ光るシートが入った棒とLEDを含む基板部分を組み立てるのですが棒はねじ切りされており回して固定します。その際LEDをどのように垂直方向に固定するのか悩みました。

そのままいれるとプラプラしてしまい安定しない。テープライトの裏側が両面テープのように剥離フィルムを剥がすと粘着面が現れるのでキラキラ光るシートにくっつけて差し込もうとすると意外に摩擦が強く半田付けしたLEDのパッドがねじ切れて取れてしまう悲劇が起こりました。

結果的に、時間もなく深夜テンションも手伝って、家に転がっていた透明なストローを後ろに貼り付けて固定したらうまくいってしまったのでそれを採用としました。

できたもの

内部

回路図

先述のように、そのまま各ピンに直接つなぐのはよくないですがご参考までに。

ソース

Adafruit Neopixelのライブラリを追加して書き込んでください。

レインボーキンブレ用ソース · GitHub

運用

Arduino Nano EveryのMicro USBポートは自作キーボード界隈でおなじみの「Pro MicroのMoge Micro問題」と同じ問題を抱えており、何度も抜き差しをするとモゲてしまうらしく基板側は挿しっぱなしで、USB-A側をモバイルバッテリーに差し込むなどして電源をON/OFFすることにしました。使う際はポケットにモバイルバッテリーを入れておいて必要になったらUSBを差し込んで給電を開始します。

なお、この構成にしたおかげでモバイルバッテリーでなく開発機に接続することでSchechの実装を書き換えて光らせ方を変更するメンテナンスもやりやすくなっています。

感想

思いついてからArduinoを買ったり、ArduinoにSketchを書き込んでLEDをチカチカさせて「わーい!」としていたところまでは楽しくできましたが、電源問題にぶち当たってからは仕事終わりの工作の時間のたびに「これどうすんだよ…。」と悩みのタネになっていましたが、そこで仕事しているときに動いている脳の部分がイマジナリー上司を作り出し てしまいました。彼から「これさ、Arduino Nano EveryでUSB給電で動くんだったらさ、それで動くように全部合わせに行ったら良いんじゃない?」とフィードバックをもらい、しぶしぶキンブレに穴を開けることになりました。趣味でも仕事モード入っちゃうとこうなっちゃうんだなと思ってしまいました。

上手い人は回路でなんとかするんだろうな、とか思いながら力技でなんとくしていく感じは罪悪感とモノができあがっていく達成感の両方が湧き上がってきてなんかハイになっていました。

結果的に現場でのインパクトはあまり強くなかったのですが、個人的に「なんか作りたい」の欲が満たせ、触ってみたかったArduinoについても触れたので満足しています。そしてこれはプログラムを書き換えることで「任意の色を光らせることができる棒」が生まれたことにもなるのでなんか任意の色を光らせたくなったときにまた使えるなと思っています。


  1. なお私のキーボードの打ち方が特殊過ぎるのとはんだ付けがあまり良くできていなかったのとが重なり、結局HHKBを使っているためお蔵入りとなっている。
  2. Arduino基板側に負担が掛かると言われているし、Neopixelのサンプルコードにコメントで「コンデンサかませ」とか書いてあった気がするけど光っちゃったのでゴリ押しちゃった