Inhaltsverzeichnis:

PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox - Gunook
PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox - Gunook

Video: PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox - Gunook

Video: PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox - Gunook
Video: Wemos und Temperatursensoren DHT11, DHT22, BME280 über EasyESP Teil4 2024, Juli
Anonim
PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox
PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox
PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox
PlotClock, WeMos und Blynk spielen Vintage AMI Jukebox

Vier technische Innovationen machten dieses Projekt möglich: Die Rowe AMI Jukebox von 1977, PlotClock Roboterarm-Kit, WeMos/ESP 8266 Mikrocontroller und Blynk App/Cloud Service.

HINWEIS: Wenn Sie die Jukebox nicht zur Hand haben – hören Sie nicht auf zu lesen! Dieses Projekt kann leicht übernommen werden, um verschiedene Dinge zu steuern, die von menschlichen Fingern gesteuert werden. Ein Beispiel könnte ein Roboterfinger sein, der traditionelles Xylophon spielt – vielleicht kommt das instructable von Ihnen!

Meine 40-jährige Rowe AMI R-81 Jukebox funktioniert immer noch gut und spielt Vintage-Vinyl-Singles aus den 60er, 70er und 80er Jahren. Mit über 160 kg (360 lbs) ist dieser Player zwar nicht ganz so portabel wie moderne MP-Player, aber lebend im Internetzeitalter ist es nun möglich, die Jukebox und 200 Schallplatten in der Hosentasche zu tragen – quasi natürlich! Und Sie können sogar Ihre eigenen Playlists verwenden, die im Mikrocontroller gespeichert sind!

Der Amazing PlotClock-Roboter wurde ursprünglich entwickelt, um die aktuelle Uhrzeit anzuzeigen, indem er Zeitziffern auf die löschbare Tafel zeichnet. Meine Anpassung für PlotClock besteht darin, es als Roboterfinger zum Drücken der Jukebox-Songauswahltasten zu verwenden.

Der Plotclock „Finger“wird von 3 Servos angetrieben, die vom WeMos-Mikrocontroller gesteuert werden. Dieses Wunderwerk ist (fast) Arduino Uno-kompatibel und verfügt über WiFi-Fähigkeiten, sodass es möglich ist, die Jukebox von überall auf der Welt drahtlos zu steuern.

Das Sahnehäubchen kommt von der unglaublich einfach zu bedienenden Blynk App und ihrem Blynk Cloud Server, die eine schöne Handy-/Tablet-Benutzeroberfläche mit voller Mobilität bieten.

Schritt 1: Hardware

Hardware
Hardware
Hardware
Hardware

Jukebox

Projekt-Jukebox ist 1977 Rowe AMI R-81. Jede alte Jukebox mit Auswahlknöpfen reicht aus – wobei einige Einschränkungen durch PlotClock zu beachten sind: Das ursprüngliche Armdesign von PlotClock kann eine Fläche von etwa 5 x 12 cm abdecken, daher muss das Layout der Jukebox-Schaltflächen (Bereich einschließlich aller Auswahlknöpfe) ungefähr diese Größe haben. Die Tasten älterer Jukeboxen benötigen möglicherweise mehr Schubkraft als PlotClock-Servos bieten können.

Der AMI R-81 verfügt über einen Speicher, in dem alle 200 Auswahlen gespeichert werden können. Auswahlen werden in der Reihenfolge abgespielt, in der sie im Plattenmagazin (Karusselltyp) gespeichert sind, nicht in der Reihenfolge, in der sie ausgewählt wurden. Mehrfachauswahlen für einen Datensatz werden nur einmal abgespielt.

PlotClock

Plotclock ist ein im Handel erhältlicher Bausatz mit mechanischen Teilen, 3 Servos, Arduino Uno R3, Arduino-Erweiterungsplatine und USB-Kabel. Für rund 30 USD ist dies ein guter Kauf (zB Banggood.com). Arduino, Erweiterungsplatine und USB-Kabel werden für dieses Projekt nicht verwendet.

Es gibt mehrere gute Internet-/YouTube-Tutorials zum Komponieren der Plotclock – z. das: PlotClock-Anleitung

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

WeMos

WeMos D1 R2 ist ein ESP8266-basierter Mikrocontroller. Es kann mit Arduino IDE programmiert werden und verfügt über WiFi-Funktionen, sodass es eine perfekte Hardware für dieses Projekt ist.

Schritt 2: Kalibrierung

Kalibrierung
Kalibrierung

Die Kalibrierung ist die Aufgabe, genaue Winkelwerte für Servowinkel (zwischen 0 und 180 Grad) zu finden, um den physischen Positionen der Auswahltasten zu entsprechen. Winkelwerte können durch Trigonometrie-Arithemitik oder unter Verwendung einer CAD-Software ermittelt werden. Ich habe ungefähre Werte von meinem Freund bekommen, der sich mit AutoCad auskannte.

Die endgültige Kalibrierung musste jedoch durch Versuch und Irrtum erfolgen. Verwenden des auf dem Blatt Papier gezeichneten Tastenlayouts Es ist möglich, den „Desktop-Test“durchzuführen, um die richtigen Winkelwerte zu finden.

Schritt 3: Montage

Montage
Montage
Montage
Montage
Montage
Montage
Montage
Montage

Verdrahtung

Die Verbindung von Plotclock-Servos zu Wemos erfolgt mit 5 Drähten: +5, GND, D4, D5 und D6. Siehe Details in Bildern und Code.

Installation auf der Jukebox

An der 40 Jahre alten Jukebox, die so lange ohne größere Schäden überlebt hatte, wollte ich keine Schraubenlöcher machen. Mit weichem Gummidichtmittel habe ich ein Stück Aluminiumwinkelliste unter der Jukebox-Konsole befestigt. Gummidichtung sorgt für festen Halt und kann entfernt werden, ohne Spuren zu hinterlassen. Der PlotClock-Körper benötigte zwei kleine Aluminiumwinkel, um das Anbringen an der Acrylplatte zu erleichtern. Die Acrylplatte wird dann mit zwei federbelasteten Clips an der Winkelliste befestigt, so dass die letzten Einstellungen vertikal und horizontal vorgenommen werden können.

Schritt 4: Blynk

Blink
Blink

Blynk ist eine kostenlose App zur Fernsteuerung verschiedener Arten von Mikrocontrollern. Mit Blynk können Sie ganz einfach eine schöne Benutzeroberfläche mit verschiedenen Arten von Widgets erstellen. Für dieses Projekt wird nur ein Widget benötigt: das Tabellen-Widget.

Schritt 5: Software

Blynk-App

Es gibt keine Codierung auf der App-Seite. Die „Konversation“zwischen der App (Blynk) und dem Mikrocontroller (WeMos) wird über „virtuelle Pins“abgewickelt, die im Wesentlichen Kanäle zum Senden und Empfangen von Informationen zwischen diesen beiden sind. Der virtuelle Pin wird beispielsweise verwendet, um die Zeilennummer des ausgewählten Songs von der Blynk-App an WeMos zu senden, und Wemos erledigt den Rest, dh. Senden von Befehlen an die Plotclock-Servos.

WeMos-Code

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

Tabellen-Widget bei V2 ********************************************* ****************/ #define BLYNK_PRINT Seriennummer #include #include #include char auth = "--IHR AUTH-CODE--"; //Jukebox-Projekt char ssid = "--IHRE SSID--"; char pass = "--IHR WIFI-PASSWORT--"; intc[50]; // Array für Jukebox-Aufzeichnungspositionen (100-299) Servo myservo1; // Servo myservo 2 anheben; // linker Arm Servo myservo3; // rechter Arm int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn=0; Void setup () { myservo1.attach (2); // Pin D4, myservo2.attach (14) anheben; // Pin D5, links myservo3.attach (12); // Pin D6, rechts myservo1.write (140); myservo2.write(90); myservo3.write(90); Serial.begin(115200); Blynk.begin(auth, ssid, pass); // Beim Start sofort benachrichtigen //String msg = "Jukebox WeMos verbunden mit: "; //Blynk.notify(msg + ssid); //Tabelle beim Start löschen Blynk.virtualWrite(V2, "clr"); populateTable(); } BLYNK_WRITE(V2) //Befehle vom Tabellen-Widget V2 empfangen { String cmd = param[0].asStr(); //param[0]="select" oder "deselect", param[1]=row Serial.print("\nTable: BLYNK_WRITE(V2) cmd:"); Serial.print (cmd); int-Auswahl = c[param[1].asInt()]; // Die ausgewählte Zeilennummer ist in param [1] Serial.println ("\nSelection: "); Serial.println (Auswahl); process_selection(Auswahl); aufrechtzuerhalten. Void populateTable () {int i = 0; Serial.println("Bevölkerungstabelle…"); Blynk.virtualWrite(V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite(V2, "hinzufügen", 1, "Nummer Eins - Jerry Williams", 176); i++; c = 176; Blynk.virtualWrite(V2, "add", 2, "All My Loving - The Beatles", 184); i++; c = 184; Blynk.virtualWrite(V2, "add", 3, "In the Summertime - Mungo Jerry", 236); i++; c = 236; Blynk.virtualWrite(V2, "add", 4, "Black Cloud - Chubby Checker", 155); i++; c = 155; Blynk.virtualWrite(V2, "add", 5, "Mamy Blue - Pop-Tops", 260); i++; c = 260; Blynk.virtualWrite(V2, "add", 6, "It's Gonna Be Alright - Gerry & Pacemakers", 145); i++; c = 145; Blynk.virtualWrite(V2, "add", 7, "My Way - Tom Jones", 193); i++; c = 193; Blynk.virtualWrite(V2, "hinzufügen", 8, "San Bernadino - Christie", 149); i++; c = 149; Blynk.virtualWrite(V2, "add", 9, "The Twist - Chubby Checker", 169); i++; c = 169;

Verzögerung (1000);

aufrechtzuerhalten. Void process_selection (int selection) {// Analyse der 3-stelligen Auswahl (zB 178) auf 3 Schaltflächen: int btn1 = int (selection/100); // erste Schaltfläche Serial.println ("\nBtn1: "); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) //erste Taste muss 1 oder 2 sein - sonst mache den Reset { push_button(btn1); Auswahl = Auswahl - (btn1 * 100); int btn2 = int(Auswahl/10); // zweite Taste Serial.println("\nBtn2:"); Serial.println (btn2); push_button (btn2); Auswahl = Auswahl - (btn2 * 10); int btn3 = int(Auswahl); // dritte Taste Serial.println("\nBtn3:"); Serial.println (btn3); push_button (btn3); aufrechtzuerhalten. Sonst { push_button (11); // Reset-Taste} // Servo-Positionen zurücksetzen, wenn alle Verzögerungen (2000); myservo1.write(140); myservo2.write(90); myservo3.write(90);} void push_button(int btn) {//wird dreimal für jede Auswahl aufgerufen //der tatsächliche Tastendruck erfolgt nach jedem Tastendruck (finde 'tatsächlicher Tastendruck') Schalter (btn) { Fall 1: set_servo_angles (134, 136); // Pause; Fall 2: set_servo_angles (128, 110); // Pause; Fall 3: set_servo_angles (112, 88); // Pause; Fall 4: set_servo_angles (89, 68); // Pause; Fall 5: set_servo_angles (62, 55); // brechen; Fall 6: set_servo_angles (172, 131); // Pause; Fall 7: set_servo_angles (163, 106); // Pause; Fall 8: set_servo_angles (140, 83); // Pause; Fall 9: set_servo_angles (104, 58); //9 Pause; Fall 0: set_servo_angles (75, 36); //0 Pause; Fall 11: set_servo_angles (36, 30); //11 Pause; } //Endschalter} Void set_servo_angles (int pos2, int pos3) { myservo2.write (pos2); myservo3.write (pos3); // Servopositionen bereit - Führen Sie den tatsächlichen Tastendruck durch: delay (500); myservo1.write(60); // Down-Verzögerung (500); myservo1.write(140); // Aufwärtsverzögerung (500); aufrechtzuerhalten. Void Schleife () { Blynk.run (); }

Schritt 6: Zukünftige Schritte

Video-Widget - Live-Video- und Audiostream zur Blynk-App (bereits getestet - funktioniert)

Webhook-Widget - Playlist On-Demand-Download aus der Cloud (bereits getestet - funktioniert)

Tabellen-Widget - einige kleine Verbesserungen am Widget sind willkommen (Vorschläge an Blynk-Entwickler gesendet)

Empfohlen: