Table des matières:

Boîte de diffusion radio à un bouton : 7 étapes (avec photos)
Boîte de diffusion radio à un bouton : 7 étapes (avec photos)

Vidéo: Boîte de diffusion radio à un bouton : 7 étapes (avec photos)

Vidéo: Boîte de diffusion radio à un bouton : 7 étapes (avec photos)
Vidéo: DAB+ : technologie numérique de diffusion radio. ABE-RTS 2024, Novembre
Anonim
Boîte de diffusion radio à un bouton
Boîte de diffusion radio à un bouton

J'ai construit une boîte pour le bar de mon ami qui a un Raspberry Pi à l'intérieur et en appuyant sur un bouton, il diffuse de l'audio vers un site Web à l'aide de Darkice et Icecast, tout en allumant simultanément un panneau « On-Air ». Je pensais que c'était quelque chose que les gens faisaient déjà, mais après une recherche approfondie, je n'ai rien trouvé et j'ai décidé de le découvrir par moi-même et de rendre ce Instructable.

J'ai utilisé un Raspberry Pi 3+ B mais pour autant que je sache, cela fonctionnerait sur n'importe quel Pi (peut-être que les numéros de broche GPIO varieraient, je ne peux pas en attester cependant). J'ai utilisé le package NOOBS pour le système d'exploitation et acheté une carte son super simple pour l'entrée. J'ai également ajouté un bouton d'arrêt sécurisé et une LED d'activité à la boîte pour protéger le Pi.

Tu auras besoin de:

Tarte aux framboises

Package NOOBS sur une carte SD

Interrupteur marche/arrêt (j'ai utilisé un gros bouton d'arrêt d'urgence rouge comme celui-ci, mais il peut s'agir de n'importe quel type d'interrupteur « clic »)

Bouton poussoir

1 DEL

Un panneau 'On-Air', j'ai fait le mien avec une matrice de LED

Fer à souder et petit connecteur (je viens de couper une bande d'un de ceux que j'avais autour)

Carte son (j'en ai utilisé une super simple comme celle-ci)

Étape 1: Configurez votre serveur

Pour la station de radio que nous utilisons, je n'ai pas fait cette partie car je n'avais pas accès au serveur et mon ami l'a fait, mais il existe un guide de configuration de base sur le site Web d'Icecast et j'ai réussi à obtenir cela fonctionne à partir du Pi au début juste pour voir comment ça se passe. Alternativement, vous pouvez obtenir un compte sur internet-radio.com et cela fonctionne avec Darkice.

Étape 2: Configurer le Pi et installer Darkice

Obtenez une carte SD avec le package NOOBS. Une fois que vous avez ouvert Raspbian et installé toutes les mises à jour, ouvrez une fenêtre de terminal et tapez:

sudo apt-get mise à jour

sudo apt-get install darkice

Darkice fait partie de Debian donc il s'installera automatiquement, cela prend quelques instants.

Une fois terminé à l'invite, tapez:

noirceur

Il donnera un message d'erreur et ne fonctionnera pas, mais ce n'est pas grave. Dans le message, il dira quelque chose comme:

Utilisation du fichier de configuration: /etc/darkice.cfg

Vous devez modifier ce fichier, donc à l'invite, tapez:

sudo nano /etc/darkice.cfg

Modifiez le fichier qui s'ouvre en utilisant les informations de cette page wiki. Radioreference, lorsque vous avez terminé, appuyez sur CTRL-X pour fermer, Y pour enregistrer et vous devriez revenir à l'invite du terminal. Il est toujours bon de redémarrer après avoir installé un nouveau programme, alors tapez:

redémarrer

et lorsque le Pi a redémarré, rouvrez une fenêtre de terminal. Maintenant, lorsque vous tapez "Darkice", il devrait s'exécuter sans aucun message d'erreur. Si vous allez sur https://YOURSERVERADDRESS:8000/ (8000 ou quel que soit le port auquel votre serveur icecast est affecté), vous devriez obtenir une page de statistiques indiquant que vous êtes connecté. Sinon, modifiez le fichier de configuration (la ligne d'entrée audio m'a posé quelques problèmes mais j'ai essayé toutes les options et j'ai finalement trouvé ma carte son). Une fois que Darkice fonctionne correctement, passez à l'étape suivante.

Étape 3: bouton de diffusion et signe à l'antenne

Bouton de diffusion et signe à l'antenne
Bouton de diffusion et signe à l'antenne

J'ai fait un tas de tutoriels différents pour cela car il n'y en avait pas de spécifique pour attribuer une action à un bouton en Python. Le plus gros problème auquel j'ai été confronté était de faire fonctionner Darkice en arrière-plan (et donc de ne pas geler le script Python lorsqu'il a commencé à s'exécuter), mais j'ai demandé à un ami codeur de venir m'aider et il a trouvé un moyen de le faire en écrivant des feuilles, quelque chose que j'ai ne comprends pas. Apparemment, il pourrait également être possible d'utiliser un '&' quelque part dans le code, mais je ne suis pas un codeur et ce que j'ai fonctionne, j'ai donc choisi de ne pas jouer avec. Une fois que tout fonctionnait, j'ai commencé à réduire tous les câbles de la maquette jusqu'à ce qu'il me reste la configuration suivante:

GPIO16 à un connecteur 3 points externe.

GPIO7 à la borne positive de la matrice de LED pour le signe ON-Air.

GPIO25 au click-switch.

L'autre côté du bouton-clic se fixe au connecteur à 3 points.

La borne négative de la matrice de LED se fixe également au connecteur à 3 points.

(Les autres composants sur le schéma sont expliqués à l'étape suivante).

Le script Python avec lequel nous nous sommes retrouvés est le suivant (veuillez noter qu'il s'agit d'un Instructable pour l'ensemble du projet, je n'en sais pas vraiment assez pour expliquer le code. Je l'ai reconstitué à partir de divers autres tutoriels pour différentes fonctions):

import timeimport os import RPi. GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup(ledPin, GPIO. OUT) GPIO.setup(buttonPin, GPIO. IN, pull_up_down =GPIO. PUD_UP)

basculer = Faux

def start_darkice():

print('calling subprocess') #result = subprocess.call('sh screen -S darkice -d -m darkice') os.system('screen -S darkice -d -m darkice') print('resuming') def stop_darkice(): os.system('screen -X -S darkice quitter')

tant que vrai:

buttonState = GPIO.input(buttonPin) if buttonState == True: sinon toggle: toggle = True print('allumer darkice') start_darkice() #print ('BUTTON STATE TRUE') GPIO.output(ledPin, GPIO. HIGH)

autre:

if toggle: toggle = False print('stopping darkice') stop_darkice() #print ('BUTTON STATE FALSE') GPIO.output(ledPin, GPIO. LOW) time.sleep(1)

Le fichier py est joint à cet Instructible, vous pouvez simplement le télécharger et suivre l'étape 5 si vous le souhaitez.

Étape 4: bouton d'arrêt sécurisé et voyant d'activité

Bouton d'arrêt sécurisé et voyant d'activité
Bouton d'arrêt sécurisé et voyant d'activité

Juste pour la sécurité et pour prolonger la durée de vie du Pi, j'ai ajouté un bouton d'arrêt sécurisé et une LED d'activité externe pour que les gens sachent quand il est sûr de débrancher le boîtier. J'ai facilement trouvé des tutoriels pour les deux, mais j'ai remarqué que le Raspberry Pi 3 B+ a une broche GPIO affectée à la LED ACT alors que les modèles précédents ne le font pas et cela pourrait être problématique si vous avez un Pi plus ancien.

Reliez la borne positive de la LED à GPIO13 et la borne négative à GPIO26. Pour que la LED ACT fonctionne, vous devez modifier le fichier config.txt dans le répertoire BOOT. Vous pouvez le trouver dans le navigateur Raspbian ou avec:

sudo nano /usr/boot/config.txt

Lorsque vous modifiez le fichier, ajoutez simplement les lignes suivantes:

# Utiliser la LED externe comme LED SD ACT dtoverlay=pi3-act-led, gpio=19

Maintenant, la LED externe clignotera avec l'activité de la carte SD.

Connectez les bornes du commutateur poussoir aux GPIO3 et GPIO8. J'ai trouvé le code suivant à partir d'un tutoriel et cela fonctionne très bien:

import timefrom gpiozero import Button from subprocess import check_call from signal import pause

arrêt par défaut ():

check_call(['sudo', 'poweroff'])

shutdown_btn = Bouton(2, hold_time=1)

shutdown_btn.when_held = arrêt

pause()

heure.sommeil(1)

Ce fichier py est également joint pour que vous puissiez le télécharger si vous le souhaitez. Mon bouton doit être maintenu enfoncé pendant 1 seconde, si vous souhaitez modifier cela, modifiez la valeur 'hold-time='.

Étape 5: Exécutez les scripts Python à partir du démarrage

Encore une fois, il existe de nombreux tutoriels sur ce sujet, j'ai utilisé celui-ci de Dexter Industries et j'ai suivi la première étape en éditant le fichier rc.local.

sudo nano /etc/rc.local

Ici, vous devez ajouter le chemin de fichier complet à la fin du document, avec un "&" à la fin de chaque ligne. Vous devez ajouter une ligne pour chacun des fichiers:

sudo python /home/pi/YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

juste avant la ligne

sortie 0

Le '&' à la fin de chaque ligne est important pour assurer les boucles du programme.

Étape 6: Construisez la boîte

Construisez la boîte
Construisez la boîte
Construisez la boîte
Construisez la boîte
Construisez la boîte
Construisez la boîte

Cela dépend entièrement de vous. Il n'a vraiment besoin que de la taille du Pi, mais j'ai mis un compresseur dans ma configuration pour maintenir le flux radio à un niveau assez cohérent, de sorte que la boîte est un peu plus grande. Le mien a un trou sur le devant pour le signe On-Air et un pour le Big Red Button, en plus j'ai fait une petite carte d'instructions pour les DJ et l'ai incrustée sous le bouton. Sur le côté de la boîte, il y a un trou pour le bouton-poussoir, la LED ACT et l'entrée audio, ainsi que des instructions incrustées pour le personnel du bar sur la façon d'éteindre la boîte en toute sécurité.

Étape 7: Installation

Installation
Installation
Installation
Installation
Installation
Installation
Installation
Installation

Fixez tous les composants séparés dans votre boîte, en gardant à l'esprit qu'il est toujours bon de permettre une certaine circulation d'air autour du Pi pour éviter la surchauffe. Branchez les câbles audio de votre table de mixage, appuyez sur le bouton et profitez de la diffusion !

Conseillé: