声で動く音センサーアプリ不要

声で動くピッコリーネ
VoiceSwitchの作り方

音センサーとESP32C3 SuperMiniをピッコリーネに内蔵し、声や音をきっかけに動くおもちゃにする方法です。アプリを起動しなくても、電池を入れてスイッチを入れるだけで、声に反応して動くようになります。

VoiceSwitchを内蔵したピッコリーネの完成写真
完成イメージ 外から見ると普通のピッコリーネですが、内部に音センサーとESP32を組み込み、声や音で動くおもちゃになります。

作成意図

「おもちゃであそぼう」アプリの声で動かすモードでは、声をかけると犬のおもちゃが動きます。かわいいおもちゃが声に反応して近づいてくるため、使っている方から「癒される」という感想を聞くことが多くありました。

そこで、アプリを介さずにおもちゃ本体だけで同じような動きができれば、アプリ操作が難しい方にも使いやすいのではないかと考えました。ピッコリーネの中に音センサーを入れ、声や音をきっかけに動くようにしたものが、このVoiceSwitchです。

一人暮らしの高齢の方の話し相手のように使ったり、発声に難しさがある方が「声を出してみよう」と思うきっかけにしたり、いろいろな使い方が考えられます。

VoiceSwitchの特徴
Bluetooth接続やアプリ操作は不要です。電池ボックスのスイッチを入れると音センサーが待機し、声や音を検出した時だけピッコリーネが動きます。
VoiceSwitchをテスターで確認している様子
動作確認の様子 内蔵前に3V電源をつなぎ、音センサーの反応とモーター出力を確認します。

最初に確認すること

分解・改造を伴う作業です。
ピッコリーネの内部に基板や配線を入れるため、おもちゃを分解して配線を変更します。無理に引っ張ると配線やパーツが切れたり、外装が戻しにくくなったりします。
100Vは扱いません
この作例は電池で動くおもちゃの内部改造です。100V電源は扱いませんが、乾電池でもショートや発熱には注意が必要です。

必要な部品

主な部品は、音を検出するKY-037、信号を処理するESP32C3 SuperMini、電源を3.3VにするDC-DC基板、モーターをON/OFFするNch MOSFETです。

ダイオード、音センサーKY-037、ESP32C3 SuperMini
ダイオード・KY-037・ESP32 音を検出し、その信号をESP32へ送り、モーター制御につなげます。
DC-DC昇圧基板、470µFコンデンサー、Nch MOSFET
DC-DC・コンデンサー・MOSFET 電源を安定させ、モーターへの電流をON/OFFします。
メイン基板と配線材
配線材 ESP32用に60mmを3本、KY-037用に70mmを2本、信号線90mmを1本用意します。
DC-DCのGND線とモーター接続用配線
電源・モーター用配線 DC-DCのGNDへつなぐ線と、モーターへ接続する赤黒線を用意します。
部品役割
ESP32C3 SuperMini音センサーからの信号を受け取り、MOSFETを制御します。
音センサー検出モジュール KY-037声や音を検出し、D0からESP32へ信号を送ります。
DC-DC 3.3V昇圧基板おもちゃの電池電圧を、ESP32とKY-037が使う3.3Vにします。
470µFコンデンサーDC-DC入力側の電源を安定させます。
Nch MOSFET(IRLZ44N等)モーターのマイナス側をON/OFFするスイッチとして使います。
ダイオードモーターの逆起電力対策です。写真では3Aを使っていますが、1Aでも十分です。
アルミシート・スポンジ付き両面テープ・ホットボンド絶縁、ノイズ対策、基板固定に使います。

全体のしくみ

声や音をKY-037が検出すると、D0信号がESP32C3 SuperMiniへ入ります。ESP32はその信号を受けて一定時間だけMOSFETをONにし、ピッコリーネのモーターを動かします。

電源の流れは2つに分かれます。ESP32C3とKY-037は、DC-DCで作った3.3Vで動作し、モーターとMOSFET側には電池の電圧がそのまま使われます。

VoiceSwitchのしくみ 声・音 話しかける・呼びかける KY-037 音を検出 D0信号を出す ESP32C3 5秒間ON 停止後0.5秒待つ 電池・DC-DC 3.3Vを供給/電池電圧を使う MOSFET モーターをON/OFF モーター 歩く・鳴く 3.3V 3.3V 電池電圧
この図の見方
赤い線は電源の流れです。DC-DCで作った3.3VはKY-037とESP32C3へ供給し、モーターを動かすためのMOSFET側には電池の電圧が流れます。青い線は、音の検出信号と制御の流れを表しています。
このプログラムの大事な設定
音が入ると5秒間動作し、停止した後は0.5秒間だけ音を待つ設定にしています。ピッコリーネ自身のモーター音や鳴き声を拾って、動き続けてしまうことを避けるための工夫です。

ESP32C3 SuperMiniへプログラムを書き込む

配線前に、ESP32C3 SuperMiniへVoiceSwitch用のプログラムを書き込みます。書き込み後は、音センサーからの信号をGPIO4で受け、GPIO3からMOSFETへ出力する動作になります。

VoiceSwitchは番号変更不要です
ToySwitchのようにBluetooth接続する機器ではないため、接続名や番号の変更は必要ありません。電源を入れると単独で音センサー待機状態になります。

配線準備

まずは内蔵する部品をひとまとまりにして、ピッコリーネの中へ入れられる状態にします。写真はタッチまたはクリックすると、大きく表示できます。

GNDと3.3V用の配線をまとめたところ

GNDと3.3Vの線をまとめる

DC-DCのGNDには4本、VO 3.3Vには2本を接続します。先に6mmほど被覆をむき、よってから半田で固めておくと、基板へ付けやすくなります。

DC-DC基板にコンデンサーとピンを付けたところ

DC-DCにコンデンサーを付ける

DC-DCの入力側に470µFコンデンサーを取り付けます。VO側にも配線を付けやすいよう、必要に応じてピンを半田付けしておきます。

DC-DC基板にすべての配線を付けたところ

DC-DCに配線する

電池ボックスからの入力、ESP32とKY-037へ送る3.3V、共通GNDの線を接続します。あとで確認しやすいよう、線の色を決めておくと安心です。

KY-037のマイクとボリュームを加工したところ

KY-037を内蔵用に加工する

マイクを音を拾いやすい向きに付け直します。青い感度調整ボリュームは本体から外し、30AWGの線3本で延長して、後から調整しやすい位置へ出せるようにします。

KY-037に電源線と信号線を接続したところ

KY-037に電源と信号線を接続する

KY-037へDC-DCからのGNDと3.3Vを接続します。D0の信号線はESP32のGPIO4へつなぎます。

Nch MOSFETに3本の線を付けたところ

MOSFETに配線する

Nch MOSFETには、ESP32のGPIO3へつなぐ信号線、モーターへつなぐマイナス線、共通GNDへつなぐ線を接続します。モーター側は電池の電圧で動くため、MOSFETはそのマイナス側をON/OFFする役目になります。足同士が触れないように絶縁します。

ESP32C3 SuperMiniに配線したところ

ESP32へ配線する

ESP32には、DC-DCからのGNDと3.3V、KY-037からのD0信号線をGPIO4へ、MOSFETへの制御線をGPIO3へ接続します。KY-037もESP32も、ここではDC-DCからの3.3Vで動作します。

VoiceSwitchの全部品を接続したところ

全体を接続する

ESP32、KY-037、DC-DC、MOSFETをすべて接続した状態です。ピッコリーネへ入れる前に、配線の向きやショートがないことを確認します。

3V電源とテスターで動作確認しているところ

内蔵前に動作確認する

3V電源をつなぎ、KY-037が音を検出した時にMOSFET側へ出力されるかを確認します。ここで感度調整も一度行っておくと、内蔵後の確認が楽になります。

ピッコリーネへ内蔵する

配線したVoiceSwitchをピッコリーネの内部へ取り付けます。ToySwitch内蔵型と同じように、モーター周りのノイズ対策と、外装に干渉しない配置が大切です。

元の黒線を外してセラミックコンデンサーの位置を変えたところ

元のマイナス線を外す

ピッコリーネにもともとあるモーターの黒いマイナス線は外します。あわせて、部品を取り付けやすいようにセラミックコンデンサーの位置を少し上へ移動します。

モーター上にESP32とDC-DCを固定したところ

ESP32とDC-DCを固定する

モーターの上に、絶縁とノイズ対策を兼ねたアルミシートを貼ります。その上へESP32、DC-DC、コンデンサーをホットボンドで固定します。

Nch MOSFETを電池ボックス後ろに固定したところ

MOSFETを固定する

MOSFETはモーターからできるだけ離し、電池ボックスの後ろ側に固定します。胴体パーツがはまるように、下から3mmほど空けて取り付けます。

KY-037の裏にスポンジ付き両面テープを貼ったところ

KY-037の固定面を作る

KY-037の裏側にスポンジ付き両面テープを重ねて貼り、接着面を増やします。基板が斜めになりすぎないようにしておくと、取り付けやすくなります。

KY-037を背中の左側に取り付けたところ

音センサーを背中側に取り付ける

マイクが音を拾いやすいよう、背中の少し左側にKY-037を取り付けます。真上に出すと出っ張りが目立つため、少し横へ逃がすと自然に収まります。

マイクボリュームを後から調整できる位置に出したところ

感度調整ボリュームを出す

青い感度調整ボリュームは、後から調整できる位置に配線します。KY-037は少し回すだけで反応が大きく変わることがあるため、完成後に布を少し開けるだけで調整できる位置に固定しておくと安心です。使う部屋の音環境や、ぬいぐるみを戻した後の音の入り方によって反応が変わることがあるので、ここで微調整できるようにします。

VoiceSwitchを内蔵したピッコリーネの完成写真

完成

電池を入れて電源を入れると、KY-037のLED1が赤く透けて見えます。声をかけて、ピッコリーネが5秒間動くことを確認します。

感度調整と動作確認

VoiceSwitchでは、KY-037の感度調整がとても大切です。感度が高すぎると、周りの音や自分の動作音を拾って動き続けます。低すぎると、声をかけても反応しません。

KY-037の調整手順
青いボリュームは、最初は音が入っていないのにLED2が点いたままになりやすいです。一度、LED2が消えるまで左へ20回以上回し、その後、反対方向へ少しずつ戻しながら、声や手をたたいた音でLED2が点く位置を探します。最後は、ほんの少し回すだけの微調整になります。
ボリュームを外から調整できるようにする理由
KY-037の感度はとても微妙で、ぬいぐるみの布を戻した後や、ドライヤーで温めた後、使う部屋の音環境によって反応が変わることがあります。完成後に本体を大きく分解しなくても調整できるよう、感度調整ボリュームは外から触れる位置に出しておくことをおすすめします。
  1. 電源を入れ、KY-037のLED1が点くことを確認します。
  2. 何も音を出していない時に、LED2が点きっぱなしになっていないか確認します。
  3. 声をかけた時だけLED2が点くように、青いボリュームを調整します。
  4. 声に反応してピッコリーネが約5秒動くことを確認します。
  5. 停止後すぐに自分の鳴き声やモーター音で再動作しないか確認します。
安定動作の目安
このプログラムでは、音を検出すると5秒間動作し、停止後0.5秒間は次の音を待つようにしています。実際に動かしながら、ピッコリーネ自身の音で連続動作しにくい設定にしました。

相談・問い合わせ

VoiceSwitchに関心のある方、作り方について確認したい方、実際のおもちゃへの使い方について相談したい方は、下記フォームからお知らせください。すぐに対応できるとは限りませんが、相談内容に沿うよう対応させていただくとともに、今後の改良や情報整理の参考にしたいと思います。

ご感想・ご要望フォーム