Indholdsfortegnelse:

PlotClock, WeMos og Blynk spiller vintage AMI Jukebox: 6 trin (med billeder)
PlotClock, WeMos og Blynk spiller vintage AMI Jukebox: 6 trin (med billeder)

Video: PlotClock, WeMos og Blynk spiller vintage AMI Jukebox: 6 trin (med billeder)

Video: PlotClock, WeMos og Blynk spiller vintage AMI Jukebox: 6 trin (med billeder)
Video: Blynk Slider control intensity of LED & Display value on Gauge. 2024, November
Anonim
PlotClock, WeMos og Blynk spiller vintage AMI Jukebox
PlotClock, WeMos og Blynk spiller vintage AMI Jukebox
PlotClock, WeMos og Blynk spiller vintage AMI Jukebox
PlotClock, WeMos og Blynk spiller vintage AMI Jukebox

Fire tekniske innovationer gjorde dette projekt muligt: 1977 Rowe AMI Jukebox, PlotClock robotarmkit, WeMos/ESP 8266 mikrokontroller og Blynk App/Cloud service.

BEMÆRK: Hvis du ikke har Jukebox ved hånden - stop ikke med at læse! Dette projekt kan let vedtages for at styre forskellige ting, der styres af menneskelige fingre. Et eksempel kan være en robotfinger, der spiller traditionel xylofon - måske kommer det instruerbare fra dig!

Min 40 år gamle Rowe AMI R-81 Jukebox arbejder stadig fint med at spille vintage vinylsingler fra 60’erne, 70’erne og 80’erne. Denne afspiller vejer over 160 kg (360 lbs) og er ikke helt så bærbar som moderne mp-afspillere, men når man lever på internettiden, er det nu muligt at have jukebox og 200 vinylplader med i lommen-stort set selvfølgelig! Og du kan endda bruge dine egne afspilningslister gemt i mikrokontrolleren!

Amazing PlotClock -robotten er oprindeligt designet til at vise den aktuelle tid ved at tegne tidcifre på det sletbare bord. Min tilpasning til PlotClock er at bruge den som en robotfinger til at trykke på Jukebox -sangvalgsknapper.

Plotclock”fingeren” drives af 3 servoer styret af WeMos mikrokontroller. Dette vidunder er (næsten) Arduino Uno -kompatibelt og har WiFi -funktioner, så det er muligt at styre jukeboxen trådløst overalt i verden.

Cremen på kagen kommer fra den utroligt brugervenlige Blynk -app og deres Blynk Cloud Server, der giver en dejlig brugergrænseflade til mobiltelefon/tablet med fuld mobilitet.

Trin 1: Hardware

Hardware
Hardware
Hardware
Hardware

Jukebox

Projekt jukebox er Rowe AMI R-81 fra 1977. Enhver gammel jukeboks med markeringsknapper vil gøre - idet der bemærkes få begrænsninger ved PlotClock: PlotClocks originale armedesign kan dække et område omkring 5 x 12 cm, så jukebox -knappens layout (område inklusive alle markeringsknapper) skal være omtrent den størrelse. Knapperne på ældre jukebokse kan have brug for mere skubbeeffekt, end PlotClock -servoer kan levere.

AMI R-81 har en hukommelse, hvor den kan gemme alle 200 valg. Valg afspilles baseret på den rækkefølge, de er gemt i plademagasinet (karruseltype), ikke på den rækkefølge, de er valgt. Flere valg for en plade afspilles kun én gang.

PlotClock

Plotclock er et kommercielt tilgængeligt DIY kit, herunder mekaniske dele, 3 servoer, Arduino Uno R3, Arduino forlængerkort og USB -kabel. For omkring 30 USD er dette et godt køb (f.eks. Banggood.com). Arduino, forlængerkort og USB -kabel bruges ikke til dette projekt.

Der er flere gode internet/YouTube -tutorials til sammensætning af Plotclock - f.eks. dette: PlotClock instruktioner

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

WeMos

WeMos D1 R2 er ESP8266 -baseret mikrokontroller. Det kan programmeres ved hjælp af Arduino IDE og har WiFi -funktioner, så det er et perfekt stykke hardware til dette projekt.

Trin 2: Kalibrering

Kalibrering
Kalibrering

Kalibrering er opgaven med at finde nøjagtige vinkelværdier for servovinkler (mellem 0 til 180 grader), der svarer til fysiske positioner for valgknapper. Vinkelværdier kan findes ved trigonometri -aritemitik eller ved hjælp af en CAD -software. Jeg fik omtrentlige værdier fra min ven, der vidste, hvordan man brugte AutoCad.

Den endelige kalibrering skulle dog foretages ved forsøg og fejl. Brug af knappelayoutet, der er tegnet på papiret. Det er muligt at udføre "desktop -test" for at finde de korrekte vinkelværdier.

Trin 3: Montering

montage
montage
montage
montage
montage
montage
montage
montage

Ledninger

Tilslutning fra Plotclock -servoer til Wemos sker med 5 ledninger: +5, GND, D4, D5 og D6. Se detaljer i billeder og kode.

Installation på Jukebox

Jeg ville ikke lave skruehuller til den 40 år gamle jukebox, der så længe havde overlevet uden større skader. Ved hjælp af blødt gummitætningsmiddel fikserede jeg et stykke aluminiums vinkelliste under jukebox -konsollen. Gummipakning holder godt fast og kan fjernes uden at efterlade mærker. PlotClock -kroppen havde brug for to små aluminiumsvinkler for at hjælpe med at montere den på akrylpladen. Akrylpladen monteres derefter på vinkellisten med to fjederbelastede klip, der efterlader mulighed for at foretage endelige justeringer lodret og vandret.

Trin 4: Blynk

Blynk
Blynk

Blynk er en gratis app til fjernstyring af flere typer mikrokontrollere. Med Blynk kan du nemt bygge en flot brugergrænseflade ved hjælp af flere typer widgets. Der er kun en widget nødvendig til dette projekt: Tabel -widgeten.

Trin 5: Software

Blynk App

Der er ingen kodning på app -siden. "Samtalen" mellem appen (Blynk) og mikrokontrolleren (WeMos) håndteres af "Virtuelle pins", der i det væsentlige er kanaler til afsendelse og modtagelse af information mellem disse to. Virtual pin bruges f.eks. Til at sende rækkenummeret for den valgte sang fra Blynk -appen til WeMos, og Wemos klarer resten, dvs. at sende kommandoer til Plotclock -servoer.

WeMos -kode

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

Tabel widget på V2 ********************************************* *****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-DIN AUTH CODE--"; // Jukebox project char ssid = "-DIN SSID--"; char pass = "-DIT WIFI-PASSORD--"; int c [50]; // Array til Jukebox-rekordpositioner (100-299) Servo myservo1; // løft Servo myservo2; // venstre arm Servo myservo3; // højre arm int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; ugyldig opsætning () {myservo1.attach (2); // pin D4, løft myservo2.attach (14); // pin D5, venstre myservo3.attach (12); // pin D6, højre myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Meddel straks ved opstart // String msg = "Jukebox WeMos forbundet til:"; //Blynk.notify(msg + ssid); // ryd tabellen ved start Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Modtag kommandoer fra tabel -widget V2 {String cmd = param [0].asStr (); // param [0] = "vælg" eller "fravælg", param [1] = række Serial.print ("\ nTabel: BLYNK_WRITE (V2) cmd:"); Seriel.print (cmd); int selection = c [param [1].asInt ()]; // Valgt rækkenummer er i param [1] Serial.println ("\ nSelection:"); Serial.println (udvalg); procesvalg (valg); } void populateTable () {int i = 0; Serial.println ("Befolkningstabel …"); Blynk.virtualWrite (V2, "tilføj", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "tilføj", 1, "Nummer et - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "tilføj", 3, "Om sommeren - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "tilføj", 4, "Black Cloud - Chubby Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "tilføj", 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, "tilføj", 7, "My Way - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "tilføj", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

forsinkelse (1000);

} void process_selection (int selection) {// parse 3-cifret valg (f.eks. 178) til 3 knapper: int btn1 = int (selection/100); // første knap Serial.println ("\ nBtn1:"); Serial.println (btn1); hvis (btn1 == 1 || btn1 == 2) // første knap skal være 1 eller 2 - ellers skal du nulstille {push_button (btn1); selection = selection - (btn1 * 100); int btn2 = int (markering/10); // anden knap Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); selection = selection - (btn2 * 10); int btn3 = int (markering); // tredje knap Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } andet {push_button (11); // nulstillingsknap} // nulstil servopositioner, når alle udførte forsinkelser (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// dette kaldes 3 gange for hvert valg // det faktiske knapskub udføres efter hver knap (find 'actual button push') switch (btn) {case 1: set_servo_angles (134, 136); // 1 pause; case 2: set_servo_angles (128, 110); // 2 pause; sag 3: set_servo_angles (112, 88); // 3 pause; sag 4: set_servo_angles (89, 68); // 4 pauser; sag 5: set_servo_angles (62, 55); // 5 pause; sag 6: set_servo_angles (172, 131); // 6 pause; sag 7: set_servo_angles (163, 106); // 7 pause; sag 8: set_servo_angles (140, 83); // 8 pause; sag 9: set_servo_angles (104, 58); // 9 pause; sag 0: set_servo_angles (75, 36); // 0 pause; sag 11: set_servo_angles (36, 30); // 11 pause; } // end switch} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servopositioner klar - udfør det faktiske knaptryk: forsinkelse (500); myservo1.write (60); // forsinkelse ned (500); myservo1.write (140); // forsinkelse (500); } void loop () {Blynk.run (); }

Trin 6: Fremtidige trin

Video -widget - live video og lydstream til Blynk App (allerede testet - fungerer)

Webhook -widget - download -afspilningsliste på forespørgsel fra skyen (allerede testet - fungerer)

Tabelwidget - nogle små forbedringer af widgetten er velkomne (forslag sendes til Blynk -udviklere)

Anbefalede: