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 uma boca de Billy Bass com qualquer fonte de áudio

Componentes e suprimentos

Arduino UNO
× 1
Adafruit Motor / Stepper / Servo Shield para Arduino v2 Kit - v2 .3
× 1
Amazon Alexa Echo Dot
× 1

Sobre este projeto




Cerca de um mês atrás, um artista chamado Brian Kane publicou um vídeo viral mostrando uma novidade do Big Mouth Billy Bass peixe cantando, aparentemente dublado pelo assistente virtual Alexa da Amazon. A internet enlouqueceu com isso, e eu também - mas principalmente eu só queria saber como funcionava para que eu pudesse fazer o meu próprio.

Depois de ver vários projetos do Raspberry Pi que faziam uso do Alexa, inicialmente presumi que Brian tivesse criado um projeto do Pi com o Alexa que funcionava como meio de animar o hardware Billy Bass existente - e pode ser o caso. Eu até apresentei essa ideia em meu programa semanal no YouTube, Maker Update.

Mas depois de pensar um pouco mais, descobri que o hack mais fácil seria uma maneira de simplesmente usar o áudio de um Amazon Echo de US $ 49 e processá-lo por meio de um Arduino para acionar os motores existentes.

Eu já tinha um Arduino e um escudo do motor em mãos (embora esta fosse minha primeira vez usando o escudo).

Em seguida, encomendei o Billy Bass usado na Amazon por cerca de US $ 15. Tenho certeza de que você pode comprar um usado em uma venda de garagem ou em um brechó por menos, mas eu queria um rapidamente. Eu também encomendei o Echo Dot novo.

Com os pedidos, passei à pesquisa. Dois tutoriais me deram esperança:este guia de 2012 da sfool sobre como usar um Arduino para fazer um servo se mover para o som e este guia de Dotten de 2013 sobre a compreensão dos animatrônicos de um brinquedo Billy Bass.

Compreendendo que o Billy Bass (muito parecido com um Furby) é essencialmente movido por dois motores de brinquedo 5 V DC baratos - o problema passa a ser simplesmente como fazer esses motores se contorcerem em resposta ao som. Com um pouco de tentativa e erro, encontrei uma solução viável. O código está longe de ser perfeito e há muitos outros recursos que desejo incorporar, mas eu queria fazer isso para que todos possam ajudar a torná-lo melhor.

Materiais Necessários
  • Peixe cantor Billy Bass Big Mouth (1)
  • Arduino Uno (1)
  • Fonte de alimentação do Arduino Uno (1)
  • Adafruit Motor Shield v2 (1)
  • Minijack para montagem em painel (1)
  • Fio de conexão trançado (várias cores ajudam)
  • Amazon Echo Dot (embora qualquer fonte de áudio deva funcionar) (1)
  • Alto-falante pequeno recarregável de algum tipo (1)
  • Cabo de áudio Minijack (⅛ ”) (1)
  • Adaptador de cabo divisor Minijack (1)

Ferramentas necessárias
  • Chave de fenda pequena
  • Ferro de soldar e solda
  • Decapantes de fio
  • Recortes
  • Brocas e brocas





Etapa 1:preparar o peixe


Para o bem ou para o mal, o peixe usado estava morto à chegada. Pelo menos não hesitei em abri-lo e hackea-lo. Para o meu hack, simplesmente desfaça os parafusos na parte traseira, abra-o e aplique uma leve pressão para destravar os chicotes de cabos para que a parte traseira possa ser removida completamente.

Para criar mais espaço para a parte eletrônica, adicionaremos, desparafusar e remover a placa de circuito Billy Bass e a campainha piezoelétrica.

O que você deixou é um chicote de 4 fios saindo do peixe. Isso inclui dois fios que animam a boca (você pode vê-los seguindo até o peixe) e dois fios que levantam a cabeça ou a cauda, ​​dependendo da direção em que o motor é acionado.

A última etapa na preparação do peixe é cortar quatro comprimentos iguais de arame de cores diferentes, expor e estanhar as pontas e inserir as pontas em cada um dos quatro encaixes do chicote de arame. Na próxima etapa, vamos conectá-los à blindagem do motor Arduino.





Etapa 2:preparar a blindagem do motor


Existem apenas 4 conexões que você precisa fazer na blindagem do motor, e apenas duas delas são soldadas. Você também pode conectar dois fios adicionais se quiser fazer experiências com o motor de cauda / cabeça.

Vamos começar com a solda para acabar com isso. Para criar uma entrada de áudio para o seu peixe, pegue dois comprimentos iguais de fio de cores diferentes, descasque as pontas e solde um no terra e outro no analógico 0. Corte qualquer excesso de fio que atravesse a placa.

Agora vamos passar esses fios ao minitomada de montagem em painel para nossa entrada de áudio. O conector que eu tinha era um daqueles sofisticados conectores mono com três conexões possíveis. Tudo o que importa é que você crie uma entrada mono passando o fio do Analógico 0 até o fio da tomada que faz contato com a ponta do conector de áudio. Em seguida, conecte o fio terra a um fio da tomada que faz contato com a base (ou luva) do conector de áudio.

Em seguida, para conectar o (s) motor (es) de peixe à blindagem, passe o par de fios que conduz ao motor de boca de peixe (preto e laranja) nos blocos de terminais do motor 1 e aparafuse-os. Opcionalmente, você pode conectar os fios da cauda / cabeça do motor (branco e vermelho) aos terminais do motor 2, embora o código ainda não faça nada com este motor (mais sobre isso na próxima seção). Para os meus peixes, a coloração dos fios nos blocos de terminais fica preta, laranja (amarelo no meu caso) para o motor de boca (M1) e branco, vermelho para o motor de cauda opcional (M2).

Finalmente, verifique se a blindagem do motor tem a capa do jumper conectada aos pinos identificados como VIN Jumper. Eu perdi isso inicialmente e estava coçando minha cabeça me perguntando por que o escudo não ligava. Agora você deve ser capaz de colocar a blindagem no Arduino Uno, ligar o Arduino e ver um LED indicador de energia acender na blindagem também. Se o escudo não acender, eu verificaria o jumper.





Etapa 3:carregue o código


Então, o código é um hack bagunçado que reúne elementos do esboço DC Motor Test (essencialmente a demonstração para o escudo do motor) e o esboço Sound to Servo de Cenk Özdemir (2012), incluído naquele Arduino Sound to Servo Tutorial que vinculei acima.

O código em seu estado atual ainda não anima o motor principal / final. Eu tinha uma versão que o fazia, mas diminuiu a capacidade de resposta do movimento da boca. Idealmente, eu gostaria que a boca permanecesse responsiva enquanto a cabeça e a cauda percorrem lentamente sua própria animação, mas este é o limite atual da minha capacidade de codificação do Arduino. Assim que eu descobrir ou receber sugestões de vocês, postarei o código atualizado.





Etapa 4:juntando tudo


Com o código carregado e o cabo de áudio conectado à tomada, você deve conseguir fazer a boca do peixe se mover apenas conectando uma fonte de áudio à extremidade livre do cabo (usei meu telefone tocando um podcast). Se estiver funcionando, faça um pequeno orifício em algum lugar na placa de plástico do peixe, empurre o macaco e aperte-o no lugar.

Para fazer Alexa (ou o que você quiser) falar através de seus peixes, conecte a extremidade livre do cabo de áudio ao adaptador Y, o alto-falante recarregável à outra entrada do adaptador e, em seguida, conecte o plugue macho do adaptador ao saída de áudio do Echo Dot.

Verifique se o alto-falante está ligado e se o volume está alto tanto no alto-falante quanto no Alexa. Em seguida, chame Alexa e faça uma pergunta para fazê-la falar (previsão do tempo, piadas, notícias). Você deve ouvir a voz dela através do alto-falante portátil enquanto, simultaneamente, testemunha os lábios de borracha do seu peixe batendo no ritmo. Quanto mais perto o falante está da cabeça do peixe, mais estranho é o efeito.

Se tudo estiver funcionando, o truque será colocar o alto-falante e o Arduino no gabinete do Billy Bass e fechá-lo. Honestamente, ainda estou tentando descobrir isso.





Etapa 5:onde depois?


Ainda há muito a fazer aqui e agradeço todas as suas sugestões para melhorar isso. Eu adoraria postar uma versão 2.0 para isso em um futuro próximo.

1. Quero que a cabeça e a cauda sejam animadas. As conexões estão lá e eu consegui colocá-las em funcionamento, mas não sem sacrificar a capacidade de resposta da boca, que é crítica.

2. Quero que o alto-falante seja capaz de recarregar do Arduino. Parece bastante simples, mas ainda não fiz isso.

