Πίνακας περιεχομένων:

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 εξακολουθεί να δουλεύει καλά παίζοντας vintage βινύλια singles από τις δεκαετίες του 60, 70 και 80. Ζυγίζοντας πάνω από 160 κιλά (360 λίβρες) αυτή η συσκευή αναπαραγωγής δεν είναι τόσο φορητή όσο οι σύγχρονοι παίκτες mp, αλλά ζώντας στην εποχή του διαδικτύου, είναι πλέον δυνατό να μεταφέρετε το τζουκμποξ και 200 δίσκους βινυλίου στην τσέπη σας-ουσιαστικά φυσικά! Μπορείτε επίσης να χρησιμοποιήσετε τις δικές σας λίστες αναπαραγωγής που είναι αποθηκευμένες στον μικροελεγκτή!

Το εκπληκτικό ρομπότ PlotClock έχει σχεδιαστεί αρχικά για να δείχνει την τρέχουσα ώρα σχεδιάζοντας ψηφία χρόνου στον πίνακα που μπορεί να διαγραφεί. Η προσαρμογή μου για το PlotClock είναι να το χρησιμοποιήσω ως δάχτυλο ρομπότ για το πάτημα των κουμπιών επιλογής τραγουδιού Jukebox.

Το "δάχτυλο" του Plotclock οδηγείται από 3 σερβο που ελέγχονται από τον μικροελεγκτή WeMos. Αυτό το θαύμα είναι (σχεδόν) συμβατό με το Arduino Uno και διαθέτει δυνατότητες WiFi, οπότε είναι δυνατό να ελέγξετε το jukebox ασύρματα από οπουδήποτε στον κόσμο.

Η κρέμα στο κέικ προέρχεται από την απίστευτα εύκολη στη χρήση εφαρμογή Blynk και τον διακομιστή Blynk Cloud Server που προσφέρει μια ωραία διεπαφή χρήστη κινητού τηλεφώνου/tablet με πλήρη κινητικότητα.

Βήμα 1: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Τζουκ μποξ

Το Project jukebox είναι το 1977 Rowe AMI R-81. Οποιοδήποτε παλιό jukebox με κουμπιά επιλογής θα κάνει - σημειώνοντας μερικούς περιορισμούς από το PlotClock: Ο αρχικός σχεδιασμός των βραχιόνων του PlotClock μπορεί να καλύψει μια περιοχή περίπου 5 x 12 cm, οπότε η διάταξη του κουμπιού jukebox (περιοχή που περιλαμβάνει όλα τα κουμπιά επιλογής) πρέπει να είναι περίπου αυτού του μεγέθους. Τα κουμπιά των παλαιότερων τζουκ μποξ μπορεί να χρειάζονται περισσότερη δύναμη ώθησης από ό, τι μπορούν να προσφέρουν τα σερβο PlotClock.

Το AMI R-81 διαθέτει μνήμη όπου μπορεί να αποθηκεύσει και τις 200 επιλογές. Οι επιλογές παίζονται με βάση τη σειρά που αποθηκεύονται στο περιοδικό δίσκων (τύπος καρουζέλ) και όχι με τη σειρά που έχουν επιλεγεί. Πολλαπλές επιλογές για μία εγγραφή παίζονται μόνο μία φορά.

PlotClock

Το Plotclock είναι εμπορικά διαθέσιμο κιτ DIY που περιλαμβάνει μηχανικά μέρη, 3 σερβο, Arduino Uno R3, πίνακα επέκτασης Arduino και καλώδιο USB. Για περίπου 30 USD είναι μια καλή αγορά (π.χ. 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 μοίρες) που αντιστοιχούν στις φυσικές θέσεις για τα κουμπιά επιλογής. Οι τιμές γωνίας μπορούν να βρεθούν με τριγωνομετρία arithemitics ή χρησιμοποιώντας ένα λογισμικό CAD. Πήρα τιμές κατά προσέγγιση από τον φίλο μου που ήξερε πώς να χρησιμοποιεί το AutoCad.

Ωστόσο, η τελική βαθμονόμηση έπρεπε να γίνει με δοκιμή και λάθος. Χρήση της διάταξης κουμπιών που έχει σχεδιαστεί στο κομμάτι χαρτί Είναι δυνατό να κάνετε την "δοκιμή επιφάνειας εργασίας" για να βρείτε τις σωστές τιμές γωνίας.

Βήμα 3: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Καλωδίωση

Η σύνδεση από servot Plotclock στο Wemos γίνεται με 5 καλώδια: +5, GND, D4, D5 και D6. Δείτε λεπτομέρειες σε εικόνες και κώδικα.

