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)

=Descriptions des blocs=

Attention : La description des blocs ci-dessous ne tient compte que des 16 bits de données !

Bloc A: Program Identification Code
Le bloc A contient sur ses 16 bits de données le PIC qui indique la géolocalisation d'une radio.


 * Country indique le pays d'émission, devrait être égal à 0xF en France.
 * Zone indique la portée de la radio. (0x0=locale, 0x1=internationale, 0x2=nationale, autre=régionale)
 * Radio Type détermine le type de réseau utilisé. (public, privé...)

Bloc B: 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 (0 - 15) et Type (A=0, B=1) représentent le type de message reçu. Il existe par exemple des messages pour récupérer le nom d'une radio et éventuellement un texte en cours de diffusion. Ou même encore l'heure.

Blocs C & D
Ces deux blocs ne servent qu'à contenir des bits de données correspondant à un groupe/type obtenu par le bloc B. (B=Message type, C/D=Données du message.)

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 d'après la norme RDS, mais certaines stations se sont vues recevoir une autorisation pour faire passer des informations dynamiques par ce message.

Message 2A
Ce message est assez courant, il permet de réceptionner un texte émis depuis une radio. A l'instar du message 0A, seulement une partie des lettres du texte sont transmis de manière séquentielle. La norme RDS spécifie que le contenu de ce texte peut changer au cours du temps contrairement au titre de la radio.

=Récepteurs=

Un exemple de récepteur FM et de données RDS:
 * Si4703

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