====== 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'[[https://howchoo.com/pi/how-to-enable-ssh-on-raspbian-without-a-screen/|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 : [[https://www.smallcab.net/convertisseur-micro-hdmi-vers-pour-raspberry-p-2393.html|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 720x576, 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 :** * https://www.raspberrypi.com/tutorials/how-to-use-a-raspberry-pi-in-kiosk-mode/ * https://www.scalzotto.nl/posts/raspberry-pi-kiosk/ * https://www.airdroid.com/mdm/chromium-kiosk-mode/ * https://wiki.houptlab.org/index.php?title=Raspberry_Pi_Kiosk&mobileaction=toggle_view_desktop * https://reelyactive.github.io/diy/pi-kiosk/ ==== 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 Voir : https://pip.raspberrypi.com/categories/685-whitepapers-app-notes/documents/RP-003610-WP/Making-a-more-resilient-file-system.pdf **Rétablir la partition en lecture / écriture** \\ Temporairement (jusqu'au reboot) : sudo mount -o remount,rw /boot ===== Interface hardware ===== Premier schéma {{:projets:biohacklab:prototype_premier_schema.jpg?direct&600|}} ==== Alimentation 12V ==== Fournisseur : Smallcab https://www.smallcab.net/alimentation-12v10a-borniers-p-1870.html {{:projets:biohacklab:schema-alimentation-borniers-12v5a-face.png?direct&600|}} {{:projets:biohacklab:schema-alimentation-borniers-12v5a-dessus.png?direct&600|}} ==== Trackball ==== Il s'agit de ce trackball acheté chez Smallcab : [[https://www.smallcab.net/trackball-lumineux-p-2488.html|trackball lumineux USB]] \\ Il est fourni sans boutons, j'en rajoute. {{:projets:biohacklab:prototype_cablage_trackball.jpg?direct&600|}} ==== Makey Makey et boutons ==== Le makey makey permet de remplacer le clavier (flèches directionnelles et autres touches) \\ Voir la page consacrée au [[materiel:makey_makey:start|Makey Makey]] ===== Interface UI ===== Schéma de principe {{:projets:biohacklab:borne_schema_ui.jpg?direct&800|}} Pour éviter des barres de scrolling dans l'iframe, il faut indiquer dans le code de la page qui s'affiche * https://stackoverflow.com/questions/15494568/html-iframe-disable-scroll * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe ===== 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 {{:projets:biohacklab:borne_maquette_papier.jpg?direct&600|}} \\ {{:projets:biohacklab:borne_maquette.pdf|}} {{:projets:biohacklab:borne_maquette.svg?linkonly|}} ==== Découpe et assemblage des pièces en MDF ==== {{:projets:biohacklab:borne_plan_mdf_pour_a4_ok.png?direct&1000|}} \\ {{:projets:biohacklab:borne_plan_mdf_pour_a4.pdf|}} {{:projets:biohacklab:borne_plan_mdf_pour_a4.svg?linkonly|}} {{:projets:biohacklab:borne_plan_mdf_assemblage.png?direct&600|}} \\ {{:projets:biohacklab:borne_plan_mdf_assemblage.svg?linkonly|}} ==== 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 600x300 mm {{:projets:biohacklab:borne_plan_complet.png?direct&1000|}} \\ {{:projets:biohacklab:borne_plan_complet_20250305_19h32.svg?linkonly|}} ==== v0.1 ==== {{:projets:biohacklab:borne_v0.1.jpg?direct&600|}} É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