Εγκατάσταση στο Jukebox

Δεν ήθελα να κάνω καμιά τρύπα στο τζουκ μποξ 40 ετών που είχε επιβιώσει τόσο καιρό χωρίς μεγάλες ζημιές. Χρησιμοποιώντας μαλακό ελαστικό στεγανωτικό, στερέωσα ένα κομμάτι λίστας γωνίας αλουμινίου κάτω από την κονσόλα jukebox. Το λαστιχένιο στεγανωτικό κρατάει σφιχτά και μπορεί να αφαιρεθεί χωρίς να αφήσει σημάδια. Το σώμα PlotClock χρειάστηκε δύο μικρές γωνίες αλουμινίου για να το τοποθετήσει στην ακρυλική πλάκα. Η ακρυλική πλάκα στη συνέχεια προσαρμόζεται στη λίστα γωνιών με δύο συνδετήρες με ελατήριο που αφήνουν τη δυνατότητα να κάνουν τις τελικές ρυθμίσεις κάθετα και οριζόντια.

Βήμα 4: Blynk

Μπλινκ
Μπλινκ

Το Blynk είναι μια δωρεάν εφαρμογή για τον έλεγχο πολλών τύπων μικροελεγκτών από απόσταση. Με το Blynk μπορείτε εύκολα να δημιουργήσετε μια ωραία διεπαφή χρήστη χρησιμοποιώντας διάφορους τύπους widgets. Απαιτείται μόνο ένα widget για αυτό το έργο: το γραφικό στοιχείο Table.

Βήμα 5: Λογισμικό

Εφαρμογή Blynk

Δεν υπάρχει κωδικοποίηση στην πλευρά της εφαρμογής. Η "συνομιλία" μεταξύ της εφαρμογής (Blynk) και του μικροελεγκτή (WeMos) γίνεται από τους "Virtual pin" που ουσιαστικά είναι κανάλια αποστολής και λήψης πληροφοριών μεταξύ αυτών των δύο. Η εικονική καρφίτσα χρησιμοποιείται για παράδειγμα για την αποστολή του αριθμού σειράς του επιλεγμένου τραγουδιού από την εφαρμογή Blynk στο WeMos και το Wemos χειρίζεται τα υπόλοιπα, δηλ. αποστολή εντολών στα σερβο Plotclock.

Κώδικας WeMos

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

Γραφικό στοιχείο πίνακα στο V2 ****************************************** ** // Jukebox project char ssid = "--ΤΟ SSID ΣΑΣ--"; char pass = "--ΤΟ WIFI PASSWORD-"; int c [50]; // Array για θέσεις εγγραφής 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); // pin D4, lift myservo2.attach (14); // pin D5, left myservo3.attach (12); // καρφίτσα D6, δεξιά myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Ειδοποίηση αμέσως κατά την εκκίνηση // String msg = "Jukebox WeMos συνδεδεμένο με:"; //Blynk.notify(msg + ssid); // καθαρός πίνακας κατά την έναρξη Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Λήψη εντολών από το γραφικό στοιχείο πίνακα V2 {String cmd = param [0].asStr (); // param [0] = "επιλογή" ή "κατάργηση επιλογής", param [1] = σειρά Serial.print ("\ nΠίνακας: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int επιλογή = c [param [1].asInt ()]; // Ο επιλεγμένος αριθμός σειράς βρίσκεται στην παράμετρο [1] Serial.println ("\ nΕπιλογή:"); Serial.println (επιλογή); διαδικασία_επιλογής (επιλογή)? } 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); 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;

καθυστέρηση (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); // κουμπί επαναφοράς} // επαναφορά θέσεων σερβο όταν τελειώσουν όλα (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); // Servo θέσεις έτοιμες - εκτελέστε το πραγματικό πάτημα του κουμπιού: καθυστέρηση (500). myservo1.write (60); // καθυστέρηση κάτω (500). myservo1.write (140); // καθυστέρηση αύξησης (500) } void loop () {Blynk.run (); }

Βήμα 6: Μελλοντικά βήματα

Γραφικό στοιχείο βίντεο - ζωντανή ροή βίντεο και ήχου στην εφαρμογή Blynk (ήδη δοκιμασμένο - λειτουργεί)

Γραφικό στοιχείο Webhook - Λίστα αναπαραγωγής κατά παραγγελία λήψη από το cloud (ήδη δοκιμασμένο - λειτουργεί)

Γραφικό στοιχείο πίνακα - μερικές μικρές βελτιώσεις στο γραφικό στοιχείο είναι ευπρόσδεκτες (προτάσεις που αποστέλλονται στους προγραμματιστές του Blynk)

Συνιστάται: