Non ci sono prodotti a carrello.
Con il driver per servomotori Octopus facciamo suonare una pianola giocattolo che riprodurrร motivi musicali nati con le suonerie Nokia.
Da parecchi anni le tastiere elettroniche, in special modo i sintetizzatori musicali, hanno la possibilitร di suonare โda soliโ brani, opportunamente pilotati tramite lโinterfaccia MIDI o riproducendo file in formato standard caricati da supporti esterni di memorizzazione di massa.
Ma quello che ci siamo proposti di fare รจ far suonare motivi a nostra scelta a strumenti musicali piรน abbordabili, come piccole tastiere musicali e pianole giocattolo acquistabili nei centri commerciali per poche decine di euro, che per evidenti ragioni non dispongono di interfacce dati o slot per supporti di memorizzazione di massa e che quindi non possono essere pilotate elettronicamente. In questi casi lโunica soluzione รจ farle suonare in maniera tradizionale, agendo sui tasti con qualcosa che trasformi le note dei brani musicali in comandi meccanici. Insomma, unโinterfaccia da elettronica a meccanica.
Questo lo abbiamo fatto e ha dato origine al progetto descritto in queste pagine, ossia un gadget che abbiamo sviluppato affinchรฉ possa essere utilizzato in varie occasioni, come ad esempio da demo in una vetrina o nel reparto giocattoli di un negozio, come pure da intrattenimento per grandi e piccoli in eventi e manifestazioni, per esempio, di robotica applicata.
Il progetto รจ nato dal desiderio di poter riprodurre con una tastiera musicale low cost (una tastiera giocattolo) delle musiche standard, perรฒ suonandole premendo effettivamente i tasti, pur senza metterci un dito. Abbiamo quindi pensato a una soluzione automatizzata che consiste in un piccolo robot che suona per noi i tasti della pianola.
Le musiche che abbiamo scelto non sono file audio qualsiasi ma, per praticitร , abbiamo pensato ai ring tone (vale a dire le suonerie) sviluppati dalla Nokia e definiti RTTTL (acronimo di Ring Tone Text Trasfer Language), โsuonatiโ dai cellulari del costruttore.
La nostra piattaforma robotica, che va applicata alla pianola adattandosi a forma e distanza dei tasti di questโultima, รจ composta da un โcervelloโ basato sulla ormai popolare scheda Fishino Uno (ma si puรฒ benissimo utilizzare un Arduino UNO) e da un sistema di attuazione realizzato col driver Octopus, giร presentato in questo post.
Il tutto รจ stato โcarrozzatoโ in stile fondale marino, con il risultato visibile nella Fig. 1.
La gestione dei toni รจ affidata ad uno sketch appositamente creato per la nostra board, mentre il controllo fisico dei tasti รจ ottenuto mediante un sistema elettromeccanico composto da 24 servomotori (cod. SERVO206 del catalogo Futura Elettronica, reperibili su www.futurashop.it) gestiti da due shield Octopus (codice OCTOPUS Futura Elettronica) a cui sono collegati gli otto tentacoli di tre amene piovre color rosso stampate in PLA con la stampante 3D, azionati dai servo mediante un semplice ma preciso sistema di leveraggio (Fig. 2).
Tramite i 24 servo รจ possibile gestire due ottave (sulla pianola da noi utilizzata corrispondono alla 4^ e alla 5^ del pianoforte), quindi 12 tasti per ottava corrispondenti alle 7 note intere (Do, Re ecc..) piรน i semitoni (ad esempio Do Diesis o RE Bemolle).
Per chi volesse approfondire lโargomento, i tasti di ciascuna ottava sono convenzionalmente i seguenti:
C = nota DO
C# = DO Diesis o RE Bemolle
D = nota RE
D# = RE Diesis o Mi Bemolle
E = nota MI
F = nota FA
F# = FA Diesis o Sol Bemolle
G = nota SOL
G# = SOL Diesis o LA Bemolle
A = nota LA
A# = LA Diesis o SI Bemolle
B = nota SI
Le note intere sono i tasti bianchi e quelli neri rappresentano i semitoni standard della tastiera del pianoforte.
Schema di cablaggio della piovra che suona il piano con OCTOPUS
Il sistema
Bene, detto ciรฒ possiamo entrare nel vivo del progetto, che consta di unโelettronica e una meccanica (lโinsieme รจ visibile, smontato, nella Fig. 2) quindi ci limitiamo a dire che gli shield sono due e vengono impilati uno sullโaltro su Fishino Uno. Gli shield sono gestiti attraverso lโIยฒC-Bus di questโultimo.
Sebbene gli shield Octopus dispongano di 16 uscite per controllo di servo, nella nostra applicazione ognuna ne pilota 12; le schede prelevano lโalimentazione per i servocomandi dal pin Vin di Fishino (qui arrivano circa 5,25V) e quella per il proprio funzionamento dal pin 5V. Lโintero sistema viene alimentato da un alimentatore switching da 6V – 2A che fornisce tutta la corrente necessaria alla Fishino Uno.
Lโinterfaccia utente รจ rappresentata da un display LCD 2 righe e 16 caratteri alfanumerici (cod. LCD1602ABLU Futura Elettronica) a cui รจ stata applicata unโinterfaccia IยฒC (cod. LCDI2CINTERFACE Futura Elettronica) e da un tastierino a 5 pulsanti che permettono di selezionare il tono che si desidera riprodurre ed anche di effettuare la taratura dei servo ed eseguire un test di verifica della pressione dei tasti della pianola.
Agli header sono collegati i cinque pulsanti, come segue:
Mem/PLAY -> pin 2
Piรน -> pin 8
Meno -> pin 6
Esci/STOP -> pin 3
R -> pin di reset/riavvio di Fishino
Invece il display รจ collegato cosรฌ:
SDA display -> SDA
SCL display -> SCL
Vcc display -> 5V
GND display -> GND.
I pin sono, anche in questo caso, quelli degli header. Lโutilizzo di un display con interfaccia IยฒC permette di limitare il numero minimo di pin della board Fishino Uno utilizzati.
Nella Fig. 3 potete vedere come abbiamo realizzato il pannello di controllo del nostro sistema, che poi รจ stato collocato nella parte posteriore dellโinsieme, appena sotto allโelettronica di controllo formata da Fishino Uno e dagli shield Octopus.
Parte meccanica
Dopo aver analizzato lโelettronica del progetto, occupiamoci della meccanica, che รจ ugualmente importante perchรฉ รจ la sezione attuatrice che interviene fisicamente sui tasti della pianola.
Tutta la struttura necessaria a sostenere i 24 tentacoli e a ospitare gli altrettanti servomotori (provvisti ciascuno di un braccetto avvitato allโalberino con le viti in dotazione), nonchรฉ le schede elettroniche (il telaio, quindi…) รจ stata progettata con Google SketchUp e realizzata mediante stampa 3D con del PLA; il telaio vero e proprio si stampa utilizzando il file STL da noi fornito insieme agli altri file del progetto (sketch ecc.) nella sezione download in fondo a questo post.
Al telaio devono poi essere applicati i particolari metallici richiesti per lโassemblaggio delle parti, come il fulcro dei tentacoli; piรน esattamente, il telaio consta di piรน parti (lati, elemento di congiunzione posteriore, traversa anteriore…) da unire mediante viti.
Ciascun servocomando aziona un tentacolo (anche questo realizzato per stampa 3D il cui file STL รจ reperibile sul nostro sito insieme agli altri file del progetto) mediante unโastina di rinvio (opportunamente sagomata) ottenuta stirando un filo in acciaio inox da 0,9 mm di diametro (Fig. 4).
Il filo va poi ripiegato per vincolarlo sia dalla parte dellโalbero del servocomando, sia dal lato del foro previsto nel tentacolo corrispondente (Fig. 5).
Lโinsieme dei tentacoli รจ libero di oscillare per assecondare il movimento imposto dai servocomandi; allo scopo ogni tentacolo, disposto affiancato agli altri, รจ imperniato su unโasta in metallo da 4 mm di diametro.
La lunghezza delle aste di rinvio non รจ uguale ma va scelta di volta in volta sulla base delle distanze tra il braccetto del servocomando e la base della leva di attuazione del tentacolo corrispondente, come si vede nella Fig. 6, che mostra lโinsieme della meccanica di un lato (manca la parte destra dei servocomandi e il relativo sostegno.
La Fig. 7 dettaglia, invece, lโaggancio delle aste alla base dei tentacoli, Le fotografie fatte al prototipo chiariscono meglio dโogni parola come si assembla la struttura meccanica, la quale, una volta terminata, va montata a ridosso della pianola, frontalmente, in modo che ogni tentacolo prema uno dei tasti.
Siccome รจ probabile che la pianola si sposti durante il funzionamento a causa della pressione esercitata dai tentacoli, รจ opportuno vincolare il telaio alla stessa: ad esempio con delle strisce metalliche ripiegate a squadra allโaltezza del fondo dello strumento musicale, oppure appoggiando e avvitando la meccanica a una piastra di base in legno o plastica (forex, per esempio…) e fissando alla stessa, una volta determinata la posizione ottimale, la pianola mediante squadrette in plastica opportunamente stampate in 3D e avvitate alla piastra di base).
La Fig. 8 propone un possibile fissaggio dellโinsieme.
Funzioni dei tasti
Bene, descritta anche la parte meccanica possiamo vedere come si utilizza e quindi in che modo possiamo far suonare il nostro speciale strumento.
Descriviamo di seguito il funzionamento dei pulsanti.
โข Mem/PLAY: permette di avviare lโesecuzione del tono occupante la posizione visualizzata sul display. Se tenuto premuto allโaccensione permette di entrare in โModalitร impostazione posizione servoโ.
โข Piรน: permette di passare al tono successivo. In โModalitร impostazione posizione servoโ permette di modificare la posizione del tentacolo al fine di premere + o – il tasto della pianola. Se viene tenuto premuto allโaccensione permette di entrare in modalitร TEST.
โข Meno: permette di passare al tono precedente. In โModalitร impostazione posizione servoโ permette di modificare la posizione del tentacolo al fine di premere + o – il tasto della pianola. Se tenuto premuto allโaccensione permette di entrare in modalitร TEST.
โข Esci/STOP: permette di interrompere lโesecuzione di un tono. Se viene premuto quando ci si trova in โModalitร impostazione posizione servoโ permette di uscire da tale modalitร e di tornare alla schermata principale.
โข R: permette di resettare e/o riavviare il sistema.
Reset della posizione di tutti i servo
Prima di applicare la leva di comando, facente capo al tentacolo, sul perno di ciascun servo, occorre posizionare tutti i servo a metร corsa (posizione centrale, -90ยฐ); tale operazione รจ necessaria per essere certi che una volta portati a zero i servocomandi, i braccetti siano tutti nella posizione che lascia a riposo i tentacoli.
Per effettuare il reset della posizione di tutti i servocomandi bisogna premere e tenere premuto il tasto Esci/STOP quindi fornire alimentazione; il display indicherร la scritta โReset in corsoโ dopodichรฉ tutti i perni dei servo si collocano in posizione centrale e sul display apparirร la scritta โReset eseguitoโ.
Ora rilasciate il tasto. Fatto ciรฒ applicate su ciascun perno la propria levetta in modo che il relativo tentacolo sfiori (senza premere) il corrispondente tasto della pianola.
Modalitร programmazione
Vediamo adesso come si programma la posizione di pressione del tasto corrispondente al singolo tentacolo. Ad ogni servo deve essere assegnata una posizione che permette la pressione del tasto assegnato. Per effettuare lโimpostazione del caso bisogna seguire la procedura seguente.
1) Accendere la pianola, premere e tenere premuto il tasto Mem/PLAY quindi fornire alimentazione; il display visualizza la scritta โProgrammazioneโ (Fig. 9).
2) Rilasciare il tasto. Il servo gestito sarร il primo a sinistra (la prima nota della prima ottava); il display visualizzerร la scritta โProgrammazione Servo no.1โ (Fig. 10).
3) Premere il tasto + o – in modo che il relativo tentacolo prema sul corrispondente tasto quanto basta per emettere la nota. Raggiunto lโobbiettivo, premere nuovamente il tasto Mem/PLAY per passare alla programmazione del servo successivo.
4) Giunti allโultimo servo premere il tasto Mem/PLAY per concludere la programmazione (sul display apparirร la scritta โProgrammazione Completataโ (Fig. 11).
TEST del sistema
Ora verificate se tutti i tentacoli premono correttamente il tasto assegnato: per fare ciรฒ bisogna:
โข accendere la pianola, premere e tenere premuto il tasto Piรน (o Meno) quindi fornire alimentazione; il display visualizza la scritta โTestโ (Fig. 12).
โข Rilasciare il tasto.
Ora i tentacoli verranno azionati in successione, da sinistra verso destra, cosรฌ da verificare la corretta pressione di tutti i tasti ad essi assegnati. Al termine del test il sistema tornerร alla schermata principale โScelta tracciaโ.
Scelta traccia / PLAY / STOP
Quando il sistema รจ in standby, sul display appare la scritta โScelta tracciaโ seguita dal numero della traccia (della suoneria) attuale (Fig. 13). Per avviare lโesecuzione della traccia indicata premete il tasto PLAY (il display mostra ad esempio โPlay Traccia no.1โ); per arrestare lโesecuzione premete STOP.
Per scegliere unโaltra traccia premete il tasto Piรน o il Meno (il comando non ha effetto se il pulsante viene premuto durante lโesecuzione della traccia); prima ricordate di premere STOP.
Il firmware
Concludiamo questo articolo con un accenno al firmware, nel quale sono contenuti sia i Ringtone da riprodurre, sia le istruzioni per suonarli.
Partiamo proprio dagli RTTTL, dicendo che nel sistema รจ previsto ne vengano suonati 30: ciรฒ viene definito nellโistruzione int Tracce_Max = 29; nellโinizializzazione dello sketch. Notate che 30 corrisponde al valore 29 perchรฉ si considera di partire da 0. Modificando tale valore si puรฒ modificare il numero massimo di suonerie richiamabile.
Ciascun motivo viene costruito secondo lo standard RTTTL, che prevede la definizione di ogni nota con la relativa durata, separata da una virgola dalla seguente e dalla precedente.
Il formato tipico di una stringa รจ:
const char PROGMEM MusicSongPlay1[] = โwewish:d=4,o=5,b=140:d,g,8g,8a,8g,8f#,e,c,e,a,8a,8b,8a,8g,f#,d,f#,b,8b,8c6,8b,8a,g,e,8d,8d,e,a,f#,2g.โ; che riguarda lโesecuzione del Ringtone wewish, composto dalle note definite dalla lettera con, seguita da uguale, la durata, quindi d=4, o=5, b=140 ecc. (d รจ la durata, o lโottava e b le battute).
Notate che tali istruzioni possono essere composte scrivendole nellโIDE Arduino, ovvero copiate direttamente dai siti sul web che riportano i Ringtone, dato che li espongono con detta sintassi.
In genere tali siti forniscono dei file che si possono aprire con un editor di testo (sono dei .txt); per scrivere la musica vi basta copiare la stringa di testo interessata e incollarla nellโeditore dellโIDE di ARduino.
Nello sketch, ciascuna nota viene definita dallโistruzione del tipo:
#define NOTE_C4 262
che specifica la posizione del servo da far attivare per premere il tasto corrispondente sulla tastiera della pianola.
Quanto allโindirizzamento degli shield, la libreria Octopus.h รจ preimpostata in modo che le uscite 0รท15 competano allo shield indirizzato come 0, le 16รท32 a quello indirizzato come 1, ecc. Quindi prima di applicare gli shield ad Arduino o Fishino dovete impostare i jumper dellโindirizzo del primo shield come 000 e quelli del secondo come 001, altrimenti non verrร rispettata la corrispondenza tra note e servocomandi stabilita dal firmware.
Lo sketch per Arduino/Fishino รจ piuttosto voluminoso e, per ragioni di spazio, non possiamo riportarlo in queste pagine; lo potete comunque trovare e scaricare nella sezione Download del nostro sito www.elettronicain.it, insieme agli altri file del progetto.
Bene, con questo diciamo che abbiamo concluso; lasciamo a voi e alla vostra fantasia eventuali sviluppi e personalizzazioni.
Download
Codice del progetto con Octopus
1 file(s) 13.96 KB
Per il download di questo file รจ necessario essere registrati al sito
File STL per la pianola con Octopus
1 file(s) 3.50 MB
Per il download di questo file รจ necessario essere registrati al sito