Taula de continguts:
- Pas 1: requisits previs:
- Pas 2: instal·leu Python i Pip
- Pas 3: instal·leu MPG123 i Adafruit Blinka
- Pas 4: ajusteu el volum al 50% a Alsamixer
- Pas 5: algunes tasques: trobar 5 estacions de ràdio que val la pena escoltar
- Pas 6: Opcional: rasqueu l'URL mitjançant Vtuner
- Pas 7: configureu els nostres botons
- Pas 8: identifiqueu els nostres pins GPIO
- Pas 9: Codi
- Pas 10: proveu al nostre Sandbox
- Pas 11: configureu el nostre codi perquè s'executi automàticament a l'arrencada
- Pas 12: torneu a provar
- Pas 13: fes una caixa i ja hem acabat
Vídeo: Keeping It Stoopid Simple Internet Radio: KISSIR: 13 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
De vegades només ha de ser tàctil. Cap interfície de cap tipus. Només botons.
Raspberry Pi com a reproductor de ràdio per Internet no és cap novetat i hi ha un munt d’instruccions sobre com crear un reproductor de ràdio per Internet mitjançant un raspberry pi amb o sense un monitor per transmetre estacions d’Internet de tot el món. Si decidís anar sense cap (sense monitor), encara necessitareu un mitjà per connectar el reproductor pi, generalment una interfície web si no un mitjà directe per comunicar-vos a l’amfitrió, com ara ssh. Aquesta instrucció serà lleugerament diferent; utilitzarem simples pulsacions de botons per enviar ordres al pi, eliminant així la necessitat d’una interfície web i una pantalla LCD. Sona prou fàcil, oi (?)
Començarem amb un disseny molt bàsic mitjançant botons amb codis de colors, cada color representarà una emissora de ràdio per Internet. Introduirem algun codi Python per gestionar el botó: la premsa executarà una ordre per reproduir una estació de ràdio d’Internet precodificada mitjançant MPG123, una gran eina de línia d’ordres per reproduir àudio al nostre pi.
No cal avançar en les vostres habilitats en python. De fet, literalment vaig passar de "Hello World" a escriure això i, com veureu, vaig agafar molt de codi, de manera que si puc fer-ho i tenir-lo una mica documentat, qualsevol altra persona no hauria de tenir cap problema.
Som-hi!
Subministraments:
Materials necessaris
- Raspberry pi / pi zero w amb totes les fixacions: font d'alimentació, targeta SD i Raspbian o Raspbian lite.
- Wifi i accés a Internet
- Un altre PC que permet navegar per Internet i habilitar SSH al raspberry pi
- Convertidor de digital a analògic (DAC): opcional, però us en agraireu.
- Amplificador
- Altaveus
- Filferro de connexió i ponts
- Soldador i soldador
- Perf Board per als botons
- Botons tàctils: normalment oberts: un per a cada gènere musical, un botó d'engegada i un botó de silenci opcional (es recomana 7 botons)
- Un habitatge per a tot l'anterior (opcional però ordenat)
Pas 1: requisits previs:
Començarem assumint que ja heu configurat el raspberry pi, el DAC i l’amplificador, i també assumirem que teniu accés a Internet. A causa de la quantitat d’eleccions, preferències i opcions d’equip d’àudio per escoltar àudio, suposarem que la configuració ja està completa: ja hauríeu de sortir so dels altaveus abans de començar aquest projecte. També haurem de fer ssh al raspberry pi, de manera que, mitjançant la configuració pi, assegureu-vos que les interfícies tinguin ssh activat. Utilitzaré Raspbian lite i us recomanaré que tingueu una nova instal·lació de l’última còpia en una targeta sd nova dedicada a aquest projecte. Si té èxit, construirem un dispositiu independent que es pot deixar encès les 24 hores del dia, els 7 dies de la setmana, com a dispositiu d’escolta dedicat.
Pas 2: instal·leu Python i Pip
Prefereixo ssh al pi amb un PC diferent i realitzar totes les funcions necessàries mitjançant una sessió ssh, però suposo que és possible configurar inicialment el pi a un monitor, teclat i ratolí i treballar directament al pi fins que estigui treballant i desplegant-ho com a independent.
Primer fem una revisió rutinària de manteniment del nostre sistema i la versió de Python:
sudo apt-get update
sudo apt-get upgrade
Assegureu-vos que Python estigui instal·lat. En una sessió de terminal, escriviu el següent a l'indicador d'ordres:
python --version
Si veieu python 2.7.13 (o anterior), instal·leu python 3. +:
sudo apt-get install python3
sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
Pas 3: instal·leu MPG123 i Adafruit Blinka
Ara que s’han posat les bases, només s’instal·len algunes instal·lacions més:
MPG123 és el programari d'àudio que reproduirà la nostra música. La instal·lació és realment senzilla:
sudo apt-get install mpg123
Vaig fer moltes investigacions i vaig trobar una excel·lent plantilla al lloc web d’Adafruit sobre la reproducció de fitxers de so fent servir botons premuts, de manera que, en lloc de començar de zero, continuem pel rastre que la gent d’Adafruit ja ens ha agradat. El seu programa demana que instal·lem Adafruit Blinka:
$ sudo pip3 instal·la adafruit-blinka
Abans d’anar més enllà, realitzem una comprovació ràpida per assegurar-nos que tenim configurada Alsa:
aplay --versió
els nostres resultats haurien de llegir: la versió 1.1.3 de Jaroslav Kysela
Pas 4: ajusteu el volum al 50% a Alsamixer
Ara prenem una mesura de precaució i ajustem el nostre volum al 50% per evitar sorpreses ensordidores:
A l’indicatiu d’ordres, escriviu alsamixer:
alsamixer
Si mirem una pantalla de vermell blanc i verd, o un volum màxim del 100%, és una bona idea baixar el volum al 50% per estalviar els timpans. Sempre ens podem ajustar més tard (amunt o avall) si cal.
Pas 5: algunes tasques: trobar 5 estacions de ràdio que val la pena escoltar
Necessitarem una estació per a cada botó. De fet, necessitarem l’URL de l’estació. En prémer el botó es cridarà l’URL de l’emissora de ràdio d’Internet en un bit de codi simple d’una línia. Tot i això, ens estem avançant, així que tenim alguns deures a fer; cerqueu 5 emissores de ràdio i els seus URL. No és difícil trobar cinc emissores de ràdio, però trobar les seves adreces URL pot ser complicat. En un minut explicaré el perquè.
SomaFm * és una font fantàstica per començar, sobretot si encara no teniu cap idea del que voleu escoltar. Tenen una àmplia varietat d’eleccions musicals eclèctiques, cap de les quals em sembla ofensiva, ni publicitat, ni la millor part: comparteixen obertament les seves adreces URL. Per agafar l'URL, feu clic a una imatge de l'estació que us interessa i, a la barra de navegació de l'esquerra, feu clic a "Enllaços de transmissió directa". A partir d’aquí, cerqueu la secció MP3 i rasqueu l’URL de la taxa de reproducció més alta (és a dir, 128 pulsacions 64). Enganxeu l'URL en un editor de text o bloc de notes per ara.
Com a exemple, per rascar Christmas Rocks, l'URL seria: (no necessitem la descripció del servidor)
ice4.somafm.com/xmasrocks-128-mp3
Es fa una mica més reduït fora del món de SomaFm. Moltes estacions fan servir un intermediari entre l’oient i l’emissora, ja sigui per publicitat, màrqueting o possiblement per fer un seguiment, i generalment intento evitar aquest tipus d’emissores. Com que els intermediaris prefereixen escoltar l'emissora a través d'ells, en general és bastant difícil trobar l'URL; i aquí és on entra Vtuner.
* Seria desconsiderat si no us demanés la possibilitat de fer una donació a la vostra emissora de ràdio preferida, ja que moltes de les emissores només depenen del suport dels oients.
Pas 6: Opcional: rasqueu l'URL mitjançant Vtuner
Ara ve la part divertida …. A la pàgina principal de Vtuner, consulteu el seu enorme enllaç de llista d’estacions a l’extrem superior dret. Trieu un gènere musical que us interessi i, a continuació, ordeneu la velocitat més ràpida, on veureu una llista d’emissores. Trieu una emissora que creieu que us agradi, feu clic a l'enllaç o al botó de reproducció i mostreu la música. Si no és per a vosaltres, no us preocupeu, repetiu el procés fins que en trobem un adequat per al gaudi a llarg termini. A la captura de pantalla, vaig triar la versió digital d’impuls de la música country i, a la següent pantalla, em vaig adonar que sonava fora de Croàcia. La música country de Croàcia sona força interessant.
M'agrada. Però, com puc obtenir l'URL? Simplement feu un clic dret a l'espai en blanc situat a la dreta de la imatge de l'estació, a sota del nom de l'estació, seleccioneu "Veure font de la pàgina" i desplaceu-vos cap avall fins a aproximadament la fila 150. Estem buscant la línia que diu "// Prova msgstr "gestionar icecast". I l'URL es troba immediatament a sota.
orion.shoutca.st:8110/stream
Bastant taca!
Repetiu aquest pas fins que tinguem almenys 5 estacions a la nostra llista.
Doble opcional: per mesurar més, si podeu trobar 5 gèneres musicals que us interessen (en lloc de 5 emissores), creeu una llista d’emissores de ràdio per a cada gènere i deseu-les com a fitxers de text. Hi tornarem més endavant.
Pas 7: configureu els nostres botons
La part més important! Espolseu el soldador antic o, si més no, endolleu-lo i coureu-lo al forn. És hora de Soldar. Estic fent servir 4 polsadors momentanis, oberts normalment. Construiré una sèrie de botons (foto esquerra) i els fixaré en algun tauler de perf. És difícil dir-ho a la foto, però la direcció de les puntes dels botons s’està executant tot nord-sud. A la part dreta, podeu veure on he passat un rail de terra per als cables de terra i he connectat alguns cables de pont masculí al costat oposat de cada botó. En lloc de tenir 7 connexions de terra, el ferrocarril ens permetrà compartir una connexió de terra amb el pi per a tots. El resultat final és una delicada placa d’hòsties que es muntarà per sota de la part superior de la ràdio mitjançant uns cargols a través dels forats pilot proporcionats. Només apareixeran les tapes dels botons a través de la ranura que he tallat de la part superior. Com que la meva superfície superior només té 1/4 de gruix, vull anar amb compte de no cargolar excessivament. La cola pot ser útil per mantenir el tauler de perfecció connectat a la ràdio.
Pas 8: identifiqueu els nostres pins GPIO
En el meu únic altre instructiu, vaig presentar un nou ús per als antics barrets de veu de la versió 1 de Google AIY. En aquesta instrucció àmpliament impopular (o estretament popular), he esmentat el grau d’impressionància que tenia el propi disseny del barret. En tinc uns quants, així que construiré un prototip amb el barret, ja que té tant el dac com l'amplificador a bord.
Identifiquem ara sis pins que acolliran els nostres botons. Us demanaré que us centreu a la part esquerra del barret AIY de Google, on hi diu "servos". Hi ha una columna de 6 traus per al passador on connectaré i soldaré el final del meu botó masculí del pas anterior. Si treballeu sense el barret de veu de google aiy, no us preocupeu, la foto de la dreta us guiarà. En qualsevol cas, treballarem amb els pins 26, 06, 13, 05, 12 i 24 de gpio (BCM) de dalt a baix (o 0-5). GPIO # 24 es reservarà per a un botó de pausa opcional.
No oblideu també connectar la connexió de terra.
Pas 9: Codi
Dubto que el codi canviï molt a partir d’aquí, però, per a la darrera versió del codi python, visiteu el meu github. He adjuntat una còpia a partir del 2019-12-18 anomenada pytiful3.py.
No és el codi més eficient que veureu mai, i és bastant detallat, però fa la feina.
Comencem creant un sandbox per jugar. Des del nostre directori inicial, creeu un directori al nostre raspberry pi anomenat kissir:
mkdir kissir /
i copieu el contingut del fitxer pytiful3.py al directori obrint el fitxer de mostra en un editor de text i fent servir
sudo nano kissir / pytiful3.py
copieu / enganxeu el contingut del fitxer al nostre script de Python acabat de crear. No oblideu desar el nostre treball mitjançant Ctrl-x, Y i introduïu.
Si voleu fer un recorregut ràpid per l'script, importem els mòduls python que necessitarem i definirem els nostres botons i assignarem un pin gpio a cadascun dels 7 botons. Hi haurà 5 emissores de ràdio (podeu editar-les segons les vostres preferències d’emissores), un botó d’aturada i un botó d’aturada. El bucle true mentre s'executa i s'executa fins que es prem un botó, que en la majoria dels casos aturarà la reproducció de mpg123 existent i començarà a reproduir l'estació assignada al botó que s'ha premut. El botó de pausa / aturada no és realment un botó de pausa, sinó més aviat un interruptor de destrucció, ja que no podem posar en pausa la ràdio per Internet. La ràdio per Internet no espera a ningú.
Pas 10: proveu al nostre Sandbox
Abans de desplegar la nostra ràdio, mentre encara estem a la nostra sessió ssh, aneu a la carpeta kissir on s’emmagatzema el nostre script. Simplement podem executar l'script des de la línia d'ordres manualment escrivint:
python3 pytiful3.py
Si primer heu vist el codi, probablement us adonareu que he deixat algunes declaracions impreses perquè puguem saber què està passant. Si tot va funcionar bé, tindrem un missatge que diu "Premeu un botó". Això ens indica que el nostre script s’executa i que ha passat una comprovació preliminar del codi. El meu intent inicial tenia un bucle infinit de "música en pausa: premeu el botó per continuar" i em vaig assabentar que tenia el meu botó de pausa connectat per estar sempre tancat, en lloc d'obrir-lo normalment. Esperem que tingueu més sort amb el pas de soldadura.
Ctrl-C aturarà l'script si necessiteu avortar.
Per tant, si veieu "Premeu un botó", què esperem? Seleccioneu qualsevol dels nostres botons de cinc estacions de ràdio.
És probable que escolteu un altaveu per iniciar la reproducció de música, i de moment no puc evitar-ho. Mpg123 permet un sufix "--preload 1" després de l'adreça de l'estació a l'ordre os.system, però no sabria dir si va canviar la diferència. Ha de permetre una lleugera memòria intermèdia.
Un altre bitllet de codi que us hauríeu preguntat: hi ha un indicador "-f 7000" després de la trucada mpg123. Això redueix el volum a una distància molt gran del volum màxim. El volum complet seria de 32K. Segons tinc entès, l’escala de volum no és una escala lineal, de manera que no puc dir que només sigui una cinquena part del volum màxim, però que encara és molt forta. Ho vaig haver de fer perquè la meva targeta de so (la targeta de so de veu de Google AIY, de vegades no funciona bé amb Alsamixer).
Seguiu seleccionant els botons que vulgueu, seureu, relaxeu-vos i gaudiu de la comoditat de l'escolta per ara.
Pas 11: configureu el nostre codi perquè s'executi automàticament a l'arrencada
Per tant, si tot funciona correctament i heu gaudit de la nostra aventura de comandes de sandbox, ara és un bon moment per automatitzar la càrrega de scripts. Assegureu-vos que encara esteu al directori kissir i col·loqueu el codi de seqüència a la safata d'usuari:
sudo cp pytiful3.py / usr / local / bin /
Feu-lo executable:
sudo chmod + x /usr/local/bin/pytiful3.py
Escriviu un script d’intèrpret d’ordres per executar-lo a l’inici:
sudo nano pytiful3.sh
I inseriu el text següent:
#! / bin / sh ### BEGIN INIT INFO # Proporciona: pytiful3.py # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # assegureu-vos que el nivell de volum no sigui alt TODO # Realitzeu funcions específiques quan se us demani el cas del sistema "$ 1" a l'inici) feu ressò de "Inici de pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) eco "Aturar pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) ressò "Ús: /etc/init.d/pytiful3.sh {start | stop}" sortida 1;; sortida 0 d'esac
Moveu-lo a init.d:
sudo mv pytiful3.sh /etc/init.d/
Feu-lo executable:
sudo chmod + x /etc/init.d/pytiful3.sh
Registreu l'script per executar-lo a l'inici:
per defecte sudo update-rc.d pytiful3.sh
Pas 12: torneu a provar
Ara que tenim el nostre script carregat per executar-lo en l’inici, recordeu que tots els canvis que fem han de ser traslladats a la safata d’usuaris i que el nostre bell script kissir / pytiful3.py ara només és orfe. Però, per la seva banda, encara ens queda una caixa de sorra per jugar. Probablement continuaré jugant amb el guió, faré canvis i desar-lo com a nova versió en un futur proper. Encara és un projecte de treball.
Fem un reinici, esperem que es reiniciï el pi i, al cap d’un minut, torneu a prémer un botó.
Si el vostre volum d’àudio és molt baix, recordeu que també tenim un volum del mixer del 50%, de manera que podem augmentar-lo en conseqüència des de l’indicador d’ordres.
Per començar, una cosa que cal és un valor de volum global, en lloc d’haver de canviar el nivell de volum 5 vegades diferents.
Ei, què passa amb la llista d’emissores de ràdio que vam fer al pas número 6? Bé, resulta que MPG123 té una ordre de selecció aleatòria. És tan senzill com crear una llista d’URL d’emissores i, en lloc de demanar una URL d’emissores de ràdio, simplement utilitzeu-les
"btn1234_choice = random.choice (btn1234)", immediatament després d'identificar la nostra llista d'estacions, on btn1234_choice és la nostra llista. No oblideu utilitzar claudàtors al voltant de la nostra llista d’emissores separades per comes. La trucada de l'ordre de subprocés reprodueix la nostra opció aleatòria:
subprocess.call (['mpg123', '-q', btn1234_choice, "--preload 1"])
Pas 13: fes una caixa i ja hem acabat
Si heu arribat a aquest pas, la feina ha finalitzat. Enhorabona: acabeu de crear un reproductor de ràdio per internet independent.
Depenent de l’equip que tingueu (altaveus, dac i amplificador), potser us pregunteu com amagar alguns dels cables que es col·loquen. Potser és un altre instructiu per a un altre dia, però si teniu previst fer una unitat d’habitatge per ficar-hi alguns cables, us recomano donar-vos un munt d’espai addicional.
Com es pot veure a les fotos anteriors, en realitat vaig fer dos petons, un amb les restes d’un desencís de cola en el meu primer intent (de l’humor deformat en surten taulers deformats). La segona unitat fa servir excitadors de so en lloc d’altaveus convencionals i, si vau agafar el nom del dispositiu en una de les meves captures de pantalla, el vaig anomenar slimbox.
Em va semblar molt divertit aquest projecte. Les dues vegades. Certament, no és un projecte difícil, potser una mica lent, però molt gratificant. Espero que també gaudiu de la vostra escolta.
Recomanat:
BOSEBerry Pi Internet Radio: 4 passos (amb imatges)
BOSEBerry Pi Internet Radio: M'encanta escoltar la ràdio. Jo feia servir una ràdio DAB a casa meva, però em va semblar que la recepció era una mica irregular i el so continuava trencant-se, així que vaig decidir construir la meva pròpia ràdio per internet. Tinc un fort senyal wifi a casa meva i al germà digital
Ràdio d'Internet alimentada per Raspberry Pi: 5 passos (amb imatges)
Ràdio per Internet amb tecnologia Raspberry Pi: hi ha alguna cosa satisfactòria en girar els dials i prémer botons, com els de les ràdios antigues. Lamentablement, moltes d'aquestes ràdios estan trencades o les estacions han quedat en silenci. Afortunadament, no és massa difícil actualitzar cap ràdio a una ràdio per Internet mitjançant
Llum LED de neó per Internet d'Internet: 6 passos (amb imatges)
Llum de cor LED de neó a Internet: quilòmetres a part d’aquesta persona especial o només de distanciament social? Voleu fer-los saber que esteu pensant en ells? Construïu aquesta llum de cor LED de neó connectada a Internet i configureu-la bategant des del telèfon o l'ordinador, en qualsevol moment i des de qualsevol lloc
Ràdio per Internet / Ràdio web amb Raspberry Pi 3 (sense cap): 8 passos
Ràdio per Internet / Ràdio web amb Raspberry Pi 3 (sense cap): HI: Voleu allotjar la vostra pròpia ràdio a Internet, aleshores esteu al lloc adequat. Intentaré elaborar el màxim possible. He provat diverses maneres en què la majoria necessitaven una targeta de so que em vaig resitir a comprar. però va aconseguir fi
Com fer que el receptor de ràdio FM simple funcioni al 100% amb garantia: 4 passos
Com fer que el receptor de ràdio FM simple funcioni al 100%: Llegiu: Com fer que el receptor de ràdio FM d’escaneig automàtic per obtenir més informació sobre la infraestructura de l’IC BK1079 La majoria del circuit de ràdio FM que he vist a YouTube i Google solen ser força complicats components que requereixen un condensador variable especial