工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ビリーベースの口を任意のオーディオソースでアニメートする

コンポーネントと消耗品

>
Arduino UNO
× 1
Arduinov2キット用Adafruitモーター/ステッピング/サーボシールド-v2 .3
× 1
Amazon Alexa Echo Dot
× 1

このプロジェクトについて

<図>

約1か月前、Brian Kaneというアーティストが、AmazonのAlexaバーチャルアシスタントが声をかけたように見える、Big Mouth BillyBassのノベルティが魚を歌っている様子を示すバイラルビデオを公開しました。インターネットはそれに夢中になり、私もそうしましたが、ほとんどの場合、自分で作成できるように、インターネットがどのように機能するかを知りたかっただけです。

Alexaを利用したRaspberryPiプロジェクトをいくつか見た後、私は当初、Brianが既存のBillyBassハードウェアをアニメーション化する手段としても機能するAlexaを利用したPiプロジェクトを作成したと思いました。このアイデアは、毎週開催されるYouTubeの番組であるMakerUpdateでも取り上げました。

しかし、もう少し考えてみたところ、最も簡単なハックは、49ドルのAmazon Echoのオーディオを使用し、Arduinoで処理して既存のモーターを駆動する方法だと思いました。

私はすでにArduinoとモーターシールドを手元に持っていました(シールドを使用するのはこれが初めてでしたが)。

次に、Amazonで使用しているBillyBassを約15ドルで注文しました。ガレージセールやリサイクルショップで中古品をもっと安く手に入れることができると思いますが、すぐに欲しかったのです。 EchoDotも新品で注文しました。

それらを注文して、私は研究に移りました。 2つのチュートリアルが私に希望を与えてくれました。Arduinoを使用してサーボをサウンドに移行するためのsfoolからのこの2012年のガイドと、BillyBassおもちゃのアニマトロニクスを理解するためのDottenからのこの2013年のガイドです。

ビリーバス(ファービーの​​ように)は基本的に2つの安価な5v DCおもちゃのモーターによって駆動されることを理解します-問題は、これらのモーターを音に反応してけいれんさせる方法になります。少し試行錯誤して、実行可能な解決策を見つけました。コードは完璧にはほど遠いものであり、組み込みたい機能は他にもたくさんありますが、誰もがこれを改善できるように、これを立ち上げたかったのです。

必要な材料

  • ビッグマウスビリーバスシンギングフィッシュ(1)
  • Arduino Uno(1)
  • Arduino Uno電源(1)
  • Adafruit Motor Shield v2(1)
  • パネルマウントミニジャック(1)
  • より線フックアップワイヤー(複数の色が役立ちます)
  • Amazon Echo Dot(ただし、どのオーディオソースでも機能するはずです)(1)
  • ある種の小型充電式スピーカー(1)
  • ミニジャック(⅛”)オーディオケーブル(1)
  • ミニジャックスプリッターケーブルアダプター(1)

必要なツール

  • 小型ドライバー
  • はんだごてとはんだ
  • ワイヤーストリッパー
  • 切り鋏
  • ドリルとビット

ステップ1:魚を準備する

<図> <図> <図> <図> <図> <図> <図> <図> <図>

良くも悪くも、使用済みの魚は到着時に死んでいた。少なくとも、私はそれを開いてハッキングすることに躊躇しませんでした。私のハックでは、背面のネジを外して開き、ケーブルハーネスを外すために穏やかな圧力を加えて、背面を完全に取り外すことができるようにします。

電子機器用のスペースを増やすために、ビリーバス回路基板とピエゾブザーを追加、ネジを外して取り外します。

残っているのは、魚から突き出ている4線式ハーネス1本です。これには、口をアニメートする2本のワイヤー(魚に引きずり込まれるのがわかります)と、モーターを動かす方向に応じて頭または尾のいずれかを持ち上げる2本のワイヤーが含まれます。

魚を準備する最後のステップは、4つの等しい長さの異なる色のワイヤーを切断し、先端を露出して錫メッキし、ワイヤーハーネスの4つのソケットのそれぞれに端を挿入することです。次のステップでは、これらをArduinoモーターシールドに接続します。

ステップ2:モーターシールドを準備する

<図> <図> <図> <図> <図> <図>

モーターシールドに接続する必要があるのは4つだけで、そのうち2つだけがはんだ付けされています。テール/ヘッドモーターを試してみたい場合は、追加の2本のワイヤーを接続することもできます。

それを乗り越えるためにはんだ付けから始めましょう。魚の音声入力を作成するには、2つの等しい長さの異なる色のワイヤーを取り、端を取り除き、1つをアースに、もう1つをアナログ0にはんだ付けします。ボードを通る余分なワイヤーを切り取ります。

次に、これらのワイヤーをオーディオ入力用のパネルマウントミニジャックに接続します。私が持っていたジャックは、3つの可能な接続を備えたそれらの派手なモノラルスイッチジャックの1つでした。重要なのは、アナログ0からオーディオコネクタの先端に接触するジャックのリード線までワイヤを配線して、モノラル入力を作成することです。次に、オーディオコネクタのベース(またはスリーブ)と接触するジャックのリード線にアース線を配線します。

次に、フィッシュモーターをシールドに接続するには、フィッシュマウスモーター(黒とオレンジ)につながる一対のワイヤーをモーター1の端子台に通し、ねじ込みます。オプションで、テール/ヘッドモーターワイヤー(白と赤)をモーター2の端子に配線できますが、コードはこのモーターではまだ何もしていません(これについては次のセクションで詳しく説明します)。私の魚の場合、端子台のワイヤーの色は、マウスモーター(M1)の場合は黒、オレンジ(私の場合は黄色)、オプションのテールモーター(M2)の場合は白、赤になります。

最後に、モーターシールドのジャンパースリーブがVINジャンパーというラベルの付いたピンに取り付けられていることを確認します。私は最初これを見逃し、なぜシールドがオンにならないのかと頭を悩ませていました。これで、シールドをArduino Unoに挟み、Arduinoの電源を入れ、シールドの電源インジケーターLEDも点灯するようになります。シールドが点灯しない場合は、ジャンパーを確認します。

ステップ3:コードを読み込む

<図> <図> <図>

したがって、このコードは、DCモーターテストスケッチ(基本的にはモーターシールドのデモ)の要素と、CenkÖzdemir(2012)によるSound to Servoスケッチの要素をまとめる厄介なハックです。これは、私がリンクしたArduino Sound toServoチュートリアルに含まれています。その上。

現在の状態のコードは、まだヘッド/テールモーターをアニメートしていません。私はそれを行ったバージョンを1つ持っていましたが、それは口の動きの応答性を遅くしました。理想的には、頭と尻尾がゆっくりと自分のアニメーションを循環している間、口の反応を維持したいのですが、これが私のArduinoコーディング機能の現在の制限です。私がそれを理解するか、皆さんから提案を得るとすぐに、更新されたコードを投稿します。

ステップ4:すべてをまとめる

<図> <図> <図> <図> <図>

コードをロードし、オーディオケーブルをジャックに接続すると、オーディオソースをケーブルの自由端に接続するだけで魚の口を動かすことができるはずです(私はポッドキャストを再生する電話を使用しました)。それが機能している場合は、プラスチックの魚のプラークのどこかに小さな穴を開け、ジャックを押して所定の位置に締めます。

Alexa(またはあなたが望むもの)があなたの魚を通して話すようにするには、オーディオケーブルの自由端をYアダプターに接続し、充電式スピーカーをアダプターの他の入力に接続してから、アダプターのオスプラグをEchoDotのオーディオ出力。

スピーカーのスイッチがオンになっていて、スピーカーとAlexaの両方で音量が上がっていることを確認してください。次に、Alexaを呼び出して質問し、話を聞いてもらいます(天気、ジョーク、ニュース)。ポータブルスピーカーから彼女の声が聞こえると同時に、魚のゴム製の唇が時間内に羽ばたくのを目撃する必要があります。話者が魚の頭に近いほど、その効果は不思議です。

すべてがうまくいったら、トリックはスピーカーとArduinoをBillyBassエンクロージャーに詰めて閉じることです。正直なところ、私はまだこのビットを理解しています。

ステップ5:次はどこ?

<図> <図>

ここでやるべきことはまだたくさんあります。これを改善するためのすべての提案を歓迎します。近い将来、このバージョン2.0を投稿したいと思います。

1.頭と尻尾をアニメートしたい。接続はそこにあり、私はそれらを機能させることができましたが、口の応答性を犠牲にすることなくではありません。これは重要です。

2.スピーカーをArduinoから充電できるようにしたい。簡単そうに見えますが、まだ行っていません。

3. Billy Bassの赤いボタン(または代わりのボタン)で、「スピーチ」モード(口の動きと「話す魚」の魅力全体についての詳細)と、魚が飛び回る「音楽」モードを切り替えたい。音楽への時間。

4.よりクリーンなコード。私が行ったマッシュアップのコードには、多くの残り物があると確信しています。クリーンアップするためのあらゆる努力を歓迎します。

5.小さいArduinoを使用します。 UnoとMotorShieldは、私たちがそれを使用している目的に対して完全にやり過ぎです。アダフルーツフェザーとそのフェザー用の2モーターシールドが良い代替品になると思います。おそらく、1つは口に電力を供給し、もう1つはテールヘッドモーターに電力を供給することができます。

コード

  • SoundToDC
SoundToDC Arduino
 / * DCモーターをサウンドに移動します。このサンプルコードはパブリックドメインにあります。 Donald Bell、Maker Project Lab(2016)によって作成されました。 Cenk zdemir(2012)によるSound toServoおよびAdafruitによるDCMotorTestに基づく* /// Adafruitモーターシールドライブラリを含める#include  #include  #include "utility / Adafruit_MS_PWMServoDriver.h" //デフォルトのI2Cアドレスを使用してモーターシールドオブジェクトを作成しますAdafruit_MotorShieldAFMS =Adafruit_MotorShield(); //または、別のI2Cアドレスで作成します(たとえば、スタッキング用)// Adafruit_MotorShield AFMS =Adafruit_MotorShield(0x61); //「ポート」M1、M2、M3、またはM4を選択します。この場合、M1は口、M2はtailAdafruit_DCMotor * myMotor =AFMS.getMotor(1); Adafruit_DCMotor * myOtherMotor =AFMS.getMotor(2); //必要なその他の変数intSoundInPin =A0; int LedPin =12; //口が動いている間にLEDをアクティブにしたい場合//リセットを押すとセットアップルーチンが1回実行されます:void setup(){Serial.begin(9600); //シリアルライブラリを9600bpsに設定AFMS.begin(); //デフォルトの周波数1.6KHzで作成//AFMS.begin(1000); //または別の周波数(たとえば1KHz)で//開始する速度を0(オフ)から255(最大速度)まで設定しますmyMotor-> setSpeed(0); //マウスモーターmyMotor-> run(FORWARD); //モーターをオンにしますmyMotor-> run(RELEASE); pinMode(SoundInPin、INPUT); pinMode(LedPin、OUTPUT); myOtherMotor-> setSpeed(0); //テールモーターmyOtherMotor-> run(FORWARD); //モーターをオンにしますmyOtherMotor-> run(RELEASE); pinMode(SoundInPin、INPUT); } //ループルーチンは永遠に何度も何度も実行されます:void loop(){uint8_t i; //アナログピン0の入力を読み取ります:int SensorValue =analogRead(SoundInPin); //0..255の間の整数であるLEDのこの別の値をマップしますintLEDValue =map(sensorValue、0,512,0,255); //ここで可能な移動範囲にマッピングします。 SensorValue =map(sensorValue、0,512,0,180); //アナログ読み取りがこれまでに行われるはずなので、通常512は1023であることに注意してください。しかし、より良い読み取りを得るためにこれを変更しました。 int MoveDelayValue =map(sensorValue、0,255,0、sensorValue); //同じ読み取り値をもう少し下にマッピングして、モーターが取得する時間を計算します(sensorValue> 10){//静的な読み取り値をカットしますdelay(1); //物事をスムーズにするための静的遅延... //モーターを移動するmyMotor-> run(FORWARD); for(i =140; i <255; i ++){myMotor-> setSpeed(i); } // for(i =200; i!=0; i-){// myMotor-> setSpeed(i); // delay(10); //} analogWrite(LedPin、sensorValue); //そしてこの遅延時間内に移動しますmyMotor-> run(RELEASE); myOtherMotor-> run(RELEASE); delay(1);} //完了。 // LEDを再びオフにします。 analogWrite(LedPin、0); //これは常に繰り返されます。} 

製造プロセス

  1. K30センサーによるCO2モニタリング
  2. 1Sheeld / Arduinoとの盲ろう者のコミュニケーション
  3. Arduinoでコインアクセプターを制御する
  4. Big Mouth Billy Bass + Alexa
  5. 可聴周波数検出器
  6. LEDを制御するBluetoothを搭載したArduino!
  7. ArduinoまたはESP8266を搭載した静電容量式指紋センサー
  8. Nextionディスプレイで遊ぶ
  9. Arduinoでオーディオを再生する
  10. Nunchuk制御ロボットアーム(Arduino付き)
  11. Arduinoで日射量を測定する