Radio Data System

=Définitions=

Le RDS (Radio Data System) est un protocole de transmission de données qui sont émises en parallèle d'ondes radios FM (bande II, de 87.5 à 108.0 MHz).


 * Voir: Wikipédia pour plus de détails.

Trames RDS
Le protocole RDS permet de transmettre des données sous forme de trames suivant un débit de 1 187.5 bit/s. Ce qui correspond à un peu plus de 11 trames RDS par seconde. Une trame RDS est composée de 4 blocs nommés respectivement: Bloc A, B, C et D. Chacun de ces blocs est constitué de données de 16 bits (poids fort) et de 10 bits de contrôle (poids faible). (1 trame = 4 blocs = 104bits)

=Types de données=

Plusieurs types de messages peuvent être reçus par le biais de ce protocole. Ils se comptent au nombre de 32, et sont organisés en 16 groupes et 2 versions. Ces identifiants sont contenus dans le bloc B qui s'exprime ainsi :


 * Le Program Type indique le type de programme en cours de diffusion. La Palice n'aurait pas dit mieux.


 * Si Traffic Program est à 1, une radio écoutée peut éventuellement transmettre des informations routières. Un bit Traffic Annoucement est disponible sur 4ème bit du bloc B, s'il est à 1 comme Traffic Program, la station est en train de diffuser des informations routières.

Comme dit précédemment, Groupe et Type représentent la classe de données reçues. On peut par exemple facilement obtenir le nom d'une radio et éventuellement un texte en cours de diffusion. Ou même encore l'heure.

Groupe peut prendre une valeur entre 0 et 15, et Type entre 0 (A) et 1 (B).

Exemples de groupes/types
Le but de cette page n'est pas de décrire complètement le protocole RDS mais plutôt de donner une vision d'ensemble du protocole.

Message 0A
Le message 0A est le plus souvent utilisé, voici un exemple de bloc B pouvant être reçu :


 * On retrouve le bit Traffic Annoucement rapidement évoqué, il est à 0 et Traffic Program est à 1, on peut en déduire qu'aucune information routière n'est en cours de transmission.


 * Un bit Music Speech est aussi contenu dans un message 0A, quand il est à 0, un programme parlé est en cours de diffusion sinon il s'agit d'une musique/chanson.


 * Le bit Decoder Information permet d'obtenir séquentiellement des informations de transmission d'une radio.


 * Enfin les deux derniers bits sont les plus intéressants, ils permettent d'obtenir le nom de la radio. Plus précisément ils indiquent la position de 2 lettres (chacune codée sur 8 bits) contenues dans le bloc D. Le nom de la radio ne peut par conséquent excéder la taille de 8 caractères. Si addr = 0, alors le bloc D contient les deux premières lettres de la station, si addr = 1, les deux lettres suivantes, ... jusqu'à addr = 3.


 * Remarque importante, un parseur doit impérativement lire ces lettres séquentiellement de addr = 0 à 3, si un message A0 est raté, le parsing doit être recommencé. En effet, le nom de la radio est théoriquement statique, mais certaines stations se sont vues recevoir une autorisation pour faire passer des informations dynamiques par ce message.

=Receivers=
 * https://www.silabs.com/Support%20Documents/Software/Si4706_49_Presentation.pdf
 * SparkFun FM Tuner Evaluation Board - Si4703
 * SparkFun FM Tuner Basic Breakout - Si4703

=Transmitter=
 * https://learn.adafruit.com/adafruit-si4713-fm-radio-transmitter-with-rds-rdbs-support/overview