INHOUDSOPGAWE:

PlotClock, WeMos en Blynk speel Vintage AMI Jukebox: 6 stappe (met foto's)
PlotClock, WeMos en Blynk speel Vintage AMI Jukebox: 6 stappe (met foto's)

Video: PlotClock, WeMos en Blynk speel Vintage AMI Jukebox: 6 stappe (met foto's)

Video: PlotClock, WeMos en Blynk speel Vintage AMI Jukebox: 6 stappe (met foto's)
Video: DIY RC final test with WeMOS D1 mini + Blynk + Android + WIFI 2024, Julie
Anonim
PlotClock, WeMos en Blynk speel Vintage AMI Jukebox
PlotClock, WeMos en Blynk speel Vintage AMI Jukebox
PlotClock, WeMos en Blynk speel Vintage AMI Jukebox
PlotClock, WeMos en Blynk speel Vintage AMI Jukebox

Vier tegniese innovasies het hierdie projek moontlik gemaak: die 1977 Rowe AMI Jukebox, PlotClock robotarmstel, WeMos/ESP 8266 mikrokontroleerder en Blynk App/Cloud -diens.

LET WEL: as u nie die Jukebox byderhand het nie, moenie ophou lees nie! Hierdie projek kan maklik aangeneem word om verskillende dinge wat deur menslike vingers beheer word, te beheer. Een voorbeeld kan 'n robotvinger wees wat tradisionele Xylofoon speel - miskien kom die instruksie van u af!

My 40-jarige Rowe AMI R-81 Jukebox werk nog steeds goed met die speel van vintage vinyl-enkelsnitte uit die 60's, 70's en 80's. Met 'n gewig van meer as 160 kg is hierdie speler nie so draagbaar soos moderne mp-spelers nie, maar op die internet-era is dit nou moontlik om die jukebox en 200 vinylplate in u sak te dra-feitlik natuurlik! En u kan selfs u eie snitlyste gebruik wat in die mikrobeheerder gestoor is!

Amazing PlotClock -robot is oorspronklik ontwerp om die huidige tyd te wys deur tydsyfers op die uitvee -bord te teken. My aanpassing vir PlotClock is om dit as 'n robotvinger te gebruik om op die knoppies van die Jukebox -liedjie te druk.

Die Plotclock -vinger word aangedryf deur 3 servo's wat deur WeMos -mikrobeheerder beheer word. Hierdie wonder is (byna) Arduino Uno versoenbaar en het WiFi -moontlikhede, sodat dit moontlik is om die jukebox draadloos vanaf enige plek ter wêreld te beheer.

Die room op die koek is afkomstig van die ongelooflike maklik gebruikbare Blynk -app en hul Blynk Cloud Server, wat 'n goeie gebruikerskoppelvlak vir selfone/tablette bied met volle mobiliteit.

Stap 1: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware

Jukebox

Project jukebox is 1977 Rowe AMI R-81. Enige ou jukebox met seleksieknoppies is van toepassing - met enkele beperkings op PlotClock: PlotClock se oorspronklike wapenontwerp kan 'n oppervlakte van ongeveer 5 x 12 cm beslaan, sodat die uitleg van die jukebox -knoppie (gebied insluitend alle seleksieknoppies) ongeveer dieselfde grootte moet wees. Die knoppies van ouer jukeboxes het moontlik meer druk nodig as wat PlotClock -servo's kan bied.

AMI R-81 het 'n geheue waar dit al 200 keuses kan stoor. Keuses word gespeel op grond van die volgorde waarin dit in die rekordtydskrif gestoor word (tipe karrousel), nie volgens die volgorde waarin dit gekies is nie. Meervoudige keuses vir een rekord word slegs een keer gespeel.

PlotClock

Plotclock is in die handel beskikbaar, insluitend meganiese onderdele, 3 servo's, Arduino Uno R3, Arduino -uitbreidingskaart en USB -kabel. Vir ongeveer 30 dollar is dit 'n goeie koop (bv. Banggood.com). Arduino, verlengbord en USB -kabel word nie vir hierdie projek gebruik nie.

Daar is verskeie goeie internet-/YouTube -tutoriale om die Plotclock saam te stel, bv. dit: PlotClock instruksies

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

WeMos

WeMos D1 R2 is 'n op ESP8266 gebaseerde mikrobeheerder. Dit kan geprogrammeer word met behulp van Arduino IDE en het WiFi -vermoëns, dus dit is 'n perfekte stuk hardeware vir hierdie projek.

Stap 2: Kalibrasie

Kalibrasie
Kalibrasie

Kalibrasie is die taak om akkurate hoekwaardes vir servohoeke (tussen 0 tot 180 grade) te vind wat ooreenstem met fisiese posisies vir seleksieknoppies. Hoekwaardes kan gevind word deur trigonometrie -rekenkunde of met behulp van 'n CAD -sagteware. Ek het benaderde waardes gekry van my vriend wat geweet het hoe om AutoCad te gebruik.

Die finale kalibrasie moes egter deur proef en fout gedoen word. Met behulp van die knoppie -uitleg wat op die stuk papier geteken is, is dit moontlik om die 'tafeltoets' te doen om die korrekte hoekwaardes te vind.

Stap 3: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Bedrading

Die verbinding van Plotclock -servo's met Wemos word gedoen met 5 drade: +5, GND, D4, D5 en D6. Sien besonderhede in foto's en kode.

Installeer op die Jukebox

Ek wou geen gat in die 40 -jarige jukebox maak wat so lank sonder groot skade oorleef het nie. Met 'n sagte rubber seëlmiddel het ek 'n stuk aluminium hoeklys onder die jukebox -konsole vasgemaak. Rubber seëlaar hou styf vas en kan verwyder word sonder om merke te laat. Die PlotClock -liggaam het twee klein aluminiumhoeke nodig om dit op die akrielplaat te pas. Die akrielplaat word dan op die hoeklys aangebring met twee veerklemme, wat die moontlikheid moontlik maak om die finale aanpassings vertikaal en horisontaal te maak.

Stap 4: Blynk

Blynk
Blynk

Blynk is 'n gratis app om verskillende soorte mikrobeheerders op afstand te beheer. Met Blynk kan u maklik 'n aangename gebruikerskoppelvlak bou met behulp van verskillende soorte widgets. Daar is slegs een widget nodig vir hierdie projek: die tabel -widget.

Stap 5: sagteware

Blynk App

Daar is geen kodering aan die kant van die app nie. Die 'gesprek' tussen die app (Blynk) en die mikrobeheerder (WeMos) word hanteer deur 'virtuele penne', wat in wese kanale is vir die stuur en ontvang van inligting tussen die twee. 'N Virtuele pen word byvoorbeeld gebruik om die rygetal van die geselekteerde liedjie van die Blynk -app na WeMos te stuur, en Wemos hanteer die res, dws. stuur opdragte na die Plotclock -servo's.

WeMos -kode

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

Tabel -widget by V2 ********************************************* ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "--YOUR AUTH CODE--"; // Jukebox-projek char ssid = "--JOU SSID--"; char pass = "--JOU WIFI WAGWOORD--"; int c [50]; // Array vir Jukebox-rekordposisies (100-299) Servo myservo1; // lig Servo myservo2; // linkerarm Servo myservo3; // regterarm int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; ongeldige opstelling () {myservo1.attach (2); // pen D4, lig myservo2.attach (14) op; // pen D5, links myservo3.aanheg (12); // pen D6, regs myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Stel onmiddellik in kennis tydens opstart // String msg = "Jukebox WeMos gekoppel aan:"; //Blynk.notify(msg + ssid); // maak die tafel skoon by die begin Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Ontvang opdragte vanaf Tabel -widget V2 {String cmd = param [0].asStr (); // param [0] = "kies" of "ontkies", param [1] = ry Serial.print ("\ nTabel: BLYNK_WRITE (V2) cmd:"); Reeks.afdruk (cmd); int seleksie = c [param [1].asInt ()]; // Die geselekteerde rynommer is in param [1] Serial.println ("\ nSelectie:"); Serial.println (keuse); proseskeuse (seleksie); } void populateTable () {int i = 0; Serial.println ("Tabel met bevolking …"); Blynk.virtualWrite (V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "add", 1, "Number One - Jerry Williams", 176); ek ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); ek ++; c = 184; Blynk.virtualWrite (V2, "add", 3, "In the Summertime - Mungo Jerry", 236); ek ++; c = 236; Blynk.virtualWrite (V2, "add", 4, "Black Cloud - Chubby Checker", 155); ek ++; c = 155; Blynk.virtualWrite (V2, "add", 5, "Mamy Blue - Pop -Tops", 260); ek ++; c = 260; Blynk.virtualWrite (V2, "add", 6, "It's Gonna Be Alright - Gerry & Pacemakers", 145); ek ++; c = 145; Blynk.virtualWrite (V2, "add", 7, "My Way - Tom Jones", 193); ek ++; c = 193; Blynk.virtualWrite (V2, "add", 8, "San Bernadino - Christie", 149); ek ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); ek ++; c = 169;

vertraging (1000);

} void process_selection (int selection) {// ontleed 3-syfer seleksie (bv. 178) na 3 knoppies: int btn1 = int (selection/100); // eerste knoppie Serial.println ("\ nBtn1:"); Serial.println (btn1); as (btn1 == 1 || btn1 == 2) // eerste knoppie moet 1 of 2 wees - anders moet u die reset {push_button (btn1) doen; seleksie = seleksie - (btn1 * 100); int btn2 = int (seleksie/10); // tweede knoppie Serial.println ("\ nBtn2:"); Serial.println (btn2); drukknoppie (btn2); seleksie = seleksie - (btn2 * 10); int btn3 = int (seleksie); // derde knoppie Serial.println ("\ nBtn3:"); Serial.println (btn3); drukknoppie (btn3); } anders {drukknop (11); // reset -knoppie} // reset servoposisies wanneer alles klaar is (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// dit word drie keer vir elke seleksie genoem // die werklike knoppie word gedoen na elke knoppie (vind 'werklike knoppie druk') skakelaar (btn) {case 1: set_servo_angles (134, 136); // 1 breek; geval 2: set_servo_angles (128, 110); // 2 breek; saak 3: set_servo_angles (112, 88); // 3 breek; saak 4: set_servo_angles (89, 68); // 4 breek; saak 5: set_servo_angles (62, 55); // 5 breek; saak 6: set_servo_angles (172, 131); // 6 breek; saak 7: set_servo_angles (163, 106); // 7 breek; saak 8: set_servo_angles (140, 83); // 8 breek; saak 9: set_servo_angles (104, 58); // 9 breek; saak 0: set_servo_angles (75, 36); // 0 breek; saak 11: set_servo_angles (36, 30); // 11 breek; } // end switch} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3. skryf (pos3); // Servoposisies gereed - voer die werklike knoppie -druk uit: vertraging (500); myservo1.write (60); // vertraging (500); myservo1.write (140); // vertraging (500); } leemte -lus () {Blynk.run (); }

Stap 6: Toekomstige stappe

Video -widget - lewendige video en klankstroom na die Blynk -app (reeds getoets - werk)

Webhook -widget - aflaai van afspeel op aanvraag vanaf wolk (reeds getoets - werk)

Tabel -widget - 'n paar klein verbeterings aan die widget is welkom (voorstelle word aan Blynk -ontwikkelaars gestuur)

Aanbeveel: