Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

Onderdelen en benodigdheden

Arduino UNO Aantal: 1
Adafruit Motor/Stepper/Servo Shield voor Arduino v2 Kit – v2.3 Aantal: 1
Amazon Alexa Echo Dot Aantal: 1

Over dit project

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

Ongeveer een maand geleden publiceerde kunstenaar Brian Kane een virale video waarin een Big Mouth Billy Bass novelty-zingende vis leek te worden gestemd door Amazon's Alexa. Het internet ging wild, en ik ook – maar vooral wilde ik weten hoe het werkte, zodat ik er zelf een kon maken.

Na een aantal Raspberry Pi-projecten met Alexa te hebben gezien, dacht ik eerst dat Brian een Alexa-aangedreven Pi-project had gemaakt dat de bestaande Billy Bass-hardware aanstuurde. Maar na nadenke realiseerde ik me dat de eenvoudigste hack zou zijn: de audio van een $49 Amazon Echo verwerken via een Arduino om de bestaande motoren aan te sturen.

Ik had al een Arduino en een motorschild liggen (mijn eerste keer dat ik het schild gebruikte). Vervolgens bestelde ik een gebruikte Billy Bass voor $15 en een nieuwe Echo Dot.

Twee tutorials gaven me hoop: een 2012-gids van sfool over het gebruiken van een Arduino om een servo te laten bewegen op geluid, en een 2013-gids van Dotten over de animatronica van een Billy Bass-speelgoed.

De Billy Bass (vergelijkbaar met een Furby) wordt aangedreven door twee goedkope 5V DC-speelgoedmotortjes. De uitdaging was dus: hoe laat je deze motoren trillen in reactie op geluid? Na wat proberen en fouten vond ik een werkende oplossing. De code is verre van perfect en er zijn nog veel functies die ik wil toevoegen, maar ik wilde het project delen zodat iedereen kan helpen verbeteren.

Benodigde materialen

  • Big Mouth Billy Bass Zingende Vis (1)
  • Arduino Uno (1)
  • Arduino Uno voeding (1)
  • Adafruit Motor Shield v2 (1)
  • Paneelmontage minijack (1)
  • Gelaste hakdraad (meerdere kleuren helpt)
  • Amazon Echo Dot (hoewel elke audiobron werkt) (1)
  • Kleine oplaadbare speaker (1)
  • Minijack (⅛") audiokabel (1)
  • Minijack splitter/kabeladapter (1)

Benodigde tools

  • Kleine schroevendraaier
  • Solderbout en soldeer
  • Draadstriptang
  • Kniptang
  • Boormachine en boorbouten

Stap 1: De vis voorbereiden

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

Mijn gebruikte vis was "dood op aankomst", dus ik had geen scrupules hem open te maken. Verwijder de schroeven achterin, open de vis en ontkoppel de kabelboommetjes zodat de achterkant volledig kan worden verwijderd.

Om ruimte te maken voor de elektronica, schroef de Billy Bass-printplaat en de piezo-zummer los en verwijder ze.

Er blijft één 4-adrig kabelboom over: twee draden voor de mond (die in de vis lopen) en twee voor het hoofd/de staart (richting afhankelijk van motorrichting).

Snij vier gelijk lange stukken draad in verschillende kleuren, ontmantel en verzint de uiteinden, en steek ze in de vier sockets van de kabelboom. In de volgende stap verbinden we deze met het Arduino-motorschild.

Stap 2: Het motorschild voorbereiden

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

Er zijn maar 4 verbindingen nodig op het motorschild, waarvan twee gesoldeerd. Optioneel kun je twee extra draden aansluiten voor de staart/hoofd-motor.

  1. Audio-invoersoldering: Neem twee gelijk lange draadstukken in verschillende kleuren, strip de uiteinden en soldeer één aan ground (GND) en één aan Analog 0 (A0). Knip overtollige draad af.
  2. Paneelmontage minijack: Verbind de draad van A0 met de contactpin die de tip van de audio-connector raakt. Verbind de ground-draad met de pin die de mantle (sleeve) raakt. Dit creëert een mono-invoer.
  3. Motoren aansluiten: Verbind de draden van de mondmotor (zwart en oranje/geel) met de terminalblokken voor Motor 1 (M1). Optioneel: de staart/hoofd-motor (wit en rood) op Motor 2 (M2) – de code doet er nog niets mee.
  4. VIN-jumper: Controleer of de jumper-sleeve op de pinnen "VIN Jumper" zit. Zonder deze jumper werkt het schild niet (geen voeding). Zodra het schild op de Arduino Uno zit, moet de power-LED op het schild branden.

Stap 3: De code laden

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

De code is een "messy hack" die elementen combineert van de DC Motor Test-sketch (democode voor het motorschild) en de Sound to Servo-sketch van Cenk Özdemir (2012).

Belangrijk: De huidige code animeert nog niet de hoofd/staart-motor. Ik had een versie die dat wel deed, maar dat ging ten koste van de responsiviteit van de mondbeweging, wat cruciaal is. Ik hoop dit op te lossen in een toekomstige versie.

Stap 4: Alles samenvoegen

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
  1. Laad de code, sluit de audiokabel aan op de jack en test met een audiobron (bijv. telefoon met podcast). Beweegt de mond? Boor dan een klein gat in de plastic visplaat, duw de jack erdoor en draai hem vast.
  2. Om Alexa (of andere bron) door de vis te laten spreken: Verbind het vrije einde van de audiokabel met de Y-adapter, de oplaadbare speaker op de andere ingang, en de mannelijke stekker van de adapter in de audio-uitgang van de Echo Dot.
  3. Zet de speaker aan, volume op maximale stand (zowel speaker als Alexa). Roep Alexa en vraag iets (weer, grap, nieuws). Je hoort haar stem via de speaker terwijl de vis zijn lippen beweegt synchroon. Hoe dichter de speaker bij het hoofd, hoe "onwerkelijk" het effect.
  4. Als het werkt: probeer de speaker en Arduino in de visbehuizing te krijgen en deze dicht te maken. (Ik zoek nog naar de beste manier.)

Stap 5: Wat nu? (Toekomstige verbeteringen)

Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding
Je Billy Bass Vis Laten Zingen met Elke Audiobron – Stapsgewijze Handleiding

Er is nog veel te doen, en suggesties zijn welkom. Ik hoop een versie 2.0 te publiceren.

  1. Hoofd en staart animeren: De aansluitingen liggen klaar en ik kreeg ze werkend, maar niet zonder de mondresponsiviteit te verliezen.
  2. Speaker opladen via Arduino: Simpel genoeg, maar nog niet geïmplementeerd.
  3. Modus-wisselknop: De rode knop van de Billy Bass (of vervanger) gebruiken om te schakelen tussen "spraakmodus" (mondbeweging, "pratende vis") en "muziekmodus" (vis die danst op de beat).
  4. Nettere code: Er zitten ongetwijfeld restjes in van de mashup. Helpt mee om het op te schonen!
  5. Kleinere Arduino: De Uno + Motor Shield is overkill. Een Adafruit Feather met hun 2-motor FeatherWing zou ideaal zijn. Misschien zelfs twee Feathers: één voor mond, één voor staart/hoofd.

Code

SoundToDC (Arduino)

/* Maak een DC-motor bewegen op geluid. Publiek domein. Gemaakt door Donald Bell, Maker Project Lab (2016). Gebaseerd op Sound to Servo door Cenk Özdemir (2012) en DCMotorTest door Adafruit */
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); // Voor stacking

Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // Mond (M1)
Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2); // Staart (M2)

int SoundInPin = A0;
int LedPin = 12; // Optioneel: LED die brandt tijdens mondbeweging

void setup() {
  Serial.begin(9600);
  AFMS.begin(); // Standaard 1.6KHz
  // AFMS.begin(1000); // Alternatief 1KHz

  myMotor->setSpeed(0);
  myMotor->run(FORWARD);
  myMotor->run(RELEASE);
  pinMode(SoundInPin, INPUT);
  pinMode(LedPin, OUTPUT);

  myOtherMotor->setSpeed(0);
  myOtherMotor->run(FORWARD);
  myOtherMotor->run(RELEASE);
}

void loop() {
  uint8_t i;
  int sensorValue = analogRead(SoundInPin);
  
  int LEDValue = map(sensorValue, 0, 512, 0, 255);
  sensorValue = map(sensorValue, 0, 512, 0, 180); // 512 ipv 1023 voor betere lezing
  int MoveDelayValue = map(sensorValue, 0, 255, 0, sensorValue);

  if (sensorValue > 10) { // Drempel voor statische ruis
    delay(1);
    myMotor->run(FORWARD);
    for (i = 140; i < 255; i++) {
      myMotor->setSpeed(i);
    }
    analogWrite(LedPin, sensorValue);
    myMotor->run(RELEASE);
    myOtherMotor->run(RELEASE);
    delay(1);
  }
  analogWrite(LedPin, 0);
}

Productieproces

  1. K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
  2. Communicatie voor doofblinden vergemakkelijken met 1Sheeld en Arduino
  3. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  4. Een Alexa-aangedreven Big Mouth Billy Bass bouwen met Arduino, L293D Motor Shield en LM386-versterker
  5. Arduino Audio Frequentie Detector – Meet de luidste geluidspieken met hoge gevoeligheid
  6. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  7. Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
  8. Interactief Nextion HMI-weerstation met Arduino Mega en sensoren
  9. Audio afspelen met Arduino UNO en DFPlayer Mini – Stap-voor-stap handleiding
  10. Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
  11. Accurate zonnestralingsmeting met Arduino UNO en Ethernet Shield