Inhoudsopgave:

Senior Radio - Raspberry Pi - Ajarnpa
Senior Radio - Raspberry Pi - Ajarnpa

Video: Senior Radio - Raspberry Pi - Ajarnpa

Video: Senior Radio - Raspberry Pi - Ajarnpa
Video: World's Cheapest Internet Radio Player! - Powered by Raspberry Pi 2024, Juli-
Anonim
Senior Radio - Raspberry Pi
Senior Radio - Raspberry Pi

Het Senior Radio-project is een open-source toegankelijk ontworpen internetradio-apparaat met zowel hardware- als softwarecomponenten. Het is bedoeld voor gebruikers die bekend zijn met het bedienen van een zakradio waarbij de draaiknoppen het volume en het geselecteerde radiostation regelen. Het project is gemaakt met een gebruikersgericht ontwerp, gericht op een gebruiker die een vergelijkbare grootte en bediening wil als een standaard handradio.

Het werd gebouwd om te voldoen aan de behoeften om personen met een handicap in staat te stellen te luisteren naar de duizenden verschillende internetstreaminginhoud die normaal gesproken alleen beschikbaar is via een internetbrowser. Veel mensen hebben niet de mogelijkheid om zo'n apparaat gemakkelijk te gebruiken, dus dit ontwerp is bedoeld om een vertrouwde interface te maken voor een moderne technologie.

De kernfunctionaliteit bevindt zich op Github, opgeslagen in een python 3.7.3-programma met de naam seniorRadio.py. Het leest en schrijft een json-bestand om de status van de radio op te slaan, dus wanneer u het uitschakelt, onthoudt het het huidige audioniveau en het geselecteerde station. Bovendien leest het een online gehost json-bestand dat u kunt wijzigen! Hiermee kun je de radiostations op afstand updaten als je dit aan iemand anders geeft.

Het is momenteel gemaakt om verbinding te maken met een bluetooth-luidspreker, maar kan ook gemakkelijk worden gemaakt om af te spelen met een ingebouwde luidspreker.

De maker van dit apparaat is waarschijnlijk niet de gebruiker en heeft op zijn minst enige ervaring met elektronica en basiskennis van programmeren nodig. Linux-ervaring is ook erg handig.

Voor de gebruiker is de functionaliteit eenvoudig:

Bij het opstarten speelt het de laatst geselecteerde zender af via het standaard audioapparaat. De linker draaiknop bestuurt het station, waar een paar klikken van de draaiknop verandert in een nieuwe URL. Het rolt over na de laatste of eerste invoer. De rechter draaiknop regelt het audioniveau. De LED geeft aan dat het programma is ingeschakeld. En de drukknop pauzeert of "schakelt" de radio uit. Dus eenmaal aangezet, kan een gebruiker gewoon op de knop drukken om te pauzeren/af te spelen, of "uit/aan", de radio en de twee draaiknoppen om hem te bedienen.

Benodigdheden

Gelinkt aan elk item is de specifieke die ik heb gebruikt. Kostte me ongeveer $ 60 in totaal met veel overgebleven benodigdheden!

Basiskennis van elektronica en linux - voor montage en debuggen

Raspberry Pi Zero W (Zero WH heeft headers voorgesoldeerd en waarschijnlijk nuttig)

MicroSD-kaart-8 GB+ en mogelijkheid uit

MicroUSB 5V-lichtnetadapter - Link bevat ook microHDMI-adapter en microUSB OTG naar USB A-adapter voor installatie als je ze nodig hebt

Bluetooth Speaker

M/F en M/M startkabels

2 Roterende encoder - dezelfde link als hierboven

Kleine broodplank

Druk op de knop

LED (optioneel) - gekochte LED + drukknop hierboven

Doos voor verpakking

Stap 1: Setup (zonder kop) Raspberry Pi W

Setup (zonder kop) Raspberry Pi W
Setup (zonder kop) Raspberry Pi W

We moeten het besturingssysteem instellen op de Raspberry Pi waarop de software wordt uitgevoerd. Niets van dit alles is uniek voor dit project. Voor foutopsporing raad ik aan om het zo in te stellen dat je het ook in headless-modus kunt openen. Dit betekent dat je via je wifi-netwerk toegang hebt tot de pi via GUI of een SSH-terminal en dat je geen toetsenbord, muis en monitor nodig hebt om het elke keer te gebruiken. Je zou dit kunnen doen zonder ooit verbinding te hoeven maken met een monitor/muis/toetsenbord als je meer technisch onderlegd bent. Enkele voorbeeldinstructies hier. Het is echter minder eenvoudig en hieronder is een andere manier om het in te stellen.

Deze eerste keer heb je waarschijnlijk het volgende nodig:

  • Raspberry Pi W
  • MicroSD naar SD-kaartadapter [om OS op SD-kaart te schrijven]
  • MicroSD-kaart (~ 8 GB+) [om OS en ons programma op te slaan]
  • MicroUSB-voeding (5V)
  • MicroUSB naar USB A [voor muis/toetsenbord]
  • Mini HDMI-naar-HDMI-adapter [voor weergave-uitvoer]
  • Toetsenbord
  • Muis
  • Toezicht houden op

Eerst moet je het besturingssysteem op de rPi micro SD-kaart flashen.

Ik heb raspian buster gebruikt, je downloadt dit op een computer met een SD-kaartlezer/schrijver en flasht vervolgens het raspian OS op de SD-kaart. BalenaEtcher is een eenvoudige software om dit te doen

Plaats vervolgens de SD-kaart in het pi-slot, sluit de monitor, het toetsenbord en de voeding aan. Doorloop de installatiestappen die raspian u vraagt, inclusief het verbinden met uw wifi-netwerk en het koppelen van uw bluetooth-luidspreker via de GUI. Een goede gewoonte zou zijn om het bij te werken met behulp van de volgende opdrachten:

sudo apt-get update

sudo apt-get upgrade

Als je je pi headless wilt markeren, moeten we eerst het ip-adres van de pi pakken. Via een terminal vind je het via de

ifconfig

opdracht. U moet dan SSH en VNC inschakelen via de interface-opties in

sudo raspi-config

Na een herstart kunt u nu de toegang tot de pi testen via SSH of VNC. SSH is slechts een terminalinterface en misschien vindt u het gemakkelijker om de GUI te gebruiken om een bluetooth-luidspreker te koppelen. U kunt een programma zoals VNC connect gebruiken om eenvoudig toegang te krijgen tot uw pi op een aparte computer in uw netwerk. Je kunt een programma als putty gebruiken om er SSH in te plaatsen.

Bovendien kunt u een VNC-cloudaccount instellen, zodat u indien nodig buiten het netwerk toegang hebt tot het apparaat

Stap 2: Installeer Senior Radio Software

Senior radiosoftware installeren
Senior radiosoftware installeren

Dit kan vanuit een terminalvenster van de Raspberry Pi. Zorg er eerst voor dat je git hebt geïnstalleerd

sudo apt-get install git

Afhankelijk van het besturingssysteem dat u hebt geïnstalleerd, kunnen deze stappen verschillen, omdat u mogelijk extra pakketten moet installeren. Het systeem zal u dit laten weten. Eerst moeten we de senior radiocode downloaden van github. https://github.com/Bunborn/seniorRadio In het ideale geval maak je onze eigen repo, zodat je wijzigingen kunt aanbrengen en gemakkelijk de radiostations kunt wijzigen op dezelfde manier als ik. Fork de repo als dat zo is

U kunt echter hetzelfde gebruiken als het mijne, geen probleem als u uw radio-json-bestand op een andere plek wilt hosten

Kloon vervolgens de repo naar de gewenste locatie. De standaardmap is prima. Haal de URL op voor welke github-repo je wilt door op de groene kloon- of downloadknop te drukken.

Terug in het terminalvenster, git kloon

U zou nu een extra map met de naam seniorRadio moeten zien wanneer u ls gebruikt. Fantastisch!

De code is bedoeld om zichzelf te documenteren, een kijkje nemen zou nuttig zijn. Vooral voor foutopsporingsdoeleinden en als u het systeem wijzigt.

Stap 3: Installeer extra software

Extra software installeren
Extra software installeren

Voordat we verder gaan met het circuit en het testen, moeten we er ook VLC en de python-api voor downloaden. Mogelijk hebt u VLC al geïnstalleerd. De eerste twee opdrachten werken de pi bij en de laatste twee opdrachten hieronder installeren VLC en vervolgens de python-api

sudo apt-get update

sudo apt-get upgrade

sudo snap VLC installeren

sudo apt-get install vlc-python

Installeer daarnaast ook gpiozero, die we zullen gebruiken om te communiceren met de GPIO-pinnen van de pi. Mogelijk hebt u het al geïnstalleerd, afhankelijk van uw besturingssysteem.

sudo apt-get install gpiozero

Stap 4: Vind Radio Stations Streams

Vind radiozenders Streams
Vind radiozenders Streams

Vervolgens een van de leukste onderdelen! Tijd om de gewenste streams te selecteren.

In mijn internetStations.json-bestand kun je mijn streamlinks zien, voornamelijk voor nieuws en muziek. Maar er is een heleboel gehoste inhoud die er is. De sleutel hier is om het URL-adres van de directe stream te vinden. De BBC-nieuws- en muziekzenders zijn bijvoorbeeld hier op deze blog te vinden. Deze directe streams hebben geen grafische interface en spelen de stream automatisch af via de mediaspeler van uw browser. Dit zijn de URL's die we nodig hebben zodat VLC ze kan lezen! Je kunt elke link snel testen in je webbrowser of via VLC op je normale computer om er zeker van te zijn dat deze op de pi werkt.

Om deze stations te vinden, kunt u online naar de directe stream zoeken als de service deze host. Een snelle manier kan ook zijn om de stream af te spelen, met de rechtermuisknop op de browser te klikken en op "element inspecteren" te klikken. Navigeer naar het netwerktabblad en het zou de 'directe' URL van de stream moeten aangeven. Dit YouTube-filmpje laat dit zien. Het verversen van de pagina met het tabblad open zou moeten helpen.

Als je eenmaal je stations hebt, wil je ze online zetten, zodat je seniorRadio python-programma ze kan pakken. Er zijn veel opties om dit te doen, je zou sites als Github, bitbucket of zelfs sourceforge kunnen gebruiken. Het belangrijkste doel van het online hosten van deze lijst is dat de gebruiker die deze instelt, de streamlijst op afstand online kan wijzigen.

Aan het begin van het python-programma is er een variabele genaamd url, verander dit eenvoudig in de URL van uw json-bestand met de station-URL-links

U kunt hetzelfde formaat volgen als mijn internetStation.json-bestand. Als je ook github wilt gebruiken, kun je eenvoudig mijn seniorRadio-repository fork en je eigen internetStation.json-bestand bewerken en naar die "onbewerkte" URL verwijzen. Je kunt dat hieronder vinden in de Github GUI zodra je op het bestand hebt geklikt.

Stap 5: Maak circuits

Circuits maken
Circuits maken

Nu moeten we het circuit instellen. Dit zal veranderen op basis van uw apparatuur, maar hieronder is hoe ik de mijne heb ingesteld.

pinout.xyz/ voor referentie op welke pinnen welke zijn. Omdat we de gpiozero-bibliotheek gebruiken, houden we ons alleen bezig met de BCM-pinnummering. Merk op dat ik een paar extra KY040 roterende encoders heb gekocht - de wijzerplaten - om ze uit te testen, omdat ze niet allemaal dezelfde nauwkeurigheid hebben. Elk zou wat "stuiterende" of gewoon onjuiste uitvoer hebben, dus ik koos de beste van de twee die ik had. In de code zul je zien dat er ook enkele stappen zijn om dit stuiteren te beperken.

Ik heb mijn drukknop aangesloten op BCM pin 17 en aarde

Mijn LED naar een weerstand van 1k ohm dan BCM pin 27 en aarde

Mijn KY040 roterende encoders hadden de + lead naar 5V, de GND naar aarde en SW losgekoppeld. Deze waren verbonden via een mini breadboard

Station roterende encoder dt pin aangesloten op BCM pin 21

Station roterende encoder clk pin aangesloten op BCM pin 20

Audioniveau roterende encoder dt-pin aangesloten op BCM-pin 19

Audioniveau roterende encoder clk-pin aangesloten op BCM-pin 16

Als u deze pinnen wijzigt, werkt u gewoon het nummer bij in het python-programma en waar het de handlers instelt

Ik heb een mini breadboard gebruikt om dit gemakkelijker te maken. Ik heb ook M/M en M/F jumperdraden gebruikt om de interface te vergemakkelijken. Ik heb wat jumperdraadjes gesoldeerd op de pinnen van de drukknop/LED die ik eerder had gekocht. Om niet te solderen, kunt u drukknoppen en LED's krijgen die al een jumperdraad hebben of er gemakkelijk op kunnen worden aangesloten.

Stap 6: Test het

Nu zou je een werkend systeem moeten hebben! Laten we het eens testen. Navigeer naar de map met het python-programma, waarschijnlijk:

cd seniorRadio

python3 seniorRadio.py

Momenteel is er een vertraging van 45 seconden aan het begin van het programma om het de tijd te geven om de bluetooth-luidspreker te vinden bij het opstarten. U kunt commentaar geven op deze regel als u deze niet nodig heeft tijdens het testen. Het programma kan u vertellen dat u extra pakketten moet installeren, ga uw gang als dat zo is. Mogelijk moet u ook een nieuwere versie van Python installeren.

sudo apt-get install python3.7

Enkele mogelijke problemen, zelfs als het programma draait:

ik hoor geen geluid

Zorg ervoor dat de luidspreker aan staat en is geselecteerd in je Raspberry Pi. Via de GUI zou je het moeten kunnen koppelen en het vervolgens kunnen selecteren als je audio-uitvoerapparaat. Controleer bovendien uw audiostuurprogramma's. Een veelvoorkomend probleem is dat u het pulseaudio-pakket mogelijk opnieuw moet installeren

Audio schokkerig of in- en uitschakelend

Probeer het apparaat dichter bij uw wifi-router te plaatsen. Zorg er daarnaast voor dat de bluetooth-speaker in de buurt is. Kan ook een probleem met het audiostuurprogramma zijn

Stap 7: in een permanente behuizing plaatsen

In een permanente behuizing plaatsen
In een permanente behuizing plaatsen

Plaats het vervolgens in een doos of een soortgelijk apparaat zodat het permanent kan leven. Ik raad aan om er een te hebben die je later nog kunt openen voor foutopsporing. Ik kocht deze kleine houten kist voor $ 2 in een handwerkwinkel en linkte hem op de pagina met benodigdheden. Een van mijn vrienden raadde een sigarenkistje aan.

Vervolgens heb ik gaten aan de voorkant uitgesneden voor de drukknop en draaischakelaars, en een gat in de achterkant van de doos geboord voor het microUSB-netsnoer.

Ik testte de mount en zorgde ervoor dat het werkte, en voilà!

Ten slotte gebruikte ik superlijm om de drukknop vast te houden. Mijn breadboard had een lijm aan de onderkant die ik op een deel van de doos had aangesloten. Ik heb een kleine strook ducttape gebruikt om de achterkant van de pi aan de doos te bevestigen, zodat deze later indien nodig kan worden verplaatst.

Stap 8: Setup-programma om te draaien bij opstarten

Ten slotte wilt u waarschijnlijk dat dit python-programma wordt uitgevoerd bij het opstarten van de raspberry pi, zodat u het niet handmatig hoeft te doen. Er zijn veel manieren om dit te doen die u online kunt vinden.

Persoonlijk heb ik het op de tweede manier ingesteld in deze SparkFun-tutorial:

Hier wacht het tot het systeem het grafische bureaublad betreedt voordat het programma wordt uitgevoerd. Vervolgens wordt het 45 seconden vertraagd door het python-programma om het systeem de tijd te geven om opnieuw verbinding te maken met de bluetooth-luidspreker. Als je een ingebouwde speaker gebruikt, kun je deze vertraging wegwerken. Let op: eerst moet de bluetooth-speaker aan staan! (voor de bluetooth-oplossing)

Nu kunt u proberen uw pi uit en weer aan te zetten! Na ongeveer 90 seconden zou je pi opnieuw moeten beginnen met het afspelen van de radiostreams. Bij het indrukken van de drukknop zal het pauzeren/afspelen. Opmerking over deze herstarts leest het dat internetStations json-bestand opnieuw, dus als u uw stations wijzigt, moet u het apparaat opnieuw opstarten om ze te laten werken. Gefeliciteerd!

Als je dit hebt gedaan, of wijzigingen hebt aangebracht in het project, laat het me dan weten!

Github-pagina:

Aanbevolen: