Sadržaj:

PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox: 6 koraka (sa slikama)
PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox: 6 koraka (sa slikama)

Video: PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox: 6 koraka (sa slikama)

Video: PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox: 6 koraka (sa slikama)
Video: Remote Robot finger playing Vintage AMI Jukebox 2024, Srpanj
Anonim
PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox
PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox
PlotClock, WeMos i Blynk sviraju vintage AMI Jukebox
PlotClock, WeMos i Blynk sviraju 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 usluga 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 dobro radi svirajući vintage singlove iz 60-ih, 70-ih i 80-ih. Ovaj player 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 izvorno je dizajniran za prikaz trenutnog vremena iscrtavanjem znamenki vremena na brisanoj ploči. Moja prilagodba za PlotClock je da ga koristim kao prst robota za pritiskanje gumba za odabir pjesme Jukebox.

"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 upravljati džuboksom s bilo kojeg mjesta u svijetu.

Krema na torti dolazi iz nevjerojatno jednostavne aplikacije Blynk i njihovog Blynk Cloud poslužitelja koji pružaju lijepo korisničko sučelje za mobitel/tablet s punom mobilnošću.

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver

Džuboks

Projektni džuboks 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 PlotClocka: Originalni dizajn ruku PlotClocka može pokriti površinu oko 5 x 12 cm, tako da izgled gumba za džuboks (područje uključujući sve gumbe za odabir) mora biti približno te veličine. Gumbi starijih džuboksa možda će trebati više snage nego što PlotClock servomotori mogu pružiti.

AMI R-81 ima memoriju u koju može pohraniti svih 200 odabira. Odabiri se reproduciraju prema redoslijedu pohranjivanja u časopisu za zapise (vrsta vrtuljka), a ne prema redoslijedu 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 oko 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

Kalibriranje
Kalibriranje

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 se izvršiti pokušajem i pogreškom. Korištenje izgleda gumba nacrtanog na papiru Moguće je izvršiti „testiranje radne površine“kako bi se pronašle točne vrijednosti kutova.

Korak 3: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Ožičenje

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

Instaliranje na Jukeboxu

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 brtvila od meke gume popravio sam dio aluminijskog kutnog popisa ispod konzole džuboksa. Gumena brtva čvrsto drži i može se ukloniti bez ostavljanja tragova. PlotClock tijelu potrebna su dva mala aluminijska kuta kako bi se lakše postavilo 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 pomoću nekoliko vrsta widgeta. Za ovaj projekt potreban je samo jedan widget: widget Table.

Korak 5: Softver

Blynk aplikacija

Nema kodiranja na strani aplikacije. "Razgovorom" između aplikacije (Blynk) i mikrokontrolera (WeMos) upravljaju "virtualni pinovi" koji su u biti 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 obrađuje ostalo, tj. slanje naredbi na servo ploče Plotclock.

WeMos kod

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

Widget za stol u V2 ******************************************** ****************/ #define BLYNK_PRINT Serijski #include #include #include char auth = "--SVOJ KOD AUTH--"; // Jukebox projekt char ssid = "-VAŠ SSID--"; char pass = "-VAŠA LOZINKA ZA WIFI--"; 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, left 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) // Primajte naredbe 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:"); Serijski.ispis (cmd); int selection = c [param [1].asInt ()]; // Odabrani broj retka nalazi se u paramu [1] Serial.println ("\ nSelection:"); Serial.println (izbor); process_selection (odabir); } void populateTable () {int i = 0; Serial.println ("Tablica popunjavanja …"); Blynk.virtualWrite (V2, "dodaj", 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 ljeto - 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, "Bit će sve 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 troznamenkasti odabir (npr. 178) na 3 gumba: int btn1 = int (selection/100); // prvi gumb Serial.println ("\ nBtn1:"); Serijski.println (btn1); if (btn1 == 1 || btn1 == 2) // prvi gumb mora biti 1 ili 2 - u protivnom napravite reset {push_button (btn1); odabir = odabir - (btn1 * 100); int btn2 = int (odabir/10); // drugi gumb Serial.println ("\ nBtn2:"); Serijski.println (btn2); gumb_potiskivanja (btn2); odabir = odabir - (btn2 * 10); int btn3 = int (odabir); // treći gumb Serial.println ("\ nBtn3:"); Serijski.println (btn3); gumb_potiskivanja (btn3); } else {push_button (11); // gumb za resetiranje} // resetiranje servo pozicija kad sve završi odgoda (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// poziva se 3 puta za svaki odabir // stvarno pritiskanje gumba vrši se nakon svakog gumba (pronađi 'stvarni pritisak gumba') prekidač (btn) {slučaj 1: set_servo_angles (134, 136); // 1 prekid; slučaj 2: set_servo_angles (128, 110); // 2 prekid; slučaj 3: set_servo_angles (112, 88); // 3 prekid; slučaj 4: set_servo_angles (89, 68); // 4 prekid; slučaj 5: set_servo_angles (62, 55); // 5 prekid; slučaj 6: set_servo_angles (172, 131); // 6 prekid; slučaj 7: set_servo_angles (163, 106); // 7 prekid; slučaj 8: set_servo_angles (140, 83); // 8 prekid; slučaj 9: set_servo_angles (104, 58); // 9 prekid; slučaj 0: set_servo_angles (75, 36); // 0 prekid; slučaj 11: set_servo_angles (36, 30); // 11 prekid; } // 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 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 popisa za reprodukciju na zahtjev iz oblaka (već testirano - radi)

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

Preporučeni: