Innholdsfortegnelse:
- Trinn 1: Sett opp serveren din
- Trinn 2: Sett opp Pi og Installer Darkice
- Trinn 3: Stream-knapp og luftskilt
- Trinn 4: Sikker avstengningsknapp og aktivitets -LED
- Trinn 5: Få Python -skriptene til å kjøre fra oppstart
- Trinn 6: Bygg boksen
- Trinn 7: Installasjon
Video: Radioknapp med én knapp: 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Jeg bygde en boks til vennens bar som har en Raspberry Pi inni, og med et trykk på en knapp strømmer den lyd til et nettsted ved hjelp av Darkice og Icecast, samtidig som jeg tenner et "On-Air" -skilt. Jeg trodde dette var noe folk allerede gjorde, men etter omfattende søk fant jeg ingenting og bestemte meg for å finne ut av det selv og gjøre dette instruerbart.
Jeg brukte en Raspberry Pi 3+ B, men så vidt jeg kan se ville det fungere på hvilken som helst Pi (kanskje GPIO -pin -tallene vil variere, men jeg kan ikke bekrefte det). Jeg brukte NOOBS -pakken for operativsystemet og kjøpte et superenkelt lydkort for inngangen. Jeg la også til en sikker avstengningsknapp og aktivitets-LED i esken for å beskytte Pi.
Du vil trenge:
Bringebær Pi
NOOBS -pakke på et SD -kort
Av/på -bryter (jeg brukte en stor rød nødstoppknapp som denne, men det kan være hvilken som helst slags klikk -bryter)
Trykknapp
1 LED
Et "On-Air" -skilt, jeg laget mitt eget med en LED-matrise
Loddejern og liten kontaktplate (jeg klippet bare en stripe av en av disse som jeg hadde rundt)
Lydkort (jeg brukte et superenkelt som dette)
Trinn 1: Sett opp serveren din
For selve radiostasjonen vi bruker, gjorde jeg ikke denne delen, ettersom jeg ikke hadde tilgang til serveren og vennen min gjorde det, men det er en grunnleggende oppsettguide på Icecast-nettstedet, og jeg klarte å få det fungerte fra Pi i begynnelsen bare for å se hvordan det går. Alternativt kan du få en konto på internet-radio.com og den fungerer med Darkice.
Trinn 2: Sett opp Pi og Installer Darkice
Skaff et SD -kort med NOOBS -pakken. Når du har åpnet Raspbian og installert alle oppdateringene, åpner du et Terminal -vindu og skriver:
sudo apt-get oppdatering
sudo apt-get install darkice
Darkice er en del av Debian, så det installeres automatisk, det tar noen øyeblikk.
Når den er ferdig med ledeteksten, skriver du:
darkice
Det vil gi en feilmelding og ikke kjøre, men det er ok. I meldingen vil det si noe sånt som:
Bruker konfigurasjonsfil: /etc/darkice.cfg
Du må redigere den filen, så ved ledeteksten skriver du:
sudo nano /etc/darkice.cfg
Rediger filen som åpnes ved hjelp av informasjonen på denne wiki. Radioreferanse-siden, når du er ferdig, trykk CTRL-X for å lukke, Y for å lagre, og du bør gå tilbake til Terminal-ledeteksten. Det er alltid godt å starte på nytt etter at du har installert et nytt program, så skriv:
starte på nytt
og når Pi har startet på nytt, åpner du et terminalvindu igjen. Når du skriver 'Darkice', skal den kjøre uten feilmeldinger. Hvis du går til https:// YOURSERVERADDRESS: 8000/(8000 eller hvilken port icecast -serveren din er tilordnet), bør du få en statistikkside som sier at du er tilkoblet. Hvis ikke, juster konfigurasjonsfilen (lydinngangslinjen ga meg noen problemer, men jeg prøvde alle alternativene og fant til slutt lydkortet mitt). Når Darkice kjører ordentlig, går du videre til neste trinn.
Trinn 3: Stream-knapp og luftskilt
Jeg gjorde en haug med forskjellige opplæringsprogrammer for dette, siden det ikke var noen spesifikk for å tilordne en handling til en knapp i Python. Det største problemet jeg sto overfor var å få Darkice til å kjøre i bakgrunnen (og dermed ikke fryse Python -skriptet når det begynte å kjøre), men jeg spurte en kodevenn om å komme og hjelpe, og han fant ut en måte å skrive ark på, noe jeg får ikke. Tilsynelatende kan det også være mulig å bruke et '&' et sted i koden, men jeg er ingen koder og det jeg har fungerer, så jeg valgte å ikke rote med det. Når jeg hadde fått alt til å fungere, begynte jeg å sive ned alle kablene fra brødbrettet til jeg satt igjen med følgende oppsett:
GPIO16 til en ekstern 3-punkts kontakt.
GPIO7 til den positive terminalen til LED-arrayet for ON-Air-skiltet.
GPIO25 til klikkbryteren.
Den andre siden av klikkbryteren festes til 3-punktskontakten.
Den negative terminalen til LED-matrisen festes også til 3-punktskontakten.
(De andre komponentene på diagrammet er forklart i neste trinn).
Python -skriptet som vi endte opp med er som følger (vær oppmerksom på at dette er en instruks for hele prosjektet, jeg vet egentlig ikke nok til å forklare koden. Jeg delte den sammen fra forskjellige andre opplæringsprogrammer for forskjellige funksjoner):
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)
veksle = Feil
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')
mens det er sant:
buttonState = GPIO.input (buttonPin) if buttonState == True: if not toggle: toggle = True print ('slår på darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)
ellers:
if toggle: toggle = Falsk utskrift ('stopper darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sleep (1)
PY -filen er vedlagt denne instruksjonsboken. Du kan bare laste den ned og følge trinn 5 hvis du vil.
Trinn 4: Sikker avstengningsknapp og aktivitets -LED
Bare for sikkerheten og for å forlenge levetiden til Pi, la jeg til en sikker avstengningsknapp og en ekstern aktivitets -LED slik at folk vet når det er trygt å koble fra esken. Jeg fant enkelt opplæringsprogrammer for begge disse, men jeg la merke til at Raspberry Pi 3 B+ har en ACT LED tildelt GPIO -pin mens tidligere modeller ikke gjør det, og det kan være problematisk hvis du har en eldre Pi.
Fest den positive terminalen til LED -en til GPIO13 og den negative til GPIO26. For at ACT -LED -en skal fungere, må du redigere config.txt -filen i BOOT -katalogen. Du finner dette i Raspbian -nettleseren eller med:
sudo nano /usr/boot/config.txt
Når du redigerer filen, legger du til følgende linjer:
# Bruk ekstern LED som SD ACT LED dtoverlay = pi3-act-led, gpio = 19
Nå blinker den eksterne LED -en med SD -kortaktivitet.
Fest trykkbryterterminalene til GPIO3 og GPIO8. Jeg fant følgende kode fra en opplæring, og den fungerer bra:
importtid fra gpiozero importknapp fra delprosessimport check_call fra signalimportpause
def nedleggelse ():
check_call (['sudo', 'poweroff'])
shutdown_btn = Knapp (2, hold_time = 1)
shutdown_btn.when_held = nedleggelse
pause()
time.sleep (1)
Denne py -filen er også vedlagt for å laste ned hvis du vil. Knappen min må holdes inne i 1 sekund, hvis du vil endre den, må du endre verdien 'hold-time ='.
Trinn 5: Få Python -skriptene til å kjøre fra oppstart
Igjen, det er mange opplæringsprogrammer om dette emnet, jeg brukte denne fra Dexter Industries og fulgte trinn ett ved å redigere rc.local -filen.
sudo nano /etc/rc.local
Her må du legge til den komplette filbanen til slutten av dokumentet, komplett med et '&' på slutten av hver linje. Du bør legge til en linje for hver av filene:
sudo python/home/pi/YOURFILENAME, py &
sudo python /home/pi/YOURFILENAME2.py &
like før linjen
avslutte 0
'&' På slutten av hver linje er viktig for å sikre at programsløyfene.
Trinn 6: Bygg boksen
Dette er helt opp til deg. Det trenger egentlig bare å være størrelsen på Pi, men jeg satte en kompressor i oppsettet mitt for å holde radiostrømmen på et ganske konsistent nivå, så boksen er litt større. Mitt har et hull på forsiden for On-Air-skiltet og et for den store røde knappen, pluss at jeg lagde et lite instruksjonskort for DJ-ene og la det inn under knappen. På siden av esken er det et hull for trykknappen, ACT-lysdioden og lydinngangen, pluss innlagte instruksjoner for barpersonalet om hvordan du trygt kan slå av boksen.
Trinn 7: Installasjon
Fest alle de separate komponentene i esken din, og husk at det alltid er godt å la litt sirkulasjon rundt Pi for å forhindre overoppheting. Fest lydkablene fra mikseren, trykk på knappen og nyt kringkasting!
Anbefalt:
Batteridrevet Wi-Fi Smart-knapp for å kontrollere HUE-lys: 5 trinn (med bilder)
Batteridrevet Wi-Fi Smart-knapp for å kontrollere HUE-lys: Dette prosjektet viser hvordan du bygger en batteridrevet IoT Wi-Fi-knapp på mindre enn 10 minutter. Knappen styrer HUE -lysene over IFTTT. I dag kan du bygge elektroniske enheter og koble dem til andre smarte hjemmenheter bokstavelig talt på få minutter. Hva er det
En applikasjon av en utvidbar knapp med vibrasjonsfeedback: 7 trinn (med bilder)
En applikasjon av en utvidbar knapp med vibrasjonsfeedback: I denne opplæringen skal vi først vise deg hvordan du bruker en Arduino Uno til å kontrollere en vibrasjonsmotor via en utvidet knapp. De fleste opplæringsprogrammer om trykknapper involverer knappen på det fysiske brødbrettet, mens i denne opplæringen har knappen vært
RGB USB -tastatur med én knapp: 6 trinn (med bilder)
RGB USB -tastatur med én knapp: Har du noen gang følt behov for å ha et lite, men funksjonelt, RGB -bakgrunnsbelyst tastatur, ikke større enn størrelsen på en enkelt tast? Nei? Hvem bryr seg, lag en uansett! Denne instruksen vil guide deg gjennom trinnene du trenger for å lage din helt egen, litt ubrukelige, på
Mestre din mikro: bit med Arduino IDE-knapp og annen GPIO: 3 trinn (med bilder)
Master din mikro: bit Med Arduino IDE-Button and Other GPIO: I vår forrige blogg Master Your Micro: bit med Arduino IDE - - Light LED, vi har snakket om hvordan du installerer micro: bit bibliotek på Arduino IDE og hvordan å kjøre LED på micro: bit med Arduino IDE. I denne artikkelen skal vi fortelle deg
Fotoboks Stor rød knapp: Teensy LC: 3 trinn (med bilder)
Photo Booth Big Red Button: Teensy LC: For en del år siden bygde jeg en DIY utendørs fotoboks for et vennebryllup. Jeg brukte " standen " flere ganger for forskjellige hendelser, men ønsket å endre oppsettet for en enklere konfigurasjon. I utgangspunktet en dSLR på et stativ og et fang