Table des matières:
- Étape 1: Matériel
- Étape 2: Étalonnage
- Étape 3: Assemblage
- Étape 4: Blynk
- Étape 5: Logiciel
- Étape 6: Étapes futures
Vidéo: PlotClock, WeMos et Blynk jouant au Vintage AMI Jukebox : 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Quatre innovations techniques ont rendu ce projet possible: le Rowe AMI Jukebox 1977, le kit de bras robotisé PlotClock, le microcontrôleur WeMos/ESP 8266 et le service Blynk App/Cloud.
REMARQUE: si vous n'avez pas le Jukebox à portée de main, n'arrêtez pas de lire ! Ce projet peut facilement être adopté pour contrôler diverses choses contrôlées par des doigts humains. Un exemple pourrait être un doigt de robot jouant du xylophone traditionnel - peut-être que cette instructable vient de vous !
Mon jukebox Rowe AMI R-81, âgé de 40 ans, fonctionne toujours très bien en jouant des singles vinyles vintage des années 60, 70 et 80. Pesant plus de 160 kg (360 lb), ce lecteur n'est pas aussi portable que les lecteurs MP modernes, mais vivant à l'ère d'Internet, il est désormais possible de transporter le jukebox et 200 disques vinyles dans votre poche - pratiquement bien sûr ! Et vous pouvez même utiliser vos propres listes de lecture stockées dans le microcontrôleur !
Le robot Amazing PlotClock est conçu à l'origine pour afficher l'heure actuelle en dessinant les chiffres de l'heure sur le tableau effaçable. Mon adaptation pour PlotClock est de l'utiliser comme un doigt de robot pour appuyer sur les boutons de sélection de chanson du Jukebox.
Le « doigt » Plotclock est piloté par 3 servos contrôlés par le microcontrôleur WeMos. Cette merveille est (presque) compatible Arduino Uno et possède des capacités WiFi, il est donc possible de contrôler le jukebox sans fil depuis n'importe où dans le monde.
La crème sur le gâteau vient de l'incroyable application Blynk facile à utiliser et de leur serveur Blynk Cloud offrant une interface utilisateur agréable pour téléphone portable/tablette avec une mobilité totale.
Étape 1: Matériel
Juke-box
Le juke-box du projet est le Rowe AMI R-81 de 1977. N'importe quel ancien juke-box avec des boutons de sélection fera l'affaire - en tenant compte de quelques limitations de PlotClock: la conception originale des bras de PlotClock peut couvrir une surface d'environ 5 x 12 cm, donc la disposition des boutons du juke-box (zone comprenant tous les boutons de sélection) doit être à peu près de cette taille. Les boutons des jukebox plus anciens peuvent nécessiter plus de puissance de poussée que les servos PlotClock ne peuvent en fournir.
AMI R-81 a une mémoire où il peut stocker les 200 sélections. Les sélections sont jouées en fonction de l'ordre dans lequel elles sont stockées dans le magasin de disques (type carrousel), et non de l'ordre dans lequel elles sont sélectionnées. Les sélections multiples pour un enregistrement ne sont jouées qu'une seule fois.
PlotHorloge
Plotclock est un kit de bricolage disponible dans le commerce comprenant des pièces mécaniques, 3 servos, Arduino Uno R3, une carte d'extension Arduino et un câble USB. Pour environ 30 USD, c'est un bon achat (par exemple, Banggood.com). Arduino, la carte d'extension et le câble USB ne sont pas utilisés pour ce projet.
Il existe plusieurs bons tutoriels Internet/YouTube pour composer le Plotclock – par exemple. ceci: instructions PlotClock
static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf
WeMos
WeMos D1 R2 est un microcontrôleur basé sur ESP8266. Il peut être programmé à l'aide d'Arduino IDE et possède des capacités WiFi, c'est donc un matériel parfait pour ce projet.
Étape 2: Étalonnage
L'étalonnage est la tâche de trouver des valeurs d'angle précises pour les angles d'asservissement (entre 0 et 180 degrés) pour correspondre aux positions physiques des boutons de sélection. Les valeurs d'angle peuvent être trouvées par arithmétique trigonométrique ou à l'aide d'un logiciel de CAO. J'ai obtenu des valeurs approximatives de mon ami qui savait utiliser AutoCad.
Cependant, l'étalonnage final a dû être effectué par essais et erreurs. Utilisation de la disposition des boutons dessinée sur le morceau de papier Il est possible de faire le « test de bureau » pour trouver les valeurs d'angle correctes.
Étape 3: Assemblage
Câblage
La connexion des servos Plotclock à Wemos se fait avec 5 fils: +5, GND, D4, D5 et D6. Voir les détails dans les images et le code.
Installation sur le Jukebox
Je ne voulais pas faire de trous de vis sur le jukebox vieux de 40 ans qui avait si longtemps survécu sans dommages majeurs. À l'aide d'un mastic en caoutchouc souple, j'ai fixé un morceau de liste d'angle en aluminium sous la console du jukebox. Le mastic en caoutchouc permet une tenue serrée et peut être retiré sans laisser de traces. Le corps de la PlotClock avait besoin de deux petits angles en aluminium pour faciliter son montage sur la plaque acrylique. La plaque acrylique est ensuite fixée à la liste d'angles avec deux clips à ressort laissant la possibilité de faire les derniers ajustements verticalement et horizontalement.
Étape 4: Blynk
Blynk est une application gratuite permettant de contrôler à distance plusieurs types de microcontrôleurs. Avec Blynk, vous pouvez facilement créer une interface utilisateur agréable en utilisant plusieurs types de widgets. Il n'y a qu'un seul widget nécessaire pour ce projet: le widget Table.
Étape 5: Logiciel
Application Blynk
Il n'y a pas de codage du côté de l'application. La « conversation » entre l'application (Blynk) et le microcontrôleur (WeMos) est gérée par des « broches virtuelles » qui sont essentiellement des canaux pour envoyer et recevoir des informations entre ces deux. La broche virtuelle est par exemple utilisée pour envoyer le numéro de ligne de la chanson sélectionnée de l'application Blynk à WeMos, et Wemos gère le reste, c'est-à-dire. envoyer des commandes aux servos Plotclock.
Code WeMos
/**************************************************************
Widget de table à V2 ************************************************** ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "--YOUR AUTH CODE--"; //Jukebox project char ssid = "--YOUR SSID--"; char pass = "--VOTRE MOT DE PASSE WIFI--"; entier c[50]; //Tableau pour les positions d'enregistrement du Jukebox (100-299) Servo myservo1; //levage Servo myservo2; //bras gauche Servo myservo3; //bras droit int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn=0; void setup() { myservo1.attach(2); // broche D4, soulevez myservo2.attach(14); // broche D5, gauche myservo3.attach(12); // broche D6, à droite myservo1.write(140); monservo2.write(90); monservo3.write(90); Serial.begin(115200); Blynk.begin(auth, ssid, pass); // Notifier immédiatement au démarrage //String msg = "Jukebox WeMos connecté à: "; //Blynk.notify(msg + ssid); //effacer la table au démarrage Blynk.virtualWrite(V2, "clr"); remplirTable(); } BLYNK_WRITE(V2) //Recevoir les commandes du widget Table V2 { String cmd = param[0].asStr(); //param[0]="select" ou "deselect", param[1]=row Serial.print("\nTable: BLYNK_WRITE(V2) cmd: "); Serial.print(cmd); int selection = c[param[1].asInt()]; //Le numéro de ligne sélectionné est dans le param[1] Serial.println("\nSelection: "); Serial.println(sélection); process_selection(sélection); } void populateTable() { int i = 0; Serial.println("Remplissage de la table…"); Blynk.virtualWrite(V2, "ajouter", 0, "Soyez mon bébé - Les Suprêmes", 112); c = 112; Blynk.virtualWrite(V2, "ajouter", 1, "Numéro un - Jerry Williams", 176); je++; c = 176; Blynk.virtualWrite(V2, "ajouter", 2, "All My Loving - The Beatles", 184); je++; c = 184; Blynk.virtualWrite(V2, "ajouter", 3, "En été - Mungo Jerry", 236); je++; c = 236; Blynk.virtualWrite(V2, "ajouter", 4, "Black Cloud - Chubby Checker", 155); je++; c = 155; Blynk.virtualWrite(V2, "ajouter", 5, "Mamy Blue - Pop-Tops", 260); je++; c = 260; Blynk.virtualWrite(V2, "ajouter", 6, "Tout va bien se passer - Gerry & Pacemakers", 145); je++; c = 145; Blynk.virtualWrite(V2, "ajouter", 7, "My Way - Tom Jones", 193); je++; c = 193; Blynk.virtualWrite(V2, "ajouter", 8, "San Bernadino - Christie", 149); je++; c = 149; Blynk.virtualWrite(V2, "ajouter", 9, "The Twist - Chubby Checker", 169); je++; c = 169;
retard(1000);
} void process_selection (int selection) { // analyse la sélection à 3 chiffres (par exemple 178) vers 3 boutons: int btn1 = int(selection/100); //premier bouton Serial.println("\nBtn1: "); Serial.println(btn1); if (btn1 == 1 || btn1 == 2) //le premier bouton doit être 1 ou 2 - sinon faire la réinitialisation { push_button(btn1); sélection = sélection - (btn1 * 100); int btn2 = int(sélection/10); //deuxième bouton Serial.println("\nBtn2: "); Serial.println(btn2); push_button(btn2); sélection = sélection - (btn2 * 10); int btn3 = int(sélection); //troisième bouton Serial.println("\nBtn3: "); Serial.println(btn3); push_button(btn3); } else { push_button(11); //bouton de réinitialisation } //réinitialiser les positions des servos lorsque tout est terminé delay(2000); monservo1.write(140); monservo2.write(90); myservo3.write(90);} void push_button(int btn) { //cela est appelé 3 fois pour chaque sélection //une pression réelle sur le bouton est effectuée après chaque bouton (trouver « poussée réelle sur le bouton ») switch (btn) { case 1: set_servo_angles (134, 136); // pause; cas 2: set_servo_angles (128, 110); // pause; cas 3: set_servo_angles (112, 88); ///3 pause; cas 4: set_servo_angles (89, 68); // pause; cas 5: set_servo_angles (62, 55); ///5 pause; cas 6: set_servo_angles (172, 131); ///6 pause; cas 7: set_servo_angles (163, 106); //7 pause; cas 8: set_servo_angles (140, 83); //8 pause; cas 9: set_servo_angles (104, 58); //9 pause; cas 0: set_servo_angles (75, 36); // pause; cas 11: set_servo_angles (36, 30); //11 pause; } //fin de commutateur } void set_servo_angles(int pos2, int pos3) { myservo2.write(pos2); monservo3.write(pos3); //Positions des servos prêtes - exécute la pression réelle sur le bouton: delay(500); monservo1.write(60); //délai d'arrêt (500); monservo1.write(140); //délai de montée (500); } boucle vide() { Blynk.run(); }
Étape 6: Étapes futures
Widget vidéo - flux vidéo et audio en direct vers l'application Blynk (déjà testé - fonctionne)
Widget Webhook - téléchargement à la demande de la liste de lecture à partir du cloud (déjà testé - fonctionnel)
Widget de table - quelques petites améliorations du widget sont les bienvenues (suggestions envoyées aux développeurs Blynk)
Conseillé:
Tchaibotsky (un robot jouant du piano) : 12 étapes (avec photos)
Tchaibotsky (un robot jouant du piano): Cette instructable a été créée pour répondre aux exigences du projet Makecourse à l'Université de Floride du Sud (www.makecourse.com) Tchaibotsky est un robot jouant du piano alimenté par Arduino. La motivation était de construire quelque chose qui pourrait
Utiliser des LEDS et AT Tiny pour créer une étoile clignotante avec Piezo jouant " Twinkle, Twinkle, Little Star": 6 étapes
Utilisation de LEDS et AT Tiny pour créer une étoile clignotante avec Piezo jouant " Twinkle, Twinkle, Little Star" : Veuillez voir l'étape suivante pour l'aperçu du circuit et
Piano Tiles jouant au bras de robot : 5 étapes
Piano Tiles Playing Robot Arm : Le groupe est composé de 2 ingénieurs en automatisation de l'UCN, qui ont eu une idée brillante que nous sommes motivés à faire et à développer. L'idée est basée sur une carte Arduino contrôlant un bras robotique. La carte Arduino est le cerveau de l'opération et
Pong jouant à l'écran flexible sur une chemise : 8 étapes (avec photos)
Pong jouant un écran flexible sur une chemise : c'est mon costume d'Halloween pour l'année 2013. Il est en préparation depuis environ un an et sa création a pris pas mal d'heures de travail. L'écran fait 14 x 15 pixels, donc une résolution assez faible, mais il peut quand même faire des choses amusantes. C'est physiquement fle
Comment faire un robot jouant de la guitare RockBand ! : 15 étapes (avec photos)
Comment faire un robot jouant de la guitare RockBand ! peut-être que j'ai besoin de plus d'amis, mais de ma vie apparemment solitaire (jk) vient un intraitable assez cool. J'ai la conception