Indholdsfortegnelse:

Keeping It Stoopid Simple Internet Radio: KISSIR: 13 trin
Keeping It Stoopid Simple Internet Radio: KISSIR: 13 trin

Video: Keeping It Stoopid Simple Internet Radio: KISSIR: 13 trin

Video: Keeping It Stoopid Simple Internet Radio: KISSIR: 13 trin
Video: These Barbers Have Crazy Skills. God Level Barbers 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

Nogle gange skal det bare være taktilt. Ingen grænseflade af nogen art. Bare knapper.

Raspberry Pi som internetradioafspiller er ikke noget nyt, og der er masser af instruktioner om, hvordan man opretter en internetradioafspiller ved hjælp af en hindbærpi med eller uden en skærm til at streame internetstationer fra hele verden. Hvis du vælger at gå hovedløs (uden en skærm), har du stadig brug for et middel til at interface pi -afspilleren, normalt en webgrænseflade, hvis ikke et direkte kommunikationsmiddel til værten, f.eks. Ssh. Denne instruktive vil være lidt anderledes; vi vil bruge enkle knaptryk til at sende kommandoer til pi'et, hvilket eliminerer behovet for en webgrænseflade og en LCD -skærm. Det lyder let nok, ikke? (?)

Vi starter med et meget grundlæggende design ved hjælp af farvekodede knapper, hver farve repræsenterer en internetradiostation. Vi introducerer en python-kode til håndtering af knappetrykket: Pressen vil udføre en kommando for at afspille en forudkodet internetradiostation ved hjælp af MPG123, et fantastisk kommandolinjeværktøj til afspilning af lyd på vores pi.

Dine python -færdigheder behøver ikke at være avancerede. Faktisk gik jeg bogstaveligt talt fra "Hello World" til at skrive dette, og som du vil se, lånte jeg en masse kode - så hvis jeg kan gøre det og få det noget dokumenteret, burde andre ikke have noget problem.

Lad os gå!

Tilbehør:

Nødvendige materialer

  • Raspberry pi/ pi zero w med alle rettelser: Strømforsyning, SD -kort og Raspbian eller Raspbian lite.
  • Wifi og internetadgang
  • En anden pc til at udføre en vis web -browsing og mulighed for at SSH til hindbær pi
  • Digital til analog konverter (DAC) - valgfri, men du vil være taknemmelig.
  • Forstærker
  • Højttalere
  • Tilslutningstråd og Jumpere
  • Loddejern og loddetin
  • Perf Board til knapperne
  • Taktile knapper: Normalt åben- en til hver musikgenre, en tænd / sluk-knap og en valgfri lydløs-knap (7 knapper anbefales)
  • En boenhed til alt det ovenstående (valgfrit, men ryddeligt)

Trin 1: Forudsætninger:

Forudsætninger
Forudsætninger

Vi starter, forudsat at du allerede har konfigureret din hindbær pi, DAC og forstærker, og antager også, at du har adgang til internettet. På grund af mængden af valg af lydudstyr, præferencer og muligheder for lydlytning, formoder vi, at din opsætning allerede er fuldført: du skal allerede have lyd, der kommer ud af dine højttalere, før du starter dette projekt. Vi skal også ssh til raspberry pi, så brug af pi -konfiguration for at sikre, at grænseflader har ssh aktiveret. Jeg bruger Raspbian lite og anbefaler, at du har en ny installation af den nyeste kopi på et nyt sd -kort dedikeret til dette projekt. Hvis det lykkes, bygger vi et enkeltstående armatur, der kan efterlades tændt 24/7 som en dedikeret lytteenhed.

Trin 2: Installer Python og Pip

Jeg foretrækker at ssh til pi'en ved hjælp af en anden pc og udføre alle de nødvendige funktioner ved hjælp af en ssh -session, men jeg gætter på, at det først er muligt at konfigurere pi'en til en skærm, tastatur og mus og arbejde direkte på pi'en, indtil den er arbejder og derefter implementeres som en selvstændig.

Lad os først foretage en rutinemæssig vedligeholdelseskontrol af vores system og python -version:

sudo apt-get opdatering

sudo apt-get opgradering

Sørg for, at Python er installeret. I en terminalsession skal du skrive følgende ved kommandoprompten:

python -version

Hvis du ser python 2.7.13 (eller tidligere), lad os installere python 3.+:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install -opgrader pip

Trin 3: Installer MPG123 og Adafruit Blinka

Nu hvor fundamentet er lagt, er der blot et par installationer mere:

MPG123 er lydsoftwaren, der afspiller vores musik. Installation er virkelig enkel:

sudo apt-get install mpg123

Jeg lavede en masse research og fandt en god skabelon på Adafruit -webstedet om afspilning af lydfiler ved hjælp af knappetryk, så i stedet for at starte forfra, kan vi fortsætte på sporet, folkene på Adafruit allerede har flammet for os. Deres program beder os om at installere Adafruit Blinka:

$ sudo pip3 installer adafruit-blinka

Inden vi går videre, lad os udføre en hurtig kontrol for at sikre, at vi har Alsa -opsætning:

aplay -version

vores resultater skal læse: version 1.1.3 af Jaroslav Kysela

Trin 4: Juster lydstyrken til 50% i Alsamixer

Juster lydstyrken til 50% i Alsamixer
Juster lydstyrken til 50% i Alsamixer
Juster lydstyrken til 50% i Alsamixer
Juster lydstyrken til 50% i Alsamixer

Lad os nu tage en sikkerhedsforanstaltning og justere vores lydstyrke til 50% for at undgå øredøvende overraskelser:

Skriv alsamixer ved kommandoprompten:

alsamixer

Hvis vi ser på en skærm med rød hvid og grøn, eller 100% maksimal lydstyrke, er det en god idé at sænke lydstyrken til 50% for at gemme vores trommehinder. Vi kan altid justere senere (op eller ned), hvis det er nødvendigt.

Trin 5: Nogle lektier: Find 5 radiostationer, der er værd at lytte til

Nogle lektier: Find 5 radiostationer, der er værd at lytte til
Nogle lektier: Find 5 radiostationer, der er værd at lytte til
Nogle lektier: Find 5 radiostationer, der er værd at lytte til
Nogle lektier: Find 5 radiostationer, der er værd at lytte til

Vi skal bruge en station til hver knap. Faktisk har vi brug for webadressen til stationen. Knappetrykket vil kalde internetradiostationens url i en simpel bit kode. Men vi kommer foran os selv, så vi har nogle lektier at lave; finde 5 radiostationer og deres webadresser. Det er ikke svært at finde 5 radiostationer, men det kan være svært at finde deres webadresser. Jeg forklarer hvorfor om et øjeblik.

SomaFm * er en god kilde til at starte med, især hvis du ikke har nogen idé om, hvad du vil lytte til endnu. De har en bred vifte af eklektiske musikvalg, hvoraf ingen synes jeg er stødende, ingen reklamer og den bedste del: De deler åbent deres webadresser. For at få fat i url'en skal du klikke på et billede af den station, du har interesse i, og i navigationslinjen i venstre side skal du klikke på "Direct Stream Links". Derfra finder du MP3 -sektionen, og skraber url'en med den højeste afspilningshastighed (dvs. 128 beats 64). Indsæt url'en i en teksteditor eller notesblok for nu.

For eksempel at skrabe Christmas Rocks ville url være: (vi har ikke brug for serverbeskrivelsen)

ice4.somafm.com/xmasrocks-128-mp3

Det bliver lidt dicier uden for SomaFms verden. Mange stationer bruger en mellemmand mellem lytteren og stationen, uanset om det er til reklame, marketing eller muligvis sporing - og jeg forsøger generelt at undgå denne type stationer. Da mellemmændene foretrækker, at du lytter til stationen gennem dem, er det normalt ret svært at finde webadressen; og det er her, Vtuner kommer ind.

*Jeg ville være utilfreds, hvis jeg ikke bad dig om at overveje at donere din foretrukne radiostation, da mange af stationerne udelukkende er afhængige af lytterstøtte.

Trin 6: Valgfrit: Skrab URL'er ved hjælp af Vtuner

Valgfrit: Skrab URL'er ved hjælp af Vtuner
Valgfrit: Skrab URL'er ved hjælp af Vtuner
Valgfrit: Skrab URL'er ved hjælp af Vtuner
Valgfrit: Skrab URL'er ved hjælp af Vtuner

Nu kommer den sjove del …. På Vtuner -hjemmesiden kan du se deres enorme stationsliste -link i øverste højre hjørne. Vælg en musikgenre, du har interesse i, og sorter derefter på den hurtigste hastighed, hvor du vil se en liste over stationer. Vælg en station, du tror, du kan lide, klik på linket eller afspil knappen, og prøv musikken. Hvis det ikke er noget for dig, skal du ikke bekymre dig, gentag processen, indtil vi finder en egnet til langvarig nydelse. I mit skærmbillede valgte jeg den digitale impulsversion af countrymusik, og på den næste skærm bemærkede jeg, at den afspiller fra Kroatien. Countrymusik fra Kroatien lyder ret interessant.

Jeg kan lide det. Men hvordan får jeg webadressen? Du skal blot højreklikke på det hvide mellemrum til højre for stationsbilledet, under stationsnavnet, og vælge "Vis sidekilde" og rulle ned til omkring række 150. Vi leder efter den linje, der siger "// Prøv at håndtere icecast ". Og webadressen findes umiddelbart nedenunder!

orion.shoutca.st:8110/stream

Ret glat!

Gentag dette trin, indtil vi har mindst 5 stationer på vores liste.

Dobbelt valgfrit: Hvis du kan finde 5 genrer musik, som du har interesse i (i modsætning til 5 stationer), kan du for ekstra mål opbygge en liste over radiostationer for hver genre og gemme listerne som tekstfiler. Vi vender tilbage til dette senere.

Trin 7: Konfigurer vores knapper

Opsætning af vores knapper
Opsætning af vores knapper
Opsætning af vores knapper
Opsætning af vores knapper

Den vigtigste del! Støv det gamle loddejern af, eller stop det i det mindste og bag støvet af. Det er tid til at lodde. Jeg bruger 4 kortvarige trykknapper, der normalt åbnes. Jeg vil bygge en række knapper (venstre billede), og fastgøre dem til et perfekt bord. Det er svært at se på billedet, men retningen på knappestikkerne løber alle nord-syd. På højre side kan du se, hvor jeg løb en jordskinne til mine jordledninger og fastgjorde nogle hankabler til den modsatte side af hver knap. I stedet for at have 7 jordforbindelser, vil skinnen give os mulighed for at dele en jordforbindelse til pi for alle. Slutresultatet er et delikat wafer board, der vil blive monteret under toppen af radioen ved hjælp af nogle skruer gennem de medfølgende pilothuller. Kun knappetoppene vises gennem rillen, jeg har skåret ud af toppen. Da min øverste overflade kun er 1/4 tyk, vil jeg være forsigtig med ikke at skrue for meget for. Lim kan være nyttigt for at holde perfbrættet fastgjort til radioen.

Trin 8: Identificer vores GPIO -pins

Identificer vores GPIO -pins
Identificer vores GPIO -pins
Identificer vores GPIO -pins
Identificer vores GPIO -pins

I min eneste anden instruerbare præsenterede jeg en ny brug til de gamle Google AIY version 1 stemmehatte. I denne meget upopulære (eller snævert populære) instruerbare nævnte jeg, hvor imponeret jeg var over selve hattenes design. Jeg har et par liggende, så jeg skal bygge en prototype ved hjælp af hatten, da den har både dac og forstærker ombord.

Lad os nu identificere seks ben, der er vært for vores knap tryk. Jeg vil bede dig fokusere på venstre side af Google AIY -hatten, hvor der står "servoer". Der er en kolonne med 6 øjer til stiften, hvor jeg vil vedhæfte og lodde min hanknap fra vores tidligere trin. Skulle du arbejde uden google aiy voice hat, skal du ikke bekymre dig - billedet til højre vil guide dig. I begge tilfælde arbejder vi med gpio (BCM) ben 26, 06, 13, 05, 12 og 24 fra top til bund (eller 0-5). GPIO #24 vil blive reserveret til en valgfri pause -knap.

Glem ikke også at fastgøre jordforbindelsen.

Trin 9: Kode

Jeg tvivler på, at koden vil ændre sig meget herfra, men besøg min github for den seneste version af python -koden. Jeg har vedhæftet en kopi pr. 18.12.2019 kaldet pytiful3.py.

Det er ikke den mest effektive kode, du nogensinde vil se, og det er temmelig omfattende, men det får jobbet gjort.

Lad os starte med at oprette en sandkasse at spille i. Fra vores hjemmebibliotek skal du oprette et bibliotek på vores hindbær pi kaldet kissir:

mkdir kissir/

og kopier filindholdet pytiful3.py til biblioteket ved at åbne prøvefilen i et tekstredigeringsprogram og bruge

sudo nano kissir/pytiful3.py

kopier / indsæt filindholdet i vores nyoprettede python -script. Glem ikke at gemme vores arbejde ved at bruge Ctrl-x, Y og indtast.

Hvis du vil have en hurtig rundvisning i scriptet, importerer vi de python -moduler, vi får brug for, og derefter definerer vi vores knapper og tildeler en gpio -pin til hver af de 7 knapper. Der vil være 5 radiostationer (du er velkommen til at redigere efter din stations præference), en stop -knap og en nedlukningsknap. Imens true loop kører og kører, indtil der trykkes på en knap, som i de fleste tilfælde stopper enhver eksisterende mpg123 -afspilning og begynder at afspille den station, der er tildelt den knap, der blev trykket på. Pause/stop -knappen er ikke rigtig en pause -knap, men mere en kill -switch, da vi ikke kan sætte internetradio på pause. Internetradio venter på ingen.

Trin 10: Test i vores sandkasse

Test i vores sandkasse
Test i vores sandkasse

Inden vi distribuerer vores radio, mens vi stadig er i vores ssh -session, skal du navigere til kissir -mappen, hvor vores script er gemt. Vi kan simpelthen køre scriptet manuelt fra kommandolinjen ved at skrive:

python3 pytiful3.py

Hvis du kiggede på koden først, har du sandsynligvis bemærket, at jeg efterlod nogle udskrifter, så vi kan fortælle, hvad der sker. Hvis alt fungerede godt, får vi en prompt, der lyder "Tryk på en knap". Det fortæller os, at vores script kører, og det har bestået en foreløbig kodekontrol. Mit første forsøg havde en uendelig sløjfe af "musik sat på pause - tryk på knappen for at fortsætte", og jeg fandt ud af, at jeg havde min pause -knap tilsluttet til altid at være lukket i stedet for normalt åben. Forhåbentlig havde du bedre held med lodningstrinnet.

Ctrl-C stopper scriptet, hvis du skal afbryde.

Så hvis du ser "Tryk på en knap", hvad venter vi på? Vælg en af vores fem radiostationsknapper.

Chancerne er store, at du sandsynligvis vil høre en højttaler poppe for at starte musikafspilningen, og jeg kan ikke hjælpe med det i øjeblikket. Mpg123 giver mulighed for et "--preload 1" endelse efter stationsadressen i kommandoen os.system, men jeg kunne ikke se, om det gjorde en forskel. Det bør tillade en lille buffer.

En anden bit kode, du måske har spekuleret over: Der er et "-f 7000" flag efter mpg123 -opkaldet. Dette reducerer lydstyrken til en fjern afstand på maks. Volumen. Fuld lydstyrke ville være 32K. Som jeg forstår, er volumen skalaen ikke en lineær skala, så jeg kan ikke sige, at det kun er en femtedel af maks volumen, men stadig meget højt. Jeg var nødt til at gøre dette, fordi mit lydkort - Google AIY -lydkortet, nogle gange ikke spiller godt sammen med Alsamixer.

Fortsæt med at vælge knapper efter eget valg, læn dig tilbage, slap af og nyd komforten ved at lytte nu.

Trin 11: Konfigurer vores kode til at køre automatisk ved opstart

Så hvis alt kører godt, og du har nydt vores kommandoprompt -projekt med sandkasse, er det nu et godt tidspunkt at automatisere scriptbelastningen. Sørg for, at du stadig er i kissir -biblioteket, og placer scriptkoden i brugerbakken:

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

Gør det eksekverbart:

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

Skriv et shell -script for at køre det ved opstart:

sudo nano pytiful3.sh

Og indsæt følgende tekst:

#! /bin/sh ### BEGIN INIT INFO # Indeholder: 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 # sikre, at lydstyrkeniveauet ikke er højt TODO # Udfør specifikke funktioner, når systemtilfældet "$ 1" bliver bedt om det) ekko "Starter pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) ekko "Stopper pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) ekko "Brug: /etc/init.d/pytiful3.sh {start | stop}" exit 1;; esac exit 0

Flyt det til init.d:

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

Gør det eksekverbart:

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

Registrer scriptet til at køre ved opstart:

sudo update-rc.d pytiful3.sh som standard

Trin 12: Test igen

Nu hvor vi har vores script indlæst for at køre ved opstart, skal du bare huske på, at alle ændringer, vi foretager, skal overføres til brugerbakken, og vores smukke, kissir/pytiful3.py -script er bare et forældreløst nu. Men på den lyse side har vi stadig en sandkasse at spille i. Jeg skal nok fortsætte med at lege med scriptet, foretage ændringer og gemme det som en ny version i den nærmeste fremtid. Det er stadig et arbejdsprojekt.

Lad os lave en genstart, vente på, at pi'en genstarter, og efter cirka et minut skal du trykke på en knap igen.

Hvis din lydstyrke er meget lav, skal du huske, at vi også har en mikservolumen på 50%, så vi kan øge den tilsvarende fra kommandoprompten.

Til at begynde med er en ting, der er nødvendig, en global volumenværdi i stedet for at skulle ændre lydstyrkeniveauet 5 forskellige tidspunkter.

Hej, hvad med den liste over radiostationer, som vi lavede i trin #6? Nå, det viser sig at MPG123 har en tilfældig markeringskommando. Det er lige så simpelt som at opbygge en liste over stationsurls, og i stedet for at ringe efter én radiostations -url skal du blot bruge

"btn1234_choice = random.choice (btn1234)", umiddelbart efter identifikation af vores liste over stationer, hvor btn1234_choice er vores liste. Glem ikke at bruge firkantede parenteser omkring vores liste over stationer adskilt af kommaer. Delproceskommandokaldet spiller derefter vores tilfældige valg:

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

Trin 13: Kassér det, og vi er færdige

Kassér det, og vi er færdige
Kassér det, og vi er færdige
Kassér det, og vi er færdige
Kassér det, og vi er færdige
Kassér det, og vi er færdige
Kassér det, og vi er færdige

Hvis du er nået til dette trin, er arbejdet færdigt! Tillykke - du har lige bygget en selvstændig internetradioafspiller.

Afhængigt af det udstyr, du har (højttalere, dac og forstærker), kan du undre dig over, hvordan du skjuler nogle af ledningerne, der ligger omkring. Måske en anden instruerbar til en anden dag, men hvis du planlægger at lave en boenhed til at stikke nogle af ledningerne i, anbefaler jeg at give dig masser af ekstra plads.

Som du kan se på billederne ovenfor - lavede jeg faktisk to kissirs, den ene ved hjælp af resterne af et lim -uheld ved mit første forsøg (fra skæv humor kommer skæve brædder). Den anden enhed bruger lyd -excitere frem for konventionelle højttalere, og hvis du hentede enhedens navn på et af mine skærmbilleder, kaldte jeg det slimbox.

Jeg fandt dette projekt meget sjovt. Begge gange. Bestemt ikke et svært projekt, måske lidt tidskrævende, men meget givende. Jeg håber du også nyder at lytte.

Anbefalede: