bicicleta estatica para ciego

hola, tengo un amigo con marfan y después de quedarse ciego le han puesto dos válvulas en el corazón, el medico le ha recomendado la bicicleta estática, y ha adquirido una " trojan trainer super1000", yo tengo la misma y por eso se que tiene un sensor magnético con un cable que va a un circuito con un display y 4 botones, quería usar el sensor y conectarlo a un arduino para que de alguna manera el pueda saber por lo menos a la distancia recorrida, velocidad calorías y tiempo, de momento esto se parece bastante a lo que quiero hacer:

pero yo necesito que una voz sea el display, es difícil entenderlo pero si os queréis hacer una idea podéis jugar topspeed3 para ciegos para entender como se mueven por un menú

y esto seria un añadido para que el sepa cuando cambiarle las pilas al aparato, vive en una habitación pequeña y otro aparato mas conectado a la red seria otro problema mas,

cualquier idea o enlace es bienvenido saludos y gracias

Así de golpe se me viene la siguiente idea: usar un shield MP3, con una SD donde habrá grabado el audio de los números y todo sonido que se precie. Cuando calcules la velocidad, distancia u otra medida, en vez de mostrar en pantalla, reproduces un fichero .mp3.

Es como funcionaban mas o menos los GPS antiguos, si has tenido un tomtom por ejemplo, había maneras de cambiarle la voz, grabando la tuya propia.

Por ejemplo: si en pantalla pone "distancia: 100 metros", hay que decir que reproduzca un fichero que diga "distancia" otro que diga "cien" y otro que diga "metros".

El único problema que le veo es que para numeros largos y dificiles por ejemplo 99999 tendria que decir noventa+y+nueve+mil+novecientos+noventa+y+nueve (lease el + como un espacio). Y posiblemente un arduino Uno se quede corto, así que hay que tirar de Mega o Due. Ten en cuenta que habría que tratar todas las posibles combinaciones para que el número esté bien dicho:

1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19, los primeros numeros fijos.
20 y luego los "venti": venti-1, venti-2, venti-2
30, 40, 50, 60, 70, 80, 90,
100 y los "ciento": 101, 102, llegamos al 2-cientos, 3-cientos, necesitamos el "cientos"

finalmente "mil", mas el "y" que los une.

No se si me he explicado bien, se trata de descomponer el numero en unidades, decenas, centenas, millares y reproducir el fichero pertinente.

Igualmente se puede hacer con el estado de la bateria: "bateria baja" o "bateria al xx%".

Y de la misma manera para funcionar en un sistema de menus.

De hay pasariamos a usar "text to speech" como Loquendo o similar, pero eso creo que está fuera del alcance de Arduino, y lo mismo toca raspberry...

Si nos das más detalles sobre tu pregunta (ejemplo: de qué dispones para la reproducción de sonido), al menos yo te podría dar una idea.

Prácticamente cualquier Arduino puede generar una señal analógica; si no, entonces de qué serviría analogWrite?

Excelente idea primero que nada, aplaudo el doble a los que combinan Arduino con aplicaciones de ayuda a los que lo necesitan.

Te dejo mi aporte ya que veo muchos aportaran. Sobre la voz, tal vez un Arduino más potente te ayude por varios motivos. Primero porque son de 32bits, segundo tiene reloj mas rapido, y tercero muchos tienen un DAC que es un convertor diital analogo interno por hardware que mejora las señales analogicas.

Con esto dicho, podrias combinar una tarjeta SD (hay modulos para leerlas muy economicos), y grabar los sonidos que necesitas ahi como archivos individuales como son los IVR (los que te atienden automaticamente cuando llamas a un 0800), entonces grabas los numeros individualmente y luego podes omponer numeros mas grandes.

Una buena opcion seria un m0 o un Due.

Para la velocidad podrias simplemente implementar un metronomo PERO supongo que no es necesaria la velocidad ya que el que usa la bici tiene una idea clara de la velocidad por estar pedaleando!

Suerte con ese proyecto y por favor no dejes de compartir avances.

La solución mas simple es Text to Speech como dice victorjam y como siempre hay una solución x ahí, busqué en Google y fantástico x 59 USD (dolares) este Emic2 que puede hacer de todo con mucha simpleza.

Emic 2: Command Set Demonstration

Y puede hablar EspaÑol porque tiene un comando para lenguaje... fantástico!!!

Sparkfun lo vende por 59.95 en este link Text-to-Speech Module - Emic 2

muchas gracias a todos pos las respuestas, me habéis dado muchas ideas buenas aunque habéis enfocado el problema en la reproducción del audio la recomendación de surbyte es la mas simple y me ha ha quitado mucho trabajo, creo que el problema radica en como pasar los pulsos que genera el sensor magnético y pasarlos a metros y de hay a kilómetros, mi idea a groso modo es conectar los cables del sensor magnético a un arduino "nano" y que este atraves de un modulo bluetooth envié las señales al ordenador o al móvil y desde hay que se traduzcan las señales a metros/kilometros, si cada tres pedaleos es un metro el imo de arduino o algo en android mande al monitor serie 1m 2m 3m 1km etc, los programas que usa el irían reproduciendo a voz esos resultados tanto en el móvil como en el pc, aunque el es ciego puede moverse por windows y android perfectamente atraves del teclado. muy agradecido a todos en especial a surbyte porque ese modulo Text to Speech podemos usarlo para otros proyectos. saludos

Trascos:
aunque habéis enfocado el problema en la reproducción del audio

¿Ya lo tenías resuelto o es que era la segunda prioridad?

Trascos:
creo que el problema radica en como pasar los pulsos que genera el sensor magnético y pasarlos a metros y de hay a kilómetros, mi idea a groso modo es conectar los cables del sensor magnético a un arduino "nano" y que este atraves de un modulo bluetooth envié las señales al ordenador o al móvil y desde hay que se traduzcan las señales a metros/kilometros, si cada tres pedaleos es un metro el imo de arduino o algo en android mande al monitor serie 1m 2m 3m 1km etc

Aquí es donde me hago la pregunta: ¿quién lleva la cuenta? ¿El Arduino o la aplicación receptora?
Esta pregunta radica en el hecho de que si el Arduino debe enviar el conteo de pulsos o simplemente envíar un byte de cualquier valor para indicarle al del otro lado que la rueda ha completado una vuelta.

Para saber cuanta distancia se recorre por vuelta de la rueda, hay que conocer la circunferencia de esta; y para conocer la circunferencia, hay que conocer el diámetro de la rueda.
Este dato no es difícil de obtener: búsca una cinta métrica o una regla lo suficientemente larga, la distancia más alta entre los bordes de la rueda es el diámetro.
Ahora, teniendo el diámetro y multiplicándolo por la famosa constante pi, finalmente obtienes la circunferencia de la rueda.

Si el conteo más bien es de pedaleos; toma en cuenta que los pedales y la rueda no están en relación 1:1; por lo tanto, también debes contar cuantas vueltas de la rueda ocurren en una giro completo de los pedales. Después, el resto se saca con multiplicar y dividir.

Eso que planteas es algo que todos dimos por hecho.
Pero de todos modos nada que te quite el sueño. Cuentas pulsos, compara con el el perimetro desplazado de la rueda en mts desplazado y tienes tu respuesta.

Intenta no ser "pesado" informando tanto... tal vez baste con indicar con un pitido suave cada 5 o 10 mts y si cada 100 mts, informar con voz sintetizada la distancia.