Índice:

PlotClock, WeMos e Blynk tocando Vintage AMI Jukebox: 6 etapas (com imagens)
PlotClock, WeMos e Blynk tocando Vintage AMI Jukebox: 6 etapas (com imagens)

Vídeo: PlotClock, WeMos e Blynk tocando Vintage AMI Jukebox: 6 etapas (com imagens)

Vídeo: PlotClock, WeMos e Blynk tocando Vintage AMI Jukebox: 6 etapas (com imagens)
Vídeo: How to install the new Blynk app | WeMos D1 ESP8266 with Blynk app | how to light led 2024, Julho
Anonim
PlotClock, WeMos e Blynk tocando vintage AMI Jukebox
PlotClock, WeMos e Blynk tocando vintage AMI Jukebox
PlotClock, WeMos e Blynk tocando vintage AMI Jukebox
PlotClock, WeMos e Blynk tocando vintage AMI Jukebox

Quatro inovações técnicas tornaram este projeto possível: O Rowe AMI Jukebox 1977, kit de braço de robô PlotClock, microcontrolador WeMos / ESP 8266 e serviço Blynk App / Cloud.

NOTA: Se você não tem a Jukebox em mãos - não pare de ler! Este projeto pode ser facilmente adotado para controlar várias coisas controladas por dedos humanos. Um exemplo poderia ser um dedo de robô tocando um xilofone tradicional - talvez aquele instrutível venha de você!

Minha Jukebox Rowe AMI R-81 de 40 anos de idade ainda está funcionando bem tocando singles de vinil vintage dos anos 60, 70 e 80. Pesando mais de 160 kg (360 lbs), este reprodutor não é tão portátil quanto os reprodutores MP modernos, mas vivendo na era da Internet, agora é possível carregar a jukebox e 200 discos de vinil no bolso - virtualmente é claro! E você ainda pode usar suas próprias listas de reprodução armazenadas no microcontrolador!

O incrível robô PlotClock foi originalmente projetado para mostrar a hora atual desenhando dígitos de tempo no quadro apagável. Minha adaptação para PlotClock é usá-lo como um dedo de robô para pressionar os botões de seleção de música da Jukebox.

O “dedo” do Plotclock é acionado por 3 servos controlados pelo microcontrolador WeMos. Esta maravilha é (quase) compatível com o Arduino Uno e possui recursos WiFi, portanto, é possível controlar a jukebox sem fio de qualquer lugar do mundo.

O creme sobre o bolo vem do aplicativo Blynk incrível e fácil de usar e seu Blynk Cloud Server, oferecendo uma interface de usuário de telefone / tablet com total mobilidade.

Etapa 1: Hardware

Hardware
Hardware
Hardware
Hardware

Juke-box

Project jukebox é 1977 Rowe AMI R-81. Qualquer jukebox antiga com botões de seleção servirá - observando algumas limitações do PlotClock: o design original dos braços do PlotClock pode cobrir uma área de cerca de 5 x 12 cm, então o layout dos botões da jukebox (área incluindo todos os botões de seleção) deve ser aproximadamente desse tamanho. Os botões de jukeboxes mais antigas podem precisar de mais força para ser pressionada do que os servos PlotClock podem fornecer.

AMI R-81 tem uma memória onde pode armazenar todas as 200 seleções. As seleções são reproduzidas com base na ordem em que são armazenadas no magazine de discos (tipo carrossel), não na ordem em que são selecionadas. Várias seleções para um registro são reproduzidas apenas uma vez.

PlotClock

Plotclock é um kit DIY disponível comercialmente, incluindo peças mecânicas, 3 servos, Arduino Uno R3, placa de extensão Arduino e cabo USB. Por cerca de 30 dólares, esta é uma boa compra (por exemplo, Banggood.com). Arduino, placa de extensão e cabo USB não são usados para este projeto.

Existem vários bons tutoriais na Internet / YouTube para compor o Plotclock - por exemplo. este: instruções PlotClock

static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf

WeMos

WeMos D1 R2 é um microcontrolador baseado em ESP8266. Ele pode ser programado usando o Arduino IDE e possui recursos de WiFi, portanto é uma peça de hardware perfeita para este projeto.

Etapa 2: Calibração

Calibração
Calibração

A calibração é a tarefa de encontrar valores angulares precisos para ângulos servo (entre 0 a 180 graus) para corresponder às posições físicas dos botões de seleção. Os valores dos ângulos podem ser encontrados por aritemíticas de trigonometria ou usando um software CAD. Consegui valores aproximados com meu amigo que sabia usar o AutoCad.

No entanto, a calibração final teve que ser feita por tentativa e erro. Usando o layout de botão desenhado no pedaço de papel é possível fazer o”teste de mesa” para encontrar os valores de ângulo corretos.

Etapa 3: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Fiação

A conexão dos servos Plotclock ao Wemos é feita com 5 fios: +5, GND, D4, D5 e D6. Veja detalhes em fotos e código.

Instalando na Jukebox

Eu não queria fazer furos na jukebox de 40 anos que havia sobrevivido por tanto tempo sem grandes danos. Usando um selante de borracha macia, fixei um pedaço de cantoneira de alumínio sob o console da jukebox. O vedante de borracha faz uma fixação firme e pode ser removido sem deixar marcas. O corpo do PlotClock precisava de dois pequenos ângulos de alumínio para ajudar a encaixá-lo na placa de acrílico. A placa de acrílico é então encaixada na lista de ângulos com dois clipes acionados por mola, deixando a possibilidade de fazer ajustes finais vertical e horizontalmente.

Etapa 4: Blynk

Blynk
Blynk

Blynk é um aplicativo gratuito para controlar vários tipos de microcontroladores remotamente. Com o Blynk, você pode construir facilmente uma interface de usuário agradável usando vários tipos de widgets. Há apenas um widget necessário para este projeto: o widget Tabela.

Etapa 5: Software

Blynk App

Não há codificação no lado do aplicativo. A”conversa” entre o aplicativo (Blynk) e o microcontrolador (WeMos) é tratada por”pinos virtuais” que são essencialmente canais para enviar e receber informações entre os dois. O pino virtual é, por exemplo, usado para enviar o número da linha da música selecionada do aplicativo Blynk para o WeMos, e Wemos trata do resto, ou seja. envio de comandos para os servos Plotclock.

Código WeMos

/**************************************************************

Widget de mesa em V2 ********************************************** ***************** / #define BLYNK_PRINT Serial #include #include #include char auth = "--SEU CÓDIGO AUTÊNTICO--"; // Projeto Jukebox char ssid = "--SEU SSID--"; char pass = "--SUA SENHA WIFI--"; int c [50]; // Matriz para posições de registro Jukebox (100-299) Servo myservo1; // levantando Servo myservo2; // braço esquerdo Servo myservo3; // braço direito int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // pino D4, levanta myservo2.attach (14); // pino D5, esquerdo myservo3.attach (12); // pino D6, direito myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Notificar imediatamente na inicialização // String msg = "Jukebox WeMos conectado a:"; //Blynk.notify(msg + ssid); // limpar a tabela no início Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Recebe comandos do widget Tabela V2 {String cmd = param [0].asStr (); // param [0] = "selecionar" ou "desmarcar", param [1] = linha Serial.print ("\ nTabela: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); seleção int = c [param [1].asInt ()]; // O número da linha selecionada está em param [1] Serial.println ("\ nSelection:"); Serial.println (seleção); seleção_de_processo (seleção); } void populateTable () {int i = 0; Serial.println ("Preenchendo tabela…"); Blynk.virtualWrite (V2, "adicionar", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "adicionar", 1, "Número Um - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "adicionar", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "adicionar", 3, "No verão - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "adicionar", 4, "Black Cloud - Chubby Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "adicionar", 5, "Mamy Blue - Pop-Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "adicionar", 6, "Vai ficar tudo bem - Gerry e Pacemakers", 145); i ++; c = 145; Blynk.virtualWrite (V2, "adicionar", 7, "My Way - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "adicionar", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "adicionar", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

atraso (1000);

} void process_selection (int selection) {// analisa a seleção de 3 dígitos (por exemplo, 178) para 3 botões: int btn1 = int (selection / 100); // primeiro botão Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // o primeiro botão deve ser 1 ou 2 - caso contrário, faça o reset {push_button (btn1); seleção = seleção - (btn1 * 100); int btn2 = int (seleção / 10); // segundo botão Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); seleção = seleção - (btn2 * 10); int btn3 = int (seleção); // terceiro botão Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } else {push_button (11); // botão de redefinição} // redefine as posições do servo quando tudo estiver pronto delay (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// é chamado 3 vezes para cada seleção // o acionamento do botão real é feito após cada botão (encontre 'pressionamento do botão real') switch (btn) {caso 1: set_servo_angles (134, 136); // 1 pausa; caso 2: set_servo_angles (128, 110); // 2 break; caso 3: set_servo_angles (112, 88); // 3 break; caso 4: set_servo_angles (89, 68); // 4 break; caso 5: set_servo_angles (62, 55); // 5 break; caso 6: set_servo_angles (172, 131); // 6 break; caso 7: set_servo_angles (163, 106); // 7 break; caso 8: set_servo_angles (140, 83); // 8 break; caso 9: set_servo_angles (104, 58); // 9 break; caso 0: set_servo_angles (75, 36); // 0 break; caso 11: set_servo_angles (36, 30); // 11 break; } // fim da chave} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Posições do servo prontas - executa o pressionamento do botão real: delay (500); myservo1.write (60); // atraso para baixo (500); myservo1.write (140); // up delay (500); } void loop () {Blynk.run (); }

Etapa 6: etapas futuras

Widget de vídeo - transmissão de vídeo e áudio ao vivo para o aplicativo Blynk (já testado - funcionando)

Widget Webhook - download da lista de reprodução sob demanda da nuvem (já testado - funcionando)

Widget de tabela - algumas pequenas melhorias no widget são bem-vindas (sugestões enviadas aos desenvolvedores do Blynk)

Recomendado: