百均のLEDタッチライトをArduino/RaspberryPi/M5Stack/M5stickCで使える大型LED付ボタンに改造する
早押しクイズで使うような大型のボタンをできるだけ安価に用意したかったので、百均のLEDタッチライトをArduino(RaspberryPi/M5Stack/M5StickCも同様)で制御できるように改造しましたので、工作方法・サンプルソース等をこちらにまとめます。
目次
- 目次
- はじめに(作った動機)
- こんなふうに動きます
- 今回使った百均のLEDタッチライト
- LEDタッチライトの分解と動作分析
- 制御コネクタ拡張のための工作手順
- M5StickCでの制御
- 今後の予定
- 参考パーツ
はじめに(作った動機)
現在、早押しクイズや大学の講義のオンライン挙手などに使えるWebアプリの開発を共同で進めていまして 、スマホやPCブラウザからは使えるのですが、ハードウェアボタンもほしいね、ということで作りました。
ArduinoやRaspberryPiなどのネットワーククライアントに簡単に接続できる大型ボタンを探したのですが、電子部品屋さんのスイッチデバイスは、小型のものは安価で大量に手に入りますが、大型で丈夫なものになるといきなり高価になってしまいます。
そこで、百均でよく目にするLEDタッチライトを使うことにしました。
100円は大型スイッチとしては格安で、しかも、早押しクイズなどで回答権を得たときにその状態を示すための明るいLEDライトまで付いています。機能的には揃っているので、あとは照明デバイスとしての動作を止めて、ArduinoやRaspberryPiで制御するための制御線を引っ張り出すための工作をすれば良さそうです。
こんなふうに動きます
動作概要や工作手順を収めたビデオはこちらです。
百均のLEDタッチライトをArduino/RaspberryPi/M5Stack/M5stickCで制御できる大型LED付ボタンに改造する
今回使った百均のLEDタッチライト
2020年5月現在、セリアで100円(税込み110円)で売っていました。
電池(単4電池3本)は別売りです。
基本動作はこちら。
LEDタッチライトの分解と動作分析
上記ビデオで示したとおり、買ってきた状態では次のような基本動作です。
- ボタンを押したら点灯。
- もう一度押したら消灯。
シンプルな動作
どのように動いているのか分解してみましょう。
分解は簡単で、LEDタッチライトの蓋を外し、裏側の電池ボックスの中にある4つのネジを外すだけです。
電池ボックスを外すと、ボタン部とLED基板部(白い基板)が出てきます。
真ん中にライト用の白色LEDが3つ、丈夫に薄型のタクトスイッチが付いています。丸いボタンの端の出っ張りがこのタクトスイッチを押して、ON/OFFを制御してそうです。基板の左上と右下に大きめの半田付けがされているのが、電池から来てる+極と-極です。また、基板中央に小さな5ピンの制御用ICがありました。(ATTiny10に似たパッケージのICです。)
テスタで結線を調べたところ、ICには次のように結線されているようでした。
どうやら、このLEDタッチライトは、電池をセットすると、この小型ICに常時通電されています。このICのI/Oスイッチが押されると、LED出力を制御し、ライトを光らせているようです。
結果、このICを剥がして、スイッチ用のI/O端子のパターンと、LED制御用のパターンの部分から線を引き出せば、Arduino等で制御ができるようになりそうです。
制御コネクタ拡張のための工作手順
解析の結果の通り、ICを剥がして、スイッチ用とLED用のパターンを引き出します。
このICは5ピンしかないので、半田ごてで温めれば簡単にはがせました。
(実際の作業の様子は動画を御覧ください。)
ICを剥がしたら、スイッチとLEDの制御ピンのあったところに、導線を半田付けします。
引き出した線は電池ボックスの隙間を通して、電池ボックス側に持っていきます。
スイッチの線なのか、LEDの線なのかは、マスキングテープなどを貼って残しておくとわかりやすいでしょう。
あとは、電池の+側とマイナス側も線を半田付けし、合計4本の線を引き出すようにします。
これらの線をArduinoなどに接続しやすいように、コネクタにします。
今回は、小型のユニバーサル基板と、L型のメスのコネクタを用意しました。
4ピンで十分ですが、将来の拡張用に6ピンのものを使っています。
上記のように、ユニバーサル基板に各ピンを3つのスルーホールに分けるシール基板を用意しておくと、コネクタ実装が便利になります。
ここで気づいたのですが、スイッチは何も押してなければオープン状態になり、HIGH/LOWが不安定になります。もともとの小型ICは内蔵抵抗でプルアップで読み取っていたように見えますので、今回のコネクタ基板にプルアップ抵抗(10kΩ)を足しています。
結果、つぎのような実装になりました。
あとは、実装後のコネクタ基板を電池ボックスに格納して完成です。
蓋を付ける場合は、蓋に4本の線を引き出すための穴を開ければ良いでしょう。
M5StickCでの制御
さて、完成したスイッチを動かしてみます。
今回は、WiFiでネットワークに繋げたいので、M5StickCと接続することにしました。
M5StickCのHATをつなげる端子と、次のように接続します。
結線表はこちら。
M5StickC | LEDタッチライト制御線 | 備考 |
GND | GND | |
5V出力 | Vdd | |
G26 | LED | 出力可能なGPIO |
G36 | スイッチ | 入力専用ピン。 プルアップ・プルダウンは未サポート。 |
上記の用に結線したら、M5StickCのスケッチを作成します。
今回はテスト用となので、非常に簡単な制御だけをしています。
- ボタンを押したらLEDをON。ボタンを離したらLEDをOFF。
- 100msに一度、判定を行う
- M5StickCの液晶に、ボタンの押下状態を表示する
M5StickC用のArduinoスケッチファイルはこちらで公開しています。
上記スケッチを焼くことで、狙い通り制御ができました。
今後の予定
早押しボタンアプリのハードデバイスとして、M5StickC、ESP32ボード向けに開発を継続します。結合が終わったら、回路図と合わせて別記事にまとめたいと思います。
参考パーツ
最後に、今回の工作で使用した主要パーツをリストアップしておきます。
- ユニバーサル基板
- 抵抗
- シール基板