Innehållsförteckning:

Raspberry Pi-driven internetradio: 5 steg (med bilder)
Raspberry Pi-driven internetradio: 5 steg (med bilder)

Video: Raspberry Pi-driven internetradio: 5 steg (med bilder)

Video: Raspberry Pi-driven internetradio: 5 steg (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Image
Image
Raspberry Pi-driven internetradio
Raspberry Pi-driven internetradio
Raspberry Pi-driven internetradio
Raspberry Pi-driven internetradio

Det är något tillfredsställande med att vrida rattar och trycka på knappar, som de på gamla radioapparater. Tyvärr är många av dessa radioer trasiga eller stationerna har tystnat. Lyckligtvis är det inte alltför svårt att uppdatera någon radio till en internetradio med hjälp av en hallon pi zero W, så ska jag visa dig hur!

En del av arbetet beror på givarradion du har, men jag ska förklara vad jag gjorde med mitt för att ge dig en uppfattning om hur det går.

Eftersom pi körs lätt att följa pythonkod, när radiokontrollerna är anslutna kan du enkelt lägga till andra funktioner som ett larm, Bluetooth -högtalare, talarklocka etc. genom att bara ändra programvaran över ssh.

Detta projekt inspirerades av Dansette Pi internetradio, den största skillnaden är att rattarna här styr radion genom att vrida dem, inte som tryckknappar.

Tillbehör

  • gammal transistorradio
  • Hallon pi zero W
  • Picaxe 20X2
  • Adafruit 3W mono förstärkare - MAX98357 I2S Amp Breakout
  • Fatkontakt för strömförsörjning
  • 5V DC strömförsörjning för att passa fatkontakten
  • olika motstånd
  • några 100nF kondensatorer
  • bandbräda
  • 20 -stifts IC DIP -uttag
  • bygelkablar och toppar
  • små muttrar och bultar

Steg 1: Översikt

Tanken är att ha hallon pi ansluten till internet via inbyggt wifi och streaming en av en lista med förkonfigurerade internetradiostationer. De ursprungliga radioknapparna och rattar (potentiometrar) kommer att anslutas till ett picaxe-chip som fungerar som en analog-till-digital-omvandlare. Pi läser kontinuerligt kontrollerna från picaxen och reagerar därefter, ändrar antingen volymen eller stationen. När stationen ändras talar radion namnet på den nya stationen. Slutligen ledas det strömmade ljudet till en monoförstärkare som är ansluten till den ursprungliga radiohögtalaren.

Det fina med att använda en hallon pi är att när kretsen väl är upprättad kan radions funktioner enkelt ändras genom att bara ändra några rader kod på pi genom ssh. Till exempel kan du enkelt ansluta till en Bluetooth -högtalare eller göra en väckarklocka:)

Steg 2: Radion

Radion
Radion
Radion
Radion
Radion
Radion

Den viktigaste delen är donatorradion. Det behöver inte fungera men det måste ha en fungerande högtalare (om du inte vill installera en ny).

Min radio har 4 rattar och 7 tryckknappar. Två av rattarna kommer att användas för att ändra volym och station. De andra två urtavlorna och knapparna gör ingenting men jag kommer att ansluta dem ändå om jag vill använda dem senare.

Det första steget är att försiktigt demontera radion och ta bort all intern elektronik, vi kommer inte att behöva dem, förutom högtalaren.

Byta station På min radio, när du byter station, rör sig en liten röd markör över en display för att indikera vilken frekvens du lyssnar på. Jag ville verkligen behålla den här funktionen! Stationens växelvred vrider en variabel kondensator och driver ett remskivsystem med ett snöre som håller den röda markören.

Jag försökte bygga en krets för att mäta kapacitansen hos denna variabla kondensator men kapacitansen var så liten att den enkla metoden för att tajma laddningen/urladdningen inte fungerar. Det finns andra metoder, men de verkade mig komplicerade och inte värda ansträngningen …

Så det jag gjorde här var att fila en axel som pekade ut från botten av den variabla kondensatorn så att denna axel kan passa in i spåret på en modern potentiometer. Lyckligtvis kan denna potentiometer monteras i den ursprungliga batterilådan genom att borra ett hål i den. När allt kommer omkring driver den variabla kondensatorn nu direkt en potentiometer, som jag använder för att ställa in stationen på min digitala radio.

