feat(boite_agb): Add software part

This commit is contained in:
catvayor 2024-10-31 19:05:01 +01:00
parent d549d76830
commit afc4639e8b
Signed by: lbailly
GPG key ID: CE3E645251AC63F3

View file

@ -1,6 +1,6 @@
# Boîte COF de l'AGB # 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 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, 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 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. qui sont idéales pour ce genre de projet.
On a identifié 3 domaines lors du développement (on était 3, quel hasard) : 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) ![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 ### API de l'AGB