Kazalo:

PlotClock, WeMos in Blynk, ki igrajo Vintage AMI Jukebox: 6 korakov (s slikami)
PlotClock, WeMos in Blynk, ki igrajo Vintage AMI Jukebox: 6 korakov (s slikami)

Video: PlotClock, WeMos in Blynk, ki igrajo Vintage AMI Jukebox: 6 korakov (s slikami)

Video: PlotClock, WeMos in Blynk, ki igrajo Vintage AMI Jukebox: 6 korakov (s slikami)
Video: Remote Robot finger playing Vintage AMI Jukebox 2024, Julij
Anonim
PlotClock, WeMos in Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos in Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos in Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos in Blynk Playing Vintage AMI Jukebox

Štiri tehnične inovacije so omogočile ta projekt: Rowe AMI Jukebox iz leta 1977, komplet robotskih ročic PlotClock, mikrokrmilnik WeMos/ESP 8266 in storitev Blynk App/Cloud.

OPOMBA: Če Jukebox nimate pri roki - ne nehajte brati! Ta projekt je mogoče zlahka sprejeti za nadzor različnih stvari, ki jih nadzirajo človeški prsti. En primer je lahko robot s prstom, ki igra tradicionalni ksilofon - morda to navodilo izhaja od vas!

Moj 40-letni Jukebox Rowe AMI R-81 še vedno dobro igra z vintage singli iz 60., 70. in 80. let. Ta predvajalnik, ki tehta več kot 160 kg (360 lbs), ni tako prenosljiv kot sodobni mp-predvajalniki, a v času interneta je zdaj mogoče v žepu nositi jukebox in 200 vinilnih plošč-skorajda seveda! Uporabite lahko celo svoje sezname predvajanja, shranjene v mikrokrmilniku!

Neverjeten robot PlotClock je bil prvotno zasnovan za prikaz trenutnega časa z risanjem časovnih številk na izbrisljivo ploščo. Moja prilagoditev za PlotClock je, da ga uporabim kot robotski prst za pritiskanje gumbov za izbiro pesmi Jukebox.

"Prst" grafične ure poganjajo 3 servomotorji, ki jih upravlja mikrokrmilnik WeMos. Ta čudež je (skoraj) združljiv z Arduino Uno in ima zmogljivosti WiFi, zato je mogoče brezžično upravljati jukebox od kjer koli na svetu.

Krema na torti prihaja iz neverjetno enostavne aplikacije Blynk in njihovega strežnika Blynk Cloud Server, ki dajeta lep mobilni vmesnik mobilnega telefona/tabličnega računalnika s polno mobilnostjo.

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Jukebox

Projektni jukebox je Rowe AMI R-81 iz leta 1977. Vsak star zvočnik z izbirnimi gumbi bo ustrezal - pri PlotClocku je treba upoštevati nekaj omejitev: prvotna oblika ročic PlotClock lahko pokriva površino približno 5 x 12 cm, zato mora biti postavitev gumba za jukebox (območje z vsemi gumbi za izbiro) približno te velikosti. Gumbi starejših jukeboxov bodo morda potrebovali večjo potisno moč, kot jo lahko zagotovijo servomotorji PlotClock.

AMI R-81 ima pomnilnik, kamor lahko shrani vseh 200 izbir. Izbor se predvaja glede na vrstni red shranjevanja v reviji (vrsta vrtiljaka), ne pa v vrstnem redu, v katerem so izbrani. Več izbir za en zapis se predvaja samo enkrat.

PlotClock

Plotclock je komercialno na voljo komplet DIY, ki vključuje mehanske dele, 3 servomotorje, Arduino Uno R3, Arduino razširitveno ploščo in kabel USB. Za približno 30 USD je to dober nakup (npr. Banggood.com). Arduino, podaljšek in kabel USB se ne uporabljajo za ta projekt.

Obstaja več dobrih internetnih/YouTubovih vaj za sestavljanje Plotclock - npr. to: Navodila za PlotClock

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

WeMos

WeMos D1 R2 je mikrokrmilnik na osnovi ESP8266. Lahko ga programirate z Arduino IDE in ima zmogljivosti WiFi, zato je popoln kos strojne opreme za ta projekt.

2. korak: Umerjanje

Praznovanje
Praznovanje

Umerjanje je naloga za iskanje točnih vrednosti kotov servo kotov (med 0 in 180 stopinjami), ki ustrezajo fizičnim položajem izbirnih gumbov. Vrednosti kotov je mogoče najti s pomočjo argonomije trigonometrije ali s programsko opremo CAD. Približne vrednosti sem dobil od prijatelja, ki je znal uporabljati AutoCad.

Končno umerjanje pa je bilo treba opraviti s poskusi in napakami. Z uporabo postavitve gumbov, narisanih na listu papirja, je možno narediti "namizno testiranje", da bi našli pravilne vrednosti kota.

3. korak: Montaža

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

Ožičenje

Povezava s servomotorjev Plotclock na Wemos poteka s 5 žicami: +5, GND, D4, D5 in D6. Podrobnosti si oglejte v slikah in kodi.

Namestitev na Jukebox

Nisem hotel narediti luknjic za vijake na 40 -letnem jukeboxu, ki je tako dolgo preživel brez večjih poškodb. Z mehko gumijasto tesnilno maso sem pod konzolo jukebox pritrdil kos aluminijastega kota. Gumijasto tesnilo tesno drži in ga je mogoče odstraniti, ne da bi pustilo sledi. Ohišje PlotClock je potrebovalo dva majhna aluminijasta kota, da bi ga lahko namestili na akrilno ploščo. Akrilna plošča je nato pritrjena na seznam kotov z dvema vzmetnima sponkama, ki puščata možnost končnih nastavitev navpično in vodoravno.

4. korak: Blynk

Blynk
Blynk

Blynk je brezplačna aplikacija za daljinsko upravljanje več vrst mikrokrmilnikov. Z Blynkom lahko preprosto zgradite lep uporabniški vmesnik z uporabo več vrst pripomočkov. Za ta projekt je potreben samo en pripomoček: pripomoček Tabela.

5. korak: Programska oprema

Blynk aplikacija

Na strani aplikacije ni kodiranja. "Pogovor" med aplikacijo (Blynk) in mikrokrmilnikom (WeMos) vodijo "navidezni zatiči", ki so v bistvu kanali za pošiljanje in sprejemanje informacij med tema dvema. Navidezni pin se na primer uporablja za pošiljanje številke vrstice izbrane pesmi iz aplikacije Blynk v WeMos, Wemos pa obravnava ostalo, tj. pošiljanje ukazov servomotorjem Plotclock.

Koda WeMos

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

Pripomoček za mizo na V2 ******************************************** ****************/ #define BLYNK_PRINT Serijski #include #include #include char auth = "-VAŠA KODA AVTOVA"-"; // Jukebox project char ssid = "-VAŠ SSID--"; char pass = "-VAŠA GESLA ZA WIFI-"; int c [50]; // Niz za zapisne položaje Jukebox-a (100-299) Servo myservo1; // dviganje Servo myservo2; // leva roka Servo myservo3; // desna roka int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // nožica D4, dvignite myservo2.attach (14); // pin D5, left myservo3.attach (12); // nožica D6, desno myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Obvesti takoj ob zagonu // String msg = "JuMbox WeMos povezan z:"; //Blynk.notify(msg + ssid); // počisti tabelo na začetku Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Prejemanje ukazov iz gradnika tabel V2 {String cmd = param [0].asStr (); // param [0] = "select" ali "prekliči izbiro", param [1] = vrstica Serial.print ("\ nTabela: BLYNK_WRITE (V2) cmd:"); Serijski.tisk (cmd); int selection = c [param [1].asInt ()]; // Izbrana številka vrstice je v paramu [1] Serial.println ("\ nSelection:"); Serial.println (izbor); process_selection (izbor); } void populateTable () {int i = 0; Serial.println ("Tabela za polnjenje …"); Blynk.virtualWrite (V2, "dodaj", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "dodaj", 1, "Številka ena - 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, "V poletnem času - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "dodaj", 4, "Črni 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, "Vse bo v redu - Gerry & Pacemakers", 145); i ++; c = 145; Blynk.virtualWrite (V2, "dodaj", 7, "Moja pot - 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;

zamuda (1000);

} void process_selection (int selection) {// razčleni 3-mestno izbiro (npr. 178) na 3 gumbe: int btn1 = int (selection/100); // prvi gumb Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // prvi gumb mora biti 1 ali 2 - drugače ponastavite {push_button (btn1); selekcija = izbor - (btn1 * 100); int btn2 = int (izbor/10); // drugi gumb Serial.println ("\ nBtn2:"); Serial.println (btn2); potisni gumb (btn2); selekcija = izbor - (btn2 * 10); int btn3 = int (izbor); // tretji gumb Serial.println ("\ nBtn3:"); Serial.println (btn3); potisni gumb (btn3); } else {push_button (11); // gumb za ponastavitev} // ponastavitev položaja servo, ko je vse končano z zamudo (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// to se pokliče 3 -krat za vsako izbiro // dejanski pritisk gumba se izvede po vsakem gumbu (poišči 'dejanski pritisk gumba') stikalo (btn) {primer 1: set_servo_angles (134, 136); // 1 prelom; primer 2: set_servo_angles (128, 110); // 2 prelom; primer 3: set_servo_angles (112, 88); // 3 prelom; primer 4: set_servo_angles (89, 68); // 4 prelom; primer 5: set_servo_angles (62, 55); // 5 prelom; primer 6: set_servo_angles (172, 131); // 6 prelom; primer 7: set_servo_angles (163, 106); // 7 prelom; primer 8: set_servo_angles (140, 83); // 8 prelom; primer 9: set_servo_angles (104, 58); // 9 prelom; primer 0: set_servo_angles (75, 36); // 0 prelom; primer 11: set_servo_angles (36, 30); // 11 prelom; } // končno stikalo} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servo položaji pripravljeni - izvedite dejanski pritisk gumba: delay (500); myservo1.write (60); // zakasnitev navzdol (500); myservo1.write (140); // zakasnitev navzgor (500); } void loop () {Blynk.run (); }

6. korak: Prihodnji koraki

Video pripomoček - video in zvočni tok v živo v aplikaciji Blynk (že preizkušeno - deluje)

Pripomoček Webhook - prenos seznama predvajanja na zahtevo iz oblaka (že preizkušeno - deluje)

Pripomoček za mizo - dobrodošle so nekatere manjše izboljšave pripomočka (predlogi so poslani razvijalcem Blynk)

Priporočena: