Obsah:

PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox: 6 kroků (s obrázky)
PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox: 6 kroků (s obrázky)

Video: PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox: 6 kroků (s obrázky)

Video: PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox: 6 kroků (s obrázky)
Video: Remote Robot finger playing Vintage AMI Jukebox 2024, Červenec
Anonim
PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox
PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox
PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox
PlotClock, WeMos a Blynk hrají Vintage AMI Jukebox

Tento projekt umožnily čtyři technické inovace: 1977 Rowe AMI Jukebox, sada robotických ramen PlotClock, mikrokontrolér WeMos/ESP 8266 a služba Blynk App/Cloud.

POZNÁMKA: Pokud nemáte po ruce Jukebox - nepřestávejte číst! Tento projekt lze snadno přijmout k ovládání různých věcí ovládaných lidskými prsty. Jedním příkladem může být robotický prst hrající tradiční xylofon - možná ten instruktáž pochází od vás!

Můj 40letý Rowe AMI R-81 Jukebox stále dobře hraje staré vinylové singly ze 60., 70. a 80. let. S hmotností přes 160 kg (360 liber) není tento přehrávač tak přenosný jako moderní MP přehrávače, ale v době internetu je nyní možné nosit jukebox a 200 vinylových desek v kapse-prakticky samozřejmě! A dokonce můžete použít své vlastní seznamy skladeb uložené v mikrokontroléru!

Úžasný robot PlotClock byl původně navržen tak, aby zobrazoval aktuální čas kreslením číslic času na vymazatelnou tabuli. Moje adaptace pro PlotClock je použít ji jako robotický prst pro stisknutí tlačítek pro výběr písně Jukebox.

„Prst“Plotclock je poháněn 3 servy ovládanými mikrokontrolérem WeMos. Tento kousek zázraku je (téměř) kompatibilní s Arduino Uno a má možnosti WiFi, takže je možné jukebox ovládat bezdrátově odkudkoli na světě.

Krém na dortu pochází z neuvěřitelně snadno použitelné aplikace Blynk a jejich cloudového serveru Blynk, které poskytují příjemné uživatelské rozhraní mobilního telefonu/tabletu s plnou mobilitou.

Krok 1: Hardware

Hardware
Hardware
Hardware
Hardware

Hudební automat

Projektový jukebox je 1977 Rowe AMI R-81. Postačí jakýkoli starý jukebox s tlačítky pro výběr - s přihlédnutím k několika omezením od PlotClock: Původní design ramen PlotClock může pokrývat plochu asi 5 x 12 cm, takže rozložení tlačítek jukeboxu (oblast včetně všech tlačítek pro výběr) musí mít přibližně tuto velikost. Tlačítka starších jukeboxů mohou vyžadovat větší tlačnou sílu, než mohou poskytovat serva PlotClock.

AMI R-81 má paměť, kam lze uložit všech 200 výběrů. Výběry se přehrávají na základě pořadí, v jakém jsou uloženy v záznamovém zásobníku (typ karuselu), nikoli na základě pořadí, ve kterém jsou vybrány. Více výběrů pro jednu nahrávku se přehraje pouze jednou.

PlotClock

Plotclock je komerčně dostupná sada pro kutily, která obsahuje mechanické součásti, 3 serva, Arduino Uno R3, rozšiřující desku Arduino a kabel USB. Za přibližně 30 USD je to dobrý nákup (např. Banggood.com). Arduino, rozšiřující deska a kabel USB se pro tento projekt nepoužívají.

Existuje několik dobrých návodů pro internet/YouTube pro skládání Plotclock - např. toto: Pokyny PlotClock

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

WeMos

WeMos D1 R2 je mikrokontrolér založený na ESP8266. Lze jej naprogramovat pomocí Arduino IDE a má možnosti WiFi, takže je to perfektní kus hardwaru pro tento projekt.

Krok 2: Kalibrace

Kalibrace
Kalibrace

Kalibrace je úkolem pro nalezení přesných hodnot úhlů pro úhly serva (od 0 do 180 stupňů), aby odpovídaly fyzickým polohám pro tlačítka výběru. Hodnoty úhlů lze zjistit pomocí aritemitiky trigonometrie nebo pomocí softwaru CAD. Přibližné hodnoty jsem získal od svého přítele, který věděl, jak používat AutoCad.

Konečnou kalibraci však bylo nutné provést metodou pokusu a omylu. Pomocí rozložení tlačítek nakresleného na kus papíru Je možné provést „testování na ploše“a najít správné hodnoty úhlů.

Krok 3: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Elektrické vedení

Připojení ze serva Plotclock na Wemos se provádí pomocí 5 vodičů: +5, GND, D4, D5 a D6. Podrobnosti najdete na obrázcích a v kódu.

Instalace na Jukebox

Nechtěl jsem dělat žádné otvory pro šrouby do 40 let starého jukeboxu, který tak dlouho přežil bez větších škod. Pomocí měkkého gumového tmelu jsem pod konzolu jukeboxu upevnil kus hliníkového seznamu úhlů. Gumový tmel pevně drží a lze jej odstranit, aniž by zanechal stopy. Tělo PlotClock potřebovalo dva malé hliníkové úhly, které by pomohly při montáži na akrylovou desku. Akrylová deska je poté připevněna k seznamu úhlů dvěma pružinovými sponami, takže je možné provádět konečné úpravy svisle a vodorovně.

Krok 4: Blynk

Blynk
Blynk

Blynk je bezplatná aplikace pro dálkové ovládání několika typů mikrokontrolérů. S Blynkem můžete snadno vytvořit pěkné uživatelské rozhraní pomocí několika typů widgetů. Pro tento projekt je potřeba pouze jeden widget: widget Tabulka.

Krok 5: Software

Blynk App

Na straně aplikace není žádné kódování. „Konverzace“mezi aplikací (Blynk) a mikrokontrolérem (WeMos) je řešena pomocí „virtuálních pinů“, což jsou v podstatě kanály pro odesílání a přijímání informací mezi těmito dvěma. Virtuální pin se například používá k odeslání čísla řádku vybrané skladby z aplikace Blynk do WeMos a Wemos se postará o zbytek, tzn. odesílání příkazů na serva Plotclock.

WeMos kód

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

Widget tabulky na V2 ********************************** ****************/ #define BLYNK_PRINT Sériové #include #include #include char auth = "-VAŠE AUTHOVÝ KÓD--"; // Projekt jukeboxu char ssid = "--VÁŠ SSID--"; char pass = "--VÁŠ WIFI HESLO--"; int c [50]; // Pole pro pozice záznamu Jukeboxu (100-299) Servo myservo1; // zvedání Servo myservo2; // levé rameno Servo myservo3; // pravá ruka int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // kolík D4, zvedněte myservo2.attach (14); // pin D5, vlevo myservo3.attach (12); // pin D6, vpravo myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Okamžitě upozornit při spuštění // String msg = "Jukebox WeMos připojen k:"; //Blynk.notify(msg + ssid); // vymazání tabulky na začátku Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Příjem příkazů z widgetu tabulky V2 {String cmd = param [0].asStr (); // param [0] = "vybrat" nebo "zrušit výběr", param [1] = řádek Serial.print ("\ nTabulka: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int výběr = c [param [1].asInt ()]; // Číslo vybraného řádku je v parametru [1] Serial.println ("\ nVýběr:"); Serial.println (výběr); process_selection (výběr); } void populateTable () {int i = 0; Serial.println ("Populační tabulka …"); 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;

zpoždění (1000);

} void process_selection (int selection) {// parse 3-digit selection (eg. 178) to 3 buttons: int btn1 = int (selection/100); // první tlačítko Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // první tlačítko musí být 1 nebo 2 - jinak proveďte reset {push_button (btn1); výběr = výběr - (btn1 * 100); int btn2 = int (výběr/10); // druhé tlačítko Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); výběr = výběr - (btn2 * 10); int btn3 = int (výběr); // třetí tlačítko Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } else {push_button (11); // tlačítko reset} // reset pozic serva při zpoždění po dokončení (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// toto se nazývá 3krát pro každý výběr // skutečné stisknutí tlačítka se provede po každém tlačítku (najít 'skutečné stisknutí tlačítka') přepínač (btn) {případ 1: set_servo_angles (134, 136); // 1 přestávka; případ 2: set_servo_angles (128, 110); // 2 break; případ 3: set_servo_angles (112, 88); // 3 break; případ 4: set_servo_angles (89, 68); // 4 break; případ 5: set_servo_angles (62, 55); // 5 break; případ 6: set_servo_angles (172, 131); // 6 break; případ 7: set_servo_angles (163, 106); // 7 break; případ 8: set_servo_angles (140, 83); // 8 break; případ 9: set_servo_angles (104, 58); // 9 break; případ 0: set_servo_angles (75, 36); // 0 break; případ 11: set_servo_angles (36, 30); // 11 break; } // koncový přepínač} neplatné set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Připravené pozice serv - proveďte skutečné stisknutí tlačítka: delay (500); myservo1.write (60); // zpoždění dolů (500); myservo1.write (140); // zpoždění nahoru (500); } void loop () {Blynk.run (); }

Krok 6: Budoucí kroky

Video widget - živý přenos videa a zvuku do aplikace Blynk (již testováno - funguje)

Widget Webhook - stahování seznamu skladeb na vyžádání z cloudu (již testováno - funguje)

Widget tabulky - některá malá vylepšení widgetu jsou vítána (návrhy zaslané vývojářům Blynk)

Doporučuje: