Construisez un serveur de lecture de musique avec MPD et affichez le nom de la chanson, le nom de l'artiste, le nom de l'album et l'image de la pochette en cours de lecture sur l'OLED. Bien sûr, c'est OK en japonais !! Et vous pouvez également "chanson précédente", "lecture / pause" et "chanson suivante" avec trois boutons.
Ce sera peut-être l'un des formulaires MPD complétés dans SingleBoard Computing (rires) Puisqu'il s'agit d'une bonne affaire, je vous l'enverrai en version complète incluant la construction de l'environnement.
Le côté gauche est NEO2 Complete Starter Kit. Il est en rupture de stock, et c'est miraculeux quand il devient en stock pour un moment le 5/26? Un bijou que j'ai pu obtenir. Le côté droit est une combinaison de NanoPi-NEO + NanoHat PCM5102a + NanoHat OLED.
Le code d'affichage de diverses informations sur l'OLED by Python, qui est le code principal cette fois, est enregistré ci-dessous. https://github.com/blue777/NanoPi-NEO_OLED_MPD
Ou
Ou
NanoPi NEO
Est supposé être l'un des éléments ci-dessus.
NanoPi NEO2
Est supposé être l'un des éléments ci-dessus.
On suppose que l'image de démarrage a été transférée vers MicroSD et démarrée.
timedatectl set-timezone Asia/Tokyo apt-get update apt-get upgrade npi-config
Je vais me préparer. Si l'adresse IP fixe est bonne, elle ressemble à celle ci-dessous.
nano /etc/network/interfaces
/etc/network/interfaces
allow-hotplug eth0
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
Installez avec la commande suivante. Une fois l'installation terminée, modifiez les paramètres.
apt-get install mpd nano /etc/mpd.conf
Trouvez la ligne et procédez comme suit: (Je vais expliquer sur l'hypothèse ci-dessous)
/etc/mpd.conf
music_directory "/media/"
Premier, cat /proc/asound/cards Sortira une liste de cartes son.
Ça ressemble à ça. Pour le moment, c'est dans un état connecté (rires)
NanoPi-NEO
root@NanoPi-NEO:~# cat /proc/asound/cards
0 [Pcm5102a ]: Pcm5102a - Pcm5102a
Pcm5102a
1 [sndhdmi ]: sndhdmi - sndhdmi
sndhdmi
2 [DAC ]: USB-Audio - USB Audio DAC
Burr-Brown from TI USB Audio DAC at usb-sunxi-ehci-1.2, full speed
3 [J20 ]: USB-Audio - JAVS USB Audio 2.0
JAVS JAVS USB Audio 2.0 at usb-sunxi-ehci-1.3, high speed
4 [N2 ]: USB-Audio - NuForce µDAC 2
NuForce, Inc. NuForce µDAC 2 at usb-sunxi-ehci-1.4, full speed
5 [AI301DA ]: USB-Audio - TEAC AI-301DA
TEAC Corporation TEAC AI-301DA at usb-sunxi-ehci-1.1, high speed
root@NanoPi-NEO:~# uname -a
Linux NanoPi-NEO 3.4.39-h3 #3 SMP PREEMPT Tue May 23 17:37:51 CST 2017 armv7l armv7l armv7l GNU/Linux
NanoPi-NEO2
root@NanoPi-NEO2:~# cat /proc/asound/cards
0 [Codec ]: H3_Audio_Codec - H3 Audio Codec
H3 Audio Codec
1 [USBCamera ]: USB-Audio - USB_Camera
KYE Systems Corp. USB_Camera at usb-1c1d000.usb-1, high speed
root@NanoPi-NEO2:~# uname -a
Linux NanoPi-NEO2 4.11.2 #1 SMP Wed Jun 7 03:24:53 PDT 2017 aarch64 aarch64 aarch64 GNU/Linux
Si vous expliquez dans l'ordre du haut,
InstanceNo. | DeviceName | Commentaire |
---|---|---|
0 | Pcm5102a | Il s'agit de NanoHat Pcm5102a. NanoPi-NEO Kernel=3.4.Il s'agit du nom d'affichage du 39. Si le Kernel Ver change, le nom d'affichage changera également. |
1 | sndhdmi | Je pense que c'est une sortie de signal audio HDMI, mais elle ne peut pas être utilisée car il n'y a pas de connecteur HDMI. |
2 | DAC | C'est un DAC USB. |
3 | J20 | C'est un DDC USB. JAVS X-Il s'agit d'un convertisseur USB vers SPDIF appelé DDC. |
4 | N2 | C'est un DAC USB. NuForce μ DAC. |
5 | AI301DA | C'est un DAC USB. Teac AI-C'est 301DA. |
0 | Codec | NanoPi-Line Out sur la carte NEO2. Vous devriez pouvoir l'utiliser en soudant. Il semble que la raison pour laquelle c'est H5 mais H3 est parce que le pilote est commun. |
1 | USBCamera | C'est une caméra avec une entrée microphone. Il ne peut pas être utilisé car il ne peut pas émettre d'audio. |
C'est la méthode d'écriture de base pour chacun. Je vais l'écrire comme ça. Il est normal d'avoir plusieurs balises audio_output. S'il y en a plusieurs, vous pouvez également spécifier une sortie simultanée.
Pour NanoHat PCM5102a
audio_output {
type "alsa"
name "HanoHat PCM5102a"
device "hw:Pcm5102a,0"
mixer_type "software"
format "*:32:2"
replay_gain_handler "software"
}
J20(JAVS_X-DDC)dans le cas de
audio_output {
type "alsa"
name "JAVS X-DDC"
device "hw:J20,0"
mixer_type "none"
}
Pour Codec
audio_output {
type "alsa"
name "NanoPi-NEO2 LineOut"
device "hw:Codec,0"
mixer_type "software"
}
Le nom spécifié pour chacun est le nom d'affichage du client MPD. Entrez InstanceNo. Ou DeviceName dans la partie XXXX de "hw: XXXX, 0" de l'appareil. Si vous souhaitez qu'il soit automatiquement reconnu par connexion USB, entrez le n ° d'instance à la fin. Cependant, il est recommandé de spécifier par DeviceName car il change en fonction de l'allocation par InstanceNo et de l'ordre de connexion. (Bien qu'il soit possible de modifier l'ordre d'attribution des numéros dans ALSA, il sera omis.)
Transformez la microSD avec le système d'exploitation installé dans un dossier partagé Les données musicales seront téléchargées sur Nanopi NEO à partir d'un PC externe.
Installation de Samba et Créez un répertoire dans / media / local et définissez le partage. Les paramètres de partage sont des paramètres d'accès complet. (Lol
apt-get install samba mkdir /media/local chmod 777 /media/local nano /etc/samba/smb.conf
/etc/samba/smb.conf
・
・
・
[Music]
comment = share folder
path = /media/local
public = yes
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
systemctl enable smbd systemctl start smbd
Lors de l'utilisation du partage de fichiers Windows ou du montage d'un NAS.
apt-get install cifs-utils mkdir /media/nas nano /etc/fstab
・
・
・
//192.168.1.9/Public /media/nas cifs username=guest,password=,uid=root,iocharset=utf8 0 0
Après le réglage
mount -a df
Assurez-vous qu'il se monte correctement avec.
J'ai écrit l'affichage du titre de la chanson et l'acquisition / l'affichage de l'image de la veste en Python. J'ai utilisé Python pour la première fois cette fois, et cela a été terminé en environ deux jours. .. .. Sur le chemin, je souffrais d'un mélange d'onglets et d'espaces, et il y avait des rebondissements, C'était mieux que ce à quoi je m'attendais, donc cela m'a également inspiré pour écrire cet article.
2017/08/31 Addendum: Sequel "Serveur de lecture de musique NanoPi-NEO, MPD, LCD, I2S-DAC et TDA7297 (complet)" En plus de l'écran OLED, l'écran LCD est également pris en charge. Veuillez utiliser votre logiciel d'affichage préféré.
Spécifications principales
--Affichage du titre de la chanson. S'il est long, il défilera automatiquement. --Affichage du nom de l'artiste et du nom de l'album --Affichage de la position de lecture actuelle (soulignement sous le titre) --Affichage de Freq, BitDepth, Ch --Affichage de l'image de la pochette de l'album (utilisant du mutagène)
Mécanisme etc.
Passons maintenant à la procédure d'installation principale
Référence: http://wiki.friendlyarm.com/wiki/index.php/NanoHat_OLED
Suivez les étapes ci-dessous pour installer. (La destination d'installation est / root) NanoHat OLED fonctionne dans deux configurations, programme C et programme Python, et l'affichage OLED lui-même est fermé en Python, mais l'opération de clé est notifiée côté Python après l'avoir reçue du côté programme C. C'était.
Et, du côté du programme C, le programme Python est également lancé, de sorte que le produit standard ne démarre pas. Pour le moment, j'ai commenté dans l'exemple ci-dessous. (Le code Python alternatif est lancé à partir de rc.local)
cd /root git clone https://github.com/friendlyarm/NanoHatOLED.git nano /root/NanoHatOLED/Source/main.c
/root/NanoHatOLED/Source/main.c
・
・
・
int load_python_view() {
/*
int ret;
char* cmd = (char*)malloc(255);
sprintf(cmd, "cd %s/BakeBit/Software/Python && python %s 2>&1 | tee /tmp/nanoled-python.log", workpath, python_file);
ret = pthread_create(&view_thread_id, NULL, (void*)threadfunc,cmd);
if(ret) {
log2file("create pthread error \n");
return 1;
}
//*/
return 0;
}
・
・
・
cd NanoHatOLED ./install.sh
Installez y compris les packages dépendants externes afin qu'ils démarrent automatiquement dans rc.local Puisque le démarrage automatique (oled-start) de NanoHat OLED a déjà été écrit, J'ajouterai une commande de démarrage sur la ligne suivante.
apt-get install fonts-takao-pgothic apt-get install python-mutagen python3-mutagen
cd /root git clone https://github.com/blue777/NanoPi-NEO_OLED_MPD
nano /etc/rc.local
/etc/rc.local
・
・
・
/usr/local/bin/oled-start &
cd /root/NanoPi-NEO_OLED_MPD
python oled_mpd.py &
・
・
・
Essayez de mettre ympd pour pouvoir accéder à http à partir de chaque client du réseau et le contrôler.
python
apt install cmake
apt install libmpdclient-dev
apt install libssl-dev
cd /usr/lib
git clone https://github.com/notandy/ympd
cd ympd
mkdir -p build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX_PATH=/usr
make
make install
Il commence par ./ympd, mais il est difficile de démarrer à chaque fois, alors éditez rc.local pour qu'il démarre automatiquement.
nano /etc/rc.local
/etc/rc.local
・
・
・
/usr/lib/ympd/build/ympd &
Le port d'accès sera 8080, donc http://YourMpdServer:8080/ Accès sous la forme de.
Si le port80 est bon, spécifiez comme suit.
./ympd -w 80
C'est la fin du côté serveur. Veuillez redémarrer et profiter.
reboot
La lecture peut être contrôlée par un accès Web, mais l'application dédiée est toujours bonne! Dans ce cas, veuillez insérer votre client MPD préféré.
Divers clients MPD tels que iOS, Windows et Android sont disponibles. Si vous recherchez avec le client MPD, vous trouverez diverses choses, alors installez celui que vous aimez.
Nous utilisons gmpc car c'est une machine Windows. https://gmpclient.org/
Les éléments définis dans audio_output peuvent être sélectionnés dans le menu Serveur.
Dans l'état standard, il est dans l'état De-Emphasis, Low-Latency en termes de matériel. En particulier, De-Emphasis a une coupe haute fréquence à 44,1 KHz, et cela sonne un peu étouffé. Il est recommandé de souder les zones de désaccentuation et de faible latence.
Quant à la qualité sonore, elle est généralement bonne. Un lecteur CD de 100 000 classes ne pourra pas concourir.
Cependant, si les sons sont intimement liés (comme le pic de pleine échelle), la dégradation de la résolution sera perceptible et deviendra une boulette. Cependant, comme l'alimentation est une alimentation à découpage et qu'elle est partagée par NanoPi-NEO, elle se réveillera sûrement si vous modifiez une autre alimentation.
Référence http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2
Le signal I2S émis par NanoPi-NEO est
3 sont en sortie, mais NanoPi-NEO2 est en plus de ce qui précède
Peut également être sorti et sera envoyé vers GPIOA6. Il s'agit d'une spécification uniquement pour H5, et il semble que H3 ne la prend pas en charge. (D'après la fiche technique)
Et si vous regardez plus loin, GPIO A6 dit PWM, mais ni H3 / H5 ne peut être une destination de sortie PWM. Je me demande d'où vient la mauvaise implantation (H2 + ou quelque chose?)
J'espère fournir un pilote qui peut générer secrètement I2S_MCLK.
■ 2018/01/13 ajouté J'ai enfin pu sortir! Sortie MCLK et 384 kHz compatible avec NanoPi-NEO2 I2S
La raison de l'utilisation de MPD dans SBC (Single Board Computing) est sans aucun doute la recherche de la qualité sonore. Ainsi, l'évaluation subjective personnelle de la qualité sonore de la série NanoPi et de la série BeagleBone est comme ça.
NanoPi-NEO < NanoPi-NEO2 << BeagleBoneBlack <= BeagleBoneGreen
Les deux sont évalués en se connectant avec SBC --- (USB) -> JAVS X-DDC (révisé) --- (Coaxial spdif) -> DAC, et SBC et X-DDC sont évalués avec SiC SBD d'Infineon. Une alimentation en série assemblée par redressement en pont (LM350 côté SBC, discrète avec SiC FET Cree sur le X-DDC) est utilisée. Dans ce cas, le type BeagleBone ou un rideau en dentelle ressortira clairement. Le son est également très bien.
Je suis également très heureux que lightMPD, une distribution dédiée au MPD, ait pris en charge NanoPi-NEO et NanoPi-NEO2.
C'est autour de l'écran de l'OLED que j'ai écrit diversement, comme ça c'était mieux que ce à quoi je m'attendais, mais il n'est pas utilisé dans mon environnement de production. (Lol
Recommended Posts