Tabla de contenido:
- Paso 1: hardware
- Paso 2: Calibración
- Paso 3: Montaje
- Paso 4: Blynk
- Paso 5: software
- Paso 6: Pasos futuros
Video: PlotClock, WeMos y Blynk tocando Vintage AMI Jukebox: 6 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Cuatro innovaciones técnicas hicieron posible este proyecto: el Rowe AMI Jukebox 1977, el kit de brazo robótico PlotClock, el microcontrolador WeMos / ESP 8266 y el servicio Blynk App / Cloud.
NOTA: Si no tiene el Jukebox a mano, ¡no deje de leer! Este proyecto se puede adoptar fácilmente para controlar varias cosas controladas por dedos humanos. Un ejemplo podría ser un dedo de robot tocando un xilófono tradicional, ¡tal vez ese instructivo proviene de usted!
Mi Jukebox Rowe AMI R-81 de 40 años todavía funciona bien tocando sencillos de vinilo vintage de los años 60, 70 y 80. Con un peso de más de 160 kg (360 lbs), este reproductor no es tan portátil como los reproductores mp modernos, pero viviendo en la era de Internet, ahora es posible llevar la máquina de discos y 200 discos de vinilo en el bolsillo, ¡prácticamente por supuesto! ¡E incluso puede usar sus propias listas de reproducción almacenadas en el microcontrolador!
El increíble robot PlotClock está diseñado originalmente para mostrar la hora actual dibujando dígitos de tiempo en el tablero borrable. Mi adaptación para PlotClock es usarlo como un dedo de robot para presionar los botones de selección de canciones de Jukebox.
El "dedo" de Plotclock es impulsado por 3 servos controlados por el microcontrolador WeMos. Esta maravilla es (casi) compatible con Arduino Uno y tiene capacidad WiFi, por lo que es posible controlar la máquina de discos de forma inalámbrica desde cualquier parte del mundo.
La crema del pastel proviene de la aplicación Blynk increíblemente fácil de usar y su servidor en la nube Blynk que brinda una interfaz de usuario de teléfono móvil / tableta agradable con total movilidad.
Paso 1: hardware
Tocadiscos tragamonedas
El proyecto de máquina de discos es el Rowe AMI R-81 de 1977. Cualquier máquina de discos antigua con botones de selección servirá, teniendo en cuenta algunas limitaciones de PlotClock: el diseño original de los brazos de PlotClock puede cubrir un área de aproximadamente 5 x 12 cm, por lo que el diseño de los botones de la máquina de discos (el área que incluye todos los botones de selección) debe ser de ese tamaño. Los botones de las máquinas de discos más antiguos pueden necesitar más potencia de empuje que la que pueden proporcionar los servos PlotClock.
AMI R-81 tiene una memoria donde puede almacenar las 200 selecciones. Las selecciones se reproducen en función del orden en que se almacenan en el cargador de discos (tipo carrusel), no en el orden en que se seleccionan. Las selecciones múltiples para un registro se reproducen solo una vez.
PlotClock
Plotclock es un kit de bricolaje disponible comercialmente que incluye piezas mecánicas, 3 servos, Arduino Uno R3, placa de extensión Arduino y cable USB. Por alrededor de 30 USD, esta es una buena compra (por ejemplo, Banggood.com). Arduino, placa de extensión y cable USB no se utilizan para este proyecto.
Hay varios buenos tutoriales de Internet / YouTube para componer Plotclock, por ejemplo. esto: PlotClock instrucciones
static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf
WeMos
WeMos D1 R2 es un microcontrolador basado en ESP8266. Se puede programar usando Arduino IDE y tiene capacidades WiFi, por lo que es una pieza de hardware perfecta para este proyecto.
Paso 2: Calibración
La calibración es la tarea para encontrar valores de ángulo precisos para ángulos de servo (entre 0 y 180 grados) para que correspondan con las posiciones físicas de los botones de selección. Los valores de los ángulos se pueden encontrar mediante arithemitics de trigonometría o utilizando un software CAD. Obtuve valores aproximados de mi amigo que sabía cómo usar AutoCad.
Sin embargo, la calibración final tuvo que realizarse mediante prueba y error. Usando el diseño de los botones dibujado en la hoja de papel Es posible hacer la "prueba de escritorio" para encontrar los valores de ángulo correctos.
Paso 3: Montaje
Alambrado
La conexión de los servos Plotclock a Wemos se realiza con 5 cables: +5, GND, D4, D5 y D6. Ver detalles en imágenes y código.
Instalación en el Jukebox
No quería hacer agujeros para tornillos en la máquina de discos de 40 años que había sobrevivido durante tanto tiempo sin daños importantes. Usando sellador de goma suave, fijé un trozo de aluminio en ángulo bajo la consola de la máquina de discos. El sellador de goma permite una sujeción firme y se puede quitar sin dejar marcas. El cuerpo de PlotClock necesitaba dos pequeños ángulos de aluminio para ayudar a colocarlo en la placa acrílica. Luego, la placa acrílica se ajusta a la lista de ángulos con dos clips cargados por resorte, lo que deja la posibilidad de realizar ajustes finales vertical y horizontalmente.
Paso 4: Blynk
Blynk es una aplicación gratuita para controlar varios tipos de microcontroladores de forma remota. Con Blynk, puede crear fácilmente una interfaz de usuario agradable utilizando varios tipos de widgets. Solo se necesita un widget para este proyecto: el widget Table.
Paso 5: software
Aplicación Blynk
No hay codificación en el lado de la aplicación. La "conversación" entre la aplicación (Blynk) y el microcontrolador (WeMos) se maneja mediante "pines virtuales", que esencialmente son canales para enviar y recibir información entre esos dos. El pin virtual se usa, por ejemplo, para enviar el número de fila de la canción seleccionada desde la aplicación Blynk a WeMos, y Wemos se encarga del resto, es decir. enviando comandos a los servos Plotclock.
Código WeMos
/**************************************************************
Widget de tabla en V2 ******************************************* **************** / #define BLYNK_PRINT Serial #include #include #include char auth = "--YOUR AUTH CODE--"; // Proyecto de Jukebox char ssid = "--SU SSID--"; char pass = "--SU CONTRASEÑA WIFI--"; int c [50]; // Matriz para posiciones de registro de Jukebox (100-299) Servo myservo1; // levantando Servo myservo2; // brazo izquierdo Servo myservo3; // brazo derecho int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; configuración vacía () {myservo1.attach (2); // pin D4, levante myservo2.attach (14); // pin D5, izquierda myservo3.attach (12); // pin D6, derecho myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Notificar inmediatamente al inicio // String msg = "Jukebox WeMos conectado a:"; //Blynk.notify(msg + ssid); // limpiar la tabla al inicio Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Recibir comandos del widget de tabla V2 {String cmd = param [0].asStr (); // param [0] = "seleccionar" o "deseleccionar", param [1] = fila Serial.print ("\ nTable: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selección = c [param [1].asInt ()]; // El número de fila seleccionado está en param [1] Serial.println ("\ nSelection:"); Serial.println (selección); process_selection (selección); } void populateTable () {int i = 0; Serial.println ("Completando tabla …"); Blynk.virtualWrite (V2, "agregar", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "agregar", 1, "Número uno - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "agregar", 2, "Todo mi amor - Los Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "agregar", 3, "En el verano - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "agregar", 4, "Nube negra - Comprobador gordito", 155); i ++; c = 155; Blynk.virtualWrite (V2, "agregar", 5, "Mamy Blue - Pop-Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "agregar", 6, "Todo va a estar bien - Gerry y marcapasos", 145); i ++; c = 145; Blynk.virtualWrite (V2, "agregar", 7, "My Way - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "agregar", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "agregar", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;
retraso (1000);
} void process_selection (int selection) {// analizar la selección de 3 dígitos (por ejemplo, 178) a 3 botones: int btn1 = int (selección / 100); // primer botón Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // el primer botón debe ser 1 o 2; de lo contrario, reinicie {push_button (btn1); selección = selección - (btn1 * 100); int btn2 = int (selección / 10); // segundo botón Serial.println ("\ nBtn2:"); Serial.println (btn2); pulsador (btn2); selección = selección - (btn2 * 10); int btn3 = int (selección); // tercer botón Serial.println ("\ nBtn3:"); Serial.println (btn3); pulsador (btn3); } else {pulsador_botón (11); // botón de reinicio} // reinicia las posiciones de los servos cuando todo está hecho delay (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// esto se llama 3 veces para cada selección // la presión real del botón se realiza después de cada botón (busque 'real button push') switch (btn) {caso 1: set_servo_angles (134, 136); // 1 descanso; caso 2: set_servo_angles (128, 110); // 2 descanso; caso 3: set_servo_angles (112, 88); // 3 descanso; caso 4: set_servo_angles (89, 68); // 4 descanso; caso 5: set_servo_angles (62, 55); // 5 descanso; caso 6: set_servo_angles (172, 131); // 6 descanso; caso 7: set_servo_angles (163, 106); // 7 descanso; caso 8: set_servo_angles (140, 83); // 8 descanso; caso 9: set_servo_angles (104, 58); // 9 descanso; caso 0: set_servo_angles (75, 36); // 0 descanso; caso 11: set_servo_angles (36, 30); // 11 descanso; } // fin del interruptor} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Posiciones de servo listas - realice la pulsación del botón actual: delay (500); myservo1.write (60); // retraso de bajada (500); myservo1.write (140); // retraso de subida (500); } bucle vacío () {Blynk.run (); }
Paso 6: Pasos futuros
Widget de video: transmisión de video y audio en vivo a la aplicación Blynk (ya probado, en funcionamiento)
Widget de webhook: descarga de listas de reproducción a pedido desde la nube (ya probado, en funcionamiento)
Widget de tabla: se agradecen algunas pequeñas mejoras en el widget (se envían sugerencias a los desarrolladores de Blynk)
Recomendado:
Haga que los ciegos reconozcan las cosas tocando las cosas a su alrededor con MakeyMakey: 3 pasos
Haga que los ciegos reconozcan las cosas tocando las cosas a su alrededor con MakeyMakey: introducción Este proyecto tiene como objetivo facilitar la vida de los ciegos al identificar las cosas que los rodean a través del sentido del tacto. Mi hijo Mustafa y yo pensamos en encontrar una herramienta para ayudarlos y en el período en que usamos el hardware MakeyMakey t
Robot controlado por Wi-Fi usando Wemos D1 ESP8266, Arduino IDE y la aplicación Blynk: 11 pasos (con imágenes)
Robot controlado por Wi-Fi usando Wemos D1 ESP8266, Arduino IDE y la aplicación Blynk: en este tutorial le muestro cómo hacer un tanque robótico controlado por Wi-Fi controlado desde un teléfono inteligente usando la aplicación Blynk. En este proyecto se utilizó una placa ESP8266 Wemos D1, pero también se pueden utilizar otros modelos de placa (NodeMCU, Firebeetle, etc.), y el pr
Piano Tiles tocando el brazo robótico: 5 pasos
Piano Tiles Playing Robot Arm: El grupo está formado por 2 Ingenieros en Automatización de la UCN, a quienes se les ocurrió una brillante idea que nos motiva hacer y desarrollar. La idea se basa en una placa Arduino que controla un brazo robótico. La placa Arduino es el cerebro de la operación y
Enviar temperatura y humedad a la aplicación Blynk (Wemos D1 Mini Pro): 15 pasos (con imágenes)
Enviar temperatura y humedad a la aplicación Blynk (Wemos D1 Mini Pro): este Instructable analiza el uso del Wemos D1 Mini Pro para enviar datos (temperatura y humedad) a la aplicación Blynk
Detector de movimiento con notificaciones Blynk (WeMos D1 Mini + HC-SR04): 4 pasos (con imágenes)
Detector de movimiento con notificaciones Blynk (WeMos D1 Mini + HC-SR04): VOTE por este proyecto en el Concurso inalámbrico. ¡Gracias! Actualización n. ° 2: pocos ajustes (versión 2.2), puede configurar su sensor (rango y nombre) directamente en la definición. Además, a veces sucedió que el sensor leyó valores incorrectos y envió una notificación