Borne d'arcade BioHackLab
(page créée le 7 février 2025)
Une borne pour jouer aux jeux réalisés pendant les ateliers / game jam
Matériel
Écran Gateway 19“ TFT LCD, connexion par VGA avec adaptateur. Résolution 1280 x 1024, 59.907Hz
Préparation Raspberry Pi
Quoi de neuf sur Debian 12 Bookworm pour Raspberry ? https://www.framboise314.fr/bookworm-la-nouvelle-version-de-raspberry-pi-os/
- Adresse MAC Wifi : d8:3a:dd:ee:23:f3
- Adresse MAC ethernet : d8:3a:dd:ee:23:f2
Préparer la carte micro-SD avec l'OS
C'est très simple en utilisant Raspberry Pi Imager qui s'occupe de préparer la carte micro-SD avec un OS choisi dans une liste assez garnie.
Installation de Raspberry Pi Imager à télécharger ici : https://www.raspberrypi.com/software/
On peut le démarrer avec
rpi-imager &
Ce logiciel permet de choisir l'OS à installer (ici : Raspberry Pi OS 64-bit = Debian Bookworm) et de définir quelques réglages :
- nom de l'hôte : biohacklab.local
- réseau wifi : FabLab_24
- utilisateur : xor / lpl
- SSH activé (si jamais on oublie de l'activer il est toujours possible d'activer SSH sur la carte microSD)
Afficher l'adresse IP du rpi
hostname -I
ou ip addr
Se connecter au rpi en SSH
ssh xor@192.168.1.35
Copier un fichier vers le rpi
scp ./fondecran_01.png xor@192.168.1.35:/home/xor/borne_biohacklab_ui_v5
Premier démarrage
- pas d'image sur le moniteur (branché avec un adaptateur micro-HDMI / VGA)
- biohacklab.local ne répond pas
sudo nmap -sP 192.168.1.*
: le rpi n'apparaît pas
Passage obligatoire sur https://www.raspberrypi.com/documentation/computers/getting-started.html
On peut aussi trouver l'adresse IP à partir de l'adresse MAC
sudo nmap -sn 192.168.1.1/24|awk '/^Nmap/{ip=$NF}/D8:3A:DD/{print ip}'
On peut trouver l'adresse MAC du Pi en ligne de commande avec ifconfig
Même si nmap ne «voit» pas le rpi, on peut s'y connecter en SSH!
ssh xor@biohacklab.local ssh xor@192.168.1.30
Ressources générales sur le raspberry pi
- cheat sheet : https://gist.github.com/hofmannsven/9132419
- keyboard shorcuts : https://g7rdx.co.uk/linux/raspberry-keyboard-shortcuts/
Questions d'écran
Essai pour configurer le moniteur directement dans le fichier /boot/firmware/config.txt
> sans succès
Boot avec HDMI branché sans adaptateur : ok
Faire fonctionner l'adaptateur micro-HDMI - VGA
Il s'agit de ce modèle acheté chez Smallcab : adaptateur micro HDMI / VGA
Après un premier essai non concluant sur un moniteur, le second testé a fonctionné!
Problème de moniteur
L'affichage “saute”, puis le message “video mode not supported” s'affiche
On modifiant le fichier /boot/firmware/cmdline.txt
et en ajoutant au début :
video=HDMI-A-2:720x576M@50
ça fonctionne de nouveau …
mais ce n'est pas du 720×576, il doit y avoir un autre composant qui agit après le démarrage
doc : https://www.raspberrypi.com/documentation/computers/configuration.html#command-line-options
voir aussi : https://pimylifeup.com/raspberry-pi-screen-resolution/
le rpi est il en wayland ou en x ?
pour l'adaptateur surtout pas le D! (dans video=HDMI-A-2:720x576M@50D) D pour digital, A pour analog
Réponse : en wayland ( https://www.framboise314.fr/bookworm-la-nouvelle-version-de-raspberry-pi-os/ )
Chromium en mode kiosque
On trouve pas mal de choses sur le sujet mais en grande partie obsolète car le système du raspberry pi change au fil du temps…
La meilleure référence semble être : https://forums.raspberrypi.com/viewtopic.php?t=378883
Avant tout : on sort du «kiosk mode» avec Alt + F4, ou Ctrl + ⇧ Shift + Backspace
Refs plus ou moins obsolètes :
Configurer le démarrage automatique
Choix d'un serveur
Plusieurs possibilités exposées ici : https://github.com/processing/p5.js/wiki/Local-server
Essai avec SimpleHTTPServer en python qui est déjà installé ( https://github.com/processing/p5.js/wiki/Local-server#python-simplehttpserver )
On le lance avec python -m http.server
depuis un répertoire qui devient la racine du serveur.
Masquer la souris
On peut installer le paquet unclutter pour masquer le pointeur de souris quand il n'y a pas d'activité
sudo apt install unclutter
NON, ça ne fonctionne plus sur Debian 12 Bookworm avec Wayland :/
Autre solution à tester ici : https://forums.raspberrypi.com/viewtopic.php?t=358285#p2175588
Masquer automatiquement la barre des tâches
Ajouter les lignes suivantes dans le fichier .config/wf-panel-pi.ini
autohide=true autohide_duration=500 heightwhenhidden=0 # test sinon la barre est à moitié visible ...
Problème maintenant, la barre ne réapparaît plus au survol de la souris! Après un redémarrage, elle réapparaît à moitié et reste fixe! TODO : améliorer
Exemple très complet du fichier wf-panel-pi.ini : https://github.com/WayfireWM/wf-shell/blob/master/wf-shell.ini.example
Étape 1 : démarrer sans logging manuel
sudo raspi-config
Sélectionner : System Options > Boot / Auto Login > Desktop Autologin: Desktop GUI, automatically logged in as 'xor' user.
Étape 2 : préparer le fichier autostart
Créer le fichier
cd /home/xor/.config/labwc touch autostart nano autostart
Pour le modifier par la suite
nano /home/xor/.config/labwc/autostart
Le fichier autostart
contient
cd /home/xor/borne_biohacklab_ui_v5/ /usr/bin/python -m http.server & # <-- & : important de lancer le processus en arrière-plan, sinon la suite du script ne se réalise pas # unclutter -idle 1 & # masquer le pointeur après 1 seconde d'inactivité, ne fonctionne pas pas sur Debian 12 avec Wayland sleep 8 chromium --start-fullscreen --start-maximized --noerrdialogs --disable-infobars --kiosk http://localhost:8000
Étape 3 : quand tout fonctionne, passer en lecture seule
sudo raspi-config
Dans les menus :
- sélectionner Performance options
- sélectionner Overlay File System
- confirmer l'activation de «Overlay File System»
- confirmer la protection en écriture de la partition de boot
- confirmer le reboot
Rétablir la partition en lecture / écriture
Temporairement (jusqu'au reboot) :
sudo mount -o remount,rw /boot
Interface hardware
Alimentation 12V
Trackball
Il s'agit de ce trackball acheté chez Smallcab : trackball lumineux USB
Il est fourni sans boutons, j'en rajoute.
Makey Makey et boutons
Le makey makey permet de remplacer le clavier (flèches directionnelles et autres touches)
Voir la page consacrée au Makey Makey
Interface UI
Schéma de principe
Pour éviter des barres de scrolling dans l'iframe, il faut indiquer dans le code de la page qui s'affiche
<style> html, body { overflow: hidden; } </style>
Fabrication
Formulaire de calcul bien pratique pour calculer angles et longueurs d'un triangle rectangle (Pythagore for ever) : https://www.123calculus.com/triangle-rectangle-page-7-30-120.html
Maquette papier
Pour tester les dimensions et donner un nom à chaque partie
Découpe et assemblage des pièces en MDF
Découpe et assemblage des pièces en contreplaqué
Les pièces sont préparées pour être découpées sur une machine qui accepte un format maximum de 600×300 mm
v0.1
État : démarre à la prise (rpi bloqué en écriture), interface fonctionnelle mais un peu moche, jeux à corriger pour certains…
TODO software
- La barre à gauche des jeux est vraiment moche
- icone de retour à l'accueil trop petit
- pourquoi les jeux bitsy sont ils si longs à démarrer ? (python http.server ?)
- + liste des bugs remontés