תוכן עניינים:

PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס: 6 שלבים (עם תמונות)
PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס: 6 שלבים (עם תמונות)

וִידֵאוֹ: PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס: 6 שלבים (עם תמונות)

וִידֵאוֹ: PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס: 6 שלבים (עם תמונות)
וִידֵאוֹ: Remote Robot finger playing Vintage AMI Jukebox 2024, נוֹבֶמבֶּר
Anonim
PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס
PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס
PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס
PlotClock, WeMos ו- Blynk משחקים וינטאג 'AMI ג'וקבוקס

ארבעה חידושים טכניים אפשרו את הפרויקט הזה: ה- Rowe AMI Jukebox משנת 1977, ערכת זרועות רובוט PlotClock, מיקרו -בקר WeMos/ESP 8266 ושירות Blynk App/Cloud.

הערה: אם אין לך את הג'וקבוקס בהישג יד - אל תפסיק לקרוא! ניתן לאמץ בקלות את הפרויקט הזה כדי לשלוט בדברים שונים הנשלטים על ידי אצבעות אנושיות. דוגמה אחת יכולה להיות אצבע רובוט המנגנת קסילופון מסורתי - אולי ההנחיה מגיעה ממך!

Rowe AMI R-81 ג'וקבוקס בן ה -40 שלי עדיין עובד מצויין בנגינת סינגלים ויניליים וינטאגיים משנות ה -60, ה -70 וה -80. משקלו של יותר מ -160 ק"ג (360 ק"ג) נגן זה אינו נייד בדיוק כמו נגני ה- mp המודרניים, אך חיים בעידן האינטרנט, כעת ניתן לשאת את תיבת הג'וקים ו -200 תקליטי ויניל בכיסכם-כמעט כמובן! ואתה יכול אפילו להשתמש בפלייליסטים משלך המאוחסנים במיקרו -בקר!

רובוט מדהים PlotClock תוכנן במקור להצגת הזמן הנוכחי על ידי ציור ספרות זמן על הלוח המחיק. העיבוד שלי ל- PlotClock הוא להשתמש בו כאצבע רובוטית ללחיצה על כפתורי בחירת שירים של Jukebox.

"האצבע" של Plotclock מונעת על ידי 3 סרוו ששולטים על ידי מיקרו בקר WeMos. הפלא הזה תואם (כמעט) Arduino Uno ובעל יכולות WiFi, כך שניתן לשלוט על תיבת הג'וקים באופן אלחוטי מכל מקום בעולם.

השמנת על העוגה מגיעה מאפליקציית Blynk הקלה להפליא ומשרת ה- Blynk Cloud Server שלה המעניקים ממשק משתמש נייד לטלפון/טאבלט עם ניידות מלאה.

שלב 1: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

מָקוֹל אוֹטוֹמָטִי

פרויקט הג'וקבוקס הוא 1977 Rowe AMI R-81. כל תיבת ג'וקים ישנה עם כפתורי בחירה תעשה זאת - וציינה מספר מגבלות של PlotClock: עיצוב הזרועות המקורי של PlotClock יכול לכסות שטח של כ -5 x 12 ס מ, כך שפריסת כפתורי הג'וקבוק (שטח כולל כל לחצני הבחירה) חייבת להיות בערך בגודל זה. הלחצנים של ארגזי הג'וקים הישנים יותר עשויים להזדקק לכוח דחיפה רב יותר מאשר סרווטי PlotClock יכולים לספק.

ל- AMI R-81 יש זיכרון שבו הוא יכול לאחסן את כל 200 הבחירות. הבחירות מושמעות על פי הסדר שבו הן מאוחסנות במגזין התקליטים (סוג קרוסלה), ולא לפי הסדר בו נבחרו. בחירות מרובות לרשומה אחת מושמעות פעם אחת בלבד.

PlotClock

ערכת DIY זמינה מסחרית הכוללת חלקים מכניים, 3 סרוו, Arduino Uno R3, לוח הארכה 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. קיבלתי ערכים משוערים מחבר שלי שידע כיצד להשתמש ב- AutoCad.

עם זאת, הכיול הסופי היה צריך להתבצע על ידי ניסוי וטעייה. שימוש בפריסת הכפתורים המצוירים על פיסת הנייר אפשר לבצע את "בדיקות שולחן העבודה" כדי למצוא את ערכי הזווית הנכונים.

שלב 3: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

תִיוּל

החיבור מסרוואות Plotclock ל- Wemos מתבצע עם 5 חוטים: +5, GND, D4, D5 ו- D6. ראה פרטים בתמונות ובקוד.

התקנה ב- Jukebox

לא רציתי לעשות חורי בורג לתיבת הג'וקס בת ה -40 ששרדה כל כך הרבה זמן ללא נזקים גדולים. בעזרת איטום גומי רך תיקנתי פיסת רשימת זוויות אלומיניום מתחת לקונסולת תיבת הג'וקים. איטום גומי אוחז חזק וניתן להסירו מבלי להשאיר סימנים. גוף PlotClock היה זקוק לשתי זוויות אלומיניום קטנות כדי לסייע בהתאמתו על צלחת האקריליק. צלחת האקריליק מותאמת לאחר מכן לרשימת הזוויות עם שני קליפים מעוגנים המעניקים אפשרות לבצע התאמות אחרונות אנכית ואופקית.

שלב 4: בלינק

בלינק
בלינק

Blynk היא אפליקציה חינמית לשליטה מרחוק בכמה סוגים של בקרי מיקרו. עם Blynk אתה יכול לבנות בקלות ממשק משתמש נחמד באמצעות מספר סוגי ווידג'טים. רק יישומון אחד נחוץ לפרויקט זה: ווידג'ט הטבלה.

שלב 5: תוכנה

אפליקציית Blynk

אין קידוד בצד האפליקציה. "השיחה" בין האפליקציה (Blynk) לבין המיקרו -בקר (WeMos) מטופלת על ידי "סיכות וירטואליות" המהוות בעצם ערוצים לשליחה וקבלה של מידע בין שני אלה. סיכה וירטואלית משמשת למשל לשליחת מספר השורה של השיר הנבחר מאפליקציית Blynk ל- WeMos, ו- Wemos מטפל בשאר, כלומר. שליחת פקודות אל סרווטי Plotclock.

קוד WeMos

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

ווידג'ט שולחן ב- V2 ******************************************* ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-קוד AUTHY שלך-"; // פרויקט Jukebox char ssid = "-SSID שלך-"; char pass = "-סיסמת ה- WIFI שלך--"; int c [50]; // מערך לעמדות שיא של ג'וקבוקס (100-299) Servo myservo1; // הרמת סרוו myservo2; // סרוו זרוע שמאל myservo3; // זרוע ימין int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; הגדרת חלל () {myservo1.attach (2); // סיכה D4, הרם את myservo2.attach (14); // סיכה D5, שמאל myservo3.attach (12); // סיכה D6, מימין myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // הודע מייד בעת ההפעלה // String msg = "WeMos Jukebox מחובר ל:"; //Blynk.notify(msg + ssid); // טבלה נקה בהתחלה Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // קבל פקודות מווידג'ט טבלה V2 {מחרוזת cmd = param [0].asStr (); // param [0] = "בחר" או "בטל את הבחירה", param [1] = שורה Serial.print ("\ n טבלה: BLYNK_WRITE (V2) cmd:"); הדפסה סידורית (cmd); int selection = c [param [1].asInt ()]; // מספר השורה שנבחר נמצא ב- param [1] Serial.println ("\ nSelection:"); Serial.println (בחירה); בחירת תהליך (בחירה); } void populateTable () {int i = 0; Serial.println ("שולחן אוכלוסייה …"); Blynk.virtualWrite (V2, "הוסף", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "הוסף", 1, "מספר אחת - ג'רי וויליאמס", 176); i ++; ג = 176; Blynk.virtualWrite (V2, "הוסף", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "הוסף", 3, "בקיץ - מונגו ג'רי", 236); i ++; c = 236; Blynk.virtualWrite (V2, "add", 4, "Black Cloud - Chubby Checker", 155); i ++; ג = 155; Blynk.virtualWrite (V2, "הוסף", 5, "מאמי בלו - פופ -טופים", 260); i ++; c = 260; Blynk.virtualWrite (V2, "הוסף", 6, "זה הולך להיות בסדר - גרי וקוצבי לב", 145); i ++; ג = 145; Blynk.virtualWrite (V2, "הוסף", 7, "הדרך שלי - טום ג'ונס", 193); i ++; c = 193; Blynk.virtualWrite (V2, "הוסף", 8, "סן ברנאדינו - כריסטי", 149); i ++; c = 149; Blynk.virtualWrite (V2, "הוסף", 9, "הטוויסט - בודק שמנמן", 169); i ++; ג = 169;

עיכוב (1000);

} void process_selection (int selection) {// מנתח בחירה בת 3 ספרות (למשל 178) עד 3 לחצנים: int btn1 = int (selection/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); } אחר {כפתור דחיפה (11); // כפתור איפוס} // איפוס עמדות סרוו כאשר כל העיכוב נעשה (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// זה נקרא 3 פעמים עבור כל בחירה // לחיצת הלחצן בפועל מתבצעת לאחר כל כפתור (מצא 'לחץ על הלחצן בפועל') (מקרה 1): set_servo_angles (134, 136); // הפסקה אחת; מקרה 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); } לולאת חלל () {Blynk.run (); }

שלב 6: צעדים עתידיים

ווידג'ט ווידיאו - שידור חי וידאו ואודיו לאפליקציית Blynk (כבר נבדק - עובד)

ווידג'ט Webhook - רשימת השמעה על פי דרישה מהענן (כבר נבדק - עובד)

ווידג'ט שולחן - כמה שיפורים קטנים ביישומון יתקבלו בברכה (הצעות נשלחות למפתחי Blynk)

מוּמלָץ: