百均のLEDタッチライトをArduino/RaspberryPi/M5Stack/M5stickCで使える大型LED付ボタンに改造する

早押しクイズで使うような大型のボタンをできるだけ安価に用意したかったので、百均のLEDタッチライトをArduino(RaspberryPi/M5Stack/M5StickCも同様)で制御できるように改造しましたので、工作方法・サンプルソース等をこちらにまとめます。

f:id:mnishikawa:20200531184901j:plain

百均のLEDタッチライトをM5StickCで制御する

目次

 

 

はじめに(作った動機)

現在、早押しクイズや大学の講義のオンライン挙手などに使えるWebアプリの開発を共同で進めていまして スマホやPCブラウザからは使えるのですが、ハードウェアボタンもほしいね、ということで作りました。

ArduinoやRaspberryPiなどのネットワーククライアントに簡単に接続できる大型ボタンを探したのですが、電子部品屋さんのスイッチデバイスは、小型のものは安価で大量に手に入りますが、大型で丈夫なものになるといきなり高価になってしまいます。

そこで、百均でよく目にするLEDタッチライトを使うことにしました。

f:id:mnishikawa:20200531144756j:plain

百均(セリア)で買ったLEDタッチライト

100円は大型スイッチとしては格安で、しかも、早押しクイズなどで回答権を得たときにその状態を示すための明るいLEDライトまで付いています。機能的には揃っているので、あとは照明デバイスとしての動作を止めて、ArduinoやRaspberryPiで制御するための制御線を引っ張り出すための工作をすれば良さそうです。

 

 

こんなふうに動きます

動作概要や工作手順を収めたビデオはこちらです。 


百均のLEDタッチライトをArduino/RaspberryPi/M5Stack/M5stickCで制御できる大型LED付ボタンに改造する

 

 

今回使った百均のLEDタッチライト

2020年5月現在、セリアで100円(税込み110円)で売っていました。

電池(単4電池3本)は別売りです。

基本動作はこちら。


百均(セリア)で買ったLEDタッチライトの基本動作

 

 

LEDタッチライトの分解と動作分析

上記ビデオで示したとおり、買ってきた状態では次のような基本動作です。

  • ボタンを押したら点灯。
  • もう一度押したら消灯。

シンプルな動作

どのように動いているのか分解してみましょう。

分解は簡単で、LEDタッチライトの蓋を外し、裏側の電池ボックスの中にある4つのネジを外すだけです。

f:id:mnishikawa:20200531203836j:plain

LEDタッチライトの分解

電池ボックスを外すと、ボタン部とLED基板部(白い基板)が出てきます。

f:id:mnishikawa:20200531145427j:plain

LEDタッチライトのLED基板

真ん中にライト用の白色LEDが3つ、丈夫に薄型のタクトスイッチが付いています。丸いボタンの端の出っ張りがこのタクトスイッチを押して、ON/OFFを制御してそうです。基板の左上と右下に大きめの半田付けがされているのが、電池から来てる+極と-極です。また、基板中央に小さな5ピンの制御用ICがありました。(ATTiny10に似たパッケージのICです。)

f:id:mnishikawa:20200531151412j:plain

テスタで配線を調査

 

テスタで結線を調べたところ、ICには次のように結線されているようでした。

f:id:mnishikawa:20200531152027j:plain

LEDタッチライトの制御IC配線図

どうやら、このLEDタッチライトは、電池をセットすると、この小型ICに常時通電されています。このICのI/Oスイッチが押されると、LED出力を制御し、ライトを光らせているようです。

結果、このICを剥がして、スイッチ用のI/O端子のパターンと、LED制御用のパターンの部分から線を引き出せば、Arduino等で制御ができるようになりそうです。

 

 

制御コネクタ拡張のための工作手順

解析の結果の通り、ICを剥がして、スイッチ用とLED用のパターンを引き出します。

このICは5ピンしかないので、半田ごてで温めれば簡単にはがせました。

(実際の作業の様子は動画を御覧ください。)

f:id:mnishikawa:20200531152834j:plain

制御ICの除去

ICを剥がしたら、スイッチとLEDの制御ピンのあったところに、導線を半田付けします。

f:id:mnishikawa:20200531160349j:plain

スイッチとLEDパターンを導線で引き出す

引き出した線は電池ボックスの隙間を通して、電池ボックス側に持っていきます。

スイッチの線なのか、LEDの線なのかは、マスキングテープなどを貼って残しておくとわかりやすいでしょう。

あとは、電池の+側とマイナス側も線を半田付けし、合計4本の線を引き出すようにします。

f:id:mnishikawa:20200531161548j:plain

スイッチ、LEDの制御線と電源ラインの引き出し

これらの線をArduinoなどに接続しやすいように、コネクタにします。

今回は、小型のユニバーサル基板と、L型のメスのコネクタを用意しました。

4ピンで十分ですが、将来の拡張用に6ピンのものを使っています。

f:id:mnishikawa:20200531161909j:plain

f:id:mnishikawa:20200531162059j:plain

引き出した線をコネクタにする

上記のように、ユニバーサル基板に各ピンを3つのスルーホールに分けるシール基板を用意しておくと、コネクタ実装が便利になります。

ここで気づいたのですが、スイッチは何も押してなければオープン状態になり、HIGH/LOWが不安定になります。もともとの小型ICは内蔵抵抗でプルアップで読み取っていたように見えますので、今回のコネクタ基板にプルアップ抵抗(10kΩ)を足しています。

結果、つぎのような実装になりました。

f:id:mnishikawa:20200531180237j:plain

LEDタッチライトの制御線、電源線をコネクタで引き出して電池ボックスに格納

あとは、実装後のコネクタ基板を電池ボックスに格納して完成です。

蓋を付ける場合は、蓋に4本の線を引き出すための穴を開ければ良いでしょう。

 

 

M5StickCでの制御

さて、完成したスイッチを動かしてみます。

今回は、WiFiでネットワークに繋げたいので、M5StickCと接続することにしました。

M5StickCのHATをつなげる端子と、次のように接続します。

f:id:mnishikawa:20200531180418j:plain

M5StickCとの接続

結線表はこちら。

M5StickC LEDタッチライト制御線 備考
GND GND  
5V出力 Vdd  
G26 LED 出力可能なGPIO
G36 スイッチ 入力専用ピン。
プルアップ・プルダウンは未サポート。

 

上記の用に結線したら、M5StickCのスケッチを作成します。

今回はテスト用となので、非常に簡単な制御だけをしています。

  • ボタンを押したらLEDをON。ボタンを離したらLEDをOFF。
  • 100msに一度、判定を行う
  • M5StickCの液晶に、ボタンの押下状態を表示する

 

M5StickC用のArduinoスケッチファイルはこちらで公開しています。

github.com

 

上記スケッチを焼くことで、狙い通り制御ができました。

 

今後の予定

早押しボタンアプリのハードデバイスとして、M5StickC、ESP32ボード向けに開発を継続します。結合が終わったら、回路図と合わせて別記事にまとめたいと思います。

 

github.com

 

 

参考パーツ

最後に、今回の工作で使用した主要パーツをリストアップしておきます。

 

  • ユニバーサル基板 

  

  •  抵抗

   

  • シール基板
サンハヤト シール基板 ICB-052

サンハヤト シール基板 ICB-052

  • メディア: Tools & Hardware