Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Bonjour, Este es mi segundo "Instructables". Como me gusta hacer cosas no muy útiles, aquí está mi último proyecto:
Se trata de una radio FM con Radio Text con base de carga y que se puede monitorizar a través de Bluetooth y una APP de Android
Por lo tanto, les presentaré la parte de Arduino, la parte de texto de radio y luego la parte del inventor de la aplicación MIT (esta es la única forma en que soy lo suficientemente hábil para construir una aplicación de Android)
Con un voltaje de suministro de 10; 8 voltios con suministro de CA y 9,6 con batería, la potencia máxima es de 2x 1,5 / 1,25 vatios RMS, que es suficiente
La potencia RMS (raíz cuadrada media) es la potencia real, no como los otros números grandes que se venden como vatios de música o potencia máxima o cualquier otra cosa)
¡Supongo que 1,5 vatios RMS se pueden vender como 8 vatios en algunas tiendas!
Primero los componentes necesarios:
Tablero principal:
1x Arduino Nano
1x módulo de radio FM SI4703 de Sparkfun o equivalente (5v alimentado y 3.3V I2C con un conector de 3 polos que se puede usar como antena)
1x módulo Bluetooth HC-06 (advirtiendo que la nueva versión del software 3.0 tiene un conjunto de comandos totalmente diferentes (pongo algunos comentarios en el código).
1x cambiador de nivel de 4 canales 3,3 5 V
1x convertidor MC7805 5v DC
1x condensador de 2200 µF 25V
2x diodos 1N5404 de 3 amperios
2x transistores 2N2222
1x resistencia de 1Kohm
1x resistencia de 47 ohmios
2x resistencias de 3,3 KOhmios (para pull-up de bus I2C)
3 resistencias de 330 Ohmios (para los leds)
2x resistencias de 6,8 KOhmios
1x resistencia de 3,9 KOhmios
Panel frontal
1x bus I2C LCD 20X4
10 resistencias de 680 ohmios
1x LED rojo (¡¡No tenía más verde !!) para la fuente de alimentación
1x LED amarillo para el modo de batería
1x LED azul para la conexión BT
4x (ON) -OFF- (ON) interruptores (como para una ventana de automóvil eléctrica)
2x pulsadores
1x interruptor de encendido / apagado
Otros componentes de la Radio:
2x 100W 10CM 8 ohmios HP
1 antena extensible de 1 m (alrededor de 75 cm es la longitud adecuada para FM en Europa y EE. UU.)
1x enchufe telefónico que usé para hacer los contactos para la base de carga
1x 1N5404 diodo de 3 amperios (en el contacto de la batería para evitar humo en caso de que se ensucie con el suelo o el contacto de 12 V)
1 amplificador de potencia de 2 x 20 vatios (cualquier amplificador estéreo se ajustará siempre que sea de 12 V) basado en TDA2020 comprado por 4 euros
1 acoplador de batería 8XAA (para tener un mínimo de 9,6 V)
Unos contrachapados de 10 mm y 4 mm para la caja.
Base de carga:
Fuente de alimentación 1x 12V 3Amp
1x voltímetro pequeño de 3 dígitos / 3 cables
3 contactos (hechos con enchufe telefónico)
1x 1N5404 diodo de 3 amperios (en el contacto de 12 V)
2 interruptores de palanca (para encender la fuente de CA cuando la radio está en la base de carga)
1x interruptor de ENCENDIDO / APAGADO (para apagar la base de carga si es necesario)
Unos contrachapados de 10 mm y 4 mm para la base.
En total, incluido el contrachapado, no supera los 70 €.
Paso 1: La parte de radio 4703
Primero, una modificación:
Se supone que el módulo usa el cable de los auriculares como antena, en mi proyecto no es útil, por lo que primero tendremos que hacer una pequeña modificación para poder conectar una antena externa
En este módulo, la toma de tierra de 3 polos no está conectada directamente a tierra sino a través de una inductancia (para detener las frecuencias FM) y un condensador para conectar las frecuencias FM a la entrada de la antena del SI4703.
Entonces, la mejor manera es conectar directamente la antena al pin de tierra del conector y soldar dos cables para la salida de audio.
Para evitar ruidos en el audio (especialmente de Bluetooth), coloco el módulo FM en una pequeña caja de plástico blindada con cinta de cobre conectada a tierra
El protocolo RDS / Radio Text:
Primero, quiero agradecer a Nathan Seidle ya que me inspiré completamente en su programa "TEST_FM" de junio de 2011.
Y, según lo acordado, estaré muy feliz de pagarle una cerveza, si, uno de estos días, se pierde en mi pequeño pueblo en el fondo de Bretaña !!
Usé mucho de su programa porque no quería usar las bibliotecas existentes que son un poco demasiado grandes para el escaso espacio de memoria Nano y también porque siempre es mejor profundizar en las posibilidades de un componente buceando directamente en los registros
La principal modificación que hice es para el sondeo RDS
Aproveché la posibilidad de activar una interrupción en el pin GPI02 estableciendo el bit RDSIEN y el valor GPIO2 en 01
Esto activará una interrupción en el pin 3 del nano
Esto evita el sondeo del registro RDS, ya que activará el programa de texto de radio solo cuando el grupo de texto de radio de 4 caracteres esté disponible sin errores (modo no detallado)
Para tener un radio texto completo, debemos reunir como máximo 16 bloques de 4 caracteres (registros RDSC / RDSB del grupo 2A o 2B). Pongo mucha información en el programa para explicar lo que hice.
A continuación se muestra una descripción de los registros de datos para texto de radio (RDSSA / RDSC)
en registro RDSSB (bloque 2)
El valor 4 en A3 / 0 indica (grupo de texto)
B0 indica texto A (64 caracteres) o B (32 caracteres) (nunca he visto texto B en uso ………..)
PT0 a PT4 es el índice del grupo de 4 caracteres (0 a 15)
PT5 debe usarse como indicador de texto A / B (que significa "este es un texto nuevo") pero no siempre se usa así dependiendo de la estación de radio, por lo que no se puede usar para el programa de texto de radio.
4 caracteres del texto de radio están en RDSSC y RDSSD (bloque 3 y 4)
Te aconsejo que leas el documento muy interesante sobre el protocolo RDS en SI4703 => AN243 de Silicon Labs
También restablezco el bit SKMODE en el registro POWERCFG (consulte la hoja de datos SI4703) para permanecer en el rango de frecuencia mientras busco canales
Leer datashhet ayudará mucho a comprender el código y todos los manejos de registros.
Paso 2: la base de carga
No hay muchas cosas que agregar
Las imágenes pueden hablar mejor.
Acabo de agregar un diodo 1N5404 en el contacto de 12 voltios
1) para evitar problemas en caso de que el contacto de la batería toque el contacto de 12 voltios al colocar la radio en la base (pero nunca sucedió)
2) para bajar el nivel de voltaje a 10.8 voltios (también hay un diodo en la placa base) ya que el MC7805 puede calentarse un poco al pasar de 12V a 5 voltios con 1 amperio de corriente (atornillé un trozo de hierro como disipador de calor en el 7805)
Agregué un pequeño voltímetro de 3 x 7 segmentos para indicar la carga de la batería
Este dispositivo es de 3 cables para disminuir el consumo (más de 1 Mega Ohm en el cable de medición) lo que permite mantener la radio en la base APAGADA durante mucho tiempo sin descargar la batería.
Se utilizan 2 interruptores de palanca para apagar el suministro de CA cuando la radio está fuera de la base (para evitar tener 12V en los contactos)
La caja está hecha con madera contrachapada (antes de pintar en la foto) ¡¡¡¡Te dejo imaginar cómo hacer una bonita caja ya que la mía no es muy sexy !!!!!
Estaba muy sorprendido, pero la base de carga está funcionando bien y nunca tuve humo mientras conectaba la radio con ella ………….
Paso 3: la caja
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
De todos modos, explicaré en breve cómo pude construir algo que se parece terriblemente a una caja de herramientas.
La parte delantera y trasera están cortadas en madera contrachapada de 4 mm 15x45 cm
la parte superior e inferior son de madera contrachapada de 10 mm 15x45 cm
Los lados y las 2 particiones internas (2 2 lugares para HP y los componentes en el medio) son de madera contrachapada de 10 mm 13x13 cm
En el panel frontal hice orificios de 2 x 10 cm para el HP y un orificio cuadrado de 14x14 para insertar el vidrio orgánico de 15x15 2 mm que pinté en negro (agregando después de pintar una pegatina impresa transparente, pero no es tan legible debido al negro color detrás)
Hice 2 agujeros en la parte superior:
uno para el potenciómetro del Power Amp (para ajustar el nivel si es necesario) y también, como salida de calor
otro para la antena
en el panel trasero hice 2 agujeros:
Uno para el enchufe USB (enchufe directamente en el nano)
Uno de 16 mm para refrigeración por aire (el orificio de 14 mm del potenciómetro del amplificador de potencia es la salida superior de refrigeración por aire)
el mango está hecho de un tubo de cobre de 12 mm pintado en negro
Todos los componentes de la imagen de arriba se encuentran en el compartimento central (luego tuve que poner las baterías en el compartimento HP izquierdo porque estaba demasiado cerca del módulo HC06 BT en el compartimento principal)
Eso es todo
¡Por supuesto que debe haber algo más sexy!
Paso 4: La parte de Arduino (esquemas y código)
Intenté poner la mayor cantidad de información posible en los comentarios del programa.
Más información
El procedimiento Decode_TXT es utilizado tanto por el procedimiento de Bluetooth como por el procedimiento de conmutación
Algunas palabras clave se utilizan en ambos procedimientos.
v + => para aumentar el volumen
v- => bajar
f + => para aumentar la frecuencia de un paso de 100 Khz
f- => disminuir
su + => buscar
sd - => buscar abajo
prefu => aumentar el número de canal preseleccionado
prefd => disminuir
hola => enviado por la aplicación de Android durante la conexión bluetooth, el código devuelve el estado de la radio
bye => enviado por la APP cuando BT se desconecta
pow => enviado por la radio a la aplicación en modo de fuente de alimentación (en la base de carga)
bat => cuando está en modo batería
lb => enviado cuando el nivel de la batería es demasiado bajo (alrededor de 8 voltios)
La comunicación Bluetooth está asegurada por un bucle de control:
Cada vez que la radio FM envía una información, se inicia un temporizador esperando la respuesta "ok" de la aplicación de Android
en caso de 3 errores (el temporizador expiró), la radio corta el enlace BT. (esto también corta el enlace en el lado de Android)
Por otro lado
Cuando la aplicación envía un comando, espera la respuesta de la radio para enviar otro comando.
El procedimiento get_RT se inicia cuando se establece la bandera RDS (después de una interrupción en el pin 3)
aquí está el código (enlace a GITHUB)
Los esquemas:
La placa principal de la radio FM (de hecho, el SI4703 está aparte en una caja blindada):
El panel frontal:
La base de carga:
Los enlaces a los archivos de Fritzing:
Placa principal FR RADIO
Panel frontal
Base de carga
Paso 5: la aplicación de Android
Hecho con el inventor de la aplicación
aquí están los enlaces a GitHub
Radio FM aia
APK de Android
La aplicación utiliza 2 temporizadores de reloj:
1) para la comunicación bluetooth (100ms)
2) para parpadear el led de la batería cuando la carga es de alrededor de 8 v (1000ms)
Por primera vez, tendrá que emparejar el módulo HC06 con su teléfono inteligente o tableta.
Yo uso TinyDB para guardar la dirección BT del módulo HC06, en la primera conexión se habilitará el botón de dirección BT y tendrás que elegir el HC06 en la lista (por mi parte, renombré el módulo HC06 en FM_RADIO)
En la aplicación, no siempre usé el porcentaje para el tamaño del elemento, por lo que puede haber problemas de visualización dependiendo del teléfono inteligente.
El mío es un Galaxy Note 3, una pantalla bastante grande ……..
Así que pasé un buen rato descubriendo este SI4703 pequeño pero muy eficiente.
Y me gustó mucho escribir este instructivo.
Hasta mi próximo proyecto
¡¡¡Hasta la vista!!!