LMS Réveil Matin

Plusieurs projets réalisés dont le premier était "le lecteur de carton". Ce coup-ci on capitalise avec l'écran LCD pour faire un réveil matin ou une radio pour la douche. Pour le projet on utilise une vieille Raspberry Pi 2 et un LCD à 2 balles, en recyclant le kit Google Voice.

Le projet

Ce coup-ci, il s'agit de fabriquer une petite radio "player", cliente du Logitech Media Server, composé de différents éléments :

  • une vielle Raspberry Pi 2 (mais ça fonctionnera aussi bien avec une Rasp récente)

  • une carte Google Voice Kit que l'on recycle pour le projet et qui prend le signal audio directement sur le port I2s du processeur (via GPIO)

  • un écran LCD de deux lignes de 16 caractères

  • un peu d'impression 3D.

Pour le logiciel :

  • on va utiliser squeezelite qui est le logiciel qui permet de lire la musique depuis le LMS

  • du code maison qui gère l'afficheur LCD

Le système d'exploitation

A cause du google hat dont je n'ai pas trouvé les drivers sous Ubuntu, nous sommes obligés de prendre Raspi OS sur cette page. On récupère la version "Lite", de toutes façons on n'utilisera jamais d'écran avec notre petit projet.

Etcher ou Rufus permettent de flasher la carte.

Avant de l'insérer dans la Raspberry Pi, il faut créer un fichier "ssh" dans le dossier racine, pour que l'on puisse prendre la main à distance.

Pour prendre la main sur la Raspberry :

ssh pi@192.168.1.172

et ensuite le mot de passe est raspberry.

Il est très conseillé de taper passwd pour changer le mot de passe.

Supprimer le mouchard de Microsoft

Quel intérêt d'ajouter VSCODE au système "Lite" qui est conçu pour fonctionner sur la ligne de commande, si ce n'est d'obtenir des statistiques à l'insu des utilisateurs ?

Avant de mettre à jour le système, il convient de supprimer le mouchard des fils de putes de Microsoft. Pour cela, on se déplace dans le dossier suivant :

cd /etc/apt/sources.list.d

Ensuite la commande suivante permet de confirmer que le mouchard est présent (le fichier vscode.list) :

sudo ls

On tape la commande suivante pour ouvrir le fichier et commenter la ligne que l'on ne veut plus voir

sudo nano vscode.list

On ajoute un # et Ctrl + X pour sauver et sortir.

Il est très conseillé de taper passwd pour changer le mot de passe.

Ensuite une des première étape à réaliser est de mettre à jour le système :

sudo apt-get update

sudo apt-get upgrade

Après la mise à jour, rebootez la carte :

sudo reboot

La mise à jour effectuée on va activer le port I2C en utilisant l'utilitaire de la Rasp :

sudo raspi-config

On sélectionne Interface Options


On sélectionne l'I2C pour l'activer.

Ensuite il faut connecter le LCD au Google Voice Hat... SDA, SCL et l'alimentation en 5V et la masse (GND).

Installation des drivers

Installons les drivers pour les i2c

sudo apt-get install i2c-tools

sudo apt-get install python-smbus

Lorsque ces deux commandes sont passées, il est possible de connaître l'adresse du LCD en tapant la commande suivante :

i2cdetect -y 1

ou (selon votre version de Rasp

i2cdetect -y 0

Le LCD est trouvé à l'adresse 3f. Youpi.

sudo apt-get install python3-pip

sudo pip3 install smbus2

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

unzip main.zip

cd LMSLCD2020-main/

python testLCD.py -s 192.168.1.192:9000 -l 0x3f

Tapez la liste des commandes ci-contre. L'adresse IP du serveur est indiquée sur la ligne de commande, ainsi que l'adresse du LCD. Utilisez vos propres paramètres !

En attendant, ça a l'air de fonctionner...

Pour reprende la main, tapez Ctrl-C.

Installation de Squeezelite & drivers du HAT !

sudo apt install squeezelite

curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash

Ensuite il est nécessaire de modifier deux fichiers :

  • /etc/asound.conf (supprimer toutes les lignes et copiez celles ci-dessous)

  • /boot/config.txt

Editez le fichier asound.conf et supprimez toutes les lignes du fichier

sudo nano /etc/asound.conf

pour coller celles fournies par votre serviteur :

options snd_rpi_googlemihat_soundcard index=0


pcm.softvol {

type softvol

slave.pcm dmix

control {

name Master

card 0

}

}


pcm.micboost {

type route

slave.pcm dsnoop

ttable {

0.0 30.0

1.1 30.0

}

}


pcm.!default {

type asym

playback.pcm "plug:softvol"

capture.pcm "plug:micboost"

}


ctl.!default {

type hw

card 0

}


Editez le fichier /boot/config.txt avec la commande suivante

sudo nano /boot/config.txt

Et à la fin du fichier remplacer le dtoverlay=hifiberry-dac par cette ligne

dtoverlay=googlevoicehat-soundcard

Maintenant on peut rebooter...

A noter qu'au reboot Squeezelite démarre tout seul... Il va falloir aller le configurer.

Le fichier de configuration est dans le dossier /etc/default

et se nomme squeezelite.

On l'édite avec nano pour configurer notre lecteur

sudo nano /etc/default/squeezelite

On effectue deux changements, le premier pour donner un nom sympatoche à notre lecteur audio

et le second pour indiquer l'adresse du serveur, c'est optionnel parce que squeezlite sait chercher et trouver le serveur tout seul.

Pfff, presque fini !

On va éditer le crontab pour démarrer le LCD au boot...

Il faut demander au crontab de démarrer le code du LCD et bien entendu il faudra entrer vos paramètres !

vous pouvez ajouter un

sleep 20 &&

au départ parce que si le code python démarre mais que le réseau n'est pas activé, il va planter.


@reboot sleep 20 && sudo python /home/pi/LMSLCD2020-main/testLCD.py -s 192.168.1.192:9000 -l 0x3F

Une autre solution est de configurer, avec

sudo raspi-config

que la Raspberry au boot doit attendre que le réseau démarre pour continuer les opérations.

(Mais finalement ça n'a pas l'air de trop bien fonctionner).