|
| |||
|
Has entrado como invitado. ( Entra | regístrate ) |
Control de un Belén mediante Arduino Páginas: < ... 5 6 7 8 9 10 11 12 > | ||
Buenas tardes Alfonso.
Por lo que indicas en tu mensaje está claro que el problema está en la combinación de arduino con el reproductor, ya que el reproductor funciona por separado cuando por medio de pulsadores mandas gnd a sus pines.
Dentro de las posibles causas por las que no se transmite correctamente las órdenes de arduino hay, principalmente, una que nos hemos ido encontrando a lo largo de este último año, tanto otros foreros como yo, y es la versión de la librería DFRobotDFPlayerMini. Comprueba que no estás utilizando la versión 1.0.6. Si es así, vuelve a la 1.0.5 que nos está funcionando bien.
Otro problema suele ser la capacidad de la tarjeta SD. Aunque, en principio admite tarjetas de hasta 32G, ha habido casos en que no la leía, debiendo usarse de 16G
Si nada de esto resuelve el problema, tendríamos que ir al software.
Comentas que la tarjeta tiene un único archivo mp3 que se encuentra en la carpeta 01musica, no en la carpeta raiz. ¿Has tenido en cuenta eso a la hora de que arduino ordene la reproducción?
Si continuas sin resolver el problema, por favor, sube el código que estás usando (supongo que tendrá variaciones sobre el que en su día subí al foro) y le podemos echar un vistazo a ver si nos ofrece más pistas. Sobre todo en relación a los pines usados como TX y RX y la forma de activarlos.
Ya irás informando. Un saludo.
Hola Alfonso.
¿Qué duración tiene la pista que tienes grabada en la tarjeta?
Porque en el código le estás diciendo que reproduzca el archivo de sonido una sola vez, y no en bucle.
Para bucle debería ser:
myDFPlayer.enableLoop();
o
myDFPlayer.loopFolder(0); (para la carpeta raiz)
dependiendo del tipo de rerproductor (unos funcionan perfectamente con la primera y otros no)
Ya me dirás algo.
Un saludo
Hola Alfonso.
Según he leido por internet, el reproductor puede funcionar con altavoces de 8 o 16 omhios, pero con una potencia máxima de 3w. Por lo que dices el altavoz que estás usando entra dentro de los parámetros, por lo que no debe ser un problema.
La razón de ser de la resistencia en serie en la conexión de arduino (TX) al reproductor (RX) creo que, en principio, es para reducir el voltaje de la señal de arduino (5v), pero ya estamos alimentando el reproductor con 5v, por lo que supongo que no hay ningún problema si no se pone.
Me parece que no he podido aportarte mucho.
Un saludo.
Hola Manuel, voy a intentar contestar a tu duda.
Como desconozco el nivel de tus conocimientos, detallaré lo más que pueda todas las conexiones que lleva el módulo mosfet.
Tiene dos partes diferenciadas, una con conexiones con tornillo (entrada de corriente y salida a consumos) y otra para cables jumper (conexión con el microprocesador de control: Arduino).
La tira led RGB debe ser de anodo (+) común para que se pueda utilizar con el módulo. Así pues, el cable negro (+) de la tira se puede conectar a cualquiera de las salidas "+" de los conectores con tornillo, pues pasa directo desde el "+" de la entrada. El resto de cables de la tira se conectan a las salidas "-" de cada uno de los canales que vayamos a usar.
El conector con tornillos que queda separado del resto corresponde a la entrada de corriente, que debe venir de una fuente de alimentación del voltaje de la tira led y con amperaje suficiente para todo el consumo. Muy importante, si la placa arduino está alimentada por otra fuente, hay que unir las GND de ambas fuentes.
De los pines de Arduino que hayamos elegido para controlar cada uno de los canales de la tira led RGB sacamos un cable jumper que hay que conectar a la entrada de señal (S) de los canales del módulo mosfet. No es preciso conectar los otros dos (+ y -) de cada canal.
Espero que mis explicaciones se puedan entender. Si no es así lo dices para ver si puedo hacer un esquema.
Un saludo.
Buenos días.
Continuando con la utilización de infrarrojos, y antes de pasar al reproductor, vamos a ver el código que utilizará los comandos recibidos del mando emisor para realizar acciones.
En el archivo adjunto (infrarrojos_1.1.1.ino), y partiendo del código que subí en el post anterior, trabajo con los comandos, imprimiendo por monitor mensajes que se corresponden con cada uno. Lo único que he añadido es un subcódigo que incluye un switch que en base al comando recibido realiza una acción. En loop, he añadido la línea que llama a ese subcódigo.
Para probarlo hay que sustituir los comandos que da mi mando por los que envía el vuestro.
Y vamos con el reproductor. La librería DFRobotDFPlayerMini tiene un ejemplo (FullFunction.ino) donde están detalladas todas las funciones. Yo voy a utilizar estas:
En cuanto al ecualizador:
El código adjunto (dfplayerInfrarr.ino) es un ejemplo de la forma de unir los comandos recibidos a las funciones de la librería. Lo he intentado explicar al máximo.
Este mismo procedimiento se puede utilizar para activar o desactivar efectos de nuestros Belenes. Simplemente debemos condicionar su funcionamiento a una variable tipo boolean. Esta variable, al pulsar el botón que especifiquemos del mando cambiará de 1 a 0 o viceversa, con lo que el efecto estará activo o no.
Espero que esta serie de post pueda ser aprovechada por algún miembro del foro y que su control del Belén con Arduino sea más eficiente.
Como siempre estoy a disposición de cualquiera que tenga alguna duda.
Un saludo a todos.
Buenos dias.
Este año, estoy intentando controlar el DFplayer mediante el mando IR, tal y como has explicado tanto en este como en anteriores hilos sobre el tema que nos ocupa.
He instalado los ficheros
INFRAROJOS 1.1,
asi como el
1.1.1
para sacar los códigos del mando a distancia que voy a usar (al igual que tú, el que me venia con el Kit de la tarjeta Mega) y , salvo que son diferentes a los tuyos, no he tenido problema alguno para sacarlos y modificarlos en los citados ficheros ino. Hasta aquí todo correcto.
El problema que se me presenta es con el fichero
dfplayerinfrarr.ino,
el cual, siempre me da un mensaje de error, concretamente este, el cual me bloquea el programa y hace que dejen de funcionar las teclas del mando a distancia, es decir al no iniciar el reproductor no recibe los códigos que le mando a traves del mando
11:19:38.680 -> Reproductor no iniciado
11:20:18.746 -> Rproductor no iniciado
11:20:20.339 -> Reproductor no iniciado
Está como en un bucle del que no es capaz de salir. Estoy casi seguro que, el error viene motivado por comando
while (true); que aparece en la linea 37
He anulado mediante // la citada instruccion y con eso, consigo que, al menos, el reproductor intente inicarse, aunque solo reproduce el sonido durante un segundo y, despues, vuelve a pararse. Si pulso cualquiera de las teclas de subir/bajar volumen/ Equalizador, etc, aparecen en el monitor serial como activadas, pero con el valor 0 por lo que no realizan funcion alguna en el reproductor.
Tengo tambien la duda de que, este ultimo fichero, sirve solamente, lo que deduzco de tus comentarios en este hilo, de que solo sirve para reproducir un fichero de sonido en bucle, aunque lo que yo pretendo es usar el mando a distancia para controlar, tanto el volumen, como el inicio/parada y el ecualizador de los sonidos que emite mi belen en las diferentes fases de dia/noche/etc
De momento me contentaria con resolver el problema que tengo con el programa dfplaerinfrarr.ino y mas tarde, si es posible, solucionar la duda que tengo con el control de los diferentes ficheros de sonido
Un saludo a todos
Buenos días.
Dame, por favor, un par de días para recordar el asunto (con la edad que vamos teniendo ocho meses es mucho tiempo) y revisar y probar los códigos. Espero poder darte una respuesta.
De todos modos, por lo que dices, el problema está, inicialmente, en el arranque del reproductor. Estos aparatos son muy caprichosos, y dependiendo del fabricante hay que tratarlos de una u otra forma.
Como primer consejo, y en espera de ver si te puedo ayudar más, comprueba la fuente de alimentación del reproductor.
Un saludo.
Yo alimento el reproductor con 5v. Mirando en internet veo que el voltaje de entrada debe ser entre 3,2 y 5v
El amperaje que da la salida de 5v de arduino creo que es insuficiente para el reproductor. Intenta probarlo con otra fuente de alimentación independiente. Yo siempre lo hago así. Acuerdate de unir las GND.
He actualizado todas las librerías del Arduino, salvo la de DFRobotDFPlayerMini, a la 1.06, ya que el pasado año me dio problemas con el sonido y, ahora, reproduce la musica sin problema. No obstante tuve que anular la orden while (true); que aparece en la linea 37, mediante los símbolos //, y me está funcionando, aunque me aparecen muchos mensajes de Botón no válido sin tener pulsado ninguno y, cuando subo o bajo el volumen, o cambio el Ecualizador, siempre me aparece como volumen o ecualizador = 0 , es decir no cambia de valor la variable que indica los valores de subida o bajada.
Poco a poco voy consiguiendo resultados. Un saludo
Buenos días.
Por lo que explicas en tu mensaje, creo que tenemos es un problema de comunicación del reproductor a arduino.
Según indicas, la música se reproduce sin problema (después de comentar la línea while(true);), por lo que entiendo que, pulsando el botón del mando a distancia, se inicia y se para la reproducción.
Incluso supongo que cuando utilizas los botones elegidos para el cambio de volumen y equalizador, si sube o baja el sonido o cambia la equalización. ¿Es así?
La línea que has "comentado" tiene como función no seguir con el código hasta que reciba del reproductor la confirmación de que ha arrancado. Si falla la comunicación no la recibe, por lo cual se queda bloqueado el código.
Eliminada esa comprobación, arranque o no el reproductor, podemos continuar.
Las lecturas que salen por monitor al cambiar volumen o equalización se basan en la información que se solicita al reproductor. Si aparecen a "0" es que el reproductor no la facilita.
Por eso deduzco, como he dicho al principio, que se trata de un error de comunicación. Puede tratarse del cable (TX reproductor a RX arduino) o las conexiones o alguna otra cosa relativa a la compatibilidad de la libreria y el aparato.
Cuando sale por monitor lo de "botón no válido" es que se recibe por el sensor señales diferentes a las codificadas (cualquier otro mando a distancia puede ser leido) o hace lecturas falsas.
Como te dije, espero poder hacer las pruebas pronto y ver si solucionamos el problema.
Un saludo.
Hola Laucsada, buenos días.
Efectivamente, al iniciar el programa, el reproductor queda en estado de "parada" y cuando vuelvo a pulsar el botón de arranque, empieza a funcionar y así sucesivamente. Sin embargo, a pesar de no mantener pulsado ningún botón del mando a distancia, a traves del monitor serie siguen saliendo los mensajes de "Boton no valido"-
Si pulso el botón de "Volumen +/-" en el monitor serie me aparece "Subir/Bajar Volumen", pero no aparece el numero de volumen al que se encuentra el reproductor, lo mismo pasa con el botón "Ecualizador", no me aparece el numero de ecualizador que esta en funcionamiento
Saludos
El que salgan por monitor líneas de "botón no válido", como decía antes, es debido a que arduino está recibiendo del sensor (o módulo sensor) señales que no se corresponden con la codificación establecida en el código.
Estas señales pueden ser debidas a muchas causas (malos contactos, mal funcionamiento del sensor (o módulo sensor), recepciones en el sensor de otros mandos, mal funcionamiento del mando que envía señales por falsos contactos, etc.)
En principio no tienen más inconveniente que la escritura en monitor de líneas innecesarias. El propio código las reconoce como no válidas y las ignora.
De todos modos siempre es mejor que no se produzcan esas falsas lecturas, pues en algún momento es posible que afectaran al funcionamiento del sistema.
Por descartar un mal funcionamiento del mando que estás usando, si lo alejas del sensor o lo apuntas en otra dirección ¿siguen saliendo esas líneas de "botón no válido?
En cuanto al funcionamiento del reproductor, y para confirmar lo que ya te he dicho que creo que sucede, independientemente de lo que aparezca en el monitor serie, cuando pulsas el botón "+", ¿se oye a más volumen la reproducción del sonido?
Y lo mismo con los botones de "-" y "EQ", ¿baja realmente el volumen o cambia la forma en que se escucha por el cambio de ecualización?
Si, en efecto, se oye más alto o más bajo o con diferente ecualización, arduino envía bien las órdenes al reproductor y este las recibe y ejecuta.
El monitor serie solamente es una herramienta para comprobar el funcionamiento (supongo que cuando integres este código en el control real del belén no usarás monitor).
En este momento, el monitor nos está diciendo, por un lado, que arduino no recibe confirmación del reproductor de que se encuentra preparado para funcionar (esto nos lo hemos saltado comentando la línea while(true);).
También nos dice que al pulsar los botones para subir o bajar el volumen, el reproductor no le contesta a la solicitud de información sobre el grado de volumen que está aplicando en ese momento (por eso sale 0).
Y lo mismo pasa con el botón del ecualizador.
Resumiendo: Si no estoy equivocado, el problema está en la información que el reproductor debería enviar a arduino y que este último no recibe.
El motivo de esa falta de comunicación es lo que hay que encontrar. Puede deberse a la conexión física, al cable de unión entre los dos aparatos, a las conexiones de ese cable a los aparatos, etc. También puede ser que el reproductor no sea totalmente compatible con la librería (ya me ha pasado que un comando era aceptado por un repreductor, pero con otro no funcionaba).
Espero liberarme pronto de otros asuntos y poner manos a la obra en este (no tengo hardware libre para hacer las pruebas).
Un saludo.
He realizado las comprobaciones que me has indicado y, parece estar todo bien. Los botones del mando (volumen, EQ, arrancar, parar) funcionan y cumplen su cometido, pero si me he dado cuenta que, al salir continuamente el mensaje de "botón no valido", me ralentiza el funcionamiento de las teclas y, cada vez que pulso una de ellas, tengo que pulsarla varias veces para que, al menos, sean reconocida. Es decir si quiero bajar el volumen, tengo que pulsarla bastantes veces, para que, entre el mensaje de "botón no valido", se ejecute la orden que le doy en algun momento.
Sin embargo, he deshabilitado las ordenes:
//default: // Al presionar cualquier otro botón
// Serial.println("botón no válido");
y, por lo menos, he conseguido que desaparezca el aviso de "botón no valido", lo cual hace que, el Arduino, reconozca cada una de las teclas que pulso del mando a distancia, a la primera.
De momento sigo avanzando y, espero que pueda aplicar esta novedad para controlar el reproductor mediante el mando a distancia, gracias a tu inestimable ayuda.
Un saludo
Buenas tardes.
Por fin he podido montar el hardware para probar el código que te daba problemas.
Creo que el reproductor con el que preparé el código es uno de los que quemé (por no marcar las salidas de los diferentes voltajes de una fuente ATX que estuve manipulando), así que he tenido que probarlo con otros comprados posteriormente, y... me pasa lo mismo: el reproductor no responde a las solicitudes de información de arduino.
En cambio tengo otros reproductores en proyectos en que sí funciona ese feedback.
Prepararé y subiré un código que no necesite la respuesta y sí muestre por monitor los valores de volumen y ecualización.
Respecto a los mensajes que te salían antes de eliminar esa parte del código, en efecto ralentizaban el funcionamiento, pues la impresión por monitor tiene mucho peso. Pero, aunque ahora no se te impriman, todavía están recibiendose las señales no deseadas, y arduino las sigue procesando (aunque ya no lo notes).
Creo que sería muy interesante que trataras de eliminar esas recepciones de señales.
Como ya comenté, pueden venir del mismo mando, que tenga un mal funcionamiento. Para comprobarlo, puedes mirar el emisor del mando a través de la pantalla del teléfono móvil sin apretar ningún botón y ver si parpadea, lo que indicaría que está emitiendo.
Si no fuera eso, habría que realizar otras comprobaciones, como aislar el sensor de cualquier señal para descartar problemas de malas conexiones.
Como he dicho, cuando lo prepare subiré un código alternativo al dfplayerInfrarr.ino
Saludos.
Buenas tardes
He estado realizando pruebas y, modifiqué la linea
51 delay(50); // Pausa para fin recepción
(Su valor inicial era (500) y ahora parece que me funciona mucho mejor, aunque algunas veces tengo que pulsar la tecla del mando varias veces para que ejecute la orden correspondiente. He probado con otro mando a distancia que tengo por casa y me pasa los mismo. No obstante espero, con impaciencia, que subas el nuevo código para hacer las pruebas oportunas.
Lo que no sé muy bien, es donde incorporar las partes del código para que realicen el efecto deseado, dentro del programa que uso para la iluminacion y sonido del belen. Pero vamos a ir por partes y, poco a poco
Un saludo
Al rebajar el tiempo de esa línea das opción a que por cada pulsación se reciba la señal varias veces. Le permites volver a leer en 50 milisegundos. En el caso de iniciar la reproducción, como se usa el mismo botón para detenerla, puede arrancar y parar en la misma pulsación.
Por otro lado sigo con el tema de las lecturas no deseadas. He estado haciendo pruebas con tres sensores y uno de ellos me da esas lecturas fantasmas, así que podemos deducir que tu problema es del sensor.
Un saludo.
De momento es el unico sensor que tengo y, a pesar de esas lecturas fantasmas, funciona mas o menos correctamente. Ahora intentaré incorporar al programa que uso para el belén, al menos la parte que me permita detener y subir/bajar volumen de los sonidos de ambiente.
Páginas: < ... 5 6 7 8 9 10 11 12 > |
Buscar en este foro Versión Impresa Enviar un mail con el enlace a este tema |