Innehållsförteckning:

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

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

Video: Keeping It Stoopid Simple Internet Radio: KISSIR: 13 Steg
Video: The Real Story of Paris Hilton | This Is Paris Official Documentary 2024, December
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

Ibland måste det bara vara taktilt. Inget gränssnitt av något slag. Bara knappar.

Raspberry Pi som en internetradiospelare är inget nytt, och det finns gott om instruktioner om hur man skapar en internetradiospelare med en hallonpi med eller utan bildskärm för att strömma internetstationer från hela världen. Om du skulle välja att gå utan huvud (utan bildskärm), skulle du fortfarande behöva ett sätt att ansluta pi -spelaren, vanligtvis ett webbgränssnitt om inte ett direkt sätt att kommunicera till värden, till exempel ssh. Denna instruerbara kommer att vara något annorlunda; vi använder enkla knapptryckningar för att skicka kommandon till pi, vilket eliminerar behovet av ett webbgränssnitt och en LCD -skärm. Låter lätt nog, eller hur?

Vi börjar med en mycket grundläggande design med färgkodade knappar, varje färg kommer att representera en internetradiostation. Vi kommer att introducera lite pythonkod för att hantera knapptryckningen: Pressen kommer att utföra ett kommando för att spela en förkodad internetradiostation med MPG123, ett bra kommandoradsverktyg för att spela ljud på vår pi.

Dina pythonkunskaper behöver inte vara avancerade. I själva verket gick jag bokstavligen från "Hej världen" till att skriva detta, och som du kommer att se lånade jag mycket kod - så om jag kan göra det och få det något dokumenterat borde någon annan inte ha några problem.

Nu går vi!

Tillbehör:

Material som behövs

  • Raspberry pi/ pi zero w med alla fixeringar: Strömförsörjning, SD -kort och Raspbian eller Raspbian lite.
  • Wifi och internetuppkoppling
  • En annan dator för att utföra viss webbläsning och möjlighet att SSH till hallon pi
  • Digital till analog omvandlare (DAC) - valfritt men du är tacksam.
  • Förstärkare
  • Högtalare
  • Anslutningstråd och tröjor
  • Lödkolv och löd
  • Perf Board för knapparna
  • Taktila knappar: Normalt öppen- en för varje musikgenre, en strömknapp och en valfri ljudknapp (7 knappar rekommenderas)
  • En bostadsenhet för allt ovan (valfritt men städat)

Steg 1: Förutsättningar:

Förutsättningar
Förutsättningar

Vi börjar med att du redan har konfigurerat din hallon pi, DAC och förstärkare, och antar också att du har tillgång till internet. På grund av mängden val av ljudutrustning, preferenser och alternativ för ljudlyssning, antar vi att din inställning redan är klar: du borde redan ha ljud från dina högtalare innan du startar projektet. Vi kommer också att behöva ssh till hallon pi, så använd pi -konfiguration, se till att gränssnitt har ssh aktiverat. Jag kommer att använda Raspbian lite och rekommenderar att du har en ny installation av den senaste kopian på ett nytt sd -kort dedikerat för detta projekt. Om det lyckas kommer vi att bygga en fristående armatur som kan lämnas påslagen 24/7 som en dedikerad lyssnarenhet.

Steg 2: Installera Python och Pip

Jag föredrar att ssh till pi med en annan dator och utföra alla nödvändiga funktioner med en ssh -session, men jag antar att det är möjligt att initialt konfigurera pi till en bildskärm, tangentbord och mus och arbeta direkt på pi tills det är fungerar och sedan distribueras som en fristående.

Låt oss först göra en rutinmässig underhållskontroll av vårt system och vår pythonversion:

sudo apt-get uppdatering

sudo apt-get uppgradering

Se till att Python är installerat. Skriv följande i en terminalsession vid kommandotolken:

python -version

Om du ser python 2.7.13 (eller tidigare) låt oss installera python 3.+:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install -uppgradera pip

Steg 3: Installera MPG123 och Adafruit Blinka

Nu när grunden har lagts, bara några installationer till:

MPG123 är ljudprogramvaran som spelar vår musik. Installationen är verkligen enkel:

sudo apt-get install mpg123

Jag gjorde en hel del research och hittade en bra mall på Adafruit -webbplatsen om att spela ljudfiler med knapptryckningar, så istället för att börja om från början, låt oss fortsätta på spåret som folk på Adafruit redan har flammat för oss. Deras program ber oss att installera Adafruit Blinka:

$ sudo pip3 installera adafruit-blinka

Innan vi går vidare, låt oss utföra en snabbkontroll för att se till att vi har Alsa -konfiguration:

aplay -version

våra resultat bör läsa: version 1.1.3 av Jaroslav Kysela

Steg 4: Justera volymen till 50% i Alsamixer