3. Eu quero que o botão vermelho do Billy Bass (ou um substituto) alterne entre um modo de "fala" (mais sobre o movimento da boca e todo o apelo de "peixe falante", e um modo de "música" que é mais sobre o peixe se debatendo hora de música.

4. Código do limpador. Tenho certeza de que há muitas sobras no código do mashup que fiz. Eu agradeço qualquer esforço para limpá-lo.

5. Use um Arduino menor. O Uno e o Motor Shield são totalmente exagerados para o que os estamos usando. Eu acho que uma Pena de Adafruit e seu escudo de 2 motores para a pena seria uma boa alternativa. Talvez você possa ter um alimentando a boca e um separado alimentando o motor da cauda.

Código

  • SoundToDC
SoundToDC Arduino
 / * Faça um motor DC passar para o som. Este código de exemplo é de domínio público. Criado por Donald Bell, Maker Project Lab (2016). Baseado em Sound to Servo de Cenk zdemir (2012) e DCMotorTest de Adafruit * /// incluem a biblioteca de blindagem de motor Adafruit # include  #include  #include "utility / Adafruit_MS_PWMServoDriver.h" // Crie o objeto de blindagem do motor com o endereço I2C padrãoAdafruit_MotorShield AFMS =Adafruit_MotorShield (); // Ou crie-o com um endereço I2C diferente (digamos para empilhamento) // Adafruit_MotorShield AFMS =Adafruit_MotorShield (0x61); // Selecione qual 'porta' M1, M2, M3 ou M4. Neste caso, M1 para boca e M2 para tailAdafruit_DCMotor * myMotor =AFMS.getMotor (1); Adafruit_DCMotor * myOtherMotor =AFMS.getMotor (2); // Algumas outras variáveis ​​que precisamosint SoundInPin =A0; int LedPin =12; // caso você queira que um LED seja ativado enquanto a boca se move // ​​a rotina de configuração é executada uma vez quando você pressiona reset:void setup () {Serial.begin (9600); // configura a biblioteca serial em 9600 bps AFMS.begin (); // cria com a frequência padrão 1.6KHz //AFMS.begin(1000); // OU com uma frequência diferente, digamos 1KHz // Defina a velocidade para iniciar, de 0 (desligado) a 255 (velocidade máxima) myMotor-> setSpeed ​​(0); // motor de boca myMotor-> run (FORWARD); // liga o motor myMotor-> run (RELEASE); pinMode (SoundInPin, INPUT); pinMode (LedPin, OUTPUT); myOtherMotor-> setSpeed ​​(0); // motor de cauda myOtherMotor-> run (FORWARD); // liga o motor myOtherMotor-> run (RELEASE); pinMode (SoundInPin, INPUT); } // a rotina de loop é executada indefinidamente:void loop () {uint8_t i; // ler a entrada no pino analógico 0:int sensorValue =analogRead (SoundInPin); // Mapeamos outro valor deste para o LED que pode ser um inteiro entre 0..255 int LEDValue =map (sensorValue, 0,512,0,255); // Mapeamos aqui até a amplitude de movimento possível. sensorValue =map (sensorValue, 0,512,0,180); // note que normalmente 512 é 1023 porque a leitura analógica deve ir tão longe, mas eu mudei isso para obter melhores leituras. int MoveDelayValue =map (sensorValue, 0,255,0, sensorValue); // mapeando a mesma leitura um pouco mais para baixo para calcular o tempo que seu motor obtémif (sensorValue> 10) {// para cortar algumas leituras estáticas delay (1); // um atraso estático para suavizar as coisas ... // agora mova o motor myMotor-> run (FORWARD); para (i =140; i <255; i ++) {meuMotor-> definirSpeed ​​(i); } // para (i =200; i! =0; i--) {// meuMotor-> setSpeed ​​(i); // delay (10); //} analogWrite (LedPin, sensorValue); // e fazer esse movimento neste tempo de atraso myMotor-> run (RELEASE); myOtherMotor-> run (RELEASE); delay (1);} // Feito. // desligue o led novamente. analogWrite (LedPin, 0); // e isso se repete o tempo todo.} 

Processo de manufatura

  1. Monitoramento de CO2 com Sensor K30
  2. Comunicação para surdos-cegos com 1Sheeld / Arduino
  3. Aceitar moeda de controle com Arduino
  4. Boca Grande Billy Bass + Alexa
  5. Detector de frequência de áudio
  6. Arduino com Bluetooth para controlar um LED!
  7. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  8. Brincando com Nextion Display
  9. Tocar áudio no Arduino
  10. Braço robótico controlado por Nunchuk (com Arduino)