LoginSignup
7
0

More than 3 years have passed since last update.

brown hack!!!

Last updated at Posted at 2019-12-22

全然20日に投稿できませんでした、すみません・・・
brown hackと題してスマスピ拡張デバイス的なものを作成したのでざっくりまとめます。

完成イメージ

図3.jpg

brownの発話をセンサーで検知し連動して手をばたばたさせる的なイメージです

完成系

図1.png

挙動不審だし腕あんま動いてないし最終的に自分のサーボ音に反応しちゃってる気がするけど、
とりあえずセンサーに反応してる感じがするのでいったんは良しとしましょう。
(部屋きさなくてごめんなさい)

材料

  • Sound ESP32 v1 ×1 ※
  • サーボモータ(TG9e)×2
  • ローテーションサーボ(FS90R)×2
  • コンデンサマイク(家に転がってたちっちゃめのやつ) ×1
  • その他、パーカ・リュック用の生地など

※Sound ESP32 v1 について

@wamisnet さん作の基板です。※現在非売品

 主な特徴
  • ESP32ベース
  • 基板サイズは35×35mm
  • sg90がそのままさせるサーボ専用のピン配列が6口
  • MIC接続可能
  • スピーカー接続可能(PCM5102)
  • ディスプレイ(SSD1306)を搭載可能

図2.png

私はよく顔面制作してるのですが、毎回色々うまくいかなくてつらいって話をしたら
顔面制作に便利な機能がつまった基板をつくってくれました!
(神!神!ありがとうございます)

SG90がこんなにぶっさせて、こんなに小型!でとても幸せなボードです。

ギミック(と呼べるほどのものではない)

IMG-6809.JPG

配線

IMG-6807.JPG

プログラム

よくわからないけど、下記でとりあえずは動いた・・・

brownhack.ino
#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してないじゃん!!すみません!!

7
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
7
0