Trycka på knappar

Det fanns ett komplicerat kretskort som rymmer infrastrukturen för tryckknapparna. Efter att ha tagit bort komponenterna och trådarna som lödts på räknade jag ut vilka anslutningar som görs/bryts när en knapp trycks eller släpps. Några av knapparna var anslutna till varandra så jag var tvungen att bryta några kopparspår i kretskortet. Slutligen lodde jag på några trådar som går till picaxen för att ge 6 tryckknappar som arbetar isolerat.

Hitta också en mysig plats för pi och picaxe att sitta, helst så långt bort från högtalaren som möjligt, eftersom magnetfältet från högtalaren kan förstöra mikroprocessorer. Jag borrade några hål i radions metallram för att montera pi: n.

Steg 3: Picaxe

Picaxe
Picaxe
Picaxe
Picaxe
Picaxe
Picaxe

Picaxekretsen är ovan, med bara två av potentiometrarna och en knapp som visas för tydlighetens skull. Kretsen är ganska enkel, med torkaren på varje potentiometer ansluten till en ADC -ingång. För knapparna är ingångsstiften knuten till marken och knappen är mellan ingången och +3,3V. Denna krets inkluderar inte nedladdningskretsen eftersom jag programmerade min picaxe på ett separat kort.

Picaxe -koden är ganska enkel. Picaxen läser in potentiometrarnas ADC -värden och knapparnas tillstånd och lagrar dem sedan i det interna minnet som pi kommer att läsa.

Du kan använda valfritt X2 picaxe -chip. Icke X2 -delar har inte I2C -slavläge och fungerar därför inte med dessa instruktioner.

Om du använder en Linux -dator för att programmera picaxe måste du köra följande kommandon för att få nedladdningskabeln AXE027 att fungera:

sudo modprobe ftdi_sio

sudo chmod 777/sys/bus/usb-serial/drivers/ftdi_sio/new_id sudo echo "0403 bd90">/sys/bus/usb-serial/drivers/ftdi_sio/new_id

Om potentiometervärdena hoppar oregelbundet kan en 100nF kondensator placeras mellan marken och torkaren på krukan.

Steg 4: Hallon Pi

Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi

Här kommer operationens hjärna. Vissa paket måste installeras på pi med

sudo apt-get uppdatering

sudo apt-get install -y i2c-tools vlc espeak python-smbus python-pip sudo pip install python-vlc

Pi kommer att prata med picaxen genom I2C. För att aktivera I2C, kontrollera att filen /etc /modules innehåller raden

i2c-dev

och som /boot/config.txt har

dtparam = i2c_arm = på

För att konfigurera pi: n för att fungera med förstärkaren, följ Adafruits egen guide här, eller bara spring

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | våldsamt slag

och acceptera allt.

Python -koden är ganska enkel, efter en inledande inställning en oändlig medan loop lyssnar efter ändringar i potentiometervärdena och om knapparna har tryckts in.

n

Filen stations.txt innehåller en lista över stationernas webbadresser och stationsnamn som kommer att talas när stationen ändras. Den har följande format

st1 = https:// someradiostream

n1 = någon radio st2 = https:// anotherstream n2 = en annan station

Den här filen får inte innehålla några tomma rader.

För att hitta stationens webbadresser använder jag www.fmstream.org.

Om du tänker stänga av radion genom att bara dra i strömmen är det en bra idé att ställa in pi: n som skrivskyddad för att förhindra korruption av SD-kort. Skriptet read_only_setup.sh gör det åt dig och gör det möjligt att växla mellan skrivskyddat och läs-skriv genom att skriva "ro" och "rw" i en terminal.

Steg 5: Sätta ihop allt

Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats

Med stripboard gjorde jag en liten hatt för picaxen och förstärkaren för att sitta ovanpå pi.

För strömförsörjningen tog jag bort en av de gamla kontaktdonen på radion och installerade ett nytt DC -fatuttag som jag lödde en mikro -USB -kabel till. Var noga med att kontrollera ledarnas polaritet noggrant!

Slutligen, anslut allt, försök att göra ett bättre jobb med att dra ledningarna som jag gjorde, stäng locket och njut av din radio!

Rekommenderad: