Innholdsfortegnelse:

PlotClock, WeMos og Blynk spiller Vintage AMI Jukebox: 6 trinn (med bilder)
PlotClock, WeMos og Blynk spiller Vintage AMI Jukebox: 6 trinn (med bilder)

Video: PlotClock, WeMos og Blynk spiller Vintage AMI Jukebox: 6 trinn (med bilder)

Video: PlotClock, WeMos og Blynk spiller Vintage AMI Jukebox: 6 trinn (med bilder)
Video: Blynk Slider control intensity of LED & Display value on Gauge. 2024, Juli
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 innovasjoner gjorde dette prosjektet mulig: 1977 Rowe AMI Jukebox, PlotClock robotarmsett, WeMos/ESP 8266 mikrokontroller og Blynk App/Cloud -tjeneste.

MERK: Hvis du ikke har Jukebox for hånden - ikke slutt å lese! Dette prosjektet kan enkelt vedtas for å kontrollere forskjellige ting kontrollert av menneskelige fingre. Ett eksempel kan være en robotfinger som spiller tradisjonell xylofon - kanskje det instruerbare kommer fra deg!

Min 40 år gamle Rowe AMI R-81 Jukebox jobber fortsatt fint med å spille vintage vinylsingler fra 60-, 70- og 80-tallet. Denne spilleren veier over 160 kg (360 lbs) og er ikke like bærbar som moderne mp-spillere, men når du lever på internett, er det nå mulig å bære jukeboksen og 200 vinylplater i lommen-praktisk talt selvfølgelig! Og du kan til og med bruke dine egne spillelister lagret i mikrokontrolleren!

Amazing PlotClock -roboten er opprinnelig designet for å vise nåværende tid ved å tegne tidssifre på det slettbare brettet. Min tilpasning for PlotClock er å bruke den som en robotfinger for å trykke på knappene for valg av Jukebox -sanger.

Plotclock”fingeren” drives av 3 servoer styrt av WeMos mikrokontroller. Denne undringen er (nesten) Arduino Uno -kompatibel og har WiFi -funksjoner, så det er mulig å kontrollere jukeboksen trådløst fra hvor som helst i verden.

Kremen på kaken kommer fra den utrolig brukervennlige Blynk -appen og deres Blynk Cloud Server som gir et fint brukergrensesnitt for mobiltelefon/nettbrett med full mobilitet.

Trinn 1: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare

Jukebox

Project jukebox er Rowe AMI R-81 fra 1977. Enhver gammel jukeboks med valgknapper gjør det - og bemerker få begrensninger ved PlotClock: PlotClocks originale armedesign kan dekke et område på omtrent 5 x 12 cm, slik at jukeboksknappoppsettet (området inkludert alle valgknappene) må ha omtrent den størrelsen. Knappene på eldre jukebokser kan trenge mer skyvekraft enn PlotClock -servoer kan tilby.

AMI R-81 har et minne der den kan lagre alle 200 valgene. Valg spilles ut fra rekkefølgen de er lagret i platemagasinet (karuseltype), ikke på rekkefølgen de er valgt. Flere valg for én plate spilles bare én gang.

PlotClock

Plotclock er et kommersielt tilgjengelig DIY -sett, inkludert mekaniske deler, 3 servoer, Arduino Uno R3, Arduino Extension board og USB -kabel. For rundt 30 USD er dette et godt kjøp (f.eks. Banggood.com). Arduino, forlengelseskort og USB -kabel brukes ikke til dette prosjektet.

Det er flere gode internett/YouTube -opplæringsprogrammer for å komponere Plotclock - f.eks. dette: PlotClock instruksjoner

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

WeMos

WeMos D1 R2 er ESP8266 -basert mikrokontroller. Den kan programmeres ved hjelp av Arduino IDE og har WiFi -funksjoner, så den er en perfekt maskinvare for dette prosjektet.

Trinn 2: Kalibrering

Kalibrering
Kalibrering

Kalibrering er oppgaven for å finne nøyaktige vinkelverdier for servovinkler (mellom 0 til 180 grader) for å korrespondere fysiske posisjoner for valgknapper. Vinkelverdier kan bli funnet ved trigonometri -aritemitikk eller ved hjelp av en CAD -programvare. Jeg fikk omtrentlige verdier fra vennen min som visste hvordan de skulle bruke AutoCad.

Den siste kalibreringen måtte imidlertid gjøres ved prøving og feiling. Bruke knappelayoutet som er tegnet på papiret Det er mulig å gjøre "skrivebordstesting" for å finne de riktige vinkelverdiene.

Trinn 3: Montering

montering
montering
montering
montering
montering
montering
montering
montering

Kabling

Tilkobling fra Plotclock -servoer til Wemos gjøres med 5 ledninger: +5, GND, D4, D5 og D6. Se detaljer i bilder og kode.

Installere på Jukebox

Jeg ville ikke lage noen skruehull til den 40 år gamle jukeboksen som så lenge hadde overlevd uten store skader. Ved hjelp av myk gummiforsegling fikset jeg et stykke aluminiums vinkelliste under jukebokskonsollen. Gummitetningsmasse holder godt fast og kan fjernes uten å etterlate merker. PlotClock -kroppen trengte to små aluminiumsvinkler for å montere den på akrylplaten. Akrylplaten monteres deretter på vinkellisten med to fjærbelastede klips, slik at du kan gjøre endelige justeringer vertikalt og horisontalt.

Trinn 4: Blynk

Blynk
Blynk

Blynk er en gratis app for å kontrollere flere typer mikrokontrollere eksternt. Med Blynk kan du enkelt bygge et fint brukergrensesnitt ved hjelp av flere typer widgets. Det er bare en widget som trengs for dette prosjektet: Tabell -widgeten.

Trinn 5: Programvare

Blynk App

Det er ingen koding på app -siden. "Samtalen" mellom appen (Blynk) og mikrokontrolleren (WeMos) håndteres av "Virtual pins" som i hovedsak er kanaler for å sende og motta informasjon mellom de to. Virtual pin brukes for eksempel til å sende radnummeret til den valgte sangen fra Blynk -appen til WeMos, og Wemos håndterer resten, dvs. sende kommandoer til Plotclock -servoene.

WeMos -kode

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

Tabell widget på V2 ********************************************* ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-DIN AUTH CODE--"; // Jukebox project char ssid = "-DIN SSID--"; char pass = "-DITT WIFI-PASSORD--"; int c [50]; // Array for Jukebox-rekordposisjoner (100-299) Servo myservo1; // løfte Servo myservo2; // venstre arm Servo myservo3; // høyre arm int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; ugyldig oppsett () {myservo1.attach (2); // pin D4, løft myservo2.attach (14); // pin D5, left myservo3.attach (12); // pin D6, høyre myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Gi beskjed umiddelbart ved oppstart // String msg = "Jukebox WeMos koblet til:"; //Blynk.notify(msg + ssid); // tøm tabellen ved start Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Motta kommandoer fra tabellmodulen V2 {String cmd = param [0].asStr (); // param [0] = "velg" eller "opphev", param [1] = rad Serial.print ("\ nTabell: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selection = c [param [1].asInt ()]; // Valgt radnummer er i param [1] Serial.println ("\ nValg:"); Serial.println (utvalg); prosessvalg (utvalg); } void populateTable () {int i = 0; Serial.println ("Befolkningstabell …"); Blynk.virtualWrite (V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "add", 1, "Number One - 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, "add", 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-sifret valg (f.eks. 178) til 3 knapper: int btn1 = int (selection/100); // første knapp Serial.println ("\ nBtn1:"); Serial.println (btn1); hvis (btn1 == 1 || btn1 == 2) // første knapp må være 1 eller 2 - ellers gjør tilbakestillingen {push_button (btn1); utvalg = utvalg - (btn1 * 100); int btn2 = int (utvalg/10); // andre knapp Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); utvalg = utvalg - (btn2 * 10); int btn3 = int (utvalg); // tredje knapp Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } annet {push_button (11); // tilbakestillingsknapp} // tilbakestill servoposisjoner når alle ferdige forsinkelser (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// dette kalles 3 ganger for hvert valg // faktisk knappetrykk utføres etter hver knapp (finn "faktisk knappetrykk") -bryter (btn) {case 1: set_servo_angles (134, 136); // 1 pause; sak 2: set_servo_angles (128, 110); // 2 pauser; sak 3: set_servo_angles (112, 88); // 3 pause; sak 4: set_servo_angles (89, 68); // 4 pauser; sak 5: set_servo_angles (62, 55); // 5 pause; sak 6: set_servo_angles (172, 131); // 6 pause; sak 7: set_servo_angles (163, 106); // 7 pause; sak 8: set_servo_angles (140, 83); // 8 pause; sak 9: set_servo_angles (104, 58); // 9 pause; sak 0: set_servo_angles (75, 36); // 0 pause; sak 11: set_servo_angles (36, 30); // 11 pause; } // endebryter} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servoposisjoner klare - utfør selve knappetrykket: forsinkelse (500); myservo1.write (60); // forsinkelse ned (500); myservo1.write (140); // forsinkelse (500); } void loop () {Blynk.run (); }

Trinn 6: Fremtidige trinn

Video -widget - live video og lydstrøm til Blynk -appen (allerede testet - fungerer)

Webhook -widget - nedlastbar spilleliste fra sky (allerede testet - fungerer)

Bordwidget - noen små forbedringer av widgeten mottas med takk (forslag sendes til Blynk -utviklere)

Anbefalt: