From afc4639e8b5ecd30431c928c7d123418eb0851fc Mon Sep 17 00:00:00 2001 From: catvayor Date: Thu, 31 Oct 2024 19:05:01 +0100 Subject: [PATCH] feat(boite_agb): Add software part --- docs/projects/boite_agb.md | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/docs/projects/boite_agb.md b/docs/projects/boite_agb.md index 12e07bd..71cd65a 100644 --- a/docs/projects/boite_agb.md +++ b/docs/projects/boite_agb.md @@ -1,6 +1,6 @@ # Boîte COF de l'AGB -_Maurice, Sel, Catvayor. Octobre 2024_ +_Maurice, Sel, catvayor. Octobre 2024_ Pour l'AG budget d'octobre 2024, HackENS a produit un contrôleur @@ -17,7 +17,7 @@ luminosité, couleur) et à un effet "color bump". L'idée de départ est la suivante : un panneau de contrôle sans fil pour le COF, relié via l'API de Maurice aux projecteurs de l'AGB. Maurice a fourni une -batterie (108 Wh !!) et via BiBi HackENS a récupéré des Raspberry Pi Micro, +batterie (108 Wh !!) et via BiBi HackENS a récupéré des Raspberry Pi Zero, qui sont idéales pour ce genre de projet. On a identifié 3 domaines lors du développement (on était 3, quel hasard) : @@ -75,7 +75,31 @@ aux équerres de ne pas racler le sol. ![la boîte, ouverte](boite_ouverte_oct24.jpg) -### Software embarqué +### Software embarqué (catvayor) + +Pour le software embarqué, la raspberry était sous nixos, avec une unité systemd +pour interfacer les commandes avec l'API de l'AGB. La config nixos complète est +[ici](https://git.dgnum.eu/HackENS/hackens-org-configurations/src/commit/fecddb1f7720d40cacdcfd7b7e91d4f9c0289184/machines/agb02), +elle n'a rien de particulièrement mystèrieux, mise à part l'import du module pour +faire une image prête à booter pour la carte sd. La connection internet se fesait +par wifi en l'absence d'autre possibilité, qui pendant l'agb aura été fournit par +mon partage de connection, car la solution prévue qui passait par une autre raspberry Pi +n'a pas fonctionné. Pour pouvoir débugguer en live, on l'avait mis sur le VPN d'Hackens, +ce qui n'aura pas été utile pour débugguer, mais pour autre chose. + +L'interface entre les commandes et le serveur de l'agb se fait en C++, avec libgpiod +pour lire les entrées des commandes, et un socket C pour envoyer les commandes +correspondantes. Initialement, on voulais utiliser les endpoints HTTPS, mais +on a remarquer une lenteur considérable de curl sur la raspberry pi, +ammenant le temps de réponse à 700ms (on a pas pris le temps d'identifier la source +du problème). L'authentifaction par token était alors pas possible, et on a choisi +de modifier de serveur pour recevoir un flux de json par un simple socket, ouvert +que sur le VPN. + +Petit point à noter: certains des pins de la raspberry pi ont des usages particulier, +ce qui peut poser problème si on les utilises, nottament, la raspberry ne bootait que si +le décodeur était dans la bonne position, sinon les pins d'I2C est mis à gnd, ce qui gène +manifestement le boot. ### API de l'AGB