فهرست مطالب:

PlotClock ، WeMos و Blynk Playing Vintage AMI Jukebox: 6 مرحله (همراه با تصاویر)
PlotClock ، WeMos و Blynk Playing Vintage AMI Jukebox: 6 مرحله (همراه با تصاویر)

تصویری: PlotClock ، WeMos و Blynk Playing Vintage AMI Jukebox: 6 مرحله (همراه با تصاویر)

تصویری: PlotClock ، WeMos و Blynk Playing Vintage AMI Jukebox: 6 مرحله (همراه با تصاویر)
تصویری: Remote Robot finger playing Vintage AMI Jukebox 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.

توجه: اگر Jukebox در دست ندارید - مطالعه را متوقف نکنید! این پروژه به راحتی می تواند برای کنترل چیزهای مختلف که توسط انگشتان انسان کنترل می شود ، تصویب شود. یک مثال می تواند یک انگشت ربات باشد که زایلوفون سنتی را بازی می کند - شاید این دستورالعمل از شما ناشی می شود!

40 ساله من Rowe AMI R-81 Jukebox هنوز در حال بازی خوب تک آهنگ های وینیل قدیمی دهه 60 ، 70 و 80 است. این دستگاه پخش با وزن بیش از 160 کیلوگرم (360 پوند) به اندازه بازیکنان مدرن mp-player قابل حمل نیست ، اما در عصر اینترنت ، اکنون می توانید جوک باکس و 200 عدد صفحه وینیل را در جیب خود حمل کنید-البته تقریباً! و حتی می توانید از لیست پخش خود ذخیره شده در میکروکنترلر استفاده کنید!

ربات شگفت انگیز PlotClock در اصل برای نشان دادن زمان فعلی با کشیدن ارقام زمان بر روی صفحه پاک شدنی طراحی شده است. سازگاری من با PlotClock این است که از آن به عنوان انگشت ربات برای فشار دادن دکمه های انتخاب آهنگ Jukebox استفاده کنم.

انگشت Plotclock توسط 3 سرو سرو می شود که توسط میکروکنترلر WeMos کنترل می شوند. این شگفت انگیز (تقریبا) با Arduino Uno سازگار است و دارای قابلیت WiFi است ، بنابراین می توانید jukebox را به صورت بی سیم از هر نقطه از جهان کنترل کنید.

خامه روی کیک از برنامه باور نکردنی آسان برای استفاده از Blynk و سرور ابر Blynk به دست می آید که یک رابط کاربری تلفن همراه/رایانه لوحی زیبا با قابلیت حرکت کامل را ارائه می دهد.

مرحله 1: سخت افزار

سخت افزار
سخت افزار
سخت افزار
سخت افزار

جوک باکس

پروژه jukebox 1977 Rowe AMI R-81 است. هر جک باکس قدیمی با دکمه های انتخاب انجام می شود - با ذکر چند محدودیت در PlotClock: طرح اولیه بازوهای PlotClock می تواند مساحتی در حدود 5 12 12 سانتی متر را پوشش دهد ، بنابراین طرح دکمه jukebox (مساحت شامل همه دکمه های انتخاب) باید در این اندازه باشد. دکمه های jukeboxes قدیمی تر ممکن است نیاز به فشار بیشتری نسبت به سرویس های PlotClock داشته باشند.

AMI R-81 دارای حافظه ای است که می تواند همه 200 مورد را ذخیره کند. انتخاب ها بر اساس ترتیب ذخیره شده در مجله ضبط (نوع چرخ فلک) پخش می شوند ، نه بر اساس ترتیب انتخاب شده. چندین انتخاب برای یک رکورد فقط یک بار پخش می شود.

PlotClock

Plotclock کیت DIY تجاری است که شامل قطعات مکانیکی ، 3 سرو ، Arduino Uno R3 ، برد Extension Arduino و کابل USB است. با قیمت حدود 30 دلار خرید خوبی است (به عنوان مثال Banggood.com). آردوینو ، برد افزودنی و کابل 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 پیدا کرد. من مقادیر تقریبی را از دوستم دریافت کردم که می دانست چگونه از اتوکد استفاده کند.

با این حال ، کالیبراسیون نهایی باید با آزمایش و خطا انجام شود. با استفاده از طرح بندی دکمه های کشیده شده بر روی کاغذ ، می توانید "تست رومیزی" را برای پیدا کردن مقادیر صحیح زاویه انجام دهید.

مرحله 3: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

سیم کشی

اتصال از سرویس های Plotclock به Wemos با 5 سیم +5 ، GND ، D4 ، D5 و D6 انجام می شود. جزئیات را در تصاویر و کد مشاهده کنید.

نصب روی Jukebox

من نمی خواستم سوراخ پیچ ای روی جوک باکس 40 ساله ایجاد کنم که مدت ها بدون آسیب های اساسی زنده مانده بود. با استفاده از درزگیر لاستیکی نرم ، من یک قطعه لیست زاویه آلومینیومی را در زیر کنسول jukebox ثابت کردم. مهر و موم لاستیکی باعث محکم نگه داشتن می شود و می تواند بدون ترک هیچ گونه علامتی برداشته شود. بدنه PlotClock به دو زاویه آلومینیومی کوچک نیاز داشت تا بتواند آن را روی صفحه اکریلیک نصب کند. سپس صفحه اکریلیک با دو گیره با فنر در لیست زاویه قرار می گیرد و امکان ایجاد تنظیمات نهایی را به صورت عمودی و افقی می دهد.

مرحله 4: بلینک

بلینک
بلینک

Blynk یک برنامه رایگان برای کنترل چندین نوع میکروکنترلر از راه دور است. با Blynk می توانید به راحتی با استفاده از چندین نوع ویجت یک رابط کاربری زیبا ایجاد کنید. فقط یک ویجت برای این پروژه مورد نیاز است: ویجت Table.

مرحله 5: نرم افزار

برنامه Blynk

در سمت برنامه هیچ کد نویسی وجود ندارد. "مکالمه" بین برنامه (Blynk) و میکروکنترلر (WeMos) توسط "پین های مجازی" انجام می شود که اساساً کانال هایی برای ارسال و دریافت اطلاعات بین آن دو است. برای مثال ، پین مجازی برای ارسال شماره ردیف آهنگ های انتخاب شده از برنامه Blynk به WeMos استفاده می شود ، و Wemos بقیه موارد را کنترل می کند ، یعنی. ارسال فرمان به سروهای Plotclock.

کد WeMos

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

ویجت جدول در V2 ******************************************* ****************/ #تعریف چاپ BLYNK سریال #شامل #شامل #شامل #شامل char author = "-کد مجوز شما--"؛ // پروژه Jukebox char ssid = "-SSID شما-"؛ char pass = "-رمز عبور WIFI شما--"؛ int c [50]؛ // آرایه برای موقعیت های ضبط 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 ، lift myservo2.attach (14) ؛ // پین D5 ، myservo3.attach سمت چپ (12) ؛ // پین D6 ، myservo1.write راست (140) ؛ myservo2.write (90)؛ myservo3.write (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 V2 {String cmd = param [0].asStr ()؛ // param [0] = "انتخاب" یا "حذف انتخاب" ، param [1] = row Serial.print ("\ n جدول: BLYNK_WRITE (V2) cmd:")؛ Serial.print (cmd) ؛ int selection = c [param [1].asInt ()] ؛ // شماره ردیف انتخاب شده در param [1] Serial.println ("\ n انتخاب:")؛ Serial.println (انتخاب) ؛ process_selection (انتخاب) ؛ } void populateTable () {int i = 0؛ Serial.println ("پر کردن جدول …")؛ Blynk.virtualWrite (V2 ، "add" ، 0 ، "Be my Baby - The Supremes" ، 112) ؛ c = 112 ؛ Blynk.virtualWrite (V2 ، "add" ، 1 ، "Number One - Jerry Williams" ، 176) ؛ من ++ ؛ c = 176 ؛ Blynk.virtualWrite (V2 ، "add" ، 2 ، "All My Loving - The Beatles" ، 184) ؛ من ++ ؛ c = 184 ؛ Blynk.virtualWrite (V2 ، "افزودن" ، 3 ، "در تابستان - Mungo Jerry" ، 236) ؛ من ++ ؛ c = 236 ؛ Blynk.virtualWrite (V2 ، "add" ، 4 ، "Black Cloud - Chubby Checker" ، 155) ؛ من ++ ؛ c = 155 ؛ Blynk.virtualWrite (V2 ، "add" ، 5 ، "Mamy Blue - Pop -Tops" ، 260) ؛ من ++ ؛ c = 260 ؛ Blynk.virtualWrite (V2 ، "add" ، 6 ، "همه چیز خوب می شود - Gerry & Pacemakers" ، 145) ؛ من ++ ؛ c = 145 ؛ Blynk.virtualWrite (V2 ، "افزودن" ، 7 ، "راه من - تام جونز" ، 193) ؛ من ++ ؛ c = 193 ؛ Blynk.virtualWrite (V2 ، "add" ، 8 ، "San Bernadino - Christie" ، 149) ؛ من ++ ؛ c = 149 ؛ Blynk.virtualWrite (V2 ، "add" ، 9 ، "The Twist - Chubby Checker" ، 169) ؛ من ++ ؛ c = 169 ؛

تاخیر (1000) ؛

} void process_selection (int selection) {// تجزیه انتخاب 3 رقمی (مثلاً 178) تا 3 دکمه: int btn1 = int (selection/100) ؛ // دکمه اول Serial.println ("\ nBtn1:")؛ Serial.println (btn1)؛ if (btn1 == 1 || btn1 == 2) // دکمه اول باید 1 یا 2 باشد - در غیر این صورت تنظیم مجدد را انجام دهید {push_button (btn1) ؛ انتخاب = انتخاب - (btn1 * 100) ؛ int btn2 = int (انتخاب/10) ؛ // دکمه دوم Serial.println ("\ nBtn2:")؛ Serial.println (btn2)؛ دکمه فشار (btn2) ؛ انتخاب = انتخاب - (btn2 * 10) ؛ int btn3 = int (انتخاب) ؛ // دکمه سوم Serial.println ("\ nBtn3:")؛ Serial.println (btn3)؛ دکمه فشار (btn3) ؛ } else {push_button (11)؛ // دکمه تنظیم مجدد} // تنظیم مجدد موقعیت های سروو در صورت تمام شدن تاخیر (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 استراحت ؛ } // end switch} void set_servo_angles (int pos2، int pos3) {myservo2.write (pos2)؛ myservo3.write (pos3)؛ // موقعیت های سرو آماده است - فشار واقعی دکمه را انجام دهید: تأخیر (500) ؛ myservo1.write (60)؛ // تاخیر پایین (500) ؛ myservo1.write (140)؛ // تاخیر بالا (500) ؛ } void loop () {Blynk.run ()؛ }

مرحله ششم: مراحل آینده

ویجت ویدئو - پخش زنده ویدئو و صدا در برنامه Blynk (قبلاً آزمایش شده است - کار می کند)

ویجت Webhook - لیست پخش بارگیری در صورت نیاز از ابر (قبلاً آزمایش شده است - کار می کند)

ویجت جدول - برخی از پیشرفتهای کوچک ویجت خوش آمدید (پیشنهاداتی که برای توسعه دهندگان Blynk ارسال می شود)

توصیه شده: