Sadržaj:

PlotClock, WeMos i Blynk igraju vintage AMI džuboks: 6 koraka (sa slikama)
PlotClock, WeMos i Blynk igraju vintage AMI džuboks: 6 koraka (sa slikama)

Video: PlotClock, WeMos i Blynk igraju vintage AMI džuboks: 6 koraka (sa slikama)

Video: PlotClock, WeMos i Blynk igraju vintage AMI džuboks: 6 koraka (sa slikama)
Video: Remote Robot finger playing Vintage AMI Jukebox 2024, Novembar
Anonim
PlotClock, WeMos i Blynk igraju vintage AMI Jukebox
PlotClock, WeMos i Blynk igraju vintage AMI Jukebox
PlotClock, WeMos i Blynk igraju vintage AMI Jukebox
PlotClock, WeMos i Blynk igraju vintage AMI Jukebox

Četiri tehničke inovacije omogućile su ovaj projekt: Rowe AMI Jukebox iz 1977., komplet robotskih ruku PlotClock, mikrokontroler WeMos/ESP 8266 i uslugu Blynk App/Cloud.

NAPOMENA: Ako nemate Jukebox pri ruci - nemojte prestati čitati! Ovaj se projekt može lako usvojiti za kontrolu različitih stvari kontroliranih ljudskim prstima. Jedan primjer bi mogao biti robotski prst koji svira tradicionalni ksilofon - možda ta instrukcija dolazi od vas!

Moj 40-godišnji Rowe AMI R-81 Jukebox i dalje odlično radi svirajući vintage singlove iz 60-ih, 70-ih i 80-ih. Ovaj plejer težak preko 160 kg (360 lbs) nije baš prenosiv kao moderni mp-playeri, ali živeći u doba interneta, sada je moguće nositi džuboks i 200 vinilnih ploča u džepu-gotovo naravno! Možete čak koristiti i vlastite popise pjesama pohranjene u mikrokontroleru!

Nevjerojatni PlotClock robot prvobitno je dizajniran za prikazivanje trenutnog vremena iscrtavanjem znamenki vremena na izbrisanoj ploči. Moja adaptacija za PlotClock je da ga koristim kao prst robota za pritiskanje tipki za odabir pjesme sa Jukebox -a.

„Prst“grafičkog sata pokreću 3 servo servera kojima upravlja WeMos mikrokontroler. Ovo čudo je (gotovo) Arduino Uno kompatibilno i ima WiFi mogućnosti, pa je moguće bežično kontrolirati džuboks sa bilo kojeg mjesta u svijetu.

Krema na torti dolazi iz nevjerojatno jednostavne za korištenje Blynk aplikacije i njihovog Blynk Cloud servera koji pružaju lijepo korisničko sučelje mobilnog telefona/tableta s potpunom mobilnošću.

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver

Jukebox

Projekt džuboksa je 1977. Rowe AMI R-81. Bilo koji stari džuboks s gumbima za odabir će poslužiti - imajući u vidu nekoliko ograničenja od strane PlotClock -a: Originalni dizajn ruku PlotClock -a može pokriti površinu oko 5 x 12 cm, tako da izgled dugmeta za džuboks (područje uključujući sve tipke za odabir) mora biti približno te veličine. Dugmadima starijih džuboksa možda će biti potrebno više snage nego što PlotClock servo uređaji mogu pružiti.

AMI R-81 ima memoriju u koju može pohraniti svih 200 odabira. Odabiri se reproduciraju na osnovu redoslijeda pohranjivanja u časopisu za zapise (tip vrtuljka), a ne redoslijedom kojim su odabrani. Višestruki odabiri za jedan zapis reproduciraju se samo jednom.

PlotClock

Plotclock je komercijalno dostupan DIY komplet koji uključuje mehaničke dijelove, 3 serva, Arduino Uno R3, Arduino produžnu ploču i USB kabel. Za otprilike 30 USD ovo je dobra kupovina (npr. Banggood.com). Arduino, produžna ploča i USB kabel ne koriste se za ovaj projekt.

Postoji nekoliko dobrih internetskih/YouTube vodiča za sastavljanje Plotclock -a - npr. ovo: PlotClock upute

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

WeMos

WeMos D1 R2 je mikrokontroler zasnovan na ESP8266. Može se programirati pomoću Arduino IDE -a i ima WiFi mogućnosti pa je savršen komad hardvera za ovaj projekt.

Korak 2: Kalibracija

Kalibracija
Kalibracija

Kalibracija je zadatak za pronalaženje točnih vrijednosti kutova za servo kutove (između 0 do 180 stupnjeva) kako bi odgovarali fizičkim položajima tipki za odabir. Vrijednosti kutova mogu se pronaći pomoću argonomije trigonometrije ili pomoću CAD softvera. Približne vrijednosti dobio sam od prijatelja koji je znao koristiti AutoCad.

Međutim, konačna kalibracija morala je biti izvršena pokušajem i greškom. Korištenje izgleda dugmeta iscrtanog na papiru Moguće je izvršiti „testiranje radne površine“da biste pronašli ispravne vrijednosti kuta.

Korak 3: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Ožičenje

Povezivanje sa servera Plotclock na Wemos vrši se pomoću 5 žica: +5, GND, D4, D5 i D6. Detalje pogledajte na slikama i kodu.

Instaliranje na Jukebox -u

Nisam želio napraviti rupe za vijke na 40 -godišnjem džuboksu koji je toliko dugo preživio bez većih oštećenja. Pomoću mekane gumene brtve popravio sam dio aluminijske kutne liste ispod konzole džuboksa. Gumena brtva čvrsto drži i može se ukloniti bez ostavljanja tragova. PlotClock kućištu su bila potrebna dva mala aluminijumska ugla kako bi se lakše montiralo na akrilnu ploču. Akrilna ploča tada se postavlja na kutnu listu s dvije kopče s oprugom, ostavljajući mogućnost konačnog podešavanja okomito i vodoravno.

Korak 4: Blynk

Blynk
Blynk

Blynk je besplatna aplikacija za daljinsko upravljanje nekoliko vrsta mikrokontrolera. S Blynkom možete jednostavno izgraditi lijepo korisničko sučelje koristeći nekoliko vrsta widgeta. Za ovaj projekat potreban je samo jedan widget: widget Table.

Korak 5: Softver

Blynk App

Nema kodiranja na strani aplikacije. „Razgovorom“između aplikacije (Blynk) i mikrokontrolera (WeMos) upravljaju „virtualni pinovi“koji su u suštini kanali za slanje i primanje informacija između njih dvoje. Virtualni pin se, na primjer, koristi za slanje broja retka odabrane pjesme iz aplikacije Blynk na WeMos, a Wemos rukuje ostatkom, tj. slanje naredbi na servo ploče Plotclock.

WeMos kod

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

Widget za stol na V2 ******************************************** ****************/ #define BLYNK_PRINT Serijski #include #include #include char auth = "-VAŠA KODA AUTHA"; // Jukebox projekt char ssid = "-VAŠ SSID--"; char pass = "-VAŠA WIFI LOZINKA--"; int c [50]; // Niz za rekordne pozicije Jukebox-a (100-299) Servo myservo1; // podizanje Servo myservo2; // lijeva ruka Servo myservo3; // desna ruka int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // pin D4, lift myservo2.attach (14); // pin D5, lijevo myservo3.attach (12); // pin D6, desno myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Obavijesti odmah pri pokretanju // String msg = "WeMos Jukebox povezan na:"; //Blynk.notify(msg + ssid); // brisanje tablice pri pokretanju Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Primanje naredbi iz widgeta V2 {String cmd = param [0].asStr (); // param [0] = "odaberi" ili "poništi odabir", param [1] = red Serial.print ("\ nTablica: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selection = c [param [1].asInt ()]; // Broj odabranog retka je u paramu [1] Serial.println ("\ nSelection:"); Serial.println (izbor); process_selection (izbor); } void populateTable () {int i = 0; Serial.println ("Tabela popunjavanja …"); Blynk.virtualWrite (V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "dodaj", 1, "Broj jedan - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "dodaj", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "dodaj", 3, "U ljetnom periodu - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "dodaj", 4, "Crni oblak - Chubby Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "dodaj", 5, "Mamy Blue - Pop -Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "dodaj", 6, "Sve će biti u redu - Gerry & Pacemakers", 145); i ++; c = 145; Blynk.virtualWrite (V2, "dodaj", 7, "Moj način - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "dodaj", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "dodaj", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

kašnjenje (1000);

} void process_selection (int selection) {// raščlanjuje trocifreni izbor (npr. 178) na 3 dugmeta: int btn1 = int (selection/100); // prvo dugme Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // prvo dugme mora biti 1 ili 2 - u suprotnom izvršite reset {push_button (btn1); odabir = odabir - (btn1 * 100); int btn2 = int (izbor/10); // drugo dugme Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); odabir = odabir - (btn2 * 10); int btn3 = int (izbor); // treće dugme Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } else {push_button (11); // dugme za resetovanje} // resetovanje servo položaja kada sve odloženo odgodi (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// ovo se poziva 3 puta za svaki odabir // stvarno pritiskanje dugmeta vrši se nakon svakog dugmeta (pronađi 'stvarni pritisak na dugme') prekidača (btn) {slučaj 1: set_servo_angles (134, 136); // 1 prekid; slučaj 2: set_servo_angles (128, 110); // 2 break; slučaj 3: set_servo_angles (112, 88); // 3 break; slučaj 4: set_servo_angles (89, 68); // 4 prekid; slučaj 5: set_servo_angles (62, 55); // 5 break; slučaj 6: set_servo_angles (172, 131); // 6 break; slučaj 7: set_servo_angles (163, 106); // 7 break; slučaj 8: set_servo_angles (140, 83); // 8 break; slučaj 9: set_servo_angles (104, 58); // 9 break; slučaj 0: set_servo_angles (75, 36); // 0 break; slučaj 11: set_servo_angles (36, 30); // 11 break; } // krajnji prekidač} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servo pozicije spremne - izvršite stvarni pritisak gumba: delay (500); myservo1.write (60); // kašnjenje prema dolje (500); myservo1.write (140); // kašnjenje prema gore (500); } void loop () {Blynk.run (); }

Korak 6: Koraci u budućnosti

Video widget - video i audio prijenos uživo u aplikaciju Blynk (već testirano - radi)

Webhook widget - preuzimanje playliste na zahtjev iz oblaka (već testirano - radi)

Widget za tablicu - neka mala poboljšanja widgeta su dobrodošla (prijedlozi se šalju Blynk programerima)

Preporučuje se: