domingo, 10 de diciembre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 21. Dial: representación de números “big font” con caracteres de 5x8 píxeles

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 21: Dial: representación de números “big font” con caracteres de 5x8 píxeles



En el dial de los receptores de radio clásicos siempre se ha destacado visualmente la frecuencia sintonizada bien de forma gráfica, con una llamativa aguja sobre una escala graduada, bien numéricamente, con displays de 7 segmentos de tamaño grande que permiten verlos a distancia. Ambos métodos ayudan a recordar en qué parte del dial se encuentran nuestras emisoras favoritas. Sin embargo, al generalizarse los receptores de FM con RDS, se ha ido desplazando paulatinamente de ese lugar destacado a la frecuencia de sintonía en favor del nombre de la emisora. Creo que es preferible visualizar ambos datos. Por un lado sigue siendo útil conocer la frecuencia de recepción (aún hay emisoras que transmiten sin RDS), y por otro lado, leer el nombre de las emisoras sintonizadas permite seleccionarlas con más facilidad (antes había que escuchar las emisoras para reconocer las voces o sino esperar hasta que dijeran su indicativo).

Con los displays lcd utilizados en el receptor, de caracteres matriciales de 5x8 píxeles, la frecuencia de sintonía se ve muy pequeña y a más de un metro de distancia ya cuesta leerla. ¿Cómo visualizar números más grandes? Una solución es representar cada número con cuatro caracteres por lo que aumentamos su tamaño cuatro veces. Como los displays son de 4 líneas x 20 caracteres, hay espacio suficiente para representar la frecuencia de sintonía en “big fonts”. En este capítulo vamos a ver cómo programarlo en el Arduino. Puedes descargarlo en este enlace:

Receptor FM capítulo 21


sábado, 25 de noviembre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 20. Grabado en eeprom de la configuración del receptor

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 20: Grabado en eeprom de la configuración del receptor


En los tres anteriores capítulos mencionamos que se ha de guardar en una memoria eeprom una copia actualizada de los registros del chip Si4703 de modo que el receptor, al volver a encenderlo, vuelva al mismo estado que tenía la última vez que fue utilizado. Vamos a ver la función encargada de esta tarea. En este enlace puedes descargar el pdf para leerlo tranquilamente:

viernes, 10 de noviembre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 19. Gestión de la botonera de configuración y de los ajustes del receptor.

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 19: gestión de la botonera de configuración y de los ajustes del receptor


En este capítulo estudiaremos las funciones que gestionan la botonera de configuración y el encóder nº 2 de ajuste de niveles. También veremos cómo se actualizan los registros del chip Si4703 cada vez que se modifica algún parámetro de funcionamiento del receptor.

Este es el enlace para descargarte el pdf del capítulo. Espero que te sea útil.

miércoles, 25 de octubre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 18. Sintonía manual, presintonías y sintonización directa

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 18: Sintonía manual, presintonías y sintonización directa


En este capítulo vamos a ver la función que gestiona el encoder nº 1 correspondiente al mando de sintonía manual más las funciones del programa del Arduino que gestionan la botonera de presintonías. Con dicha botonera se puede hacer dos tipos de sintonización de emisoras:

  • Por presintonías, al pulsar un botón se sintoniza una emisora previamente memorizada.
  • Por sintonización directa de la frecuencia introducida a través de la botonera, que se comporta como un teclado numérico en esta modalidad.

En este enlace puedes descargar el capítulo. Que lo disfrutes.

martes, 10 de octubre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 17. Sintonización del Si4703

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 17: Sintonización del Si4703




En este capítulo veremos cómo es el proceso de sintonización de frecuencias y de búsqueda de emisoras del Si4703. Dicho proceso se describe en el apartado 4.6 de la “datasheet” del chip y vamos a traducirlo al lenguaje del Arduino para crear una función dedicada a sintonizar.

lunes, 25 de septiembre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 16. Configuración E/S Arduino y arranque del Si4703

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 16: Configuración E/S Arduino y arranque del Si4703


Además de cablear físicamente el Arduino con el resto de elementos que componen el receptor, es necesario decirle por “software” qué es lo que tiene conectado. Para ello hemos de configurar los pines de los puertos de e/s del Arduino y especificar las direcciones de todos los esclavos del bus I2C.

En este capítulo entresacaremos del programa del Arduino la configuración de las e/s conectadas al Si4703 y a los encóder más la declaración de objeto de la memoria eeprom. Todas estas líneas de programa sumadas a las del capítulo anterior son necesarias para poder ejecutar la función de arranque del Si4703 que vamos a ver aquí también.

En este enlace puedes descargar el capítulo:



lunes, 11 de septiembre de 2023

RADIO FM con chip Si4703 y Arduino Nano. Capítulo 15. Los registros del Si4703

 

RADIO FM con chip Si4703 y Arduino Nano

Capítulo 15: Los registros del Si4703



Cuando decidí a llevar a cabo este proyecto me pregunté si un Arduino de la gama más sencilla, como es el Uno o el Nano, sería capaz de gestionar el chip Si4703. Mis dudas se concentraban en si podría procesar con la suficiente rapidez el flujo de datos del RDS y de las pantallas lcd del dial, y en si dispondría de suficiente memoria RAM para albergar todas las variables y datos demandados por el programa. Felizmente, la respuesta a estas cuestiones fue positiva: tanto el Arduino Uno como su hermano pequeño, el Arduino Nano, gestionan perfectamente los lcd y el RDS (no es tan fiero el toro como lo pintan). Según el IDE del Arduino, el programa que desarrollé demanda 524bytes de la memoria RAM para variables globales, ¡sólo el25%!, así que aún hay espacio para las variables locales y la pila de “stack”. Cabía la posibilidad de que el Arduino se colgara por desbordamiento de la pila de “stack” al tener que atender un elevado número de interrupciones y saltos a subrutinas. El programa no es terriblemente extenso y ocupa poco más de 11Kbytes de la memoria flash (37%).

A partir de este capítulo comenzamos la descripción del programa del Arduino, que iremos analizando cachito a cachito como si fueran las piezas que componen un puzle.

Este capítulo lo vamos a dedicar a la piedra angular del software del proyecto: los registros de lectura y de escritura del Si4703. Primero haremos una descripción muy breve de los mismos y después veremos cómo acceder a ellos con el Arduino. En el siguiente enlace puedes descargar el pdf para leerlo tranquilamente "offline".