Cuprins:

PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox: 6 pași (cu imagini)
PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox: 6 pași (cu imagini)

Video: PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox: 6 pași (cu imagini)

Video: PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox: 6 pași (cu imagini)
Video: Two Servo Clock using Arduino IDE to program ESP8285 (ESP8266 compatible) board. 2024, Noiembrie
Anonim
PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos și Blynk Playing Vintage AMI Jukebox

Patru inovații tehnice au făcut posibil acest proiect: Rowe AMI Jukebox din 1977, kitul brațului robotului PlotClock, microcontrolerul WeMos / ESP 8266 și serviciul Blynk App / Cloud.

NOTĂ: Dacă nu aveți la îndemână Jukebox - nu încetați să citiți! Acest proiect poate fi adoptat cu ușurință pentru a controla diferite lucruri controlate de degetele umane. Un exemplu ar putea fi un deget robot care cântă la xilofon tradițional - poate că acest lucru instructiv vine de la tine!

Rowe AMI R-81 Jukebox, în vârstă de 40 de ani, funcționează încă bine cântând single-uri de vinil de epocă din anii '60, '70 și 80. Cu o greutate de peste 160 kg (360 lbs), acest player nu este la fel de portabil ca playerele MP moderne, dar trăind în epoca internetului, acum este posibil să transporti tonomatul și 200 de discuri de vinil în buzunar - practic, desigur! Și puteți utiliza chiar și propriile playlisturi stocate în microcontroler!

Robotul uimitor PlotClock este conceput inițial pentru a arăta ora curentă, trasând cifre de timp pe placa ștergabilă. Adaptarea mea pentru PlotClock este să îl folosesc ca deget robot pentru apăsarea butoanelor de selecție a melodiei Jukebox.

„Degetul” Plotclock este acționat de 3 servouri controlate de microcontrolerul WeMos. Această minune este (aproape) compatibilă cu Arduino Uno și are capacități WiFi, astfel încât este posibil să controlați tonomatul fără fir de oriunde din lume.

Crema de pe tort provine din aplicația incredibilă ușor de utilizat Blynk și serverul lor Blynk Cloud, oferind o interfață de utilizare a telefonului mobil / tabletă cu mobilitate completă.

Pasul 1: Hardware

Hardware
Hardware
Hardware
Hardware

Tonomat

Jukebox-ul proiectului este 1977 Rowe AMI R-81. Orice tonomat vechi cu butoane de selecție va funcționa - menționând câteva limitări ale PlotClock: designul original al brațelor PlotClock poate acoperi o suprafață de aproximativ 5 x 12 cm, astfel încât aspectul butonului tonomatului (zona care include toate butoanele de selecție) trebuie să fie de aproximativ acea dimensiune. Este posibil ca butoanele tonomatelor mai vechi să aibă nevoie de mai multă putere de împingere decât pot oferi servo-urile PlotClock.

AMI R-81 are o memorie în care poate stoca toate cele 200 de selecții. Selecțiile sunt redate pe baza ordinii în care sunt stocate în revista de înregistrări (tip carusel), nu în ordinea în care sunt selectate. Selecțiile multiple pentru o singură înregistrare sunt redate o singură dată.

PlotClock

Plotclock este un kit DIY disponibil în comerț, care include piese mecanice, 3 servo-uri, Arduino Uno R3, placa extensie Arduino și cablu USB. Pentru aproximativ 30 USD, aceasta este o cumpărare bună (de exemplu, Banggood.com). Arduino, placa de extensie și cablul USB nu sunt utilizate pentru acest proiect.

Există mai multe tutoriale bune pe internet / YouTube pentru a compune Plotclock - de ex. aceasta: instrucțiuni PlotClock

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

WeMos

WeMos D1 R2 este un microcontroler bazat pe ESP8266. Poate fi programat folosind Arduino IDE și are capacități WiFi, deci este o piesă hardware perfectă pentru acest proiect.

Pasul 2: Calibrare

Calibrare
Calibrare

Calibrarea este sarcina de a găsi valori precise ale unghiurilor pentru unghiurile servo (între 0 și 180 de grade) pentru a corespunde pozițiilor fizice pentru butoanele de selecție. Valorile unghiului pot fi găsite prin aritemitici de trigonometrie sau folosind un software CAD. Am primit valori aproximative de la prietenul meu care știa să folosească AutoCad.

Cu toate acestea, calibrarea finală trebuia făcută prin încercare și eroare. Utilizarea aspectului butonului desenat pe bucata de hârtie Este posibil să efectuați „testarea desktopului” pentru a găsi valorile unghiului corecte.

Pasul 3: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Cablare

Conexiunea de la servo-uri Plotclock la Wemos se face cu 5 fire: +5, GND, D4, D5 și D6. Vedeți detalii în imagini și cod.

Instalarea pe Jukebox

Nu am vrut să fac găuri de șurub la tonomatul vechi de 40 de ani care a supraviețuit atât de mult fără daune majore. Folosind un material de etanșare din cauciuc moale, am fixat o bucată de listă de unghiuri din aluminiu sub consola jukebox. Etanșantul din cauciuc face o fixare strânsă și poate fi îndepărtat fără a lăsa urme. Corpul PlotClock avea nevoie de două unghiuri mici de aluminiu pentru a-l monta pe placa acrilică. Placa acrilică este apoi montată pe lista unghiurilor cu două cleme cu arc, lăsând posibilitatea de a face ajustările finale pe verticală și orizontală.

Pasul 4: Blynk

Blynk
Blynk

Blynk este o aplicație gratuită pentru controlul de la distanță a mai multor tipuri de microcontrolere. Cu Blynk puteți crea cu ușurință o interfață de utilizator plăcută folosind mai multe tipuri de widget-uri. Este necesar un singur widget pentru acest proiect: widgetul Table.

Pasul 5: Software

Aplicația Blynk

Nu există codificare în partea aplicației. „Conversația” dintre aplicație (Blynk) și microcontroler (WeMos) este gestionată de „pini virtuali”, care sunt în esență canale pentru trimiterea și primirea de informații între cele două. Pinul virtual este de exemplu folosit pentru a trimite numărul de rând al melodiei selectate din aplicația Blynk către WeMos, iar Wemos se ocupă de restul, adică. trimiterea de comenzi către servo-urile Plotclock.

Cod WeMos

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

Widget de masă la V2 *********************************************** **************** / #define BLYNK_PRINT Serial #include #include #include char auth = "--CODUL AUTORULUI TĂU--"; // Jukebox project char ssid = "--YOUR SSID--"; char pass = "- PAROLA TA WIFI--"; int c [50]; // Matrice pentru pozițiile de înregistrare Jukebox (100-299) Servo myservo1; // ridicarea Servo myservo2; // brațul stâng Servo myservo3; // brațul drept int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // pinul D4, ridicați myservo2.attach (14); // pinul D5, stânga myservo3.attach (12); // pinul D6, dreapta myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Notificați imediat la pornire // String msg = "Jukebox WeMos conectat la:"; //Blynk.notify(msg + ssid); // ștergeți tabelul la început Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Primiți comenzi din widgetul Table V2 {String cmd = param [0].asStr (); // param [0] = "selectați" sau "deselectați", param [1] = rând Serial.print ("\ nTabel: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selection = c [param [1].asInt ()]; // Numărul rândului selectat se află în param [1] Serial.println ("\ nSelecție:"); Serial.println (selecție); selectare_proces (selecție); } void populateTable () {int i = 0; Serial.println ("Tabel populator …"); 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 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;

întârziere (1000);

} void process_selection (int selection) {// analizați selecția din 3 cifre (ex. 178) la 3 butoane: int btn1 = int (selection / 100); // primul buton Serial.println ("\ nBtn1:"); Serial.println (btn1); dacă (btn1 == 1 || btn1 == 2) // primul buton trebuie să fie 1 sau 2 - în caz contrar, resetați {push_button (btn1); selectie = selectie - (btn1 * 100); int btn2 = int (selecție / 10); // al doilea buton Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); selectie = selectie - (btn2 * 10); int btn3 = int (selecție); // al treilea buton Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } else {push_button (11); // buton reset} // resetează pozițiile servo când totul a fost întârziat (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// aceasta se numește de 3 ori pentru fiecare selecție // apăsarea butonului efectiv se face după fiecare buton (găsiți „apăsarea butonului real”) comutator (btn) {caz 1: set_servo_angles (134, 136); // 1 pauză; caz 2: set_servo_angles (128, 110); // 2 pauza; caz 3: set_servo_angles (112, 88); // 3 pauză; caz 4: set_servo_angles (89, 68); // 4 pauză; caz 5: set_servo_angles (62, 55); // 5 pauză; caz 6: set_servo_angles (172, 131); // 6 pauză; caz 7: set_servo_angles (163, 106); // 7 pauză; caz 8: set_servo_angles (140, 83); // 8 pauză; caz 9: set_servo_angles (104, 58); // 9 pauză; caz 0: set_servo_angles (75, 36); // 0 pauza; cazul 11: set_servo_angles (36, 30); // 11 pauză; } // end switch} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Poziții servo gata - efectuați apăsarea butonului efectiv: întârziere (500); myservo1.write (60); // întârziere în jos (500); myservo1.write (140); // întârziere până (500); } void loop () {Blynk.run (); }

Pasul 6: Pași viitori

Widget video - flux video și audio live în aplicația Blynk (deja testat - funcționează)

Widget Webhook - descărcare playlist la cerere din cloud (deja testat - funcțional)

Widget de masă - unele mici îmbunătățiri ale widgetului sunt binevenite (sugestii trimise dezvoltatorilor Blynk)

Recomandat: