Բովանդակություն:

PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox: 6 քայլ (նկարներով)
PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox: 6 քայլ (նկարներով)

Video: PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox: 6 քայլ (նկարներով)

Video: PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox: 6 քայլ (նկարներով)
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Հուլիսի
Anonim
PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos և Blynk Playing Vintage AMI Jukebox

Չորս տեխնիկական նորամուծություն հնարավոր դարձրեց այս նախագիծը. 1977 թ. Rowe AMI Jukebox, PlotClock ռոբոտների թևերի հավաքածու, WeMos/ESP 8266 միկրոկառավարիչ և Blynk App/Cloud ծառայություն:

Ո NOTՇԱԴՐՈԹՅՈՆ. Եթե դուք չունեք Jukebox ձեռքը, մի դադարեք կարդալ: Այս նախագիծը կարող է հեշտությամբ ընդունվել ՝ վերահսկելու տարբեր բաներ, որոնք վերահսկվում են մարդու մատներով: Օրինակներից մեկը կարող է լինել ռոբոտի մատը, որը նվագում է ավանդական քսիլոֆոն:

Իմ 40-ամյա Rowe AMI R-81 Jukebox- ը դեռ լավ է աշխատում ՝ խաղալով 60-ականների, 70-ականների և 80-ականների վինիլային սինգլներ: 160 կգ (360 ֆունտ) քաշով այս նվագարկիչն այնքան դյուրակիր չէ, որքան ժամանակակից mp-player- երը, բայց ինտերնետի դարաշրջանում ապրելով ՝ այժմ հնարավոր է գրպանում կրել ջուկբոքսը և 200 վինիլային սկավառակ, իհարկե, իհարկե: Եվ նույնիսկ կարող եք օգտագործել ձեր սեփական տեսացանկերը, որոնք պահվում են միկրոկառավարիչի մեջ:

Ingարմանալի PlotClock ռոբոտը ի սկզբանե նախագծված է ներկայիս ժամանակը ցույց տալու համար `ջնջվող տախտակի վրա գծելով թվանշաններ: PlotClock- ի իմ հարմարեցումն է օգտագործել այն որպես ռոբոտի մատ Jukebox երգի ընտրության կոճակները սեղմելու համար:

Plotclock- ի «մատը» վարում է 3 սերվո, որոնք վերահսկվում են WeMos միկրոկոնտրոլերի կողմից: Այս հրաշքը (գրեթե) Arduino Uno- ն համատեղելի է և ունի WiFi հնարավորություններ, այնպես որ հնարավոր է անլար կառավարել ջուկբոքսը աշխարհի ցանկացած կետից:

Տորթի կրեմը գալիս է անհավատալիորեն հեշտ օգտագործվող Blynk հավելվածից և նրանց Blynk Cloud Server- ից ՝ տալով բջջային հեռախոսի/պլանշետի գեղեցիկ ինտերֆեյս `լիարժեք շարժունակությամբ:

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Juուկբոքս

Նախագծի ջուքբոքսը 1977 թվականի Rowe AMI R-81 է: Oldանկացած հին ջուկբոքս ՝ ընտրելու կոճակներով, կանի ՝ նշելով PlotClock- ի մի քանի սահմանափակումներ. Հին ջուկբոքսերի կոճակները կարող են ավելի մեծ ուժի կարիք ունենալ, քան կարող է տրամադրել PlotClock սերվերը:

AMI R-81- ն ունի հիշողություն, որտեղ կարող է պահել բոլոր 200 ընտրանքները: Ընտրված ընտրանքները խաղարկվում են ձայնագրությունների ամսագրում (կարուսելի տեսակը) պահվելու կարգի հիման վրա, այլ ոչ թե ընտրված կարգի: Մեկ ձայնագրության բազմակի ընտրություն կատարվում է միայն մեկ անգամ:

PlotClock

Plotclock- ը կոմերցիոն կերպով մատչելի DIY հավաքածու է, որը ներառում է մեխանիկական մասեր, 3 սպասարկում, Arduino Uno R3, Arduino Extension տախտակ և USB մալուխ: Մոտ 30 ԱՄՆ դոլարով սա լավ գնում է (օրինակ ՝ Banggood.com): Այս նախագծի համար չեն օգտագործվում Arduino, երկարացման տախտակ և USB մալուխ:

Գոյություն ունեն մի քանի լավ ինտերնետ/YouTube ձեռնարկներ Plotclock- ը կազմելու համար, օրինակ. սա ՝ PlotClock- ի հրահանգներ

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

WeMos

WeMos D1 R2- ը ESP8266- ի վրա հիմնված միկրոկոնտրոլեր է: Այն կարող է ծրագրավորվել Arduino IDE- ի միջոցով և ունի WiFi հնարավորություններ, ուստի այն այս ծրագրի համար կատարյալ սարքավորում է:

Քայլ 2: Կալիբրացում

Կալիբրացիա
Կալիբրացիա

Կալիբրացիան սերվո անկյունների (0 -ից 180 աստիճան) անկյունների ճշգրիտ արժեքներ գտնելու խնդիր է `ընտրող կոճակների ֆիզիկական դիրքերին համապատասխան: Անկյունի արժեքները կարելի է գտնել եռանկյունաչափության արիթեմիտիկայի միջոցով կամ CAD ծրագրակազմի միջոցով: Ես ստացել եմ մոտավոր արժեքներ իմ ընկերոջից, ով գիտեր, թե ինչպես օգտագործել AutoCad- ը:

Այնուամենայնիվ, վերջնական ճշգրտումը պետք է կատարվեր փորձության և սխալի միջոցով: Օգտագործելով թղթի վրա գծված կոճակների դասավորությունը Հնարավոր է կատարել «աշխատասեղանի փորձարկում» `անկյունների ճիշտ արժեքները գտնելու համար:

Քայլ 3: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով

Հաղորդալարեր

Plotclock servos- ից Wemos- ին միացումը կատարվում է 5 լարերով `+5, GND, D4, D5 և D6: Մանրամասները դիտեք նկարներում և ծածկագրում:

Տեղադրում Jukebox- ում

Ես չէի ուզում պտուտակով անցքեր անել 40 -ամյա ջուկբոքսի վրա, որն այդքան երկար գոյատևել էր առանց մեծ վնասների: Օգտագործելով փափուկ ռետինե կնիք, ես ամրացրեցի ալյումինե անկյունային ցուցակի մի կտոր jukebox վահանակի տակ: Ռետինե հերմետիկ նյութը ամուր բռնում է և կարող է հեռացվել առանց որևէ հետք թողնելու: PlotClock- ի մարմնին անհրաժեշտ էր երկու փոքր ալյումինե անկյուններ, որոնք կօգնեն այն տեղավորել ակրիլային ափսեի մեջ: Ակրիլային ափսեն այնուհետև տեղավորվում է անկյունների ցանկում ՝ երկու զսպանակով ամրակներով, ինչը հնարավորություն է տալիս ուղղահայաց և հորիզոնական վերջնական ճշգրտումներ կատարել:

Քայլ 4: Բլինք

Բլինկ
Բլինկ

Blynk- ը անվճար ծրագիր է ՝ մի քանի տեսակի միկրոկառավարիչների հեռակա վերահսկման համար: Blynk- ի միջոցով կարող եք հեշտությամբ կառուցել գեղեցիկ ինտերֆեյս `օգտագործելով մի քանի տեսակի վիջեթներ: Այս նախագծի համար անհրաժեշտ է միայն մեկ վիջեթ ՝ Աղյուսակի վիջեթը:

Քայլ 5: Softwareրագրակազմ

Blynk հավելված

Appրագրի կողքին չկա կոդավորում: Conversationրագրի (Blynk) և միկրոկառավարիչի (WeMos) միջև «զրույցը» վարվում է «Վիրտուալ կապում», որն, ըստ էության, այդ երկուսի միջև տեղեկատվություն ուղարկելու և ստանալու ուղիներ են: Վիրտուալ քորոցը, օրինակ, օգտագործվում է Blynk հավելվածից ընտրված երգի տողի համարը WeMos- ին ուղարկելու համար, իսկ մնացածը Wemos- ը կարգավորում է, այսինքն. հրամաններ ուղարկելով Plotclock սերվերին:

WeMos ծածկագիրը

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

Աղյուսակի վիջեթ V2 ********************************************* ** // Jukebox նախագիծ char ssid = "-ՔՈ SSID--"; char pass = "-ՔՈ WIFI գաղտնաբառ--"; int c [50]; // rayանգված Jukebox- ի ռեկորդային դիրքերի համար (100-299) Servo myservo1; // բարձրացում Servo myservo2; // ձախ թև Servo myservo3; // աջ թեւ int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // կապում D4, բարձրացրեք myservo2.attach (14); // կապ D5, ձախ myservo3.attach (12); // կապ D6, աջ myservo1.write (140); myservo2.write (90); myservo3. գրել (90); Serial.begin (115200); Blynk.begin (author, ssid, pass); // Տեղեկացնել անմիջապես գործարկման ժամանակ // String msg = "Jukebox WeMos- ը միացված է ՝"; //Blynk.notify(msg + ssid); // մաքրել աղյուսակը սկզբից Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Ստացեք հրամաններ Table widget V2- ից {String cmd = param [0].asStr (); // param [0] = "ընտրել" կամ "ապընտրել", param [1] = տող Serial.print ("\ n Աղյուսակ. BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int ընտրություն = c [պարամետր [1].asInt ()]; // Ընտրված տողի համարը պարամետրում է [1] Serial.println ("\ n Ընտրություն."); Serial.println (ընտրություն); գործընթացի_ընտրություն (ընտրություն); } void populateTable () {int i = 0; Serial.println («Բնակեցված սեղան…»); Blynk.virtualWrite (V2, «ավելացնել», 0, «Եղիր իմ երեխան - գերագույնները», 112); c = 112; Blynk.virtualWrite (V2, «ավելացնել», 1, «Թիվ մեկ - ryերի Ուիլյամս», 176); i ++; c = 176; Blynk.virtualWrite (V2, «ավելացնել», 2, «All My Loving - The Beatles», 184); i ++; c = 184; Blynk.virtualWrite (V2, «ավելացնել», 3, «Ամռանը ՝ Մունգո Jerերի», 236); i ++; c = 236; Blynk.virtualWrite (V2, «ավելացնել», 4, «Սև ամպ - թմբլիկ ստուգիչ», 155); i ++; c = 155; Blynk.virtualWrite (V2, «ավելացնել», 5, «Mamy Blue - Pop -Tops», 260); i ++; c = 260; Blynk.virtualWrite (V2, «ավելացնել», 6, «Ամեն ինչ լավ կլինի - Gerry & Pacemakers», 145); i ++; c = 145; Blynk.virtualWrite (V2, «ավելացնել», 7, «Իմ ճանապարհը - Թոմ onesոնս», 193); i ++; c = 193; Blynk.virtualWrite (V2, «ավելացնել», 8, «San Bernadino - Christie», 149); i ++; c = 149; Blynk.virtualWrite (V2, «ավելացնել», 9, «The Twist - Chubby Checker», 169); i ++; c = 169;

ուշացում (1000);

} void process_selection (int ընտրություն) {// վերլուծել եռանիշ ընտրությունը (օրինակ ՝ 178) մինչև 3 կոճակ ՝ int btn1 = int (ընտրություն/100); // առաջին կոճակը Serial.println ("\ nBtn1:"); Serial.println (btn1); եթե (btn1 == 1 || btn1 == 2) // առաջին կոճակը պետք է լինի 1 կամ 2 - հակառակ դեպքում կատարեք վերականգնում {push_button (btn1); ընտրություն = ընտրություն - (btn1 * 100); int btn2 = int (ընտրություն/10); // երկրորդ կոճակը Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); ընտրություն = ընտրություն - (btn2 * 10); int btn3 = int (ընտրություն); // երրորդ կոճակը Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } else {push_button (11); // վերակայման կոճակ} // վերականգնել servo դիրքերը, երբ ամեն ինչ ավարտված է (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// սա կոչվում է 3 անգամ յուրաքանչյուր ընտրության համար // կոճակի փաստացի սեղմումը կատարվում է յուրաքանչյուր կոճակից հետո (գտնել «փաստացի կոճակի սեղմում») անջատիչից (btn) {դեպք 1 ՝ set_servo_angles (134, 136); // 1 ընդմիջում; դեպք 2: set_servo_angles (128, 110); // 2 ընդմիջում; դեպք 3: set_servo_angles (112, 88); // 3 ընդմիջում; գործ 4: set_servo_angles (89, 68); // 4 ընդմիջում; դեպք 5: set_servo_angles (62, 55); // 5 ընդմիջում; դեպք 6: set_servo_angles (172, 131); // 6 ընդմիջում; դեպք 7: set_servo_angles (163, 106); // 7 ընդմիջում; գործ 8: set_servo_angles (140, 83); // 8 ընդմիջում; գործ 9: set_servo_angles (104, 58); // 9 ընդմիջում; գործ 0: set_servo_angles (75, 36); // 0 ընդմիջում; դեպք 11: set_servo_angles (36, 30); // 11 ընդմիջում; } // վերջ անջատիչ} անվավեր set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3. գրել (pos3); // Սերվոյի դիրքերը պատրաստ են. Կատարեք կոճակի փաստացի սեղմումը. Հետաձգում (500); myservo1.write (60); // հետաձգում (500); myservo1.write (140); // հետաձգում (500); } void loop () {Blynk.run (); }

Քայլ 6: Ապագա քայլեր

Տեսանյութի վիջեթ - կենդանի վիդեո և աուդիո հոսք դեպի Blynk հավելված (արդեն փորձարկված - աշխատում է)

Webhook վիջեթ - երգացանկ ՝ ըստ պահանջի ներբեռնել ամպից (արդեն փորձարկված է ՝ աշխատում է)

Աղյուսակի վիջեթ - վիջեթում որոշ փոքր բարելավումներ ողջունելի են (առաջարկություններ են ուղարկվում Blynk ծրագրավորողներին)

Խորհուրդ ենք տալիս: