全然20日に投稿できませんでした、すみません・・・
brown hackと題してスマスピ拡張デバイス的なものを作成したのでざっくりまとめます。
brownの発話をセンサーで検知し連動して手をばたばたさせる的なイメージです
— まる (@hepppook) December 22, 2019
挙動不審だし腕あんま動いてないし最終的に自分のサーボ音に反応しちゃってる気がするけど、
とりあえずセンサーに反応してる感じがするのでいったんは良しとしましょう。
(部屋きさなくてごめんなさい)
##材料
- Sound ESP32 v1 ×1 ※
- サーボモータ(TG9e)×2
- ローテーションサーボ(FS90R)×2
- コンデンサマイク(家に転がってたちっちゃめのやつ) ×1
- その他、パーカ・リュック用の生地など
####※Sound ESP32 v1 について
@wamisnet さん作の基板です。※現在非売品
##### 主な特徴
- ESP32ベース
- 基板サイズは35×35mm
- sg90がそのままさせるサーボ専用のピン配列が6口
- MIC接続可能
- スピーカー接続可能(PCM5102)
- ディスプレイ(SSD1306)を搭載可能
私はよく顔面制作してるのですが、毎回色々うまくいかなくてつらいって話をしたら
顔面制作に便利な機能がつまった基板をつくってくれました!
(神!神!ありがとうございます)
SG90がこんなにぶっさせて、こんなに小型!でとても幸せなボードです。
##プログラム
よくわからないけど、下記でとりあえずは動いた・・・
#include <ESP32Servo.h>
int micVal = 0;
int micOn = 0;
int threshold = 985;
Servo servoBR; //bottom-Rigth
Servo servoBL; //bottom-Left
Servo servoHR; //hand-Right
Servo servoHL; //hand-Left
void setup() {
servoBR.attach(26); //servo1
servoBL.attach(25); //servo2
servoHR.attach(14); //servo3
servoHL.attach(27); //servo4
}
void loop() {
servoBR.attach(26);
servoBL.attach(25);
servoBR.write(90);
servoBL.write(90);
micVal = analogRead(34);
if(micVal > threshold){
micOn = 1;
} else {
micOn = 0;
}
delay(1);
if(micOn == 1){
servoBR.write(0);
servoBL.write(180);
servoHand();
delay(1);
while(micOn == 1){
servoBR.write(0);
servoBL.write(180);
micVal = analogRead(34);
if(micVal > threshold){
micOn = 1;
} else {
micOn = 0;
}
delay(1);
}
}
if(micOn == 0) {
servoBR.detach();
servoBL.detach();
delay(1);
while(micOn == 0){
micVal = analogRead(34);
if(micVal > threshold){
micOn = 1;
} else {
micOn = 0;
}
delay(1);
}
}
}
void servoHand() {
servoHR.write(50);
servoHL.write(100);
delay(200);
servoHR.write(150);
servoHL.write(0);
delay(200);
}
##反省など
サーボ音やはりうるさい
センサーの値とサーボの連動が思い通りになるようにどうにかしたい
距離センサーとかつけて障害物さけれたら
Sound ESP32の機能をもっとちゃんと使いたい、次は音声再生させたい
バッテリーで動かせるようにしたい
腕の機構をもっと安定させてたい
etc...
、、、というか成果物全然IoTしてないじゃん!!すみません!!