Inhoudsopgave:

Radio-streamingbox met één knop - Ajarnpa
Radio-streamingbox met één knop - Ajarnpa

Video: Radio-streamingbox met één knop - Ajarnpa

Video: Radio-streamingbox met één knop - Ajarnpa
Video: Afstandsbediening werkt niet of traag | Monteur Jordi helpt 2024, September
Anonim
Radiostreamingbox met één knop
Radiostreamingbox met één knop

Ik heb een doos gebouwd voor de bar van mijn vriend met een Raspberry Pi erin en met een druk op de knop streamt hij audio naar een website met behulp van Darkice en Icecast, terwijl tegelijkertijd een 'On-Air'-bord wordt verlicht. Ik dacht dat dit iets was dat mensen al deden, maar na uitgebreid zoeken vond ik niets en besloot ik het zelf uit te zoeken en dit Instructable te maken.

Ik heb een Raspberry Pi 3+ B gebruikt, maar voor zover ik weet, zou het op elke Pi werken (misschien zouden de GPIO-pinnummers variëren, maar dat kan ik niet bevestigen). Ik gebruikte het NOOBS-pakket voor het besturingssysteem en kocht een supereenvoudige geluidskaart voor de invoer. Ik heb ook een veilige uitschakelknop en een activiteits-LED aan de doos toegevoegd om de Pi te beschermen.

Je zal nodig hebben:

Raspberry Pi

NOOBS-pakket op een SD-kaart

Aan/uit-schakelaar (ik heb zo'n grote rode noodstopknop gebruikt, maar het kan elke soort 'klik'-schakelaar zijn)

Druk op de knop

1 LED

Een 'On-Air'-bord, ik heb het zelf gemaakt met een LED-array

Soldeerbout en klein verbindingsbord (ik heb net een strook afgesneden van een van deze die ik had)

Geluidskaart (ik gebruikte een supereenvoudige zoals deze)

Stap 1: Stel uw server in

Voor het eigenlijke radiostation dat we gebruiken, heb ik dit deel niet gedaan omdat ik geen toegang had tot de server en mijn vriend het deed, maar er is een basisinstallatiegids op de Icecast-website en ik ben erin geslaagd om het werkte in het begin vanaf de Pi, gewoon om te zien hoe het gaat. Als alternatief kunt u een account krijgen op internet-radio.com en het werkt met Darkice.

Stap 2: Stel de Pi in en installeer Darkice

Verkrijg een SD-kaart met het NOOBS-pakket. Nadat je Raspbian hebt geopend en alle updates hebt geïnstalleerd, open je een Terminal-venster en typ je:

sudo apt-get update

sudo apt-get install darkice

Darkice maakt deel uit van Debian, dus het wordt automatisch geïnstalleerd, het duurt even.

Zodra het is voltooid bij de prompt, typt u:

donker ijs

Het geeft een foutmelding en wordt niet uitgevoerd, maar dat is ok. In het bericht staat iets als:

Configuratiebestand gebruiken: /etc/darkice.cfg

U moet dat bestand bewerken, dus typ bij de prompt:

sudo nano /etc/darkice.cfg

Bewerk het bestand dat wordt geopend met behulp van de informatie op deze wiki. Radioreference-pagina, wanneer u klaar bent, drukt u op CTRL-X om te sluiten, op Y om op te slaan en moet u terugkeren naar de Terminal-prompt. Het is altijd goed om opnieuw op te starten na het installeren van een nieuw programma, dus typ:

opnieuw opstarten

en wanneer de Pi opnieuw is opgestart, opent u opnieuw een Terminal-venster. Als u nu 'Darkice' typt, zou het zonder foutmeldingen moeten werken. Als je naar https://YOURSERVERADDRESS:8000/ gaat (8000 of de poort waaraan je icecast-server is toegewezen), zou je een statistiekenpagina moeten krijgen die zegt dat je verbonden bent. Zo niet, pas dan het configuratiebestand aan (de audio-invoerregel gaf me wat problemen, maar ik probeerde alle opties en vond uiteindelijk mijn geluidskaart). Zodra Darkice goed werkt, gaat u verder met de volgende stap.

Stap 3: Stream-knop en On-Air-teken

Stream-knop en On-Air-teken
Stream-knop en On-Air-teken

Ik heb hiervoor een aantal verschillende tutorials gedaan, omdat er geen specifieke was voor het toewijzen van een actie aan een knop in Python. Het grootste probleem dat ik tegenkwam, was om Darkice op de achtergrond te laten werken (en dus het Python-script niet te bevriezen toen het begon te draaien), maar ik vroeg een bevriende coder om te komen helpen en hij bedacht een manier om het te doen door bladen te schrijven, iets wat ik niet krijgen. Blijkbaar zou het ook mogelijk kunnen zijn om ergens in de code een '&' te gebruiken, maar ik ben geen programmeur en wat ik heb werkt, dus ik koos ervoor om er niet mee te rotzooien. Toen alles eenmaal werkte, begon ik alle kabels van het breadboard weg te werken totdat ik de volgende opstelling had:

GPIO16 naar een externe 3-punts connector.

GPIO7 naar de positieve pool van de LED-array voor het ON-Air-teken.

GPIO25 naar de klikschakelaar.

De andere kant van de klikschakelaar wordt bevestigd aan de 3-punts connector.

De negatieve pool van de LED-array wordt ook bevestigd aan de 3-punts connector.

(De andere componenten op het diagram worden in de volgende stap uitgelegd).

Het Python-script waarmee we eindigden is als volgt (let op: dit is een Instructable voor het hele project, ik weet niet echt genoeg om de code uit te leggen. Ik heb het samengevoegd uit verschillende andere tutorials voor verschillende functies):

import timeimport os import RPi. GPIO als 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)

toggle = Onwaar

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 quit')

terwijl waar:

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

anders:

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

Het py-bestand is bij deze Instructible gevoegd, je kunt het gewoon downloaden en stap 5 volgen als je wilt.

Stap 4: Veilige afsluitknop en activiteits-LED

Safe Shutdown-knop en activiteits-LED
Safe Shutdown-knop en activiteits-LED

Alleen voor de veiligheid en om de levensduur van de Pi te verlengen, heb ik een veilige uitschakelknop en een externe activiteits-LED toegevoegd, zodat mensen weten wanneer het veilig is om de stekker uit het stopcontact te halen. Ik vond gemakkelijk tutorials voor beide, maar ik merkte wel dat de Raspberry Pi 3 B+ een aan ACT LED toegewezen GPIO-pin heeft, terwijl eerdere modellen dat niet doen en dat kan problematisch zijn als je een oudere Pi hebt.

Bevestig de positieve pool van de LED aan GPIO13 en de negatieve aan GPIO26. Om de ACT-LED te laten werken, moet u het config.txt-bestand in de BOOT-directory bewerken. Deze vind je in de Raspbian browser of met:

sudo nano /usr/boot/config.txt

Wanneer u het bestand aan het bewerken bent, voegt u eenvoudig de volgende regels toe:

# Gebruik externe LED als SD ACT LED dtoverlay=pi3-act-led, gpio=19

Nu zal de externe LED flikkeren met SD-kaartactiviteit.

Sluit de drukschakelaarterminals aan op GPIO3 en GPIO8. Ik vond de volgende code uit een tutorial en het werkt prima:

import timefrom gpiozero import Knop uit subproces import check_call uit signaal import pauze

def afsluiten():

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

shutdown_btn = Knop (2, hold_time = 1)

shutdown_btn.when_held = afsluiten

pauze()

tijd.slaap(1)

Dit py-bestand is ook bijgevoegd zodat u het kunt downloaden als u dat wilt. Mijn knop moet 1 seconde worden ingedrukt, als je dat wilt veranderen, verander dan de 'hold-time=' waarde.

Stap 5: Laat de Python-scripts uitvoeren vanaf het opstarten

Nogmaals, er zijn veel tutorials over dit onderwerp, ik gebruikte deze van Dexter Industries en volgde stap één door het rc.local-bestand te bewerken.

sudo nano /etc/rc.local

Hier moet u het volledige bestandspad aan het einde van het document toevoegen, compleet met een '&' aan het einde van elke regel. U moet één regel toevoegen voor elk van de bestanden:

sudo python /home/pi/YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

net voor de lijn

uitgang 0

De '&' aan het einde van elke regel is belangrijk om ervoor te zorgen dat het programma loopt.

Stap 6: Bouw de doos

Bouw de doos
Bouw de doos
Bouw de doos
Bouw de doos
Bouw de doos
Bouw de doos

Dit is geheel aan jou. Het hoeft eigenlijk alleen de grootte van de Pi te zijn, maar ik heb een compressor in mijn opstelling geplaatst om de radiostream op een redelijk consistent niveau te houden, zodat de doos een beetje groter is. De mijne heeft een gat aan de voorkant voor het On-Air-bord en een voor de Big Red Button, plus ik heb een kleine instructiekaart voor de DJ's gemaakt en deze onder de knop ingelegd. Aan de zijkant van de box zit een gaatje voor de drukknop, de ACT LED en de audio-ingang, plus ingelegde instructies voor het barpersoneel om de box veilig af te sluiten.

Stap 7: Installatie

Installatie
Installatie
Installatie
Installatie
Installatie
Installatie
Installatie
Installatie

Bevestig alle losse componenten in je doos, waarbij je in gedachten houdt dat het altijd goed is om wat luchtcirculatie rond de Pi te laten om oververhitting te voorkomen. Sluit de audiokabels van je mixer aan, druk op de knop en geniet van de uitzending!

Aanbevolen: