Iniciar sesión

Ver la versión completa : [Ayuda] Proyectillo con arduinno, viabilidad, dudas y sugerencias



chipan
09/08/2014, 05:17
Hola queridos foreros de bien, foreros normales, foreros conflictivos, trolls y pache. Tengo un proyectillo sencillo en mente para aprender a trastear con un arduinno.
La idea sería hacer una rueda de volumen usb para PC. Tengo en mente usar alguna variante de arduinno de las de menor tamaño, hacer que esta se comunique con el pc como si de un teclado usb se tratase y conectar un potenciometro o alguna clase de rueda a sus entradas de manera que al girar la rueda en una dirección envíe el comando de teclado estandarizado de subir volumen y cuando se mueva en la otra dirección el de bajarlo; quizas podría añadir un botón para activar o desactivar el mute, pero eso es secundario.
Ahora bien, tengo muy poca idea de arduino, creo que lo que me he planteado es posible y no demasiado complicado, pero agradecería que algún entendido en el tema echase un poco de luz sobre el asunto.
Supongo que se podría hacer lo mismo de manera más simple con un pic o un atmega y tres o cuatro componentes, pero el caso es que quiero empezar con arduinno y me ha parecido un proyecto interesante.
Ahora bien, necesitaría bastante ayuda, o mas bien recomendaciones. ¿Que versión de tamaño mini de arduinno me recomendaríais?, ¿mi planteamiento es correcto?, ¿es demasiado complicado como primer proyecto teniendo en cuenta que se programar, aunque tenga poca idea de electrónica?
Se que mucha gente me dirá "para empezar tendras que hacer proyectos sencillos como encender y apagar leds", pero para ver leds encenderse y apagarse me pongo a mirar el router XD.

Pues eso, muchas gracias.

Edit, supongo que con esto:
http://www.dx.com/p/arduino-nano-v3-0-81877#.U-WG0aPNzD4
y esto:
http://www.dx.com/p/maitech-simulation-knobs-module-rotary-encoder-module-black-325866#.U-WGZaPNzD4
ya tendría una parte del proyecto solucionado, ya que la arduino esa acepta 5,9 o 12V por lo que podría alimentarla con un usb, y el tema de la ruedecilla lo podría tratar con el encoder rotatorio, ya que un potenciometro no me parece la mejor idea.

ArChEr
09/08/2014, 10:16
Hola queridos foreros de bien, foreros normales, foreros conflictivos, trolls y pache. Tengo un proyectillo sencillo en mente para aprender a trastear con un arduinno.
La idea sería hacer una rueda de volumen usb para PC. Tengo en mente usar alguna variante de arduinno de las de menor tamaño, hacer que esta se comunique con el pc como si de un teclado usb se tratase y conectar un potenciometro o alguna clase de rueda a sus entradas de manera que al girar la rueda en una dirección envíe el comando de teclado estandarizado de subir volumen y cuando se mueva en la otra dirección el de bajarlo; quizas podría añadir un botón para activar o desactivar el mute, pero eso es secundario.
Ahora bien, tengo muy poca idea de arduino, creo que lo que me he planteado es posible y no demasiado complicado, pero agradecería que algún entendido en el tema echase un poco de luz sobre el asunto.
Supongo que se podría hacer lo mismo de manera más simple con un pic o un atmega y tres o cuatro componentes, pero el caso es que quiero empezar con arduinno y me ha parecido un proyecto interesante.
Ahora bien, necesitaría bastante ayuda, o mas bien recomendaciones. ¿Que versión de tamaño mini de arduinno me recomendaríais?, ¿mi planteamiento es correcto?, ¿es demasiado complicado como primer proyecto teniendo en cuenta que se programar, aunque tenga poca idea de electrónica?
Se que mucha gente me dirá "para empezar tendras que hacer proyectos sencillos como encender y apagar leds", pero para ver leds encenderse y apagarse me pongo a mirar el router XD.

Pues eso, muchas gracias.

Edit, supongo que con esto:
http://www.dx.com/p/arduino-nano-v3-0-81877#.U-WG0aPNzD4
y esto:
http://www.dx.com/p/maitech-simulation-knobs-module-rotary-encoder-module-black-325866#.U-WGZaPNzD4
ya tendría una parte del proyecto solucionado, ya que la arduino esa acepta 5,9 o 12V por lo que podría alimentarla con un usb, y el tema de la ruedecilla lo podría tratar con el encoder rotatorio, ya que un potenciometro no me parece la mejor idea.

Muy buenas! Creo que has elegido un proyecto complicado para ser el primero...
Sobre lo de que funcione por usb creo que el único arduino que puede emular un dispositivo HID es el "leonardo" los otros en realidad es un conversor serial RS232 a usb por lo que si quisieras hacerlo así tendrías que hacer un pequeño programa que captara los comandos del arduino y midificara el volumen del sistema.

Adelante con arduino que esta muy bien. Yo ahora quiero hacer el "Corpus clock" con un arduino pro mini.

Un saludo!

Jurk
09/08/2014, 11:57
por la parte de circuiteria te podria ayuda, con un interruptor y un potenciometro tendrias de sobra para hacer el circuito regulador de volumen. Eso si, con el volumen hay algunas cosas que hay que tener en cuenta, que deberias programarlos en el arduino:

1.- el sonido es, al fin y al cabo, una onda. Un cambio lineal en el voltaje del potenciometro no equivale a un cambio lineal en el volumen. Deberias escalar el rango de entrada del conversor analogico/digital (1024 puntos si no me equivoco) de manera que 1023 equivalga al 100% de volumen

100% -> -> log (1023)
90% -> -> log (x)

asi obtendrias el valor en la escala del conversos analogico digital que equiivaldria al 90% del volumen del pc

2.- Como ha dicho archer, al loro con el modelo, a saber como gestiona el usb, si lo tiene

chipan
09/08/2014, 15:14
por la parte de circuiteria te podria ayuda, con un interruptor y un potenciometro tendrias de sobra para hacer el circuito regulador de volumen. Eso si, con el volumen hay algunas cosas que hay que tener en cuenta, que deberias programarlos en el arduino:

1.- el sonido es, al fin y al cabo, una onda. Un cambio lineal en el voltaje del potenciometro no equivale a un cambio lineal en el volumen. Deberias escalar el rango de entrada del conversor analogico/digital (1024 puntos si no me equivoco) de manera que 1023 equivalga al 100% de volumen

100% -> -> log (1023)
90% -> -> log (x)

asi obtendrias el valor en la escala del conversos analogico digital que equiivaldria al 90% del volumen del pc

2.- Como ha dicho archer, al loro con el modelo, a saber como gestiona el usb, si lo tiene

¿Y no sería mejor un encoder rotatorio que cuando detecte giro hacia un lado mande el comando subir volumen y cuando gire al otro lado el de bajar?

ArChEr
09/08/2014, 20:16
Entonces perderia la gracia de la "ruedecita" porque seria como tener 2 botones.

Lo de leer el valor analogico del potenciometro es muy sencillo de echo hay muchos tutos que luego lo aplican a una salida pwm para regular el brillo de un led, para cojer el valor del potenciometro seria igual. Yo lo que veo complicado de este proyectillo es lo de enviar la informacion al PC para que baje el volumen, ya que el usb que usan los arduino es una especie de inteface serie que no tiene nada que ver con el usb por lo que haria falta un "driver" que interpretara esos comandos que enviaria el arduino.

chipan
09/08/2014, 21:43
Parte de la gracia de la ruedecita es que funcione como dos botones, porque asi es totalmente plug and play en cualquier sistema; al final la ruedecita es pura estética. Creo que usando el potenciómetro necesitaríamos software en el lado del pc que leyese el valor que envia la arduinno tras leer el potenciómetro y cambiar el volumen en consecuencia y perdería parte de la gracia de ser plug and play.
He visto varios tutoriales pero este es lo que busco:
http://mitchtech.net/arduino-usb-hid-keyboard/

y este no es arduinno pero es casi lo mismo que busco:
https://learn.adafruit.com/trinket-usb-volume-knob/wiring

juanvvc
10/08/2014, 11:12
chipan, la parte del arduino puedes hacerla sin problemas. Con un encoder o con un potenciómetro, como quieras. El Arduino podría leer el potenciómetro y traducir ese valor a lo que tú necesites así que sería igual de plug&play que un encoder.

Ahora, la parte complicada de este proyecto es la comunicación con el ordenador. Los arduinos normales solo tienen un modo de comunicación por el USB: puerto serie. Así que tendrías que escribir un programita en tu ordenador (es decir, "un driver") que leyese lo que le envía el arduino por puerto serie y luego haga lo que le dé la gana en tu ordenador. Según lo que sea ese "lo que te dé la gana" puede complicarse mucho el asunto. En Linux el volumen se puede controlar desde línea de comandos así que es muy fácil de escribir un driver para eso en Python por ejemplo (yo lo hago así en mi simulador de aviones). En Windows... pues vete tú a saber.

Así que podrías:

(1) utilizar cualquier arduino, pero sabiendo que tienes que escribir un driver en tu ordenador. La escritura de este driver puede ser lo más complicado de tu proyecto con diferencia.
(2) utilizar un arduino Leonardo, que es el único que admite además de comunicaciones serie, identificarse como un teclado de ordenador o puede que como un joystick, no recuerdo ahora. En tu ordenador simplemente tendrías que configurar este "teclado" para que haga lo que tú quieras al pulsar una tecla.
(3) cambiar el firmware al arduino, tal como explican en uno de los enlaces que has puesto. Con cuidado porque entonces ya "no es un arduino" sino otra cosa y a saber lo que funciona o no :)

chipan
10/08/2014, 21:05
chipan, la parte del arduino puedes hacerla sin problemas. Con un encoder o con un potenciómetro, como quieras. El Arduino podría leer el potenciómetro y traducir ese valor a lo que tú necesites así que sería igual de plug&play que un encoder.

Ahora, la parte complicada de este proyecto es la comunicación con el ordenador. Los arduinos normales solo tienen un modo de comunicación por el USB: puerto serie. Así que tendrías que escribir un programita en tu ordenador (es decir, "un driver") que leyese lo que le envía el arduino por puerto serie y luego haga lo que le dé la gana en tu ordenador. Según lo que sea ese "lo que te dé la gana" puede complicarse mucho el asunto. En Linux el volumen se puede controlar desde línea de comandos así que es muy fácil de escribir un driver para eso en Python por ejemplo (yo lo hago así en mi simulador de aviones). En Windows... pues vete tú a saber.

Así que podrías:

(1) utilizar cualquier arduino, pero sabiendo que tienes que escribir un driver en tu ordenador. La escritura de este driver puede ser lo más complicado de tu proyecto con diferencia.
(2) utilizar un arduino Leonardo, que es el único que admite además de comunicaciones serie, identificarse como un teclado de ordenador o puede que como un joystick, no recuerdo ahora. En tu ordenador simplemente tendrías que configurar este "teclado" para que haga lo que tú quieras al pulsar una tecla.
(3) cambiar el firmware al arduino, tal como explican en uno de los enlaces que has puesto. Con cuidado porque entonces ya "no es un arduino" sino otra cosa y a saber lo que funciona o no :)
Gracias; seguramente usaré la opción 2 o la 3.

Jurk
11/08/2014, 01:38
lo del logaritmo es aplicable tambien al encoder. ¿no estas harto de que la subidabde volumen en los primeros pasos sea brutal y en los ultimos casi inapreciable? eso es porque la ganacia de volumen la controlan linealmente y no logaritmicamente. en un miniprograma que hice en bennu para wiz defini un array con 10 niveles de volumen que subian de manera cte. si tienes dudas me mandas un mp y lo hablamos!