Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

Componentes e Materiais

ComponenteDescriçãoQtd
Arduino UNO Qualquer modelo Arduino. 1
Shield Motor/Stepper/Servo Adafruit v2.3 para Arduino Kit versão 2.3. 1
Amazon Alexa Echo Dot Ou qualquer outra fonte de áudio. 1

Sobre o Projeto

Há cerca de um mês, o artista Brian Kane publicou um vídeo viral mostrando um peixe cantor "Big Mouth Billy Bass" aparentemente dublado pela Alexa da Amazon. A internet enlouqueceu, e eu também – mas principalmente queria entender como funcionava para criar o meu.

Após ver vários projetos com Raspberry Pi e Alexa, imaginei que Brian tivesse feito um projeto Pi que animasse o hardware do Billy Bass. Cheguei a sugerir isso no meu programa semanal no YouTube, Maker Update.

Mas, pensando melhor, o hack mais simples seria usar o áudio de um Echo Dot de US$ 49 e processá-lo com um Arduino para acionar os motores existentes.

Já tinha um Arduino e um motor shield (minha primeira vez usando o shield). Comprei o Billy Bass usado na Amazon por cerca de US$ 15 (pode achar mais barato em brechós) e o Echo Dot novo.

Dois tutoriais me deram esperança: um guia de 2012 do sfool sobre mover servo com som via Arduino e outro de 2013 do Dotten sobre a animatrônica do Billy Bass.

Entendendo que o Billy Bass (assim como um Furby) é movido por dois motores DC baratos de 5V, o desafio era fazer esses motores tremerem em resposta ao som. Com tentativa e erro, encontrei uma solução viável. O código está longe de perfeito e há muitos recursos a adicionar, mas quis publicar para que todos possam melhorar.

Materiais Necessários

Ferramentas Necessárias

Passo 1: Prepare o Peixe

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

Meu peixe usado chegou sem funcionar. Sem hesitação, abri: desparafusei a parte traseira, removi os chicotes de cabos e retirei a placa de circuito e o buzzer piezoelétrico para ganhar espaço.

Sobrou um chicote de 4 fios: dois para a boca e dois para a cabeça/cauda (depende da direção do motor).

Cortei quatro fios coloridos de mesmo comprimento, estanhei as pontas e inseri nos soquetes do chicote. No próximo passo, conectaremos ao motor shield.

Passo 2: Prepare o Motor Shield

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

Apenas 4 conexões no shield, duas soldadas. Também dá para ligar mais dois fios se quiser experimentar o motor da cauda/cabeça.

  1. Soldagem da entrada de áudio: Dois fios coloridos, um no GND e outro no pino Analógico 0. Leve até o conector minijack de painel: o fio do A0 vai ao contato da ponta (tip) do plugue; o GND vai ao contato da base (sleeve).
  2. Motores do peixe: Par de fios da boca (preto e laranja/amarelo) nos bornes do Motor 1. Opcional: fios da cauda/cabeça (branco e vermelho) no Motor 2 (o código ainda não usa).
  3. Jumper VIN: Verifique se o jumper está nos pinos "VIN Jumper". Sem ele, o shield não liga.

Encaixe o shield no Arduino, alimente e veja o LED de potência acender.

Passo 3: Carregue o Código

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

O código mistura o sketch "DC Motor Test" (demo do motor shield) e o "Sound to Servo" de Cenk Özdemir (2012).

Versão atual não anima a cabeça/cauda. Tentei, mas prejudicava a responsividade da boca. Quero manter a boca responsiva enquanto cabeça/cauda animam lentamente, mas minha habilidade de codificação no Arduino ainda limita. Postarei atualizações quando resolver ou receber sugestões.

Passo 4: Montando Tudo

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

Com o código carregado e cabo de áudio no jack, teste com uma fonte de áudio no cabo livre (usei meu celular tocando podcast). Se a boca mexer, faça um furo na placa do peixe, fixe o jack.

Para a Alexa falar pelo peixe: cabo de áudio no divisor Y, alto-falante recarregável na outra entrada, plugue macho do divisor na saída de áudio do Echo Dot.

Ligue o alto-falante, aumente volume no alto-falante e na Alexa. Chame a Alexa (clima, piadas, notícias). Você ouvirá a voz pelo alto-falante enquanto a boca do peixe acompanha. Quanto mais perto o alto-falante da cabeça do peixe, mais realista o efeito.

O desafio agora é encaixar alto-falante e Arduino dentro do peixe e fechar. Ainda estou resolvendo essa parte.

Passo 5: Próximos Passos

Anime seu Peixe Billy Bass com Qualquer Fonte de Áudio – Guia Passo a Passo

Muito a melhorar, sugestões bem-vindas. Pretendo lançar versão 2.0 em breve.

  1. Animar cabeça e cauda sem perder responsividade da boca.
  2. Recarregar o alto-falante pelo Arduino.
  3. Botão vermelho do Billy Bass (ou substituto) para alternar entre modo "fala" (boca) e "música" (corpo todo).
  4. Limpar o código (muito lixo da mistura).
  5. Usar Arduino menor: Adafruit Feather + shield de 2 motores para Feather seria ideal. Talvez um para boca, outro para cabeça/cauda.

Código

SoundToDC (Arduino)

/* Make a DC Motor Move to Sound. Public domain. Donald Bell, Maker Project Lab (2016).
   Baseado em Sound to Servo por Cenk Özdemir (2012) e DCMotorTest da 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); // para stacking

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

int SoundInPin = A0;
int LedPin = 12; // LED opcional

void setup() {
  Serial.begin(9600);
  AFMS.begin(); // frequência padrão 1.6KHz
  // AFMS.begin(1000); // ou 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);
  pinMode(SoundInPin, INPUT);
}

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 em vez de 1023 para leituras melhores
  int MoveDelayValue = map(sensorValue, 0, 255, 0, sensorValue);

  if (sensorValue > 10) { // corta ruído estático
    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);
}

Processo de manufatura

  1. Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
  2. Facilitando Comunicação Surdo-Cego com 1Sheeld e Arduino
  3. Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
  4. Construa um Billy Bass "Grande Boca" Controlado por Alexa com Arduino, Shield L293D e Amplificador LM386
  5. Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
  6. Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
  7. Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
  8. Projeto HMI Interativo com Nextion, Arduino Mega e Sensores
  9. Como Reproduzir Áudio com Arduino UNO e DFPlayer Mini – Guia Passo a Passo
  10. Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega