しゃべぐるみ制作 その5(しゃべぐるみ基本セット+LED付きプッシュスイッチ+人感センサー)※実店舗に初導入
こんにちは、dojinosukeです。
※2024年5月までは、しゃべるぬいぐるみのことを「デジタルペット(Digital Pets) = デジぺ」と呼んでいましたが、6月より「しゃべぐるみ」に改めました。
少し時間が空いてしまいましたが、9月の敬老の日の3連休に、ドジパンダのしゃべぐるみVer3.2とチビぐるみVer1.0を現場に入り浸って作りました。今回は、これらに関する記事を連投したいと思います。
ちなみに、投稿がこのタイミングになった理由は、ここ一ヶ月半忙しかったからという理由にもならない理由ですが、
11月10日に広東省の恵州市でチビぐるみ制作のワークショップを開催
11月23日(土・祝)、24日(日)の両日開催のOgaki Mini Maker Faire 2024へ出店
と、来月に電子工作系のイベントの主催と参加を2つ控えており、どちらのイベントも先月初めて製作したこの2種類のしゃべぐるみでで乗り切る予定です。
で、もう10月末なのでいい加減準備を始める必要があるのと、特にメーカーフェアでは、できる限り基板の状態にしておきたいため、備忘と気合を入れ直す意味も兼ねて記事にまとめたいと思います。
はじめに
7/7のHMMF2004開催の翌日にOHMMF2024の申し込みをしたのも今は昔。先週10/25には、OMMF2024の公式サイトで出展者紹介がアップされました。私の紹介は下記:
で、OHMMF2024で展示予定のドジパンダのしゃべぐるみVer.3.2ですが、実は、すでに三ケ日みかんで有名な三ヶ日町(静岡県浜松市浜名区)の「カラオケ喫茶スナックりりぃ」さんに置かせていただいています。
余談として、少し経緯をお話しすると、店長さんとは5月中旬の天竜区二俣でのイベントでちょうど横になり、ドジパンダのしゃべぐるみのことを覚えていてくれていました。
どうでもいい話ですが、8月下旬にお話をいただきましたが、ちょうど北海道出張で新千歳空港に着いたばかりでしたので、浜松に戻った8月末に改めて現地訪問し、打ち合わせ。
その後、9/13(金)~現地入りして、三連休中に試行錯誤しながら完成させ、9/20(金)に正式に納品させていただきました。
その後は一度故障しましたが、バッテリーにあまり充電せずに使っていたらしく、ファームウェアを書き込み直しただけで直ったため、おそらくバッテリー切れで使った際にバグったと判断しました。
参考記事
しゃべぐるみ基本セット
上記は、ドジパンダのしゃべぐるみVer.2.0の記事ですが、これに搭載されているタッチスイッチ(TTP223)、音声再生モジュール(DFPlayer Mini)、赤外線リモコン受信モジュール(VS1838B)、赤外線リモコン(任意のリモコン)の4つをしゃべぐるみの「基本セット」と規定しています。
今回は、この基本セットに対して、LED付きプッシュスイッチと人感センサーを追加して使う内容となっております。
したがいまして、初めての方は、まずは上記記事をご覧いただき、DFPlayerやタッチスイッチなどに関してご理解いただいたうえで、本記事をご覧ください。
LED付きプッシュスイッチ
(https://storage.googleapis.com/zenn-user-upload/3881048818cd-20241030.jpg)
9月頭に大阪日本橋に行き、共立電子産業さんが運営する「シリコンハウス デジット」を訪問。
そこで、LED付きプッシュスイッチの他、測距センサーや人感センサーなどを購入しました。
で、今回はここで購入した下記スイッチを使いました。
ゲームスイッチ はめ込み 24mm 青色照光 5-12V
SWI508-24IN0512LED-BL
●カラー:青
●照光部:LED 青色/DC5~12V用(明るさは印加する電圧により異なります)
●スイッチ:1a接点(ON-OFF)/モーメンタリ型
仕様及び画像引用元:https://eleshop.jp/shop/g/gL79126/
配線図
このプッシュスイッチは配線箇所が4ヶ所あり、LEDの+側、LEDの-側、A接点(常開)のスイッチ接点が2つです。
一見複雑ですが、構造上はシンプルに、別々のスイッチ一個とLED一個がくっついているだけです。
ですので、配線上は、どれがスイッチの接点で、どれがLEDのプラスとマイナスがわかれば大丈夫ですが、問題が一つ。
プラスマイナスの刻印があるので、どちら側がプラスでどちら側がマイナスかはわかりますが、刻印が中途半端な位置にあるため、というか、むしろ刻印の位置がスイッチ接点側に近いため、私も最初、スイッチ接点側をプラスマイナと間違えて詰まりました。。。
具体的な配線は、下記を参考にしてください。
ON/OFFの判別がしやすいよう。今回はブザーも使います。
Arduino Uno | LED付きプッシュスイッチ | ブザー |
---|---|---|
5V | 接点1 | / |
/ | 接点2 | + |
GND | - | - |
デジタル7番ピン | / | + |
デジタル13番ピン | + | / |
ソースコード
//http://drshiroshirokm.seesaa.net/article/441873352.html
//ボタンを押している時だけLEDを点灯させるプログラム
const int LED = 13; //定数LEDを13に設定
const int BUTTON = 7; //定数BUTTONに7を設定
int var = 0; //変数varを設定
void setup() {
pinMode(LED, OUTPUT); //LEDピンを出力に設定
pinMode(BUTTON, INPUT); //BUTTONピンを入力に設定
}
void loop() {
var = digitalRead(BUTTON); //BUTTONピンを読み取った結果をvarに代入
//varはHIGHか?
if(var == HIGH){
digitalWrite(LED, HIGH); //LEDピンにHIGHを出力
}
else{
digitalWrite(LED, LOW); //LEDピンにLOWを出力
}
}
ブレッドボード図
後日掲載予定
動作確認
プッシュ時、つまり、接点が閉じている時だけ、ONし、スイッチのLEDが光り、ブザーが鳴ります。
なお、上述の配線とソースコードは、「2. LED常時OFFで、押した時のみ点灯&機能ON」のものです。
人感センサー
当初は測距センサーを使う予定でしたが、それが上手くいかず、念のために購入した「人体赤外線感知センサー(KP-IR612)」を使用したところバッチリでした。
人体赤外線感知素子
KP-IR612
●電源電圧:3.0V~12V
仕様及び画像引用元:https://eleshop.jp/shop/g/g402287/
配線図
この人感センサーは、ピンヘッダが5ヶ所、可変抵抗器も3つあるため、一見配線が面倒そうですが、普通に使う分には下記3本を配線するだけで動きます。
GND:マイナス電源
TEST:信号
DC-INPUT:プラス電源
で、センサー自体は何か光ったり音が出たりしませんので、センサーがちゃんと反応しているかがわかりやすいよう、発光ダイオードとブザーも追加します。
具体的な配線は、下記を参考にしてください。
Arduino Uno | KP-IR612 | ブザー | 発光ダイオード |
---|---|---|---|
5V | DC-INPUT | / | ---- |
GND | GND | - | -※ |
デジタル2番ピン | TEST | / | / |
デジタル10番ピン | / | + | / |
デジタル11番ピン | / | / | + |
※1kΩの抵抗を挟む
ソースコード
#define LED_OUT 11
#define PIR_IN 2
#define BUZ_OUT 10
void setup() {
pinMode(LED_OUT, OUTPUT);
pinMode(PIR_IN, INPUT);
}
void loop() {
digitalWrite(LED_OUT, HIGH);
if (digitalRead(PIR_IN) == HIGH) {
delay(100);
} else {
delay(1000);
}
digitalWrite(LED_OUT, LOW);
if (digitalRead(PIR_IN) == HIGH) {
delay(100);
} else {
delay(1000);
}
if (digitalRead(PIR_IN) == HIGH) {
analogWrite(BUZ_OUT,70);
} else {
analogWrite(BUZ_OUT, 0);
}
}
ブレッドボード図
後日掲載予定
動作確認
人感センサーが反応前:発光ダイオードがゆっくり点滅
人感センサーが反応後:発光ダイオードが高頻度で点滅&ブザー音がする
詳細は、下記を確認してください。
しゃべぐるみVer.3.2
しゃべぐるみ基本セットに加え、上述のLED付きプッシュスイッチと人感センサーの使い方を理解したうえでこちらをご覧ください。
基本的にはすべて付け足すだけです。
詳細は、後日アップします。
配線図
後日掲載します。
ソースコード
/*
0001_あそぼー.mp3
0002_こんにちはー.mp3
0003_ドジパンダだよー.mp3
0004_またねー.mp3
0005_ありがとう.mp3
0006_少々お待ち下さい.mp3
0011_いらっしゃいませ1.mp3
0012_いらっしゃいませ2.mp3
0013_いらっしゃいませ3.mp3
0014_いらっしゃいませ4.mp3
0015_いらっしゃいませ5.mp3
0016_いらっしゃいませ6.mp3
0021_ぐー_2.mp3
0022_ちょき_2.mp3
0023_ぱー_2.mp3
0024_おしり_6.mp3
0025_ドジパンじゃんけんじゃんけんポン_1.mp3
0026_ドジパンじゃんけんじゃんけんポン(早め)_1.mp3
0031_うえ_1.mp3
0032_した_1.mp3
0033_みぎ_1.mp3
0034_ひだり_1.mp3
0035_あっかんべー_2.mp3
0036_15.あっち向いてホイ.mp3
0037_16.あっち向いてホイ(早め)_1.mp3
0041_ボタンを押してねー_1.mp3
0042_11.ボタンを押してねー(早め)_1.mp3
0043_カラオケは右の奥でーす_1.mp3
0044_12.カラオケは右の奥でーす(早め)_1.mp3
0045_ドジパンダと握手しよー_1.mp3
0046_13.ドジパンダと握手しよー(早め)_1.mp3
0047_右に曲がってドアを開けてねー_1.mp3
0048_14.右に曲がってドアを開けてねー(早め)_1.mp3
x0002_最初はー
x0003_じゃんけん
x0004_ぽん
x0005_あいこで
x0006_ぐー
x0007_チョキ
x0008_パー
x0013_ごめんなさい1
x0014_ごめんなさい2
*/
//DFPlayer Mini
#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"
SoftwareSerial mySerial(10, 11); // RX, TX
//VS1838B(赤外線受信モジュール)
#include <IRremote.h>
int receiverPin = 4; //デジタルピン番号用の変数
IRrecv receiver(receiverPin); //操作用の変数
decode_results results; //受信した信号の格納用の変数
//TTP223(タッチスイッチ)
const int TOUCH1 = 5; //発話用のタッチスイッチ1
const int TOUCH2 = 7; //発話用のタッチスイッチ2
const int TOUCH3 = 6; //発話用のタッチスイッチ3
//ランダム変数
int randNumber1;
int randNumber2;
int randNumber3;
int randNumber4;
//プッシュボタン用変数
const int LED = 13; //LED付きプッシュボタンのLED機能を13に設定
const int BTN = 12; //LED付きプッシュボタンのボタン機能を12に設定
int var = 0; //変数varを設定
//人感センサー(KP-IR612)
#define LED_OUT 3
#define PIR_IN 8
void setup() {
//DFPlayer Mini
delay(2000); //モジュール起動の待機時間
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
mp3_set_volume (60);
//TTP223
pinMode(TOUCH1, INPUT); //発話用のタッチスイッチ1の入力
pinMode(TOUCH2, INPUT); //発話用のタッチスイッチ2の入力
pinMode(TOUCH3, INPUT); //発話用のタッチスイッチ3の入力
//VS1838B
receiver.enableIRIn(); //赤外線受信モジュールを初期化
//ランダム変数
Serial.begin(9600);
randomSeed(analogRead(0));
//プッシュスイッチ用定義
pinMode(LED, OUTPUT); //LEDピンを出力に設定
pinMode(BTN, INPUT); //BTNピンを入力に設定
//人感センサー(KP-IR612)
pinMode(LED_OUT, OUTPUT);
pinMode(PIR_IN, INPUT);
}
void loop() {
//タッチで発話
//タッチ1=じゃんけん
if (digitalRead(TOUCH1) == HIGH){
//ランダム変数1 21:ぐー 22:ちょき 23:ぱー 24:おしり
randNumber1 = random(21, 25); // 21から24の乱数を生成
mp3_play (25); //0025_ドジパンじゃんけんじゃんけんポン_1.mp3
delay(6000);
mp3_play (randNumber1); //0021_ぐー_2.mp3 / 0022_ちょき_2.mp3 / 0023_ぱー_2.mp3 / 0024_おしり_6.mp3
delay(2000);
}
delay(1);
//タッチ2=あっち向いてホイ
if (digitalRead(TOUCH2) == HIGH){
//ランダム変数2 31:うえ 32:した 33:みぎ 34:ひだり 35:あっかんべー
randNumber2 = random(31, 36); // 31から35の乱数を生成
mp3_play (36); //0036_15.あっち向いてホイ.mp3
delay(3000);
mp3_play (randNumber2); //0031_うえ_1.mp3 / 0032_した_1.mp3 / 0033_みぎ_1.mp3 / 0034_ひだり_1.mp3 / 0035_あっかんべー_2.mp3
delay(2000);
}
delay(1);
/*
//タッチ3=あいさつ
if (digitalRead(TOUCH3) == HIGH){
//ランダム変数3 2:こんにちはー 3:ドジパンダだよー
randNumber3 = random(2, 4); // 2から3の乱数を生成
mp3_play (randNumber3); //0002_こんにちはー.mp3 / 0003_ドジパンダだよー.mp3
// mp3_play (41); //0041_ボタンを押してねー_1.mp3
delay(1500);
}
delay(1);
*/
//赤外線リモコンで発話
if (receiver.decode(&results)) { //赤外線を受信して信号を格納
//(results.value == 実際のリモコンの赤外線識別番号)
//ONボタン(0xFF02FD)
if (results.value == 0xFF02FD) {
mp3_play (4); //0004_またねー.mp3
// mp3_play (11); //0011_ありがとう.mp3
delay(1000);
//OFFボタン(0xFF9867)
}else if (results.value == 0xFF9867) {
mp3_play (35); //0035_あっかんべー_2.mp3
// mp3_play (14); //0014_ごめんなさい2.mp3
delay(1000);
}
receiver.resume();
}
delay(1);
////LED付きプッシュボタン
var = digitalRead(BTN); //BTNピンを読み取った結果をvarに代入
//varはHIGHか?
if(var == HIGH){
digitalWrite(LED, HIGH); //LEDピンにHIGHを出力
mp3_play (43); //0043_カラオケは右の奥でーす_1.mp3
delay(5500);
mp3_play (45); //0045_ドジパンダと握手しよー_1.mp3
delay(5500);
}
else{
digitalWrite(LED, LOW); //LEDピンにLOWを出力
}
//////////////////////
////人感センサー
digitalWrite(LED_OUT, HIGH);
if (digitalRead(PIR_IN) == HIGH) {
delay(100);
} else {
delay(1000);
}
digitalWrite(LED_OUT, LOW);
if (digitalRead(PIR_IN) == HIGH) {
delay(100);
} else {
delay(1000);
}
if (digitalRead(PIR_IN) == HIGH) {
//ランダム変数4 11~16:いらっしゃいませ1~6
randNumber4 = random(11, 17); // 11から18の乱数を生成
mp3_play (randNumber4); //00011_いらっしゃいませ1.mp3~0016_いらっしゃいませ6.mp3
delay(2500);
mp3_play (41); //0041_ボタンを押してねー_1.mp3
delay(3500);
}
delay(1);
//////////////////////
}
ブレッドボード図
後日掲載します。
動作確認
ドジパンダのしゃべぐるみVer.3.2
• しゃべぐるみ基礎(マイコン、音声再生モジュール、他)
• プッシュボタンで発話
• 人感センサーで感知して発話
• 両腕内のタッチスイッチで発話
詳細は、下記を確認してください。
まとめ
このドジパンダのしゃべぐるみVer.3.2は、しゃべぐるみの店舗版第一号で、かつまだプロトタイプですが、9/20に正式に納品し、現在も稼働しています。
残りは、後日更新します。
Discussion