Broadcast FM sound on internet thourgh RPI 0

Bonjour,

J’aimerais envoyé le son d’une station radio FM sur une plateforme de broadcast audio en ligne (pour un un usage privé) pour écouter cette station (locale) dans d’autres régions où elle n’est pas diffusée.

Pour réaliser ce montage, j’ai pensé à l’architecture suivante:

  • brancher un câble audio entre le poste radio FM (qui a une prise jack) et ma Raspberry PI Zero W
    Questions: quel matériel nécessaire doit être ajouté sur la RPI0 ?
  • Connecter la RPI0 en Wifi à la box internet pour envoyer le son en ligne
    Questions: avez-vous un site à me recommander ? Existe-t-il des scripts PY à run sur la carte pour faire ça ?

J’aimerais des éléments pas trop onéreux. J’ai un port MicroUSB sur la raspberry, puis-je simplement acheter un cable audioJack vers/MicroUSB et le brancher dessus ?

Merci d’avance pour votre aide et vos conseils,

Bonne journée.
HV

hello,

a mon humble avis : NON !
il te faudra une carte son qui transforme le signal en numérique - un machin comme ça :
https://www.amazon.fr/Audio-Adapteur-Carte-Externe-Virtual/dp/B019ISXI80/ref=sr_1_13?__mk_fr_FR=ÅMÅŽÕÑ&crid=QFMGZ4PIN2QU&keywords=carte+son+usb+raspberry&qid=1681926616&sprefix=carte+son+usb+raspberry%2Caps%2C116&sr=8-13

plus d’info là :

le pi zero ayant que des micro usb il te faudra un cable Micro USB B (mâle) vers USB A (femelle)

pour transmettre du son sur le web la référence semble être Icecast ( https://www.icecast.org/ )
le paquet existe sous bullseye : icecast2 - streaming media server

bonne bidouille !

Il est possible d’émettre sur le FM depuis un RPi, alors je me demande si il ne serait pas possible de capter le FM avec un RPi pour l’écoute en numérique… serais intéressant de voir si c’est possible. Ou sinon si la radio a iun stream online avec région lock, faire l’écoute du stream online et le rediriger sur ton stream.

hello,

apparement oui si j’en crois cette page ( https://www.framboise314.fr/le-raspberry-pi-comme-emetteur-fm-experimental/)

mais en France c’est complètement illégal ( six mois d’emprisonnement et de 30 000 euros d’amende )
un peu chère la bidouille :wink:

Ce n’est pas illégal, il ne faut pas dépasser un nombre de Watts d’émission. Les modules pour la voiture le font.

La ou c’est illégal est quand c’est dans un but commercial, pour brouiller les ondes utilisé par un autre émetteur. Dans les églises, il utilise souvent le système FM pour émettre facilement sur tout le terrain/bâtiment.

L’idée est que si un RPi arrive à émettre, je me dis qu’il doit être en mesure de recevoir, et c’est cette partie qui t’intéresse.

Il y a aucun réglementation sur la réception d’un signal FM :slight_smile:

Alors c’est de savoir si c’est possible de le faire et comment.


J’ai utilisé un temps un RPi pour faire le contraire de ta demande, je diffusait ma radio internet sur le FM grâce à ce projet. Facile a mettre en place et pratique pour diffuser la musique dans la maison sans le délai du BT ou l’installation de câblage.

Liens pouvant aider;

Alors c’est possible, non ? :slight_smile:

Bonjour à tous,

Merci pour tous vos conseils ! Je ne veux en effet pas émettre (car illégal), juste écouter une fréquence très précise (au dixième de MHz près) c’est pour ça que je voulais au départ utiliser un vrai appareil au départ et non un receiver bidouillé (ca risque de pas être aussi précis non ?).

Donc si je comprends bien, je dois acheter uniquement des convertisseur Audio > USB > USB Micro et boom le tour et joué ?

Merci :slight_smile:

Je crois que la qualité sera bonne, selon la solution que tu décide de prendre. La longueur de l’antenne améliora la réception. La précision est de mise sur un signal FM au dixième, ceci ne m’inquiète pas, car sans ça le projet serait ridicule, aucune bande ce trouve sur un « .0 », les valeur utilisé sont souvent des nombre impairs. Les seul cas que ça changerais pour du pair est une réglementation régional ou un changement de fréquence du a la distance avec la source. Par exemple ici a Montréal (QC), il y a une radio a 96.9, elle devient le 96.8, puis 96.7 plus que je m’éloigne de l’île, jusqu’en perdre le signal.

Autre chose, la signal est plus « large » si tu es proche, alors la variation pour la qualité est moindre.

Par exemple, j’ai configuré mon FM transmitter sur le 107.7, au 107.9 il y a une radio et au 107.5 aussi.

En banlieu, le signal est bien défini, ce qui fait que pour le 107.9, le 108.0 et le 107.8 ont pratiquement pas de « contenu », mais en ville, ou la source ce trouve, mon 107.7 commence a avoir des interférence du 107.9 qui devient possible aussi sur le 107.8 (et 108.0) et le même effet ce produit avec le 107.5.


Perso, je regarderais et testerais dans la mesure du possible les solutions que j’ai trouvé. Des fois le bidouillage peut donner de bon résultat (voir meilleur si il est bien exécuté et que la technologie le permet). Le signal FM est vieux et très simple à prendre en charge, la majorité des kits de soudure pour débutant ont ce genre de guide en début.

Vu que tu recherche un signal précis et désire pas changer de poste, et que le but est de le convertir qu’en signal numérique (qui techniquement est illégale car tu restream un contenu protégé, mais peu de chance d’être accusé si tu t’affiche pas), tout faire via le RPi n’est pas a négliger.

La solution d’une clé USB avec un Line-In (qui sera pas simple à trouvé à bas prix sauf si tu passes par la prise Micro) est en fait facile et simple. La qualité sera guère mieux je crois, mais auras le mérite de ce mettre facilement en place, mais tu devra utiliser deux sources d’alimentation, monopoliser un radio FM et avoir plus de place consommé. Et passer en prise Micro, selon la carte USB, peut rendre la qualité moins bonne.

Je verrais bien ton projet avec un RPi Zero v1, car il aura qu’une tâche simple à faire (et mes tests d’émission FM ont été fait sur ces modèles et j’ai adoré l’expérience). Alors tu gagnerais en côté « compact » et « faible consommation ».


Résumé

La qualité dépendra de la solution choisie, de la qualité de réalisation, de l’équipement/antenne utilisé et de ta position géographique. Je suggère de ne pas aller vers la solution USB sans avoir testé dans la mesure du possible une solution plus autonome. Mais je te dis ça surtout pour l’intérêt de créer un projet « propre » et d’allure « simple et pro », de mon avis.

Alors je crois que tu as toutes les informations requises pour réaliser ton projet comme tu le souhaite :slight_smile:

Merci encore une fois pour ces éléments de réponse @levelKro .
En effet, c’est pour écouter une fréquence VHF (communication maritime et surtout c’est pour entendre les bulletins météos côtiers) : 156.800MHz: on est donc un peu au dessus de la FM classique.

Dans le Tuto de la board violette, il est écrit de ne pas dépasser f= 108 MHz .

Par ailleurs, si possible j’aimerais pouvoir écouter 2 fréquences.

Pour la limite du 108… il faudrait voir la raison, mais c’est habituellement une fréquence « out of range ».

Écouter deux postes inclus alors deux poste d’écoute, là, la solution avec un USB serai bien pour faire l’extra sans trop de complication si le guide ne permet pas d’inclure plusieurs écoutes en même temps (changement de pin par exemple)

Le terme « en même temps » que j’ai employé n’est pas vraiment exact. L’idée serait de mettre en place un système simple (interface web?) pour relancer le script avec la deuxième fréquence et ainsi, switch de la première à la deuxième quand je souhaite.

Alors c’est possible c’est sur, les paramètres ne sont pas coulé dans le béton.
Bref, fait tes tests, tu en apprendra plus sur les possibilité et pourra surement ajuster le tout.

N’oublie pas qu’un Raspberry et avant tout un moyen d’apprendre en développant un projet.

En cherchant un accessoire pour ma voiture, je suis tombé la dessus, ça peut t’aider :slight_smile:

Hello @levelKro , Je vais d’abord tester avec un dongle FM. :stuck_out_tongue:
Puis-je utiliser un transformateur samsung 5V 2A pour alimenter la RPI0 W v1 sur le port micro usb ? J’utilise le transofrmateur et le cable officiel de Samsung.

Bien à toi,

Oui tout chargeur 5V avec un ampérage suffisant peut marcher. C’est le voltage qui est importantt, l’ampérage doit lui dépasser ce que tu songe consommer.

Très bien !
A force de bidouiller avec une RPi, on se prend vite au jeu et on apprend, c’est top !
Mauvaise nouvelle…
J’ai branché un Stick DVB-T + DAB + FM RTL2832U avec adaptateur USB → MicroUSB sur la Raspberry Pi Zero W V1. La Rpi0 fait office de server SDR et envoie les paquets TCP par la box, à laquelle est connectée en Wifi. Lorsque j’ouvre un logiciel comme SDR Sharp pour me connecter à ce serveur local et écouter le son… la qualité est vraiment mauvaise, c’est très saccadé, on sent qu’il y a un manque de « données » de son (peut-être qu’elle n’envoie pas assez vite ou le Wifi n’est pas bon ?).

Peut-être devrais-je essayer de relier la RPI directement à la box par un cable Ethernet ? Mais pour ça il faudrait que je prenne un adaptateur avec 1 port USB (pour le dongle RTL), 1 port Ethernet et le tout qui ressort en Micro USB. J’en ai trouvé sur internet mais… est-ce que ça marcherait de brancher ces deux signaux sur le port Micro USB ?

D’après le résultat de la commande cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq , ma carte tourne à 1 Ghz donc peut-être pourrais-je l’overclock ?

Remarque: quand je branche le Stick USB directement à mon PC, aucun problème, le son est clair.

Je suis preneur de toutes idées pour améliorer cela ! :slight_smile:

Bonne soirée,

Le problème viens du RPi et de la performance.

Le RPi0 est de très mauvaise performance, basé sur le RPi1, il est donc mono processeur. La capacité d’encodage/décodage est (très) limité. Alors la qualité sera très basse. Par exemple, si tu utiliserais eSpeak, tu remarquerais que les vois sons anormalement trop lente. Comparativement aux mêmes valeur sur un RPi plus récent.

Un signal audio est une donnée assez légère, la consommation de la bande passante devrais être en dessous d’un niveau causant un lag. Un signal compressé en MP3 à 128kbs donne environ un débit de 15k/s. Ceci est une évaluation approximative de l’usage.

Je privilégie toujours le filaire, le Wifi je l’ai en horreur pour les interférences et le sur-usage du Wifi en milieu urbain. J’ai beau avoir 4 routeurs Wifi pour fournir un sans-fils qui couvre au maximum mon logement, j’ai quand même des difficultés de connectivité. Pourtant j’analyse les ondes pour prendre des plages vides.

C’est sur que abuser du USB ne va pas t’aider. SI tu es « pris » avec un RPi0, alors faudra y ajouter un hub USB alimenté pour l’aider. Selon certains documents, le RPi0 limite la sortie sur le USB à 0.6A, soit pour un seul appareil USB, ont peut doubler avec le paramètre max_usb_current=1 dans le config.txt, ce qui donnerais dans les 1.2A, dans ce cas d figure il faudrait un chargeur de 2.5A idéalement au minimum pour s’assurer de fournir.

L’overclock, je déconseille sauf si tu es un habitué de jouer entre les clock CPU/RAM et l’ajustement du voltage. Cette manip est fortement déconseillé par la Team Raspberry Pi Foundation. Malgré qu’il soit possible de le faire, ceci, comme dans tout autres cas de Overclock, endommager le matériel et apporter des résultat étranges (corruption de donnée par exemple). Et connaissant bien el RPi0 (J’ai en 4 en tout), je sais que l’overclocking va apporter un gain ridicule de … 1 à 5% vraiment gros max.


Le RPi0 me déçois

Je suis heureux de la sortie du RPi0 v2, car le RPi0 v1 ma déçu beaucoup. De très mauvaises performance, dans le seul domaine qui pourrait avoir un avantage, il est pourtant dénudé de la capacité audio. J’aime le petit format de ce modèle, qui fournis le minimum, avec l’audio il aurait été parfait. Mais il est affreusement lent.

J’ai par exemple travaillé avec des jeux Pico8, de ma lecture, j’en comprend qu’il peut marcher sur un RPi Pico, mais sur un RPi0 par exemple, il est lent et le son est saccadé, clairement, il n’arrive pas a bien marcher. La démonstration de ça « non » puissance ce fai avec les émulateurs, il arrive à émuler un NES quand même bien, mais le SNES, ont arrive vite à la saturation, et je ne parle pas de jeux avec la puce FX par exemple, mais du seul bon vieux Super Mario World, Par exemple la « GamePI20 » qui donne l’illusion que le RPi0 est assez puissant pour en faire une console portable n’est que illusion.

J’ai désiré l’utiliser pour un Dashboard, mes tests en mode « kiosque » pour Chrome sont affreux, une lenteur extrême. Des lags de touche invivable (press « play » et 10-15s après j’ai la réaction) et plus le temps avance, plus il accumule le « lag », arrivant à un point qui est trop « en retard » pour arriver à garder un signal Bluetooth actif (que je me servait pour la sortie audio). La lecture de musique en ligne de commande suffit à l’engorger suffisamment pour rendre l’affichage « lagguy ».

Dans un projet de caméra de sécurité, il atteint également vite la limite. Une caméra pour RPi est connecté, si j’utilise ffmpeg pour capturer, j’ai un lag de 5~10s. Si j’utilise motion, j’ai un lag de 1~5s.

Bref, il faudra des essais/erreurs pour comprendre ce qui accroche. Idéalement faut demander au RPi de faire la job et éviter au maximum les encodages et travailler avec des données brute. Si possible, passer au RPi2 (ou mieux) pour aller en chercher plus. Le RPi 0 aurai été en mesure de faire une seul job, par exemple encoder l’audio de la radio en signal internet. Il aurait eu un lag d’encodage (selon la plateforme), c’est tout. Plus tu ajoute de travail, plus il sera lent et commencera a dépouiller les tâche de la qualité d’exécution. Tu peut tenter de t’aider avec la commande nice, qui sert a fournir la priorité au processeur pour une tâche. Avec ce type de manipulation, il est possible de limiter la lecture saccader et rendre certaines tâches plus réactives, mais encore la, il y a des limites.

Bonne nouvelle, le problème de son est « résolu ». J’ai réduit la bandwith dans le logiciel SDR Sharp (et surtout dans l’éxécution dans la commande j’ai mis la même valeur de sample rate rtl_tcp -s 1024000 au lieu de rtl_tcp -s 2048000 ). Désormais, je n’ai plus cet effet sacadé meme dans le bruit de fond…

Malheureusement, je n’entends rien lorsqu’une communication arrive sur 156.8Mhz. J’ai une vraie VHF à côté pour vérifier quand il y a un message audio qui est transmis mais sur le logiciel SDR SHARP je vois un petit pic (pendant la transmission) mais aucune voix ne sort…
En émettant à -2 mètres du dispositif, on reçoit très clairement le signal et le son sort bien du logiciel…

Je me demande donc pourquoi une vraie VHF capte un signal de bonne qualité (disons 4/5) mais pas mon antenne avec la RPi0 juste à côté…

Hypthèse 1 : l’antenne fournie est nulle… Mais dans ce cas elle ne devrait absolument rien recevoir ? Or les transmissions VHF quand on est juste à côté fonctionnent…
Lien d’un produit qui ressemble au mien: https://www.amazon.fr/dp/B013Q94CT6?psc=1&ref=ppx_yo2ov_dt_b_product_details

Hypothèse 2 : il n’y a pas « assez de courant dans l’antenne » et donc le champ magnétique est trop faible. La RPi envoie du courant dans le stick USB via le port Micro USB puis le stick alimente l’antenne. Peut-on augmenter ce courant envoyé ?

Avez-vous des idées? Comment résoudre ça ?

Merci.

SI tu prend un laptop par exemple et tu déconnecte les deux antennes, tu auras quand même du signal, car la carte avec ces prises offre déjà une captation. Cependant tu n’auras pas tout les réseaux, car ceux plus loin (et faible) ne seront pas capté.

Alors il est normal que si la source est à côté, qu’il capte mais que plus loin non, car tu as une bonne analyse (#1), l’antenne peu être défectueuse. Comme un mauvais contact ou le câble qui est brisé. Faudrait la tester et/ou la remplacer.

Il n’y a pas d’alimentation dans l’antenne, c’est elle qui transmet une alimentation par réception d’une fréquence. Si elle est alimenté, c’est qu’elle a un amplificateur pour transmettre les fréquences reçu plus fort. C’est comme le principe d’un microphone pour un exemple simple.

Une antenne n’est pas plus qu’un métal transmetteur, sensible aux fréquences ET qui peut la transmettre. Alors tout métal comme un cintre, câble audio (analog), câble TV (coaxiale), feuille d’aluminium peuvent servir de contac valide pour créer une antenne. La qualité de réception varie selon le type de matériel, le gainage (le recouvrement du matériel) et de la longueur, entre autres. Tu peux aider parfois la réception en touchant simplement le connecteur, ton corps fera l’antenne. (ceci marche quand j’ai des interférence dans la voiture vu qu’un « voisin de route » utilise une bande prohe ou étant celle que j’utilise avec mon module main libre ou quand je tente de capteur mon module de maison depuis une radio d’une autre pièce.

J’ai testé en mettant mon doigt, ça n’a pas amélioré hahaaa
J’attends l’adaptateur MCX vers SMA… a suivre.

y 'a t’il des réglages spécifiques que je pourrais faire sur SDR Sharp notamment la bandwith ( quelle valeur) pour l’écoute sur 156.8 Mhz?