Table des matières:

Radio Internet simple : KISSIR : 13 étapes
Radio Internet simple : KISSIR : 13 étapes

Vidéo: Radio Internet simple : KISSIR : 13 étapes

Vidéo: Radio Internet simple : KISSIR : 13 étapes
Vidéo: Program for the shop 2024, Décembre
Anonim
Radio Internet simple et simple: KISSIR
Radio Internet simple et simple: KISSIR
Radio Internet simple et simple: KISSIR
Radio Internet simple et simple: KISSIR

Parfois, il doit juste être tactile. Aucune interface d'aucune sorte. Juste des boutons.

Raspberry Pi en tant que lecteur de radio Internet n'a rien de nouveau, et il existe de nombreuses instructions sur la façon de créer un lecteur de radio Internet à l'aide d'un Raspberry Pi avec ou sans moniteur pour diffuser des stations Internet du monde entier. Si vous deviez choisir d'utiliser le headless (sans moniteur), vous auriez toujours besoin d'un moyen d'interfacer le lecteur pi, généralement une interface Web, sinon un moyen de communication direct avec l'hôte, tel que ssh. Cette instructable sera légèrement différente; nous utiliserons de simples pressions sur des boutons pour envoyer des commandes au pi, éliminant ainsi le besoin d'une interface Web et d'un écran LCD. Cela semble assez facile, non (?)

Nous allons commencer par un design très basique utilisant des boutons codés par couleur, chaque couleur représentera une station de radio Internet. Nous allons introduire du code python pour gérer la pression sur le bouton: la presse exécutera une commande pour lire une station de radio Internet pré-codée à l'aide de MPG123, un excellent outil de ligne de commande pour lire de l'audio sur notre pi.

Vos compétences en python n'ont pas besoin d'être avancées. En fait, je suis littéralement passé de "Hello World" à l'écriture de ceci, et comme vous le verrez, j'ai emprunté beaucoup de code - donc si je peux le faire et le documenter quelque peu, personne d'autre ne devrait avoir de problème.

Allons-y!

Fournitures:

Matériaux nécessaires

  • Raspberry pi/pi zero w avec toutes les fixations: Alimentation, carte SD et Raspbian ou Raspbian lite.
  • Wifi et accès internet
  • Un autre PC pour effectuer une navigation Web et possibilité de SSH sur le Raspberry Pi
  • Convertisseur numérique-analogique (DAC) - facultatif mais vous en serez reconnaissant.
  • Amplificateur
  • Haut-parleurs
  • Fil de raccordement et cavaliers
  • Fer à souder et soudure
  • Perf Board pour les boutons
  • Boutons tactiles: normalement ouverts - un pour chaque genre de musique, un bouton d'alimentation et un bouton de sourdine en option (7 boutons recommandés)
  • Un logement pour tout ce qui précède (facultatif mais bien rangé)

Étape 1: Pré-requis:

Conditions préalables
Conditions préalables

Nous commencerons par supposer que vous avez déjà configuré votre raspberry pi, votre DAC et votre amplificateur, et supposerons également que vous avez accès à Internet. En raison de la quantité de choix d'équipements audio, de préférences et d'options pour l'écoute audio, nous supposerons que votre configuration est déjà terminée: vous devriez déjà avoir du son sortant de vos haut-parleurs avant de commencer ce projet. Nous aurons également besoin de ssh sur le raspberry pi, donc en utilisant la configuration pi, assurez-vous que les interfaces ont ssh activé. J'utiliserai Raspbian lite et je vous recommande d'avoir une nouvelle installation de la dernière copie sur une nouvelle carte SD dédiée à ce projet. En cas de succès, nous construirons un appareil autonome qui pourra rester allumé 24h/24 et 7j/7 en tant qu'appareil d'écoute dédié.

Étape 2: Installez Python et Pip

Je préfère ssh au pi à l'aide d'un autre PC et exécuter toutes les fonctions requises à l'aide d'une session ssh, mais je suppose qu'il est possible de configurer initialement le pi sur un moniteur, un clavier et une souris et de travailler directement sur le pi jusqu'à ce qu'il soit travailler, puis déployer de manière autonome.

Commençons par effectuer une vérification de maintenance de routine de notre système et de la version python:

sudo apt-get mise à jour

sudo apt-get mise à niveau

Assurez-vous que Python est installé. Dans une session de terminal, tapez ce qui suit à l'invite de commande:

python --version

Si vous voyez python 2.7.13 (ou une version antérieure), installons python 3.+:

sudo apt-get installer python3

sudo apt-get installer python-pip

sudo apt-get installer python3-pip

sudo pip3 install --upgrade pip

Étape 3: Installez MPG123 et Adafruit Blinka

Maintenant que les fondations sont posées, il ne reste plus que quelques installations:

MPG123 est le logiciel audio qui jouera notre musique. L'installation est vraiment simple:

sudo apt-get installer mpg123

J'ai fait beaucoup de recherches et trouvé un excellent modèle sur le site Web d'Adafruit sur la lecture de fichiers audio à l'aide de boutons. Leur programme nous demande d'installer Adafruit Blinka:

$ sudo pip3 installer adafruit-blinka

Avant d'aller plus loin, effectuons une vérification rapide pour nous assurer que nous avons la configuration d'Alsa:

aplay --version

nos résultats devraient se lire: version 1.1.3 par Jaroslav Kysela

Étape 4: Ajustez le volume à 50 % dans Alsamixer

Ajuster le volume à 50% dans Alsamixer
Ajuster le volume à 50% dans Alsamixer
Ajuster le volume à 50% dans Alsamixer
Ajuster le volume à 50% dans Alsamixer

Prenons maintenant une mesure de précaution et ajustons notre volume à 50% pour éviter toute surprise assourdissante:

À l'invite de commande, tapez alsamixer:

alsamimixeur

Si nous regardons un écran rouge blanc et vert, ou un volume maximum de 100%, c'est une bonne idée de baisser le volume à 50% pour économiser nos tympans. Nous pouvons toujours ajuster plus tard (vers le haut ou vers le bas) si nécessaire.

Étape 5: Quelques devoirs: Trouvez 5 stations de radio qui valent la peine d'être écoutées

Quelques devoirs: trouvez 5 stations de radio qui valent la peine d'être écoutées
Quelques devoirs: trouvez 5 stations de radio qui valent la peine d'être écoutées
Quelques devoirs: trouvez 5 stations de radio qui valent la peine d'être écoutées
Quelques devoirs: trouvez 5 stations de radio qui valent la peine d'être écoutées

Nous aurons besoin d'une station pour chaque bouton. En fait, nous aurons besoin de l'url de la station. La pression sur le bouton appellera l'URL de la station de radio Internet dans un simple bit de code d'une ligne. Cependant, nous prenons de l'avance, nous avons donc des devoirs à faire; retrouvez 5 radios et leurs urls. Trouver 5 stations de radio n'est pas difficile, mais trouver leurs URL peut être délicat. Je vais vous expliquer pourquoi dans une minute.

SomaFm * est une excellente source pour commencer, surtout si vous n'avez pas encore d'idée sur ce que vous voulez écouter. Ils ont une grande variété de choix musicaux éclectiques, dont aucun que je trouve offensant, pas de publicités, et la meilleure partie: ils partagent ouvertement leurs URL. Pour saisir l'url, cliquez sur une image de la station qui vous intéresse, et sur la barre de navigation de gauche, cliquez sur « Liens de diffusion directe ». À partir de là, recherchez la section MP3 et récupérez l'url du taux de lecture le plus élevé (c'est-à-dire 128 battements 64). Collez l'URL dans un éditeur de texte ou un bloc-notes pour le moment.

Par exemple, pour gratter Christmas Rocks, l'url serait: (nous n'avons pas besoin de la description du serveur)

ice4.somafm.com/xmasrocks-128-mp3

Cela devient un peu plus difficile en dehors du monde de SomaFm. De nombreuses stations utilisent un intermédiaire entre l'auditeur et la station, que ce soit pour la publicité, le marketing ou éventuellement le suivi - et j'essaie généralement d'éviter ce type de stations. Étant donné que les intermédiaires préfèrent que vous écoutiez la station à travers eux, il est généralement assez difficile de trouver l'URL; et c'est là qu'intervient Vtuner.

*Je m'en voudrais de ne pas vous demander d'envisager de faire un don à votre station de radio préférée, car de nombreuses stations dépendent uniquement du soutien des auditeurs.

Étape 6: Facultatif: grattez l'URL à l'aide de Vtuner

Facultatif: gratter l'URL à l'aide de Vtuner
Facultatif: gratter l'URL à l'aide de Vtuner
Facultatif: gratter l'URL à l'aide de Vtuner
Facultatif: gratter l'URL à l'aide de Vtuner

Vient maintenant la partie amusante… Sur la page d'accueil de Vtuner, consultez leur énorme lien vers la liste des stations dans le coin supérieur droit. Choisissez un genre de musique qui vous intéresse, puis triez par vitesse la plus rapide, où vous verrez une liste de stations. Choisissez une station que vous pensez aimer, cliquez sur le lien ou le bouton de lecture et échantillonnez la musique. Si ce n'est pas pour vous, ne vous inquiétez pas, répétez le processus jusqu'à ce que nous en trouvions un adapté à un plaisir à long terme. Dans ma capture d'écran, j'ai choisi la version numérique à impulsion de la musique country et sur l'écran suivant, j'ai remarqué qu'elle sortait de la Croatie. La musique country de Croatie semble plutôt intéressante.

Je l'aime bien. Mais comment obtenir l'url ? Effectuez simplement un clic droit sur l'espace blanc à droite de l'image de la station, sous le nom de la station, et sélectionnez "Afficher la source de la page" et faites défiler jusqu'à environ la ligne 150. Nous recherchons la ligne qui dit "// Essayez pour gérer l'icecast". Et l'url se trouve juste en dessous !

orion.shoutca.st:8110/stream

Assez lisse !

Répétez cette étape jusqu'à ce que nous ayons au moins 5 stations sur notre liste.

Double Facultatif: pour une mesure supplémentaire, si vous pouvez trouver 5 genres de musique qui vous intéressent (par opposition à 5 stations), créez une liste de stations de radio pour chaque genre et enregistrez les listes sous forme de fichiers texte. Nous y reviendrons plus tard.

Étape 7: Configurez nos boutons

Configurer nos boutons
Configurer nos boutons
Configurer nos boutons
Configurer nos boutons

La partie la plus importante ! Dépoussiérez le vieux fer à souder ou au moins branchez-le et faites cuire la poussière. Il est temps de souder. J'utilise des boutons poussoirs momentanés à 4 broches, normalement ouverts. Je vais construire un ensemble de boutons (photo de gauche) et les attacher à une planche de perforation. C'est difficile à dire sur la photo, mais la direction des broches du bouton va du nord au sud. Sur le côté droit, vous pouvez voir où j'ai fait passer un rail de terre pour mes fils de terre et j'ai attaché des câbles de démarrage à extrémité mâle sur le côté opposé de chaque bouton. Plutôt que d'avoir 7 connexions au sol, le rail nous permettra de partager une connexion au sol avec le pi pour tous. Le résultat final est une plaquette délicate qui sera montée en dessous sur le dessus de la radio à l'aide de quelques vis à travers les trous pilotes fournis. Seuls les dessus des boutons apparaîtront à travers la rainure que j'ai découpée dans le dessus. Étant donné que ma surface supérieure n'a que 1/4 d'épaisseur, je veux faire attention à ne pas trop visser. La colle peut être utile pour maintenir la carte de perforation attachée à la radio.

Étape 8: identifiez nos broches GPIO

Identifiez nos broches GPIO
Identifiez nos broches GPIO
Identifiez nos broches GPIO
Identifiez nos broches GPIO

Dans mon seul autre instructable, j'ai présenté une nouvelle utilisation des anciens chapeaux de voix Google AIY version 1. Dans cette instructable très impopulaire (ou très populaire), j'ai mentionné à quel point j'étais impressionné par la conception du chapeau lui-même. J'en ai quelques-uns qui traînent, donc je vais construire un prototype en utilisant le chapeau car il a à la fois le DAC et l'amplificateur à bord.

Identifions maintenant six broches qui accueilleront nos appuis sur les boutons. Je vais vous demander de vous concentrer sur le côté gauche du chapeau Google AIY, où il est écrit "servos". Il y a une colonne de 6 œillets pour la broche où je vais attacher et souder mes extrémités mâles de bouton de notre étape précédente. Si vous travaillez sans le chapeau vocal google aiy, pas de soucis, la photo de droite vous guidera. Dans les deux cas, nous travaillerons avec les broches gpio (BCM) 26, 06, 13, 05, 12 et 24 de haut en bas (ou 0-5). GPIO #24 sera réservé pour un bouton de pause en option.

