ELECT 29: RK4K: Rythm Kit for Kids

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Hi haurà dos modes: pulsació i ritme. Amb la pulsació el nen marcarà una pulsació constant, que farà sonar les notes allà on toqui; amb el mode ritme, el nen haurà de fer sonar les notes. Hi haurà un LED per saber en quin mode estic.

Per produir el so començaré fent-ho amb un buzzer, però la idea és que tingui una sortida MIDI, i una sortida buzzer o audio síntesi. Hi haurà un LED per saber quina és la font d'audio.

Hi haurà un botó per seleccionar una llista de cançons. Apretant el botó canviaré de cançó, i un LED indicarà en quina cançó estic (al costat del LED es dibuixarà una icona de la cançó). Aquesta era la primera idea, però un LED per cada cançó ocupa molts pins. Tinc un botó, i aniré apretant el botó per anar canviant de cançó

Aquest projecte es farà amb paperduino. Sobre el paper es dibuixaran totes les icones informatives. La idea és que vaig afafant soltura amb el paperduino, i al final acabarà sent un esquemàtic amb el Eagle CadSoft i que podré fer plaques de circuit imprès professionals. Amb la idea de ficar-ho a la venda a www.joanillo.org. La idea és agafar les cançons infantils de cada país.

Per fer sonar tinc per una banda el MIDI (que és una solució per a mi, però no per a comercialitzar-ho); i l'altra manera de fer sonar és amb altaveu (el buzzer el descarto per falta de qualitat, només és vàlid a nivell de prova). Amb altaveu (síntesi) tinc dues possibilitats:

  1. La tone library (http://code.google.com/p/arduino-tone/). Fa un ús intensiu del microcontrolador, però l'electrònica és més senzilla. La ona que es produeix és quadrada (menys qualitat). Es pot escoltar per un buzzer (menys qualitat, no es pot controlar el volum), o l'altaveu (més qualitat, necessita amplificació, puc controlar el volum). Rectificació: amb altaveu no necessito amplificació, i la qualitat és més que acceptable
  2. 34. Generating polyphonic sound with Arduino (http://itp.nyu.edu/~gpv206/2007/10/generating_polyphonic_sound_wi_1.html). L'electrònica és més complicada, doncs la idea és utilitzar oscil.ladors RC per produir les notes. El microcontrolador només s'encarrega de la lògica de canviar les notes, no de la síntesi. La qualitat del so crec que és millor (fins i tot pot ser polifònic). L'ona que es produeix és sinusoide, segur que la qualitat és millor.

En tots dos casos es necessita un circuit amplificador d'audio basat en LM358.

esquemàtic Eagle

Prototipus

RK4K v1.png

Els pins que necessito seran:

  • lectura del sensor piezoelèctric: pin analògic A0
  • canvi de mode (pulsació/ritme): pin digital D2
  • canvi de sistema de reproducció: pin digital D3
  • canvi de cançó: pin digital D4
  • midi: D1 (Tx)
  • altaveu: D11 (PWM)
  • LED: D9 -> senyal lluminós per indicar que hem colpejat el piezo i que s'ha captat el senyal
  • LED: D10 -> per indicar que estic en mode MIDI


Com és de rebut, tots els components que van a la caixa els soldaré des dels pins (header). La disposició és la següent (vist des de dalt):

D10 (LED) - D9 (LED) - PWR - Mode - Sist - Cançó - Piezo - SPK
 * *      -    * *   - * * - * *  -  * * -  * *  -  * *  - * *

De cada parell, els pins de l'esquerra van a GND, directament o a través d'una resistència (220 ohm els LED, 10K els switch i el botó) (fer dibuix)


llista de materials

A part de l'arduino (basat en paperduino), necessitaré:

  • altaveu: pot ser el típic de 8 ohm o els que puc comprar a OndaRadio de 32 ohm (són més petits, però no s'aprecia més volum). Donen un volum suficient, de manera que no necessito ni amplificació ni cap potenciòmetre per controlar el volum.
  • connector MIDI (per al meu prototip)
  • interruptor x3: encesa/apagada; canvi de mode (pulsació/ritme); canvi de sistema de reproducció (PWM synth/MIDI).

pulsador x1. Per canviar la cançó. És el sistema més pràctic. Quan arrenco, estic a la primera canço. Si vull anar a la cançó núm 5, hauré d'apretar 4 cops. No té cap sentit ficar tot de leds a la caixa. En tot cas, a la caixa enganxaré l'ordre de les cançons.

  • Resistències: 220 ohm (per al connector MIDI); 10K x2 per als switch de canvi de mode i de sistema de reproducció. L'interruptor no s'ha de connectar directament a terra, sinó a través d'una resistència de 10K.
  • sensor piezoelèctric. Crec que, buscant una solució compacta, puc enganxar el sensor en la mateixa tapa de la caixa, i així m'evito cables sueltos.
  • LED vermell x2 -> per indicar que estic en mode MIDI i que es colpeja el piezo
  • pila 9V
  • caixa de plàstic
  • ...

El codi per connectar un switch digital (per fer el canvi de mode o de sistema de reproducció és):

const int switchPin = 10;  // el switch està en el pin digital num 10

en el setup:
 pinMode(switchPin, INPUT);

en el loop:

currentSwitchState = digitalRead(switchPin);

if (currentSwitchState == 1) {
...
}
else {
...
}

funcionalitat

A part del power, tinc dos interruptors i un botó. El interruptor Mode canvia entre mode ritme i mode pulsació (ritme és per defecte). El interruptor Sistema canvia entre mode Toner (altaveu) i mode MIDI (Toner és per defecte). Si tenim activat el mode MIDI hi ha d'haver un LED encès al costat del connector MIDI.

A més, el botó (pitjador) Cançó ens fa canviar entre cançons cada vegada que pitgem (s'encén el LED). Ara bé, si pitgem més estona (posem per cas mig segon), entrem en mode reproducció de la cançó que està seleccionaa (un pampallugueig del LED ens avisa que entrem en mode reproducció).

Cada vegada que piquem sobre el piezo s'encén el LED, ja sigui en mode ritme o en mode pulsació. Si estem en mode reproducció, també s'encén el LED quan sona la nota.

esquemàtic Eagle v2

Fitxer:Percussio infantil v2 pdfs.zip

Percussio infantil v2 bottom.png
Percussio infantil v2 top.png

En aquest cas vull muntar una placa de circuit imprès: Arduino + funcionalitat RK4K. Suprimeixo tota la part de MIDI, que només l'he desenvolupat en el prototipus. En aquest esquema només m'interessa especificar els male header, on aniran connectats els components en la carcassa. Així doncs, no especifico els components.

Després de fer proves amb el Eagle (que suposo que es pot millorar) m'han sortit 5 pistes de Unrouted (hi ha una pista que va de LED a MODE, que no la veia). (placa de 60x80mm a una sola capa). Hi ha errades i coses a millorar, veure la versió v3.

esquemàtic Eagle v3

recepta per passar de percussio_infantil_v2 a percussio_infantil_v3:

  • creo la carpeta percussio_infantil_v3
  • copio els fitxers .sch, .brd i .pro, els renombro _v2 per _v3
  • ja puc obrir aquest projecte

Moltes coses a millorar... primer de tot, els fallos i descuits en l'esquemàtic. He corregit dos fallos: la cançó no estava connectada al D4, i la connexió del LED estava mal feta (el LED s'activa directament connectant la pota + al D9... la pota + estava connectada a Vout)

A part d'aquestes errades, hi ha coses a millorar:

  • forats (drill). Dibuixar-los. El dibuixo en el Top (Hole) i en el Bottom (ho faig amb un cercle). Potser és millor fer-ho amb un hole.
  • text: RK4K. Posar un text en el board
  • text en el tNames que ajudi a col.locar els components. Per exemple, en un header, puc ficar el símbol + per indicar que va la pota + del LED. En el SPK fico GND, doncs en aquest pin connectaré el GND de la pila, i també fico 9V allà on ha de connectada la pila. El tNames ha de ser una ajuda al muntatge, i hi ficaré tot allò que sigui últil per al muntatge i no haver d'anar mirant l'esqumàtic.

Coses a millorar. Per al pin-header, per què no he utilitzat la llibreria pinhead? Concretament, el component PINHD-1X1 em permet ficar un nom i/o valor a cada pin individualment.

Dubtes: com es selecciona una versió antiga del sch o del brd? Com funciona el sistema de versions? Com puc aprofitar la feina feta en el autoroute sense por d'haver de començar de nou? No veig que es pugui tirar endarrere. La solució és gravar el brd abans de fer el autoroute, i si crec que es pot millorar, moure els components i tornar a gravar amb un altre nom (versionar!). Gravar abans de fer el autroute, i si m'agrada com queda, gravar el autoroute amb un altre nom (per exemple, subindex route).


falta solucionar el GND. Fico el text GND i 9V en els pins adequats (tNames), per tal de no tenir dubte a on va connectada la pila.

Els pin-header que he escollit, de la llibreria con-molex, se'ls ha de treure el Value tan engorrós

Millores

  • Andrew Baxter ha publicat el seu position sensing midi drum interface (LAC 2011) on també utilitza sensors piezoelèctrics. Tanmateix, s'ha de mirar el seu circuit elèctic en què detecta per als piezos el senyal positiu i el negatiu, fent un divisor de tensió a 2.5 V. Això pot donar més precisió.
  • en aquest projecte potser no cal ser sensibles a la pressió, i aleshores el millor mètode a implementar són els sensors capacitius que s'activen amb el dit.

creat per Joan Quintana Compte, maig 2010