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).