Quiconque a déjà pensé à un PC de voiture s’est certainement occupé de la réception radio. Ensuite, il n’y a pas beaucoup de possibilités d’utiliser le Pi comme un récepteur FM, mais l’une d’entre elles est le module Si4703, qui est utilisé ici.
Dans un précédent tutoriel, j’ai déjà montré comment utiliser le Raspberry Pi en tant qu’émetteur radio. Cette partie porte sur la façon de recevoir et de lire des fréquences radio.
Pièces de matériel requises
Pour utiliser votre Raspberry Pi comme récepteur radio, vous aurez besoin des éléments suivants :
Installation
La connexion du module Si470x est la suivante :
Raspberry Pi | SI470x |
---|---|
3.3V (Broche 1) | 3.3V |
GND (Broche 6) | GND |
SDA (Broche 3) | SDIO |
SCL (Broche 5) | SCLK |
GPIO23 (Broche 16) | RST |
Sur l’image schématique, j’ai connecté GND à la broche 25 du Raspberry Pi, qui est également une connexion de masse.
Préparation
(Pour compiler le logiciel, wiringPi doit être installé, si vous ne l’avez pas encore fait, vous pouvez lire comment le faire ici)
Tout d’abord, nous activons SPI et I2C. Si vous l’avez déjà fait dans un tutoriel précédent, vous pouvez sauter cette étape.
sudo raspi-config
Sous « Options de raccordement », il y a l’entrée « I2C », que nous devons activer. Pour les anciennes versions de Raspbian, les entrées dans le fichier /etc/modprobe.d/raspi-blacklist.conf
doit être commenté (avec un #).
Ensuite, nous éditons le fichier des modules :
sudo nano /etc/modules
À la fin du fichier, nous ajoutons les deux lignes suivantes :
1 2 |
i2c-bcm2708 i2c-dev |
Enfin, nous installons les outils nécessaires s’ils ne sont pas déjà disponibles.
sudo apt-get update sudo apt-get install i2c-tools
Logiciel
git clone https://github.com/achilikin/RdSpi && cd RdSpi
Puis nous compilons :
fabriquer
Avant de commencer, cependant, le module doit d’abord être activé via I2C. Pour cela, nous créons un autre script dans ce dossier :
sudo nano i2c-init.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* i2c-init.c */ #include <wiringPi.h> int main() { int resetPin = 23; // GPIO23 int sdaPin = 0; // GPIO0 /* Setup GPIO access in BCM mode */ wiringPiSetupGpio(); /* Set pins as output */ pinMode(resetPin, OUTPUT); pinMode(sdaPin, OUTPUT); /* A low SDA indicates a 2-wire interface */ digitalWrite(sdaPin, LOW); /* Put chip into reset */ digitalWrite(resetPin, LOW); /* 1ms delay to allow pins to settle */ delay(1); /* Bring chip out of reset with SDIO set low and SEN pulled high (with pull-up resistor) */ digitalWrite(resetPin, HIGH); return 0; } |
Après avoir enregistré (CTRL + O, CTRL + X), nous le compilons.
gcc -o i2c-init i2c-init.c -lwiringPi
Ce script initialise le module afin qu’il puisse être utilisé (il doit être réinitialisé après chaque redémarrage, il serait donc judicieux de définir le programme sur Autostart).
sudo ./i2c-init
Pour tester s’il a été détecté, vous pouvez taper i2cdetect -y 1, qui devrait produire une telle sortie :
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: 10 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Testez le récepteur FM de Raspberry Pi
Une fois le module initialisé, nous pouvons utiliser le câble auxiliaire pour connecter nos enceintes/écouteurs (qui servent d’antennes) et rechercher des stations.
D’abord, nous devons réinitialiser le récepteur :
sudo ./rdspi reset
Vous pouvez régler une fréquence et le volume (0-30) comme ceci:
sudo ./rdspi tune 95.00
sudo ./rdspi volume 10
Toutes les autres commandes peuvent être consultées sur la page du projet Github.
PS : Si vous voulez appeler les fichiers compilés directement sans ./
, vous pouvez distribuer les droits suivants
chmod +x i2c-init chmod +x rdspi
Il suffit alors d’ajouter la variable path et de créer un lien (vous pouvez obtenir le chemin du répertoire courant avec pwd
):
export PATH=$PATH:/home/pi/RdiSpi cd /usr/bin sudo ln -s /home/pi/RdSpi/
i2c-initi2c-init
sudo ln -s /home/pi/RdSpi/rdspi rdspi
Ensuite, vous devriez pouvoir appeler la commande depuis n’importe où.