Inhoudsopgave:
- Stap 1: Stel uw server in
- Stap 2: Stel de Pi in en installeer Darkice
- Stap 3: Stream-knop en On-Air-teken
- Stap 4: Veilige afsluitknop en activiteits-LED
- Stap 5: Laat de Python-scripts uitvoeren vanaf het opstarten
- Stap 6: Bouw de doos
- Stap 7: Installatie
Video: Radio-streamingbox met één knop - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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
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
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
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
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:
Druk op de knop); // Een Arduino LCD-spel: 5 stappen (met afbeeldingen)
Druk op de knop); // Een Arduino LCD-spel: onlangs heb ik in Scouts gewerkt aan de verdienstenbadge voor Game Design. Voor een van de vereisten heb ik dit spel gebouwd met Arduino die is gebaseerd op de LED Rocker Game. Het doel van het spel is om het hoogst mogelijke aantal punten te scoren. Aan het begin van d
Je hebt een knop om in te drukken!: 10 stappen
Je hebt een knop om in te drukken!: Hallo, jongens! Ik ben Irisa Tsai uit Taipei, Taiwan. Ik zit in de negende klas van de Kang Chiao International School. Kang Chiao is een school op de berg met uitgebreide cursussen die studenten kunnen volgen. Er zijn verschillende soorten onderwerpen beschikbaar in mijn
Een knop Kopie naar klembord op een webpagina plaatsen: 5 stappen (met afbeeldingen)
Een knop Kopie naar klembord op een webpagina plaatsen: dit klinkt misschien eenvoudig, en ik zie er misschien gek uit als ik het op Instructables zet, maar in werkelijkheid is het niet zo eenvoudig. Er is CSS, JQuery, HTML, wat fancy javascript, en, ach, je weet wel
Start je kerstlichtshow met een knop: 5 stappen
Start uw kerstlichtshow met een knop: wanneer u een kerstlichtshow uitvoert die is gesynchroniseerd met muziek, wilt u misschien de show starten door op een knop te drukken. Deze tutorial is alleen van toepassing op een show die wordt bestuurd via Falcon Pi Player (FPP) op een Raspberry Pi. Als je F
Bedien tot 4 servo's met een smartphone of een ander apparaat met een audio-uitgang: 3 stappen
Bedien tot 4 servo's met behulp van een smartphone of elk apparaat met een audio-uitgang: hier presenteer ik een eenvoudige elektronische montage om maximaal vier servo's te besturen met elk apparaat dat een audiobestand kan lezen