Mündəricat:

PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır: 6 addım (şəkillərlə)
PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır: 6 addım (şəkillərlə)

Video: PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır: 6 addım (şəkillərlə)

Video: PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır: 6 addım (şəkillərlə)
Video: DIY Esp8266 wifi Clock OLED DS3231 2024, Iyul
Anonim
PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır
PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır
PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır
PlotClock, WeMos və Blynk Vintage AMI Jukebox oynayır

Dörd texniki yenilik bu layihəni mümkün etdi: 1977 Rowe AMI Jukebox, PlotClock robot qol dəsti, WeMos/ESP 8266 mikro nəzarətçi və Blynk App/Bulud xidməti.

Qeyd: Əlinizdə Jukebox yoxdursa - oxumağı dayandırmayın! Bu layihə insan barmaqları ilə idarə olunan müxtəlif şeyləri idarə etmək üçün asanlıqla qəbul edilə bilər. Bir nümunə, ənənəvi Xylophone oynayan bir robot barmağı ola bilər - bəlkə də bu təlimat səndən gəlir!

Mənim 40 yaşımdakı Rowe AMI R-81 Jukebox hələ də 60-70-80-ci illərin vintage vinil singlelarını yaxşı ifa edir. 160 kq (360 lbs) ağırlığında olan bu oyunçu, müasir mp-oyunçular qədər portativ deyil, ancaq internet dövründə yaşadığınız üçün indi cibinizdə jukebox və 200 vinil qeyd aparmaq mümkündür-faktiki olaraq! Və hətta mikrokontrolördə saxlanılan öz siyahılarınızı da istifadə edə bilərsiniz!

Amazing PlotClock robotu, əvvəlcə silinə bilən lövhədə vaxt rəqəmlərini çəkərək cari vaxtı göstərmək üçün hazırlanmışdır. PlotClock üçün uyğunluğum, Jukebox mahnı seçim düymələrini basmaq üçün robot barmağı kimi istifadə etməkdir.

Plotclock "barmağı" WeMos mikro nəzarətçisi tərəfindən idarə olunan 3 servo ilə idarə olunur. Bu möcüzə parçası (demək olar ki) Arduino Uno ilə uyğundur və WiFi imkanlarına malikdir, buna görə də dünyanın istənilən yerindən musiqi qutusunu simsiz idarə etmək mümkündür.

Tortun üzərindəki krem, inanılmaz asan Blynk Tətbiqindən və Blynk Bulud Serverindən, tam mobilliyə malik gözəl bir mobil telefon/planşet istifadəçi interfeysi verir.

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Jukebox

Project jukebox 1977 Rowe AMI R-81-dir. Seçim düymələri olan hər hansı bir köhnə musiqi qutusu edəcək - PlotClock tərəfindən bir sıra məhdudiyyətlər qoyulacaq: PlotClock -un orijinal silah dizaynı təxminən 5 x 12 sm sahəni əhatə edə bilər, buna görə də jukebox düyməsinin düzeni (bütün seçim düymələri daxil olmaqla) bu ölçüdə olmalıdır. Köhnə musiqi qutularının düymələri, PlotClock servolarının təmin edə biləcəyindən daha çox itələyici gücə ehtiyac duya bilər.

AMI R-81, 200 seçimin hamısını saxlaya biləcəyi bir yaddaşa malikdir. Seçimlər, seçildikləri sıraya görə deyil, qeyd jurnalında (karusel növü) saxlandıqları sıraya görə oynanılır. Bir qeyd üçün birdən çox seçim yalnız bir dəfə səslənir.

PlotClock

Plotclock, mexaniki hissələr, 3 servo, Arduino Uno R3, Arduino Uzatma lövhəsi və USB kabeli daxil olmaqla satışda olan DIY dəstidir. Təxminən 30 USD üçün bu yaxşı bir alışdır (məsələn. Banggood.com). Bu layihə üçün Arduino, uzatma lövhəsi və USB kabeli istifadə edilmir.

Plotclock yazmaq üçün bir neçə yaxşı internet/YouTube dərsləri var - məsələn. bu: PlotClock təlimatları

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

WeMos

WeMos D1 R2, ESP8266 əsaslı mikro nəzarətçidir. Arduino IDE istifadə edərək proqramlaşdırıla bilər və WiFi imkanlarına malikdir, buna görə də bu layihə üçün mükəmməl bir hardware parçasıdır.

Addım 2: Kalibrləmə

Kalibrləmə
Kalibrləmə

Kalibrləmə, seçim düymələrinin fiziki mövqelərinə uyğun olaraq servo açılar üçün dəqiq açı dəyərlərini (0 ilə 180 dərəcə arasında) tapmaq vəzifəsidir. Açı dəyərləri trigonometry arithemitics və ya CAD proqramı istifadə edərək tapıla bilər. AutoCad istifadə etməyi bilən dostumdan təxminən dəyərlər aldım.

Ancaq son kalibrləmə sınaq və səhvlə edilməli idi. Kağız üzərində çəkilmiş düymə sxemindən istifadə edərək düzgün açı dəyərlərini tapmaq üçün "masa üstü testi" etmək mümkündür.

Addım 3: Montaj

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

Kablolama

Plotclock servolarından Wemos -a keçid 5 tel ilə aparılır: +5, GND, D4, D5 və D6. Şəkillər və koddakı detallara baxın.

Jukebox -a quraşdırılır

40 ildir ki, böyük ziyan görmədən sağ qalan Jukebox -a heç bir vida dəliyi açmaq istəmirdim. Yumşaq kauçuk mastik istifadə edərək Jukebox konsolunun altından bir parça alüminium bucaq düzəltdim. Kauçuk mastik sıx tutur və heç bir iz buraxmadan çıxarıla bilər. PlotClock gövdəsinin akril lövhəyə yerləşdirilməsinə kömək etmək üçün iki kiçik alüminium açıya ehtiyac var idi. Akril lövhə daha sonra şaquli və üfüqi olaraq son düzəlişlər etmək imkanı verən iki yaylı kliplə bucaq siyahısına yerləşdirilir.

Addım 4: Blynk

Blynk
Blynk

Blynk, bir neçə növ mikro nəzarətçini uzaqdan idarə etmək üçün pulsuz bir tətbiqdir. Blynk ilə asanlıqla bir neçə növ widget istifadə edərək gözəl bir istifadəçi interfeysi qura bilərsiniz. Bu layihə üçün yalnız bir widget lazımdır: Table widget.

Addım 5: Proqram təminatı

Blynk Tətbiqi

Tətbiq tərəfində kodlaşdırma yoxdur. Tətbiq (Blynk) və mikro nəzarətçi (WeMos) arasındakı "söhbət" əslində bu ikisi arasında məlumat göndərmək və almaq üçün kanal olan "Virtual pinlər" tərəfindən idarə olunur. Virtual pin, məsələn, Blynk tətbiqindən seçilmiş mahnının sıra nömrəsini WeMos -a göndərmək üçün istifadə olunur və qalanları Wemos idarə edir, yəni. Plotclock servolarına əmr göndərmək.

WeMos kodu

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

V2 -də masa vidceti ******************************************** ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-SİZİN AUTO KODUNUZ--"; // Jukebox layihəsi char ssid = "-SİZİN SSID-"; char pass = "--SİZİN WIFI ŞİFRİNİZ--"; int c [50]; // Jukebox rekord mövqeləri üçün dizi (100-299) Servo myservo1; // Servo myservo2 qaldırmaq; // sol qol Servo myservo3; // sağ qol 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, sol myservo3.attach (12); // pin D6, sağ myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Başlanğıcda dərhal bildirin // String msg = "Jukebox WeMos bağlı:"; //Blynk.notify(msg + ssid); // aydın masa Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Cədvəl vidjetindən V2 əmrləri alın {String cmd = param [0].asStr (); // param [0] = "seçin" və ya "seçimi ləğv et", param [1] = sıra Serial.print ("\ nTable: BLYNK_WRITE (V2) cmd:"); Serial çapı (cmd); int seçimi = c [param [1].asInt ()]; // Seçilmiş sıra nömrəsi paramdadır [1] Serial.println ("\ nSeçim:"); Serial.println (seçim); proses_ seçimi (seçim); } void populateTable () {int i = 0; Serial.println ("Doldurma masası …"); Blynk.virtualWrite (V2, "əlavə et", 0, "Mənim Körpəm ol - Üstünlər", 112); c = 112; Blynk.virtualWrite (V2, "əlavə et", 1, "Bir nömrəli - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "əlavə et", 3, "Yazda - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "əlavə et", 4, "Qara Bulud - Dolğun Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "əlavə et", 5, "Mamy Blue - Pop -Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "əlavə et", 6, "Yaxşı olacaq - Gerry və Kardiostimulyatorlar", 145); i ++; c = 145; Blynk.virtualWrite (V2, "əlavə et", 7, "Mənim Yolum - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "əlavə et", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

gecikmə (1000);

} void process_selection (int selection) {// 3 rəqəmli seçimi (məsələn. 178) 3 düyməyə ayırın: int btn1 = int (seçim/100); // ilk düymə Serial.println ("\ nBtn1:"); Serial.println (btn1); əgər (btn1 == 1 || btn1 == 2) // ilk düymə 1 və ya 2 olmalıdır - əks halda sıfırlama {push_button (btn1); seçim = seçim - (btn1 * 100); int btn2 = int (seçim/10); // ikinci düymə Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); seçim = seçim - (btn2 * 10); int btn3 = int (seçim); // üçüncü düymə Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } başqa {push_button (11); // sıfırlama düyməsi} // hamısı gecikdikdə servo mövqelərini sıfırlayın (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// buna hər seçim üçün 3 dəfə deyilir // faktiki düyməyə basmaq hər düymədən sonra edilir ('faktiki düyməni bas') açarı (btn) {hal 1: set_servo_angles (134, 136); // 1 fasilə; hal 2: set_servo_angles (128, 110); // 2 fasilə; hal 3: set_servo_angles (112, 88); // 3 fasilə; hal 4: set_servo_angles (89, 68); // 4 fasilə; hal 5: set_servo_angles (62, 55); // 5 fasilə; hal 6: set_servo_angles (172, 131); // 6 fasilə; hal 7: set_servo_angles (163, 106); // 7 fasilə; hal 8: set_servo_angles (140, 83); // 8 fasilə; hal 9: set_servo_angles (104, 58); // 9 fasilə; hal 0: set_servo_angles (75, 36); // 0 fasilə; hal 11: set_servo_angles (36, 30); // 11 fasilə; } // son keçid} boş_tut_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servo mövqeləri hazırdır - faktiki düyməni basdırın: gecikmə (500); myservo1.write (60); // aşağı gecikmə (500); myservo1.write (140); // gecikmə (500); } boşluq döngəsi () {Blynk.run (); }

Addım 6: Gələcək addımlar

Video widget - Blynk Tətbiqinə canlı video və audio axını (artıq sınaqdan keçirilmişdir - işləyir)

Webhook vidceti - buluddan tələb olunan yükləmə siyahısı (artıq sınaqdan keçirilib - işləyir)

Cədvəl vidceti - widgetda bəzi kiçik təkmilləşdirmələr xoşdur (təkliflər Blynk inkişaf etdiricilərinə göndərilir)

Tövsiyə: