LoginSignup
0
0

おもちゃの「へぇボタン」をIoT化してみた

Last updated at Posted at 2024-04-16

はじめに

とあるIoT系コミュニティのイベントの協賛品としておもちゃの「へぇ〜ボタン」をIoT化して提供しました。

heibutton.png

この「へぇ〜ボタン」ですが、平成時代に流行った「トリビアの泉」という番組内で使われていたボタンがおもちゃになったものです。押すと「へぇ〜」と音が鳴って、番組のボタン同様に押した回数が表示されます。

当時は持っているだけで周りから崇められるようなおもちゃだったのは知る人ぞ知るところだと思います。

ネタか技術か

イベントでの協賛品ということもありますが、今回このおもちゃで一番実現したかったのが、ボタンを押したときに「へぇ〜」という音が鳴ると同時にSlackの記事に対して「へぇ〜」のカスタムアイコンでのリアクションすることです。

heisetu.png

こうやって書きますと単なるネタ記事ですが、この取り組みというかプロジェクトの中で実装していったことを切り出してみると、ソフトウェアに関連する部分が思いのほかQiita的な技術情報となりましたので、こちらは別立てで共有いたします。

この記事では今回やったことと最終形を少しハード寄りな観点でご紹介いたします。

実現した機能

今回実装した機能がこちらになります。

  • 「へぇ〜ボタン」を押したときにSlackの投稿に対して「へぇ〜」のカスタムアイコンでリアクション
    (BOTのような第三者的な動きではなくユーザ自身のリアクション)
  • Slackの投稿を監視して新しい投稿があれば、ボタンの周りに付いているLEDを点滅させて新規投稿があることを通知
  • ボタン操作だけではなくスマホとBLE接続してリモートで「へぇ〜」と鳴動
  • 「へぇ〜」カウンタの自動リセット
    (ボタン押した回数が7セグに表示されますが値をリセットするにはリセットボタンを押す必要あり)

「へぇ〜」アイコンでリアクションさせる以外にもIoT機器ならではの機能を実装しています。まずはこれらの機能から必要とされる技術要素を汲んでいただけたらと思います。

開発環境

おもちゃをIoT化するにあたり小型で手頃なCPUボードがないか探していたところ、下記ESP32系のボードが手頃でかつ同ボード上で動くMicropythonでやりたいことが手軽に実装できそうだったので今回採用しました。

CPUボード
ESP32-DevKitC-32E
開発言語
Micropython
IDE
Thonny

ハードの分解と解析

「へぇ〜ボタン」のおもちゃをIoT化するにも中身のハードウェア構成や配線状況がわかっていないと何もできないので少々バラしてみました。

heibutton2.png

さらに、基板上の配線を確かめるためにワイヤー類を外した状態がこちらになります。
カウンタの7セグが付いている基板にBOCが載っているのがわかります。

kiban.png

上記写真の基板では5ピンコネクタを外してしまっていますが、もともとはこの基板の5ピンコネクタを介して上部のボタン内の基板と接続されていました。
基板のパターンを追いかけて起こした回路図がこちらです。

schema1.png

7セグ(U2)周りやスピーカ周辺はかなり端折って書いています。
BOC(U1)から見た信号の入力系と出力系は回路図から以下のようになると推測されます。

入力系
制御部位 BOC端子 動作
上部のボタン SW 通常LOW、ボタン押下時HI
上部のボタン内部にはSW1〜SW4の
4つのスイッチがある
カウンタリセットボタン RST 通常HI、ボタン押下時LOW
BOCのリセット入力に直結されている模様
出力系
制御部位 BOC端子 動作
7セグカウンタ (端子名は割愛) PWMで各セグメントを制御
スピーカー AUDIO 音声信号出力
上部ボタンのLED LED LOW出力時LED消灯、HI出力時LED点灯

IoT化のための改造ポイント

IoT化するために次のような方針で改造を行いました。

  • 7セグと「へぇ〜」の音声出力はBOC制御のまま(このまま使ったほうが一番安全)
  • 上部ボタンやカウンタリセットボタンの入力はESP32側で受けて、もともとBOCが受けていたボタン入力部へ代わりにESP32側から信号出力
  • LED制御はESP32側へ移行

実際に行った主な回路変更

回路の構成や電圧の違い加味して以下のように回路変更を行っていきました。

電源

おもちゃ自体はもともと単三電池3本(4.5V)で動くようになっていましたが、ESP32を使うということもありESP32のVBUS(5V)で動作するように電源周りを改造しました。

LED制御

単にLEDの制御ラインをESP32に切り替えただけでは、ESP32の出力が3.3V系なので、一石入れてVBUS(5V)相当の電圧で出力するようにしました。結果的に、ESP32からVBUSの電圧レベルでPWM出力できるようになりました。

カウンタのリセットボタン制御

ESP32がリセットボタンの入力を受けて、代わりにESP32からBOCにリセット信号を出力するようにしました。念の為、ESP32からのHI出力時はオープンドレイン出力になるように設定しています。

上部ボタン制御

ESP32側がボタンの入力を受けるようにしますが、ボタンの入力信号はVBUS相当の電圧で入ってくることになるのでESP32の入力手前で抵抗分割して3.3V相当で受けられるようにしました。

おまけの改造

おもちゃの底に電池をON/OFFするためのスライドスイッチがありましたが、今回は全体がVBUSの電源で動作するようになるためスライドスイッチがあまり意味をなさなくなってしまいます。そこで、このスライドスイッチをスピーカへの音声信号のラインに挟むことでミュートスイッチのような動きをするように改造しました。

最終的な回路図

最終的にでき上がった回路図がこちらになります。
(ハード設計は本業ではないので配線が確認できるレベルで書いています。ご容赦ください。)

schema2.png

改造工程

こんな感じで改造を行っていきました。
(画像が少ないので雰囲気だけでも掴んでいただけると幸いです)

基板スペース確保のため電池ボックス部を分離

kaizo1.png

電池ボックスのあったスペースにユニバーサル基板を配置

kaizo2.png

ESP32-WROOMの基板実装と配線

kaizo3.png

すべて手配線なのでアレですが、こんな感じで改造を行っていきました。
ハード改造後、ソフトを実装すれば完了です。

完成品の動き

自動カウンタリセット

ボタンを押した後に、ESP32からのソフト制御でリセット信号を出してカウンタをリセットしています。

LEDの点滅

最終的にESP32からVBUS相当の電圧でPWM出力ができるようになっているので、点滅もPWM制御でじんわり点滅できるようにしています。

スマホからのリモート操作でSlackに「へぇ〜」でリアクション

スマホ側とBLEで接続しておくことで、スマホからのリモート操作で「へぇボタン」のボタンを押したときと同じ動作をができます。

このとき、Slackの指定チャンネルに新着投稿があれば「へぇ〜」のアイコンで「リアクション」もできます。

最後に

今回作ったIoT化「へぇボタン」をハードウェア寄りな観点で紹介させていただきました。
ソフトウェア寄りな技術条項は別立て共有したいと思います。

関連技術情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0