Orange Pi Zero

Orange Pi Zero c'est quoi ?

J'efface l'article précédent et recommence un article avec les dernières nouveautés en octobre 2021. L'objectif est de faire un "player audio / streamer" avec une solution ultra économique. Il y a des players audio à 500 ou 1000€ qui ne seront jamais mis à jour et qui fonctionnent très mal. Avec une petite carte sous Linux, on est autonome et l'on peut faire un lecteur audio qui lit +100000 radios, qui se connecte à Deezer, Quobuz et tout le reste, qui va lire les fichiers audio sur le NAS, qui a une application pour les podcasts etc... Allons-y.

Single Board Computer, ou SBC, cela désigne un ordinateur sur une seule carte. Par exemple la Raspberry Pi est une SBC. Orange Pi Zero est une SBC qui a trois mérites :

  • C'est la SBC la moins chère du marché

  • Elle est méga plus puissante qu'une Raspberry Pi Zero (on passe de 1 à 4 coeurs, par exemple)

  • Sa consommation électrique est anecdotique, 250 mA, ce qui en fait une carte de choix pour de l'embarqué.

Fin 2021, c'est la crise des composants : le tarif des cartes augmente démesurément et donc on refait un lecteur audio avec une vieille Orange Pi Zero. Cette carte, depuis 2016 (dans les 10€) a été mise à jour et la nouvelle version se nomme LTS... En attendant, voici un article avec la vieille version que l'on peut aussi trouver sur la baie etc...

Voilà ce que vous pourrez afficher dans votre navigateur lorsque vous aurez fini l'installation du lecteur audio que l'on va nommer OrangePiLCD.

On va utiliser sur la sortie USB de la Orange Pi un superbe DAC à 140€, le Topping D10 Balanced dont les performances audio sont absolument extraordinaires.

Cela va permettre de réaliser un lecteur audio extrêmement performant aux mesures (et à l'écoute) que l'on va connecter à notre "serveur Logitech Media Server".

Voilà qui vaut le coup de passer un après midi à fabriquer le lecteur !

Si vous appréciez de commander votre player audio avec votre smartphone, sous Android vous avez l'application Squeezer qui est gratuite (première image à droite).

Sinon, directement dans le navigateur de voter smartphone, en saisissant l'adresse du serveur, vous pouvez aussi commander vos platines (seconde image à droite).

Système d'exploitation ?

En avant ! Le fabriquant de la carte ne propose pas vraiment de suivi logiciel. Pour avoir un système d'exploitation qui tienne la route sur la petite carte, la recommandation est d'utiliser Armbian.

Armbian propose deux saveurs :

  • une version Ubuntu orienté interface utilisateur

  • une version Debian orienté serveur

On va fabriquer un lecteur sans interface graphique, sans "fenêtres à la windoze", on va donc télécharger la version Bullseye.

Installation du système

  • On télécharge l'image (Direct Download par exemple),

  • On flashe une SD Card avec l'application Balena Etcher (copie écran ci-contre)

  • On installe la carte dans le lecteur de la Orange Pi Zero

  • On la met sous tension AVEC un câble RJ45 (le temps de régler le wifi)

  • On cherche son adresse IP (l'adresse attribuée par la box internet, soit en allant dans l'interface de la box soit en utilisant une application sur smartphone genre Fing)

  • On lance une session SSH en utilisant l'adresse IP de la nouvelle machine. Sous Linux on ouvre le terminal, sous Zindoze il faut ouvrir une "invite de commande" et ensuite on tape ssh...

En ayant trouvé que la Orange Pi zero a pour adresse 192.168.1.102, je tape la commande suivante :

ssh root@192.168.1.102

qui permet de me connecter à la machine.

Ensuite je tape "yes" pour valider la clé de connection (requis à la première connexion)

et ensuite je tape le password "1234" pour pouvoir ouvrir la session.

Par sécurité, Armbian demande de changer le mot de passe de "root", qui est le compte d'administration...

Ensuite je retape le mot de passe pour le compte root...

Puis je choisi le bash (le type de ligne de commande)

Et ensuite je dois créer un compte utilisateur :

je donne mon nom de compte et le mot de passe

mon "vrai" nom

et je demande à ce qu'il utilise le français en fonction de la zone qui vient d'être détectée.

La première chose à faire quand on a la main, c'est de mettre à jour le système. Pour cela, il faut taper deux commandes et avoir 15 minutes devant soit :

apt update

apt upgrade

C'est très important de ne pas oublier cette opération de mise à jour, sans cela certains trucs risquent de ne pas fonctionner correctement !

Ensuite sur la ligne de commande on peut lancer l'utilitaire armbian config en tapant la commande :

armbian-config

Et on va pouvoir aller sur la partie Network pour configurer le réseau Wifi par exemple.

Attention, si vous avez activé le Wifi et que vous enlevez le câble réseau, votre adresse de connexion aura certainement changé, il faut chercher l'adresse IP de la connexion WIFI !

Et maintenant on va installer le player audio en tapant la commande suivante :

apt install squeezelite

Le logiciel va être téléchargé, ainsi que ses dépendances, c'est une question d'une minute ou deux avec un mauvais réseau...

Ensuite, on va chercher le bon paramètre pour configurer le DAC qui est branché sur le port USB, un Topping D10 Balanced...

On tape la commande suivante

squeezelite -l

Et la liste de ce qui est reconnu est affiché. Nous voulons la version "Direct hardware" et on la trouve sur la ligne hw:CARD=Balanced, DEV=0

Ensuite on va éditer le fichier de configuration du lecteur audio

nano /etc/default/squeezelite

Dans le fichier on effectue deux modifications :

  1. la première est de renommer le lecteur (facultatif)

  2. la seconde consiste a écrire les paramètres audio que l'on a récupéré tantôt.

Ctrl + S pour enregistrer et Ctrl X pour quitter.


Lorsque l'on est à nouveau sur la ligne de commande, on reboote avec la commande suivante :

reboot

Quelques secondes plus tard la carte a rebooté et l'on peut voir son nom dans la gestion des platines du Logitech Media Server.

Voilà, c'est tout pour ce soir !

Une boîte imprimée en 3D pour 2€ de filament, un afficheur LCD à 3€. Voilà le compagnon idéal du Topping D10 Balanced...

La très vieille Orange Pi V1.1 installée dans le boitier que l'on a dessiné.

Les quatre câbles permettent de brancher le LCD dont on va détailler l'installation dans les lignes ci-dessous.

Le LCD s'achète sur la zone ou chez ALI.

Prenez bien un LCD 2 lignes ou 4 lignes AVEC le backpack ou "I2C"...

On branche :

  • le 5V au VCC de l'écran

  • le GND au GND

  • SCK à SCL

  • SDA à SDA

Une précision que j'allais oublier...

Pour pouvoir utiliser le port i2c qui permet la communication avec le LCD, vous devez le configurer en lançant l'application :

armbian-config

Dans l'application, choisissez

System

Hardware

et ensuite sélectionnez les port i2c comme indiqué sur la copie d'écran ci-contre (i2c0 devrait suffire).

Bon, pour installer la gestion du LCD, il faut passer quelques commandes (désactiver le python2, installer le python 3, installer les outils I2C...).

Allons-y

apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib

apt install python-is-python3

apt install python3-pip

apt install -y i2c-tools

pip3 install smbus2

sudo i2cdetect -y 0

La commande i2cdetect vous permet de confirmer que le LCD est bien vu et à quelle adresse (hexa) il se trouve :


En supposant que vous avez créé un utilisateur "renaud", vous pouvez aller dans le dossier de bob (ou un autre dossier, on s'en fiche en vrai). On va télécharger le code pour la gestion du LCD, le dézipper et le lancer une première fois pour confirmer que ça fonctionne... On suppose que le serveur LMS est à l'adresse 192.168.1.193 sur le port 9000, si ce n'est pas votre cas, mettez la bonne adresse !

cd renaud

wget https://github.com/renaudrenaud/LMSLCD2020/archive/main.zip

unzip main.zip

cd LMSLCD2020-main/

sudo python3 testLCD.py -i 0 -s 192.168.1.193

pip install requests

sudo python3 testLCD.py -i 0 -s 192.168.1.193:9000

En lançant la commande un message de bon fonctionnement est affiché sur la session SSH et votre LCD doit démarrer...

On peut faire Ctrl C pour stopper tout ça et modifier le contab pour le lancer au démarrage de la machine...

Ce que l'on souhaite, c'est lancer le script au reboot, mettons après une minute de délai, le temps que le réseau wifi monte etc...

Pour cela il faut éditer le crontab en tapant la commande suivante :

crontab -e

Pour la première fois, le systèle demande quel éditeur utiliser, on choisit nano !

Dans l'éditeur, on ajoute la ligne ci-contre et on sauve.

On demande au reboot d'attendre 60 secondes puis de lancer la commande python qui gère le LCD.

N'oubliez pas de définir l'adresse de votre serveur LMS et son port.

Une fois le crontab sauvegardé, vous pouvez rebooter en lançant la commande

reboot

A noter que pendant les opérations, la petite carte n'a pas rebooté systématiquement (constaté aussi avec la Pi Zero 2) et donc je l'ai débranchée et rebranchée pour qu'elle reboote vraiment.

Bon, j'ai essayé de filmer le boot, mais c'est difficile avec un smartphone à cause de la luminosité du LCD.

Je vous montre aussi à la fin la consommation avec le DAC (branché et alimenté par la Pi) et on est autour de 5V / 0.7A max, ce qui nous fait un player audio à 3.5W de consommation.