Sommario:
- Passaggio 1: hardware
- Passaggio 2: calibrazione
- Passaggio 3: assemblaggio
- Passaggio 4: Blynk
- Passaggio 5: software
- Passaggio 6: passaggi futuri
Video: PlotClock, WeMos e Blynk suonano il jukebox AMI vintage: 6 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Quattro innovazioni tecniche hanno reso possibile questo progetto: il Jukebox AMI Rowe del 1977, il kit braccio robotico PlotClock, il microcontrollore WeMos/ESP 8266 e il servizio Blynk App/Cloud.
NOTA: se non hai il Jukebox a portata di mano, non smettere di leggere! Questo progetto può essere facilmente adottato per controllare varie cose controllate da dita umane. Un esempio potrebbe essere un dito robot che suona lo xilofono tradizionale: forse quell'istruzione viene da te!
Il mio Jukebox Rowe AMI R-81 di 40 anni funziona ancora bene suonando singoli in vinile vintage degli anni '60, '70 e '80. Con un peso di oltre 160 kg (360 libbre) questo lettore non è così portatile come i moderni lettori mp, ma vivendo nell'era di Internet, ora è possibile portare il jukebox e 200 dischi in vinile in tasca, praticamente ovviamente! E puoi persino usare le tue playlist memorizzate nel microcontrollore!
L'incredibile robot PlotClock è stato originariamente progettato per mostrare l'ora corrente disegnando le cifre dell'ora sulla lavagna cancellabile. Il mio adattamento per PlotClock è di usarlo come un dito robot per premere i pulsanti di selezione dei brani di Jukebox.
Il "dito" di Plotclock è pilotato da 3 servocomandi controllati dal microcontrollore WeMos. Questo pezzo di meraviglia è (quasi) compatibile con Arduino Uno e dispone di funzionalità WiFi, quindi è possibile controllare il jukebox in modalità wireless da qualsiasi parte del mondo.
La crema sulla torta viene dall'incredibile app Blynk facile da usare e dal loro Blynk Cloud Server che offre una bella interfaccia utente per telefono cellulare/tablet con piena mobilità.
Passaggio 1: hardware
Juke-box
Il jukebox del progetto è il 1977 Rowe AMI R-81. Andrà bene qualsiasi vecchio jukebox con pulsanti di selezione, notando alcune limitazioni di PlotClock: il design originale delle braccia di PlotClock può coprire un'area di circa 5 x 12 cm, quindi la disposizione dei pulsanti del jukebox (l'area che include tutti i pulsanti di selezione) deve essere di quelle dimensioni. I pulsanti dei vecchi jukebox potrebbero richiedere più potenza di spinta di quella che i servi PlotClock possono fornire.
AMI R-81 ha una memoria in cui può memorizzare tutte le 200 selezioni. Le selezioni vengono riprodotte in base all'ordine in cui sono memorizzate nel caricatore di dischi (tipo a carosello), non nell'ordine in cui vengono selezionate. Le selezioni multiple per un record vengono riprodotte solo una volta.
PlotOrologio
Plotclock è un kit fai-da-te disponibile in commercio che include parti meccaniche, 3 servi, Arduino Uno R3, scheda di estensione Arduino e cavo USB. Per circa 30 USD questo è un buon acquisto (es. Banggood.com). Arduino, scheda di estensione e cavo USB non vengono utilizzati per questo progetto.
Ci sono diversi buoni tutorial su Internet/YouTube per comporre il Plotclock, ad es. questo: istruzioni PlotClock
static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf
WeMos
WeMos D1 R2 è un microcontrollore basato su ESP8266. Può essere programmato utilizzando Arduino IDE e dispone di funzionalità WiFi, quindi è un componente hardware perfetto per questo progetto.
Passaggio 2: calibrazione
La calibrazione è il compito per trovare valori angolari precisi per gli angoli del servo (tra 0 e 180 gradi) per corrispondere alle posizioni fisiche per i pulsanti di selezione. I valori degli angoli possono essere trovati mediante l'aritemitica della trigonometria o utilizzando un software CAD. Ho ottenuto valori approssimativi dal mio amico che sapeva come usare AutoCad.
Tuttavia, la calibrazione finale doveva essere effettuata per tentativi ed errori. Utilizzando la disposizione dei pulsanti disegnata sul pezzo di carta È possibile eseguire il "test del desktop" per trovare i valori di angolazione corretti.
Passaggio 3: assemblaggio
Cablaggio
La connessione dai servi Plotclock a Wemos avviene con 5 fili: +5, GND, D4, D5 e D6. Vedi i dettagli nelle immagini e nel codice.
Installazione sul Jukebox
Non volevo fare buchi per le viti al jukebox di 40 anni che era sopravvissuto così a lungo senza grossi danni. Usando un sigillante in gomma morbida ho fissato un pezzo di lista angolare in alluminio sotto la console del jukebox. Il sigillante in gomma garantisce una tenuta ermetica e può essere rimosso senza lasciare segni. Il corpo di PlotClock aveva bisogno di due piccoli angoli di alluminio per aiutarlo a montarlo sulla lastra acrilica. La lastra acrilica viene quindi montata sull'elenco degli angoli con due clip caricate a molla che lasciano la possibilità di effettuare regolazioni finali verticalmente e orizzontalmente.
Passaggio 4: Blynk
Blynk è un'app gratuita per il controllo remoto di diversi tipi di microcontrollori. Con Blynk puoi facilmente creare una bella interfaccia utente utilizzando diversi tipi di widget. C'è solo un widget necessario per questo progetto: il widget Tabella.
Passaggio 5: software
App Blynk
Non c'è codifica sul lato dell'app. La "conversazione" tra l'app (Blynk) e il microcontrollore (WeMos) è gestita da "pin virtuali" che essenzialmente sono canali per l'invio e la ricezione di informazioni tra i due. Il pin virtuale viene utilizzato ad esempio per inviare il numero di riga del brano selezionato dall'app Blynk a WeMos e Wemos gestisce il resto, ad es. inviare comandi ai servo Plotclock.
Codice WeMos
/**************************************************************
Widget della tabella in V2 ********************************************* ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "--IL TUO CODICE AUTENTICO--"; //Progetto Jukebox char ssid = "--IL TUO SSID--"; char pass = "--LA TUA PASSWORD WIFI--"; int c[50]; //Array per posizioni di registrazione Jukebox (100-299) Servo myservo1; //sollevando Servo myservo2; //braccio sinistro Servo myservo3; //braccio destro int pos1 = 0; int posizione2 = 0; int pos3 = 0; int btn=0; void setup() { myservo1.attach(2); // pin D4, solleva myservo2.attach(14); // pin D5, sinistro myservo3.attach(12); // pin D6, a destra myservo1.write(140); myservo2.write(90); myservo3.write(90); Serial.begin(115200); Blynk.begin(auth, ssid, pass); // Notifica immediatamente all'avvio //String msg = "Jukebox WeMos connesso a: "; //Blynk.notify(msg + ssid); //cancella la tabella all'avvio Blynk.virtualWrite(V2, "clr"); popolaTable(); } BLYNK_WRITE(V2) //Ricevi comandi dal widget Tabella V2 { String cmd = param[0].asStr(); //param[0]="seleziona" o "deseleziona", param[1]=riga Serial.print("\nTable: BLYNK_WRITE(V2) cmd: "); Serial.print(cmd); int selezione = c[param[1].asInt()]; //Il numero di riga selezionato è in param[1] Serial.println("\nSelection: "); Serial.println(selezione); process_selection(selezione); } void populateTable() { int i = 0; Serial.println("Popolazione tabella…"); Blynk.virtualWrite(V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite(V2, "aggiungi", 1, "Numero uno - Jerry Williams", 176); io++; c = 176; Blynk.virtualWrite(V2, "add", 2, "All My Loving - The Beatles", 184); io++; c = 184; Blynk.virtualWrite(V2, "add", 3, "In the Summertime - Mungo Jerry", 236); io++; c = 236; Blynk.virtualWrite(V2, "add", 4, "Black Cloud - Chubby Checker", 155); io++; c = 155; Blynk.virtualWrite(V2, "add", 5, "Mamy Blue - Pop-Top", 260); io++; c = 260; Blynk.virtualWrite(V2, "add", 6, "Andrà tutto bene - Gerry & Pacemakers", 145); io++; c = 145; Blynk.virtualWrite(V2, "aggiungi", 7, "A modo mio - Tom Jones", 193); io++; c = 193; Blynk.virtualWrite(V2, "add", 8, "San Bernardino - Christie", 149); io++; c = 149; Blynk.virtualWrite(V2, "add", 9, "The Twist - Chubby Checker", 169); io++; c = 169;
ritardo(1000);
} void process_selection (selezione int) { //analizza la selezione a 3 cifre (es. 178) in 3 pulsanti: int btn1 = int(selezione/100); //primo pulsante Serial.println("\nBtn1: "); Serial.println(btn1); if (btn1 == 1 || btn1 == 2) //il primo pulsante deve essere 1 o 2 - altrimenti esegui il reset { push_button(btn1); selezione = selezione - (btn1 * 100); int btn2 = int(selezione/10); //secondo pulsante Serial.println("\nBtn2: "); Serial.println(btn2); pulsante_pulsante(btn2); selezione = selezione - (btn2 * 10); int btn3 = int(selezione); //terzo pulsante Serial.println("\nBtn3: "); Serial.println(btn3); pulsante_pulsante(btn3); } else { push_button(11); //pulsante di reset } //reimposta le posizioni dei servi quando tutto è terminato delay(2000); mioservo1.write(140); myservo2.write(90); myservo3.write(90);} void push_button(int btn) { //questo viene chiamato 3 volte per ogni selezione //la pressione effettiva del pulsante viene eseguita dopo ogni pulsante (trova 'pulsante effettivo') switch (btn) { case 1: set_servo_angles (134, 136); //1 pausa; caso 2: set_servo_angles (128, 110); // pausa; caso 3: set_servo_angles (112, 88); // pausa; caso 4: set_servo_angles (89, 68); // pausa; caso 5: set_servo_angles (62, 55); ///5 pausa; caso 6: set_servo_angles (172, 131); // pausa; caso 7: set_servo_angles (163, 106); //7 pausa; caso 8: set_servo_angles (140, 83); //8 pausa; caso 9: set_servo_angles (104, 58); //9 pausa; caso 0: set_servo_angles (75, 36); //0 pausa; caso 11: set_servo_angles (36, 30); // pausa; } //end switch } void set_servo_angles(int pos2, int pos3) { myservo2.write(pos2); mioservo3.write(pos3); //Posizioni servo pronte - esegue l'effettiva pressione del pulsante: delay(500); mioservo1.write(60); //ritardo alla discesa (500); mioservo1.write(140); //up delay(500); } ciclo vuoto() { Blynk.run(); }
Passaggio 6: passaggi futuri
Widget video - streaming video e audio in diretta all'app Blynk (già testato - funzionante)
Widget Webhook - download on demand di playlist da cloud (già testato - funzionante)
Widget della tabella - sono ben accetti alcuni piccoli miglioramenti al widget (suggerimenti inviati agli sviluppatori di Blynk)
Consigliato:
Robot controllato Wi-Fi che utilizza Wemos D1 ESP8266, Arduino IDE e app Blynk: 11 passaggi (con immagini)
Robot controllato Wi-Fi utilizzando Wemos D1 ESP8266, Arduino IDE e app Blynk: in questo tutorial ti mostro come realizzare un carro armato robotico controllato da Wi-Fi controllato da uno smartphone utilizzando l'app Blynk. In questo progetto è stata utilizzata una scheda ESP8266 Wemos D1, ma possono essere utilizzati anche altri modelli di piastre (NodeMCU, Firebeetle, ecc.)
Piastrelle per pianoforte che suonano il braccio robotico: 5 passaggi
Piano Tiles Playing Robot Arm: il gruppo è composto da 2 Automation Engineer di UCN, che hanno avuto un'idea brillante che siamo motivati a realizzare e sviluppare. L'idea si basa su una scheda Arduino che controlla un braccio robotico. La scheda Arduino è il cervello dell'operazione e
Invia temperatura e umidità all'app Blynk (Wemos D1 Mini Pro).: 15 passaggi (con immagini)
Invia temperatura e umidità all'app Blynk (Wemos D1 Mini Pro).: Questo Instructable esamina l'utilizzo di Wemos D1 Mini Pro per inviare dati (temperatura e umidità) all'APP Blynk
Steampunk Pi Jukebox con Google Music: 11 passaggi (con immagini)
Steampunk Pi Jukebox con Google Music: ATTENZIONE!! Se tenti di fare un progetto simile, capisci che hai il potenziale di imbatterti in amianto in una vecchia radio, in genere ma non limitato a qualche tipo di scudo termico o isolamento. Per favore, fai le tue ricerche e prendi precauzioni
Rilevatore di movimento con notifiche Blynk (WeMos D1 Mini + HC-SR04): 4 passaggi (con immagini)
Rilevatore di movimento con notifiche Blynk (WeMos D1 Mini + HC-SR04): VOTA per questo progetto nel Wireless Contest. Grazie! Aggiornamento n.2 - Poche modifiche (versione 2.2), puoi impostare il tuo sensore (intervallo e nome) direttamente nella definizione. Inoltre, a volte capitava che il sensore leggesse valori errati e inviasse notifiche