N'oubliez pas de fixer également la connexion à la terre.

Étape 9: Coder

Je doute que le code change beaucoup à partir d'ici, cependant pour la dernière version du code python, veuillez visiter mon github. J'ai joint une copie en date du 2019-12-18 appelée pytiful3.py.

Ce n'est pas le code le plus efficace que vous verrez jamais, et c'est assez verbeux, mais il fait le travail.

Commençons par créer un bac à sable pour jouer. À partir de notre répertoire personnel, créez un répertoire sur notre raspberry pi appelé kissir:

mkdir kissir/

et copiez le contenu du fichier pytiful3.py dans le répertoire en ouvrant le fichier exemple dans un éditeur de texte et en utilisant

sudo nano kissir/pytiful3.py

copiez / collez le contenu du fichier dans notre script python nouvellement créé. N'oubliez pas de sauvegarder notre travail en utilisant Ctrl-x, Y et entrez.

Si vous souhaitez une visite rapide du script, nous importons les modules python dont nous aurons besoin, puis nous définissons nos boutons et attribuons une broche gpio à chacun des 7 boutons. Il y aura 5 stations de radio (n'hésitez pas à éditer selon vos préférences de station), un bouton d'arrêt et un bouton d'arrêt. La boucle while true s'exécute et s'exécute jusqu'à ce qu'un bouton soit enfoncé, ce qui, dans la plupart des cas, arrêtera toute lecture mpg123 existante et commencera à lire la station attribuée au bouton qui a été enfoncé. Le bouton pause/arrêt n'est pas vraiment un bouton de pause mais plutôt un coupe-circuit puisque nous ne pouvons pas mettre en pause la radio Internet. La radio Internet n'attend personne.

Étape 10: Testez dans notre bac à sable

Testez dans notre bac à sable
Testez dans notre bac à sable

Avant de déployer notre radio, tout en restant dans notre session ssh, accédez au dossier kissir où notre script est stocké. Nous pouvons simplement exécuter le script à partir de la ligne de commande manuellement en tapant:

python3 pytiful3.py

Si vous avez d'abord jeté un coup d'œil au code, vous avez probablement remarqué que j'ai laissé des instructions d'impression afin que nous puissions dire ce qui se passe. Si tout s'est bien passé, nous aurons une invite qui lit "Appuyez sur un bouton". Cela nous indique que notre script est en cours d'exécution et qu'il a réussi une vérification de code préliminaire. Ma première tentative avait une boucle infinie de "musique en pause - appuyez sur le bouton pour continuer", et j'ai découvert que mon bouton de pause était câblé pour être toujours fermé, au lieu d'être normalement ouvert. J'espère que vous avez eu plus de chance avec l'étape de soudure.

Ctrl-C arrêtera le script si vous devez abandonner.

Alors si vous voyez "Appuyez sur un bouton", qu'est-ce qu'on attend ? Sélectionnez l'un de nos cinq boutons de station radio.

Il y a de fortes chances que vous entendiez un haut-parleur pop pour lancer la lecture de la musique, et je ne peux pas vous aider pour le moment. Mpg123 permet un suffixe "--preload 1" après l'adresse de la station dans la commande os.system, mais je ne pouvais pas dire si cela faisait une différence. Il doit permettre un léger tampon.

Un autre bout de code sur lequel vous vous êtes peut-être posé des questions: il y a un drapeau " -f 7000" après l'appel mpg123. Cela réduit le volume à une distance éloignée du volume maximum. Le volume complet serait de 32K. Si je comprends bien, l'échelle de volume n'est pas une échelle linéaire, donc je ne peux pas dire que ce n'est qu'un cinquième du volume maximum, mais c'est quand même assez fort. J'ai dû le faire parce que ma carte son - la carte son vocale Google AIY, ne fonctionne pas bien avec Alsamixer parfois.

Continuez à sélectionner les boutons de votre choix, asseyez-vous, détendez-vous et profitez du confort de votre écoute pour le moment.

Étape 11: Configurez notre code pour qu'il s'exécute automatiquement au démarrage

Donc, si tout fonctionne bien et que vous avez apprécié notre entreprise d'invite de commande sandbox, c'est le bon moment pour automatiser le chargement du script. Assurez-vous que vous êtes toujours dans le répertoire kissir et placez le code du script dans la corbeille de l'utilisateur:

sudo cp pytiful3.py /usr/local/bin/

Rendez-le exécutable:

sudo chmod +x /usr/local/bin/pytiful3.py

Écrivez un script shell pour l'exécuter au démarrage:

sudo nano pytiful3.sh

Et insérez le texte suivant:

# ! /bin/sh ### BEGIN INIT INFO # Fournit: pytiful3.py # Démarrage requis: $remote_fs $syslog # Arrêt requis: $remote_fs $syslog # Démarrage par défaut: 2 3 4 5 # Arrêt par défaut: 0 1 6 ### END INIT INFO # s'assurer que le niveau de volume n'est pas fort TODO # Exécuter des fonctions spécifiques lorsque le système le demande (case "$1" au démarrage) echo "Starting pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "Arrêter pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Utilisation: /etc/init.d/pytiful3.sh {start|stop}" exit 1;; esac sortie 0

Déplacez-le vers init.d:

sudo mv pytiful3.sh /etc/init.d/

Rendez-le exécutable:

sudo chmod +x /etc/init.d/pytiful3.sh

Enregistrez le script à exécuter au démarrage:

sudo update-rc.d pytiful3.sh par défaut

Étape 12: Testez à nouveau

Maintenant que notre script est chargé pour s'exécuter au démarrage, rappelez-vous simplement que toutes les modifications que nous apportons doivent être apportées à la corbeille de l'utilisateur, et notre magnifique script kissir/pytiful3.py n'est plus qu'un orphelin maintenant. Mais du côté positif, nous avons toujours un bac à sable dans lequel jouer. Je continuerai probablement à jouer avec le script, à apporter des modifications et à l'enregistrer en tant que nouvelle version dans un proche avenir. C'est toujours un projet de travail.

Faisons un redémarrage, attendons que le pi redémarre, et après environ une minute, appuyez à nouveau sur un bouton.

Si votre volume audio est très faible, n'oubliez pas que nous avons un volume d'alsamixer à 50%, nous pouvons donc l'augmenter en conséquence à partir de l'invite de commande.

Pour commencer, une chose qui est nécessaire est une valeur de volume globale, au lieu d'avoir à changer le niveau de volume 5 fois différentes.

Hé, qu'en est-il de cette liste de stations de radio que nous avons faite à l'étape 6 ? Eh bien, il s'avère que MPG123 a une commande de sélection aléatoire. C'est aussi simple que de créer une liste d'URL de stations, et au lieu d'appeler pour une URL de station de radio, utilisez simplement

"btn1234_choice = random.choice(btn1234)", immédiatement après avoir identifié notre liste de stations, où btn1234_choice est notre liste. N'oubliez pas d'utiliser des crochets autour de notre liste de stations séparées par des virgules. L'appel de commande du sous-processus joue ensuite notre choix aléatoire:

subprocess.call(['mpg123', '-q', btn1234_choice, " --preload 1"])

Étape 13: Emballez-le, et nous avons terminé

Box It Up, et nous avons terminé
Box It Up, et nous avons terminé
Box It Up, et nous avons terminé
Box It Up, et nous avons terminé
Box It Up, et nous avons terminé
Box It Up, et nous avons terminé

Si vous êtes arrivé à cette étape, le travail est terminé ! Félicitations, vous venez de créer un lecteur radio Internet autonome.

Selon l'équipement dont vous disposez (enceintes, dac et amplificateur), vous vous demandez peut-être comment cacher certains des fils qui traînent. Peut-être un autre instructable pour un autre jour, mais si vous envisagez de faire une unité de logement pour rentrer certains des fils, je vous recommande de vous donner beaucoup d'espace supplémentaire.

Comme vous pouvez le voir sur les photos ci-dessus - j'ai en fait fait deux kissirs, l'un en utilisant les restes d'un accident de collage lors de ma première tentative (de l'humour déformé vient des planches déformées). La deuxième unité utilise des excitateurs sonores plutôt que des haut-parleurs conventionnels, et si vous avez choisi le nom de l'appareil sur l'une de mes captures d'écran, je l'ai nommé slimbox.

J'ai trouvé ce projet assez amusant. Les deux fois. Certainement pas un projet difficile, peut-être un peu long mais très enrichissant. J'espère que vous apprécierez également votre écoute.

Conseillé: