Innholdsfortegnelse:

Keeping It Stoopid Enkel internettradio: KISSIR: 13 trinn
Keeping It Stoopid Enkel internettradio: KISSIR: 13 trinn

Video: Keeping It Stoopid Enkel internettradio: KISSIR: 13 trinn

Video: Keeping It Stoopid Enkel internettradio: KISSIR: 13 trinn
Video: CS50 2015 – неделя 1, продолжение 2024, November
Anonim
Keeping It Stoopid Simple Internet Radio: KISSIR
Keeping It Stoopid Simple Internet Radio: KISSIR
Keeping It Stoopid Simple Internet Radio: KISSIR
Keeping It Stoopid Simple Internet Radio: KISSIR

Noen ganger må det bare være taktilt. Ingen grensesnitt av noe slag. Bare knapper.

Raspberry Pi som en internettradioavspiller er ikke noe nytt, og det er mange instrukser om hvordan du lager en internettradiospiller med en bringebærpi med eller uten en skjerm for å streame internettstasjoner fra hele verden. Hvis du skulle velge å gå hodeløs (uten skjerm), trenger du fremdeles et middel for å koble til pi -spilleren, vanligvis et webgrensesnitt hvis ikke et direkte kommunikasjonsmiddel til verten, for eksempel ssh. Dette instruerbare vil være litt annerledes; vi bruker enkle knappetrykk for å sende kommandoer til pi, og dermed eliminere behovet for et webgrensesnitt og en LCD -skjerm. Høres enkelt nok ut, ikke sant (?)

Vi starter med et veldig grunnleggende design ved hjelp av fargekodede knapper, hver farge vil representere en internettradiostasjon. Vi vil introdusere litt python-kode for å håndtere knappetrykket: Pressen vil utføre en kommando for å spille en forhåndskodet internettradiostasjon ved hjelp av MPG123, et flott kommandolinjeverktøy for å spille av lyd på vår pi.

Dine python -ferdigheter trenger ikke å være avansert. Faktisk gikk jeg bokstavelig talt fra "Hello World" til å skrive dette, og som du vil se, lånte jeg mye kode - så hvis jeg kan gjøre det og få det noe dokumentert, burde ingen andre ha noe problem.

La oss gå!

Rekvisita:

Nødvendige materialer

  • Raspberry pi/ pi zero w med alle festene: Strømforsyning, SD -kort og Raspbian eller Raspbian lite.
  • Wifi og internettilgang
  • En annen PC for å utføre litt nettlesing og mulighet til å SSH til bringebær pi
  • Digital til analog omformer (DAC) - valgfritt, men du vil være takknemlig.
  • Forsterker
  • Høyttalere
  • Tilkoblingstråd og gensere
  • Loddejern og loddetinn
  • Perf Board for knappene
  • Taktile knapper: Normalt åpen- en for hver sjanger av musikk, en av / på-knapp og en valgfri dempeknapp (7 knapper anbefales)
  • En boenhet for alle de ovennevnte (valgfritt, men ryddig)

Trinn 1: Forutsetninger:

Forutsetninger
Forutsetninger

Vi starter med å anta at du allerede har konfigurert bringebær -pi, DAC og forsterker, og antar også at du har tilgang til internett. På grunn av mengden valg av lydutstyr, preferanser og alternativer for lydlytting, antar vi at oppsettet ditt allerede er fullført: du bør allerede ha lyd fra høyttalerne før du starter dette prosjektet. Vi må også ssh til bringebær pi, så bruk pi -konfigurasjon, sørg for at grensesnitt har ssh aktivert. Jeg bruker Raspbian lite, og anbefaler at du har en ny installasjon av den nyeste kopien på et nytt sd -kort dedikert til dette prosjektet. Hvis det lykkes, bygger vi et frittstående armatur som kan slås på 24/7 som en dedikert lyttenhet.

Trinn 2: Installer Python og Pip

Jeg foretrekker å ssh til pi ved hjelp av en annen pc, og utføre alle nødvendige funksjoner ved hjelp av en ssh -økt, men jeg antar at det først er mulig å sette opp pi til en skjerm, tastatur og mus og jobbe direkte på pi til den er arbeider og deretter distribueres som en frittstående.

La oss først utføre en rutinemessig vedlikeholdskontroll av systemet og python -versjonen:

sudo apt-get oppdatering

sudo apt-get oppgradering

Sørg for at Python er installert. I følgende terminalsession skriver du følgende ved ledeteksten:

python -versjon

Hvis du ser python 2.7.13 (eller tidligere), la oss installere python 3.+:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install -oppgrader pip

Trinn 3: Installer MPG123 og Adafruit Blinka

Nå som grunnlaget er lagt, bare noen få installasjoner til:

MPG123 er lydprogramvaren som spiller musikken vår. Installasjonen er veldig enkel:

sudo apt-get install mpg123

Jeg forsket mye, og fant en flott mal på Adafruit -nettstedet om å spille av lydfiler ved hjelp av knappetrykk, så i stedet for å begynne på nytt, kan vi fortsette på stien folkene på Adafruit allerede har brent for oss. Programmet deres ber oss om å installere Adafruit Blinka:

$ sudo pip3 installer adafruit-blinka

Før vi går videre, la oss utføre en rask sjekk for å sikre at vi har Alsa -oppsett:

aplay -versjon

våre resultater bør lese: versjon 1.1.3 av Jaroslav Kysela

Trinn 4: Juster volumet til 50% i Alsamixer

Juster volumet til 50% i Alsamixer
Juster volumet til 50% i Alsamixer
Juster volumet til 50% i Alsamixer
Juster volumet til 50% i Alsamixer

La oss nå ta et forhåndstiltak og juster volumet til 50% for å unngå øredøvende overraskelser:

Skriv alsamixer ved ledeteksten:

alsamixer

Hvis vi ser på en skjerm med rødt hvitt og grønt, eller 100% maks volum, er det en god idé å senke volumet til 50% for å spare trommehinnene. Vi kan alltid justere senere (opp eller ned) om nødvendig.

Trinn 5: Noen lekser: Finn 5 radiostasjoner som er verdt å lytte til

Noen lekser: Finn 5 radiostasjoner som er verdt å lytte til
Noen lekser: Finn 5 radiostasjoner som er verdt å lytte til
Noen lekser: Finn 5 radiostasjoner som er verdt å lytte til
Noen lekser: Finn 5 radiostasjoner som er verdt å lytte til

Vi trenger en stasjon for hver knapp. Egentlig trenger vi nettadressen til stasjonen. Trykk på knappen vil ringe nettadressen til internettradiostasjonen med en enkel kodebit på en linje. Men vi kommer foran oss selv, så vi har noen lekser å gjøre; finn 5 radiostasjoner og nettadressene deres. Det er ikke vanskelig å finne 5 radiostasjoner, men det kan være vanskelig å finne nettadressene deres. Jeg skal forklare hvorfor om et minutt.

SomaFm * er en flott kilde til å begynne med, spesielt hvis du ikke aner hva du vil lytte til ennå. De har et bredt utvalg av eklektiske musikkvalg, ingen av dem synes jeg er støtende, ingen reklame og den beste delen: De deler åpent sine nettadresser. For å ta tak i nettadressen, klikk på et bilde av stasjonen du er interessert i, og klikk på "Direktestrømskoblinger" på venstre side. Derfra finner du MP3 -delen, og skraper url -en til den høyeste avspillingshastigheten (dvs. 128 slag 64). Lim inn nettadressen i et tekstredigeringsprogram eller notisblokk for øyeblikket.

Som et eksempel, for å skrape Christmas Rocks, vil url være: (vi trenger ikke serverbeskrivelsen)

ice4.somafm.com/xmasrocks-128-mp3

Det blir litt dicier utenfor SomaFms verden. Mange stasjoner bruker en mellommann mellom lytteren og stasjonen, enten det er for reklame, markedsføring eller muligens sporing - og jeg prøver generelt å unngå denne typen stasjoner. Siden mellommenn foretrekker at du lytter til stasjonen gjennom dem, er det vanligvis ganske vanskelig å finne nettadressen; og det er her Vtuner kommer inn.

*Jeg ville være utilfreds hvis jeg ikke ba deg om å vurdere å donere din favorittradiostasjon, ettersom mange av stasjonene bare er avhengige av lytterstøtte.

Trinn 6: Valgfritt: Skrap URL -er ved hjelp av Vtuner

Valgfritt: Skrap URL -er ved hjelp av Vtuner
Valgfritt: Skrap URL -er ved hjelp av Vtuner
Valgfritt: Skrap URL -er ved hjelp av Vtuner
Valgfritt: Skrap URL -er ved hjelp av Vtuner

Nå kommer den morsomme delen … På Vtuner -hjemmesiden kan du se den store stasjonslistelinken i øvre høyre hjørne. Velg en musikksjanger du har interesse for, og sorter deretter på raskeste hastighet, der du vil se en liste over stasjoner. Velg en stasjon du tror du kan like, klikk på lenken eller spill av -knappen og prøv musikken. Hvis det ikke er noe for deg, ikke bekymre deg, gjenta prosessen til vi finner en som er egnet for langvarig nytelse. I skjermbildet mitt valgte jeg den digitale impulsversjonen av countrymusikk, og på den neste skjermen la jeg merke til at den spilles ut av Kroatia. Countrymusikk fra Kroatia høres ganske interessant ut.

Jeg liker det. Men hvordan får jeg nettadressen? Bare høyreklikk på det hvite mellomrommet til høyre for stasjonsbildet, under stasjonsnavnet, og velg "Vis sidekilde" og bla ned til omtrent rad 150. Vi leter etter linjen som sier "// Prøv å håndtere icecast ". Og nettadressen finnes umiddelbart under!

orion.shoutca.st:8110/stream

Ganske glatt!

Gjenta dette trinnet til vi har minst 5 stasjoner på listen vår.

Dobbelt valgfritt: Hvis du kan finne fem sjangere musikk du har interesse for (i motsetning til fem stasjoner), kan du bygge en liste over radiostasjoner for hver sjanger og lagre listene som tekstfiler. Vi kommer tilbake til dette senere.

Trinn 7: Sett opp knappene våre

Sett opp knappene våre
Sett opp knappene våre
Sett opp knappene våre
Sett opp knappene våre

Den viktigste delen! Støv av det gamle loddejernet, eller koble det til i det minste, og bak støvet. Det er på tide å lodde. Jeg bruker 4 kortvarige trykknapper, normalt åpnet. Jeg skal bygge en rekke knapper (venstre bilde), og feste dem til et perf bord. Det er vanskelig å si på bildet, men retningen på knappestikkene kjører alle nord-sør. På høyre side kan du se hvor jeg kjørte en bakkeskinne for mine jordledninger og festet noen hunkabler til den motsatte siden av hver knapp. I stedet for å ha 7 jordforbindelser, vil skinnen tillate oss å dele en jordforbindelse til pi for alle. Sluttresultatet er et delikat skivebrett som vil være undermontert på toppen av radioen ved hjelp av noen skruer gjennom de medfølgende hullene. Bare knappetoppene vil vises gjennom sporet jeg har kuttet ut av toppen. Siden overflaten min bare er 1/4 tykk, vil jeg være forsiktig så jeg ikke skru for mye. Lim kan være nyttig for å holde perf -brettet festet til radioen.

Trinn 8: Identifiser våre GPIO -pinner

Identifiser våre GPIO -pinner
Identifiser våre GPIO -pinner
Identifiser våre GPIO -pinner
Identifiser våre GPIO -pinner

I min eneste andre instruks, presenterte jeg en ny bruk for den gamle Google AIY versjon 1 stemmehatten. I denne svært upopulære (eller trang populære) instruksen nevnte jeg hvor imponert jeg var over designet på selve hatten. Jeg har noen få liggende, så jeg skal bygge en prototype ved hjelp av hatten siden den har både dac og forsterker ombord.

La oss nå identifisere seks pins som vil være vert for våre knappetrykk. Jeg vil be deg om å fokusere på venstre side av Google AIY -hatten, der det står "servoer". Det er en kolonne med 6 øyehull for pinnen der jeg vil feste og lodde min hannknapp ender fra vårt forrige trinn. Skulle du jobbe uten google aiy voice hat, ingen bekymringer, - bildet til høyre vil guide deg. I begge tilfeller jobber vi med gpio (BCM) pinner 26, 06, 13, 05, 12 og 24 fra topp til bunn (eller 0-5). GPIO #24 vil bli reservert for en valgfri pause -knapp.

Ikke glem å også feste jordforbindelsen.

Trinn 9: Kode

Jeg tviler på at koden vil endre seg mye herfra, men for den nyeste versjonen av python -koden, vennligst besøk min github. Jeg har vedlagt en kopi av 18.12.2019 kalt pytiful3.py.

Det er ikke den mest effektive koden du noensinne vil se, og den er ganske omfattende, men den får jobben gjort.

La oss starte med å lage en sandkasse å leke i. Fra hjemmekatalogen kan du lage en katalog på bringebær -pi som heter kissir:

mkdir kissir/

og kopier pytiful3.py -filinnholdet til katalogen ved å åpne prøvefilen i et tekstredigeringsprogram og bruke

sudo nano kissir/pytiful3.py

kopier / lim inn filinnholdet i vårt nyopprettede python -skript. Ikke glem å lagre arbeidet vårt ved å bruke Ctrl-x, Y og skriv inn.

Hvis du vil ha en rask omvisning av skriptet, importerer vi python -modulene vi kommer til å trenge, og deretter definerer vi knappene våre og tildeler en gpio -pin til hver av de 7 knappene. Det vil være 5 radiostasjoner (rediger gjerne etter dine preferanser), en stoppknapp og en avstengningsknapp. Mens true loop går og kjører til du trykker på en knapp, som i de fleste tilfeller vil stoppe all eksisterende mpg123 -avspilling og begynne å spille stasjonen som er tilordnet knappen som ble trykket på. Pause/stopp -knappen er egentlig ikke en pause -knapp, men mer en drepebryter siden vi ikke kan sette internettradio på pause. Internettradio venter på ingen.

Trinn 10: Test i sandkassen vår

Test i sandkassen vår
Test i sandkassen vår

Før vi distribuerer radioen vår, mens vi fortsatt er i ssh -økten, navigerer du til kissir -mappen der skriptet vårt er lagret. Vi kan ganske enkelt kjøre skriptet fra kommandolinjen manuelt ved å skrive:

python3 pytiful3.py

Hvis du kikket på koden først, la du sannsynligvis merke til at jeg la igjen noen utskriftserklæringer, slik at vi kan fortelle hva som skjer. Hvis alt fungerte bra, får vi en melding som sier "Trykk på en knapp". Det forteller oss at skriptet vårt kjører, og det besto en foreløpig kodekontroll. Mitt første forsøk hadde en uendelig sløyfe med "musikk pauset - trykk på knappen for å fortsette", og jeg fant ut at jeg hadde pauseknappen tilkoblet til alltid å være lukket, i stedet for normalt åpen. Forhåpentligvis hadde du bedre lykke til med loddetrinnet.

Ctrl-C stopper skriptet hvis du trenger å avbryte.

Så hvis du ser "Trykk på en knapp", hva venter vi på? Velg en av våre fem radiostasjonsknapper.

Sjansen er stor for at du sannsynligvis vil høre en høyttaler dukke opp for å starte musikkavspillingen, og jeg kan ikke hjelpe med det for øyeblikket. Mpg123 gir mulighet for et "--preload 1"-suffiks etter stasjonsadressen i kommandoen os.system, men jeg kunne ikke vite om det gjorde en forskjell. Det bør tillate en liten buffer.

En annen bit kode du kanskje har lurt på: det er et "-f 7000" flagg etter mpg123 -anropet. Dette reduserer volumet til en avstand på maks volum. Fullt volum ville være 32K. Som jeg forstår, er volumskalaen ikke en lineær skala, så jeg kan ikke si at den bare er en femtedel av maks volum, men fortsatt mye høyt. Jeg måtte gjøre dette fordi lydkortet mitt - Google AIY -lydkortet, ikke spiller godt med Alsamixer noen ganger.

Fortsett å velge knapper etter eget valg, lene deg tilbake, slapp av og nyt komforten når du lytter.

Trinn 11: Sett opp koden vår for å kjøre automatisk ved oppstart

Så hvis alt går bra, og du har hatt glede av kommandoprompt -satsingen for sandkasse, er det nå en god tid å automatisere skriptbelastningen. Sørg for at du fremdeles er i kissir -katalogen, og plasser skriptkoden i brukerfeltet:

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

Gjør det kjørbart:

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

Skriv et skallskript for å kjøre det ved oppstart:

sudo nano pytiful3.sh

Og sett inn følgende tekst:

#! /bin/sh ### BEGIN INIT INFO # Gir: pytiful3.py # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Standard-Start: 2 3 4 5 # Standard-Stop: 0 1 6 ### END INIT INFO # sørg for at volumnivået ikke er høyt TODO # Utfør spesifikke funksjoner når systemet blir bedt om det "$ 1" i start) ekko "Starter pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "Stopping pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) ekko "Bruk: /etc/init.d/pytiful3.sh {start | stop}" exit 1;; esac exit 0

Flytt den til init.d:

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

Gjør det kjørbart:

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

Registrer skriptet for å kjøre ved oppstart:

sudo update-rc.d pytiful3.sh standardinnstillinger

Trinn 12: Test igjen

Nå som vi har skriptet vårt lastet inn for å kjøre ved oppstart, må du bare huske at eventuelle endringer vi gjør må overføres til brukerfeltet, og vårt vakre, kissir/pytiful3.py -skript er bare et foreldreløst nå. Men på den lyse siden har vi fortsatt en sandkasse å spille i. Jeg kommer nok til å fortsette å leke med manuset, gjøre endringer og lagre det som en ny versjon i nær fremtid. Det er fortsatt et arbeidsprosjekt.

La oss starte på nytt, vente på at pi starter på nytt, og etter omtrent et minutt trykker du på en knapp igjen.

Hvis lydvolumet ditt er veldig lavt, husk at vi har et mikservolum på 50%, så vi kan øke det tilsvarende fra ledeteksten.

For det første er en ting som trengs en global volumverdi, i stedet for å måtte endre volumnivået 5 forskjellige ganger.

Hei, hva med listen over radiostasjoner som vi laget i trinn 6? Vel, det viser seg at MPG123 har en tilfeldig valgkommando. Det er så enkelt som å bygge en liste over stasjonsnettadresser, og i stedet for å ringe etter én radiostasjonsnettadresse, bare bruk

"btn1234_choice = random.choice (btn1234)", umiddelbart etter identifisering av listen over stasjoner, der btn1234_choice er vår liste. Ikke glem å bruke firkantede parenteser rundt listen over stasjoner atskilt med kommaer. Underprosesskommandokallet spiller deretter vårt tilfeldige valg:

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

Trinn 13: Box It Up, og vi er ferdige

Bokser det, og vi er ferdige
Bokser det, og vi er ferdige
Bokser det, og vi er ferdige
Bokser det, og vi er ferdige
Bokser det, og vi er ferdige
Bokser det, og vi er ferdige

Hvis du har kommet til dette trinnet, er arbeidet fullført! Gratulerer - du har nettopp bygget en frittstående internettradioavspiller.

Avhengig av utstyret du har (høyttalere, dac og forsterker), kan du lure på hvordan du skal skjule noen av ledningene som ligger rundt. Kanskje en annen instruerbar for en annen dag, men hvis du planlegger å lage en boenhet for å stikke noen av ledningene i, anbefaler jeg å gi deg god plass.

Som du kan se på bildene ovenfor - jeg lagde faktisk to kissirer, den ene brukte restene av et lim -up -uhell på mitt første forsøk (fra vridd humor kommer forvrengte brett). Den andre enheten bruker lydspenninger i stedet for konvensjonelle høyttalere, og hvis du plukket opp navnet på enheten på et av skjermbildene mine, kalte jeg den slimbox.

Jeg syntes dette prosjektet var ganske morsomt. Begge gangene. Absolutt ikke et vanskelig prosjekt, kanskje litt tidkrevende, men veldig givende. Jeg håper du også liker å lytte.

Anbefalt: