Je hebt misschien nog wel een oude analoge radio die op zolder stof staat te verzamelen. Kunnen we daar niets mee doen? Jazeker! Met een Raspberry Pi erin maak je er een hypermoderne internetradio in een retrojasje van.
Koen Vervloesem
Zoals je regelmatig in PC-Active kunt lezen, kun je met een Raspberry Pi van alles doen. In dit artikel leg ik uit hoe je er met een Raspberry Pi een internetradio van maakt. Wil je dit zelf met een andere radio doen, dan zullen sommige stappen afwijken van de uitleg in dit artikel, maar de grote lijnen blijven hetzelfde.
Benodigdheden
We hebben allereerst een Raspberry Pi nodig met microSD-kaart en voedingsadapter. Dan moeten we ook een luidspreker op de Pi aansluiten. We gebruiken hiervoor niet de jack-aansluiting van de Pi, omdat die niet zo'n hoge kwaliteit biedt. We sluiten daarom een Stereo Speaker Bonnet [1] op de Pi aan. Dat uitbreidingsbordje laat je een luidspreker via losse kabels aan sluiten. Onze BX400A heeft één luidspreker en biedt dus mono audio: we sluiten dan maar één luidspreker op de Stereo Speaker Bonnet aan. Heeft je radio twee luidsprekers, dan sluit je ze allebei aan.
Als je een beetje handig bent, kun je de bestaande knoppen van je radio met je Pi verbinden om je internetradio te besturen. Omdat dat bij de BX400A nogal complex leek, hebben we het hele binnenwerk uit de radio gehaald en nieuwe knoppen toegevoegd. Elke knop verbind je met een gpio-pin van de Pi zodat je die kunt inlezen.
Het binnenwerk met radiobuizen |
Met het binnenwerk eruit is er plaats genoeg |
Demonteren
Het eerste wat je moet doen, is je radio identificeren: wat is het typenummer? Zoek er dan zoveel mogelijk informatie over op. We vonden al snel dat het hier om de Philips BX400A ging en ontdekten de servicedocumentatie [2]. Daarin vonden we hoe we de radio moesten demonteren.
Het binnenwerk met radiobuizen halen we uit deze radio om plaats te maken voor een Raspberry Pi
Het binnenwerk met radiobuizen en al hebben we eruit gehaald. De luidspreker lieten we erin zitten. Na wat opzoekwerk vonden we dat het om de Philips 9738X ging, met een weerstand van 5 Ω en een vermogen van 3 W. Deze informatie is belangrijk, omdat je moet weten of je de luidspreker met je Pi kunt aansturen. De specificaties van de Stereo Speaker Bonnet van Adafruit vermelden dat het uitbreidingsbordje luidsprekers van 4 tot 8 Ω en tot 3 W ondersteunt, dus dat werkt voor onze combinatie.
De schroefterminals moeten we nog |
Met de twee schroefterminals erop |
Stereo Speaker Bonnet aansluiten
De Stereo Speaker Bonnet komt met de header er al op gesoldeerd, maar als je er losse luidsprekers op wilt aansluiten, dien je de twee schroefterminals (voor links en rechts) er nog op te solderen. Gelukkig is dat niet zo'n moeilijk werkje. Plaats beide schroefterminals op hun plaats en draai het bordje om zodat je bovenaan de vier pinnetjes van de schroefterminal ziet uitsteken.
Je gaat nu één voor één de vier pinnetjes solderen. Hou het soldeertin tegen een pinnetje en houd dan ook de opgewarmde soldeerbout enkele seconden tegen zowel het pinnetje als het soldeertin. Het soldeertin zal nu smelten en het contact maken. Doe hetzelfde met de drie andere pinnetjes.
Draai de Stereo Speaker Bonnet daarna weer om en plaats het bordje op de gpio-pinnen van de Pi. Omdat de Raspberry Pi 3B+ extra pinnen heeft voor Power over Ethernet, past de Bonnet daar niet op. Gebruik dus een Raspberry Pi 2 of 3.
Sluit daarna je luidspreker aan. Als je één luidspreker in je radio hebt, steek je de twee draadjes van de luidspreker in de twee uitsparingen van een van de schroefterminals. Heb je twee luidsprekers in je radio, sluit dan de twee draadjes van de ene op LEFT aan en van de andere op RIGHT. Schroef de schroeven vast.
Schrijf het image van Volumio naar je microSD-kaart met Etcher
Volumio installeren
Onze radio bestaat uiteraard niet alleen uit hardware, maar heeft ook software nodig. We kiezen voor Volumio [3] omdat deze opensource muziekspeler zoveel mogelijkheden heeft en ook uit te breiden is met plug-ins. Naast internetradio's kun je er ook je Spotify-collectie mee afspelen (als je een Spotify Premium-abonnement hebt) en muziek van je NAS of andere apparaten op je netwerk via UPnP/DLNA of AirPlay.
Download [4] de versie voor de Raspberry Pi. Steek de microSD-kaart van je Pi in de kaartlezer van je pc. Schrijf het image dan met het programma Etcher [5] naar de microSD-kaart. Selecteer daarvoor in Etcher het image (het zipbestand dat je net hebt gedownload) en je microSD-kaart en klik dan op Flash!.
Wanneer het flashen voltooid is, haal je de microSD-kaart uit je computer en steek je die in je Pi. Zorg dat alle hardware aangesloten is zoals hierboven uitgelegd en sluit dan de voedingsadapter op je Pi aan en steek hem in het stopcontact. De eerste keer dat Volumio opstart, kan dat enkele minuten duren omdat het programma allerlei pakketten installeert en configureert.
Eerste configuratie
Volumio maakt een draadloze hotspot aan met de naam Volumio en het wachtwoord volumio2. Als je hiermee verbindt, kun je het programma instellen. Selecteer je taal, klik op Volgende, kies een naam voor je Pi (standaard Volumio) en klik op Volgende.
In de volgende stap vraagt Volumio of je een i2s DAC hebt voor je luidspreker. Schuif de schakelaar naar YES en selecteer als DAC de pHAT DAC (de Speaker Bonnet is daarmee immers compatibel). Klik op Volgende.
Daarna kies je het wifi-netwerk waarmee Volumio mag verbinden en vul je het wachtwoord voor je netwerk in. Druk nog eens op Volgende. Je krijgt de vraag om een nieuwe schijf toe te voegen, maar dat hebben we niet nodig, dus klik nogmaals op Volgende. Klik tot slot op Gereed. Daarna is de basis geconfigureerd en vanaf nu is Volumio bereikbaar in je webbrowser op het adres http://volumio.local.
Kies pHAT DAC voor de Adafruit Stereo Speaker Bonnet
Componenten |
||
De basiskit bevat het volgende: Daarnaast heb je nog enkele draadjes nodig
|
Webradio uitproberen
Probeer eerst of je geluid uit je radio krijgt. Klik in de webinterface bovenaan rechts op het tandwiel en kies dan Afspeelopties. Stel bij de volume-opties onderaan de pagina bij Mixer Type de optie Software in. Eventueel stel je ook het standaard opstartvolume in. Klik na je wijzigingen op Opslaan.
Klik dan onderaan links op Bladeren en dan op Web Radiostations. Kies dan een radiostation uit de lijst en klik erop. Als je alles goed hebt aangesloten en ingesteld, zou je nu de muziek uit je radioluidspreker moeten horen schallen! Klik onderaan op Afspelen. Je kunt nu rechts het volume instellen met de cirkelvormige schuifregelaar.
Nu je hier toch bezig bent, kun je alvast de radiostations die je regelmatig beluistert aan je favorieten toevoegen. Ga terug naar de lijst met radiostations, zoek daar één voor één je gewenste zenders en klik dan rechts van een radiostation op de drie puntjes en dan Toevoegen aan radio favorieten. Daarna vind je al je favoriete radiostations onder Web Radiostations en dan Favoriete Radiostations.
Autostart
Daarna zorgen we er nog voor dat het radiostation dat aanstond toen je de Pi afzette, weer begint te spelen als je die terug opzet. Klik in de webinterface van Volumio bovenaan rechts op het tandwiel en dan op Plugins. Kies links de categorie Miscellanea, klik dan bij de plug-in AutoStart op Installeren en tot slot op Close.
Klik daarna op het tabblad Geïnstalleerde plug-ins en zet de schakelaar bij de plug-in autoStart op On om de plug-in te activeren. Klik ernaast op Instellingen. Pas daar eventueel aan hoe lang het duurt voordat Volumio je radiostation na het opstarten begint af te spelen. Druk daarna op Save om je configuratie op te slaan.
Mobiele app
Je kunt Volumio en dus ook je internetradio, via een mobiele app aansturen. De officiële app van Volumio vind je op Google Play [6] voor Android en in de App Store [7] voor iOS. Je betaalt er € 2,39 voor. Maar de webinterface van Volumio werkt ook perfect op een smartphone: hij past zich aan de kleinere schermafmetingen aan.
Ook op een smartphone werkt de webinterface van Volumio goed
Knoppen aansluiten
Nu de basisfunctionaliteit werkt, kunnen we de knoppen gaan aansluiten. Zoals gezegd hangt dit gedeelte sterk af van welke radio je hebt. Misschien kun je de originele knoppen hergebruiken, misschien sluit je de knoppen die we in dit voorbeeld gebruiken aan, of misschien wil je andere knoppen op maat voor jouw radio aanschaffen. Of misschien heb je zelfs helemaal geen interesse in de knoppen en vind je het voldoende dat je je internetradio via de webinterface kunt aansturen.
Schakel je Pi uit door in de webinterface bovenaan rechts op het tandwiel te klikken en Afsluiten en vervolgens Uitzetten te kiezen. Haal de voedingskabel uit je Pi, zodat er geen stroom meer op staat. Haal de Pi en Speaker Bonnet ook weer uit elkaar, want we moeten aan de onderkant van de Speaker Bonnet kunnen. We gaan nu één voor één de knoppen aansluiten en daarna configureren voor gebruik met Volumio.
Daarvoor hebben we onze soldeerbout weer nodig. De Speaker Bonnet heeft een rij met gaatjes waar pinnummers aangeduid staan en drie keer drie gaatjes voor GND, 5 V en 3 V. Elke knop soldeer je aan twee gaatjes: één GND- of 3V-gaatje en één ander gaatje. Knip dus voor elke knop twee draadjes op lengte af (zorg dat ze lang genoeg zijn om in de radiobehuizing de knoppen vooraan of achteraan de behuizing met je Speaker Bonnet te verbinden) en strip de uiteinden eraf, zodat je die aan de ene kant op de Speaker Bonnet kunt solderen en aan de andere kant op de knop. Voor de knop krijg je een betere soldeerverbinding en heb je een hand vrij als je het uiteinde van het draadje eerst door de lus van de aansluiting op de knop haalt voor je hem soldeert.
De draadjes soldeer je het gemakkelijkst |
Ook om de draadjes op de Speaker Bonnet |
Het is het handigste en veiligste als je eerst de twee draadjes aan de knop soldeert, dan de knop aan de buitenkant van de behuizing monteert en de draadjes door het gat leidt, en dan pas de draadjes aan de Speaker Bonnet soldeert.
Knop |
Speaker Bonnet |
Aan/uit |
3 (SCL) / GND |
Volume- |
8 (CE0) / GND |
Volume+ |
12 / 3V |
Station- |
24 / 3V |
Station+ |
23 / 3V |
De draadjes van de knoppen sluit je volgens de volgende tabel aan:
Zo lees je in de tabel dat je de aan/uit-knop met het ene draadje op gaatje 3 (SCL) van de Speaker Bonnet soldeert en met het andere draadje op GND.
Als je uiteindelijk alles gesoldeerd hebt, knip je het overschot van de draadjes aan de onderkant van de Speaker Bonnet en aan de knoppen af, zodat je daar geen onbedoelde contacten kunt krijgen.
De knoppen zijn gemonteerd, nu moet je ze |
Nu de Speaker Bonnet op de Raspberry Pi |
Gpio's in Volumio integreren
Nu moeten we nog een manier vinden om de gpio's van de Pi met Volumio te integreren. Gelukkig heeft iemand al het grootste werk daarvoor gedaan door een plug-in [8] te maken. Klik in de webinterface van Volumio bovenaan rechts op het tandwiel en dan op Plugins. Kies links de categorie System Tools, klik dan bij de plug-in GPIO Buttons op Installeren en tot slot op Close.
Klik daarna op het tabblad Geïnstalleerde plug-ins en zet de schakelaar bij de plug-in GPIO Buttons op On om de plug-in te activeren. Klik ernaast op Instellingen. Schakel nu één voor één de juiste knoppen in en ken er het bijbehorende gpio-nummer aan toe, zoals in onze tabel staat. Druk daarna op Save om je configuratie op te slaan.
Ken de juiste gpio-nummers toe aan de besturingsknoppen voor Volumio
Daarna kun je Volumio met de knoppen op je radio besturen.
Bug oplossen
Er is nog één ding dat niet werkt, door een fout in Volumio. De knoppen vorige en volgende werken niet als je een webradiostation aan het afspelen bent. Het is een bekende bug [9] en er is een oplossing [10] voor, maar dan moet je enkele bestanden van Volumio aanpassen. We leggen hier kort uit hoe je dat doet.
Bezoek eerst in je webbrowser http://volumio.local/dev/ en klik daar onder SSH op ENABLE. Download dan het programma PuTTY [11]. Open PuTTY, verzeker je ervan dat in het hoofdvenster SSH aangevinkt staat en vul bij Host Name (or IP address) het ip-adres of volumio.local in. Laat het poortnmumer op 22 staan. Klik op Open om de verbinding te starten.
Log in met gebruikersnaam volumio en wachtwoord volumio. Open dan het bestand statemachine.js met:
nano /volumio/app/statemachine.js
Zoek met CTRL+W naar de volgende regel:
if (this.isConsume && this.consumeState.service != undefined) {
En vervang die door:
if (this.isConsume && this.consumeState.service != undefined && this.consumeState.service !== 'webradio') {
Dat doe je twee keer. Sla het bestand op met CTRL+O en sluit nano af met CTRL+X.
Open daarna een ander bestand:
nano /volumio/http/www/scripts/app-*.js
Zoek hierin met CTRL+W naar de volgende code:
"webradio"!==this.state.trackType&&
En verwijder die (op vier plaatsen). Let op dat je alleen de bovenstaande code verwijdert en niet de rest van de regel!
Vanaf nu kun je ook met de knoppen op je radio naar het vorige en volgende radiostation schakelen. Veel plezier met je internetradio in een oud jasje!
Alleen de knoppen van Adafruit verraden voor de kenners
dat er aan het binnenwerk van deze radio is gesleuteld
Bronnen:
[1] https://learn.adafruit.com/adafruit-speaker-bonnet-for-raspberry-pi?view=all
[2] www.philipsradios.nl/Schemas/BX400A.pdf
[3] https://volumio.org
[4] https://volumio.org/get-started
[5] https://etcher.io
[6] https://play.google.com/store/apps/details?id=volumio.browser.Volumio
[7] https://itunes.apple.com/app/volumio/id1268256519?mt=8
[8] https://github.com/tomatpasser/gpio-buttons
[9] https://github.com/volumio/Volumio2/issues/1122
[10] https://github.com/volumio/Volumio2/issues/1122#issuecomment-402397073
[11] www.chiark.greenend.org.uk/~sgtatham/putty/latest.html