Justera volymen till 50% i Alsamixer
Justera volymen till 50% i Alsamixer
Justera volymen till 50% i Alsamixer
Justera volymen till 50% i Alsamixer

Låt oss nu vidta en försiktighetsåtgärd och justera vår volym till 50% för att undvika öronbedövande överraskningar:

Skriv alsamixer vid kommandotolken:

alsamixer

Om vi tittar på en skärm med rött vitt och grönt, eller 100% maxvolym, är det en bra idé att sänka volymen till 50% för att spara våra trumhinnor. Vi kan alltid justera senare (upp eller ner) om det behövs.

Steg 5: Några läxor: Hitta 5 radiostationer som är värda att lyssna på

Några läxor: Hitta 5 radiostationer värda att lyssna på
Några läxor: Hitta 5 radiostationer värda att lyssna på
Några läxor: Hitta 5 radiostationer värda att lyssna på
Några läxor: Hitta 5 radiostationer värda att lyssna på

Vi behöver en station för varje knapp. Egentligen kommer vi att behöva webbadressen för stationen. Med knapptryckningen anropas internetradiostationens webbadress med en enkel kodrad på en rad. Men vi går före oss själva så vi har lite läxor att göra; hitta 5 radiostationer och deras webbadresser. Det är inte svårt att hitta fem radiostationer, men det kan vara svårt att hitta deras webbadresser. Jag ska förklara varför om en minut.

SomaFm * är en bra källa att börja med, särskilt om du inte har någon aning om vad du vill lyssna på ännu. De har ett brett utbud av eklektiska musikval, inget av dem tycker jag är kränkande, inga reklamfilmer och det bästa: De delar öppet sina webbadresser. För att ta tag i webbadressen, klicka på en bild av stationen du är intresserad av, och klicka på "Direktströmlänkar" i navigeringsfältet till vänster. Därifrån hittar du MP3 -sektionen och skrapar url: n med den högsta uppspelningshastigheten (dvs 128 slag 64). Klistra in webbadressen i en textredigerare eller anteckningsblock för tillfället.

Som ett exempel, för att skrapa julrockar, skulle webbadressen vara: (vi behöver inte serverbeskrivningen)

ice4.somafm.com/xmasrocks-128-mp3

Det blir lite tuffare utanför SomaFms värld. Många stationer använder en mellanhand mellan lyssnaren och stationen, oavsett om det är för reklam, marknadsföring eller möjligen spårning - och jag försöker i allmänhet undvika den här typen av stationer. Eftersom mellanhänderna föredrar att du lyssnar på stationen genom dem är det oftast ganska svårt att hitta webbadressen; och det är där Vtuner kommer in.

*Jag skulle vara ledsen om jag inte bad dig att överväga att donera till din favoritradiostation, eftersom många av stationerna enbart förlitar sig på lyssnarstöd.

Steg 6: Valfritt: Skrapa URL: s med hjälp av Vtuner

Valfritt: Skrapa URL: s med Vtuner
Valfritt: Skrapa URL: s med Vtuner
Valfritt: Skrapa URL: s med Vtuner
Valfritt: Skrapa URL: s med Vtuner

Nu kommer den roliga delen … På Vtuner -hemsidan, kolla in deras enorma stationslistlänk i det övre högra hörnet. Välj en musikgenre som du är intresserad av och sortera sedan på snabbaste hastighet, där du kommer att se en lista med stationer. Välj en station du tror att du kanske gillar, klicka på länken eller spela upp knappen och prova musiken. Om det inte är något för dig, oroa dig inte, upprepa processen tills vi hittar en lämplig för långvarig njutning. I mitt skärmdump valde jag den digitala impulsversionen av countrymusik och på nästa skärm märkte jag att den spelas ut från Kroatien. Countrymusik från Kroatien låter ganska intressant.

Jag gillar det. Men hur får jag url? Högerklicka helt enkelt på det vita utrymmet till höger om stationsbilden, under stationsnamnet, välj "Visa sidkälla" och rulla ner till ungefär rad 150. Vi letar efter raden som säger "// Försök att hantera icecast ". Och webbadressen finns omedelbart under!

orion.shoutca.st:8110/stream

Ganska snyggt!

Upprepa detta steg tills vi har minst 5 stationer på vår lista.

Dubbel valfritt: Om du kan hitta 5 musikgenrer som du är intresserad av (till skillnad från 5 stationer) kan du skapa en lista med radiostationer för varje genre och spara listorna som textfiler. Vi återkommer till detta senare.

Steg 7: Konfigurera våra knappar

Konfigurera våra knappar
Konfigurera våra knappar
Konfigurera våra knappar
Konfigurera våra knappar

Den viktigaste delen! Damm av det gamla lödkolvet eller koppla in det åtminstone och grädda bort dammet. Det är dags att löda. Jag använder fyra korta knappar, normalt öppna. Jag kommer att bygga en rad knappar (vänster foto) och fästa dem på någon perfekt bräda. Det är svårt att avgöra på fotot, men riktningen på knapptapparna går alla i nord-syd. På höger sida kan du se var jag körde en jordskena för mina jordledningar och kopplade några hankablar till den motsatta sidan av varje knapp. I stället för att ha 7 jordanslutningar, kommer skenan att tillåta oss att dela en jordanslutning till pi för alla. Slutresultatet är en delikat skivbräda som kommer att vara undermonterad på toppen av radion med några skruvar genom de medföljande styrhålen. Endast knapptopparna kommer att dyka upp genom spåret som jag har skurit ur toppen. Eftersom min övre yta bara är 1/4 tjock, vill jag vara försiktig så att jag inte skruvar för mycket. Lim kan vara till hjälp för att hålla perfektbrädan ansluten till radion.

Steg 8: Identifiera våra GPIO -stift

Identifiera våra GPIO -stift
Identifiera våra GPIO -stift
Identifiera våra GPIO -stift
Identifiera våra GPIO -stift

I min enda andra instruerbara, presenterade jag en ny användning för de gamla Google AIY version 1 rösthattar. I denna mycket impopulära (eller snävt populära) instruerbara, nämnde jag hur imponerad jag var av mössans design. Jag har några kvar, så jag ska bygga en prototyp med hatten eftersom den har både dac och förstärkare ombord.

Låt oss nu identifiera sex stift som kommer att vara värd för våra knapptryckningar. Jag ber dig att fokusera på vänster sida av Google AIY -hatten, där det står "servos". Det finns en kolumn med 6 öljetter för stiftet där jag ska fästa och lödda mina manliga knappändar från vårt föregående steg. Skulle du arbeta utan google aiy voice hat, inga bekymmer - fotot till höger guidar dig. I båda fallen kommer vi att arbeta med gpio (BCM) stift 26, 06, 13, 05, 12 och 24 uppifrån och ner (eller 0-5). GPIO #24 kommer att reserveras för en valfri pausknapp.

Glöm inte att också fästa jordanslutningen.

Steg 9: Kod

Jag tvivlar på att koden kommer att förändras mycket härifrån, men för den senaste versionen av pythonkoden, besök min github. Jag har bifogat en kopia från 2019-12-18 som heter pytiful3.py.

Det är inte den mest effektiva koden du någonsin kommer att se, och det är ganska ordagrant, men det får jobbet gjort.

Låt oss börja med att skapa en sandlåda att spela i. Från vår hemkatalog skapar du en katalog på vår hallon pi som heter kissir:

mkdir kissir/

och kopiera pytiful3.py -filinnehållet till katalogen genom att öppna exempelfilen i en textredigerare och använda

sudo nano kissir/pytiful3.py

kopiera / klistra in filinnehållet i vårt nyskapade python -skript. Glöm inte att spara vårt arbete med Ctrl-x, Y och ange.

Om du vill ha en snabb rundtur i skriptet importerar vi de python -moduler vi kommer att behöva, och sedan definierar vi våra knappar och tilldelar en gpio -pin till var och en av de 7 knapparna. Det kommer att finnas 5 radiostationer (redigera gärna efter dina önskemål), en stoppknapp och en avstängningsknapp. Medan true loop körs och körs tills en knapp trycks in, vilket i de flesta fall stoppar befintlig mpg123 -uppspelning och börjar spela stationen som tilldelades knappen som trycktes in. Paus/stopp -knappen är egentligen inte en pausknapp utan mer en kill -omkopplare eftersom vi inte kan pausa internetradio. Internetradio väntar på ingen.

Steg 10: Testa i vår sandlåda

Testa i vår sandlåda
Testa i vår sandlåda

Innan vi distribuerar vår radio, medan vi fortfarande är i vår ssh -session, navigerar vi till kissir -mappen där vårt skript lagras. Vi kan helt enkelt köra skriptet från kommandoraden manuellt genom att skriva:

python3 pytiful3.py

Om du tittade på koden först märkte du förmodligen att jag lämnade några utskriftsuttalanden så att vi kan berätta vad som händer. Om allt fungerade bra kommer vi att få en prompt med texten "Tryck på en knapp". Det berättar att vårt skript körs och det gick igenom en preliminär kodkontroll. Mitt första försök hade en oändlig slinga med "musik pausad - tryck på knappen för att fortsätta", och jag fick reda på att jag hade min pausknapp alltid ansluten, istället för normalt öppen. Förhoppningsvis hade du bättre tur med lödningssteget.

Ctrl-C stoppar skriptet om du behöver avbryta.

Så om du ser "Tryck på en knapp", vad väntar vi på? Välj någon av våra fem radiostationsknappar.

Chansen är stor att du sannolikt kommer att höra en högtalare popa för att starta musikuppspelningen, och jag kan inte hjälpa till med det för tillfället. Mpg123 möjliggör ett "--preload 1" -ändelse efter stationsadressen i kommandot os.system, men jag kunde inte se om det gjorde någon skillnad. Det bör tillåta en liten buffert.

En annan bit kod som du kanske har undrat över: det finns en "-f 7000" -flagga efter mpg123 -samtalet. Detta reducerar volymen till ett långt avstånd av maxvolym. Full volym skulle vara 32K. Som jag förstår är volymskalan inte en linjär skala, så jag kan inte säga att den bara är en femtedel av maxvolymen, men fortfarande mycket högt. Jag var tvungen att göra detta eftersom mitt ljudkort - Google AIY röst ljudkort, inte spelar bra med Alsamixer ibland.

Fortsätt att välja knappar efter eget val, luta dig tillbaka, slappna av och njut av komforten när du lyssnar för tillfället.

Steg 11: Konfigurera vår kod så att den körs automatiskt vid start

Så om allt går bra och du har tyckt om vårt kommandotolk för sandlåda, är det nu en bra tid att automatisera skriptbelastningen. Se till att du fortfarande finns i kissir -katalogen och placera skriptkoden i användarfacket:

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

Gör det körbart:

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

Skriv ett skalskript för att köra det vid start:

sudo nano pytiful3.sh

Och infoga följande text:

#! /bin/sh ### BEGIN INIT INFO # Ger: 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 # se till att volymnivån inte är hög TODO # Utför specifika funktioner när systemet begär av "$ 1" i start) eko "Startar pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "Stoppar pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) eko "Användning: /etc/init.d/pytiful3.sh {start | stop}" avsluta 1;; esac exit 0

Flytta den till init.d:

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

Gör det körbart:

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

Registrera skriptet för att köras vid start:

sudo update-rc.d pytiful3.sh som standard

Steg 12: Testa igen

Nu när vi har vårt skript laddat för att starta, kom bara ihåg att alla ändringar vi gör måste överföras till användarfacket, och vårt vackra, kissir/pytiful3.py -skript är bara ett föräldralöst nu. Men på den ljusa sidan har vi fortfarande en sandlåda att spela i. Jag kommer nog fortsätta spela med manuset, göra ändringar och spara det som en ny version inom en snar framtid. Det är fortfarande ett fungerande projekt.

Låt oss göra en omstart, vänta på att pi startar om och tryck på en knapp igen efter ungefär en minut.

Om din ljudvolym är mycket låg, kom ihåg att vi har en blandarvolym på 50%, så att vi kan höja den i enlighet med kommandotolken.

Till att börja med är en sak som behövs ett globalt volymvärde istället för att behöva ändra volymnivån 5 olika gånger.

Hej, hur är det med listan över radiostationer som vi gjorde i steg #6? Det visar sig att MPG123 har ett slumpvalskommando. Det är så enkelt som att bygga en lista med stationsurl, och istället för att ringa efter en radiostationsurl, använd helt enkelt

"btn1234_choice = random.choice (btn1234)", omedelbart efter att ha identifierat vår lista över stationer, där btn1234_choice är vår lista. Glöm inte att använda hakparenteser runt vår lista över stationer åtskilda med kommatecken. Underprocesskommandokallet spelar sedan vårt slumpmässiga val:

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

Steg 13: Box It Up, och vi är klara

Box It Up, och vi är klara
Box It Up, och vi är klara
Box It Up, och vi är klara
Box It Up, och vi är klara
Box It Up, och vi är klara
Box It Up, och vi är klara

Om du har kommit till det här steget är arbetet klart! Grattis - du har just byggt en fristående internetradiospelare.

Beroende på vilken utrustning du har (högtalare, dac och förstärkare) kanske du undrar hur du gömmer några av ledningarna. Kanske en annan instruerbar för en annan dag, men om du planerar att göra en bostad för att stoppa några av ledningarna i, rekommenderar jag att du ger dig gott om extra utrymme.

Som du kan se på bilderna ovan - jag gjorde faktiskt två kissirer, en med hjälp av resterna av ett limmade missöde vid mitt första försök (från förvrängd humor kommer skeva brädor). Den andra enheten använder ljudstimulerare snarare än konventionella högtalare, och om du plockade upp namnet på enheten på en av mina skärmdumpar gav jag den namnet slimbox.

Jag tyckte att det här projektet var ganska roligt. Båda gångerna. Förvisso inget svårt projekt, kanske lite tidskrävande men mycket givande. Jag hoppas att du också tycker om att lyssna.

Rekommenderad: