feat(articles): Add boite_agb project #2
1 changed files with 15 additions and 16 deletions
|
@ -62,9 +62,8 @@ J'ai donc dû tout reprendre de 0 le dimanche pour le mardi, avec un design plus
|
|||
simple : 4 murs rectangulaires, avec deux paires égales car découpées ensemble.
|
||||
Les murs sont collés ensemble, et une planche de contreplaqué usinée à la CNC
|
||||
(bouton par bouton, pour éviter partiellement le bug) tient les contrôles :
|
||||
les 2 boutons, le joystick, un commutateur ON/OFF et un encodeur.
|
||||
|
||||
En effet, après avoir trouvé un encodeur numérique, qui donne par l'état de 8
|
||||
les 2 boutons, le joystick, un commutateur ON/OFF et un encodeur. En effet,
|
||||
après avoir trouvé un encodeur numérique, qui donne par l'état de 8
|
||||
interrupteurs l'angle de son axe, on a décidé de l'ajouter à la place du
|
||||
potentiomètre.
|
||||
|
||||
|
@ -77,31 +76,31 @@ aux équerres de ne pas racler le sol.
|
|||
|
||||
### 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
|
||||
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
|
||||
faire une image prête à booter pour la carte SD. La connection internet se faisait
|
||||
par WiFi en l'absence d'autre possibilité, qui pendant l'agb aura été fourni 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
|
||||
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
|
||||
correspondantes. Initialement, on voulait utiliser les endpoints HTTPS, mais
|
||||
on a remarqué une lenteur considérable de curl sur la Raspberry,
|
||||
ammenant le temps de réponse à 700ms (on n'a pas pris le temps d'identifier la source
|
||||
du problème). L'authentification par token était alors impossible 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
|
||||
ce qui peut poser problème si on les utilise, notamment, la Rraspberry ne bootait que si
|
||||
le décodeur était dans la bonne position, sinon les pins I2C sont mis à GND, ce qui gêne
|
||||
manifestement le boot.
|
||||
|
||||
### API de l'AGB
|
||||
### API de l'AGB (Maurice)
|
||||
|
||||
L'API est un petit programme rust pour le backend et une application django pour
|
||||
l'authentification et le frontend. Le code source est public:
|
||||
|
|
Loading…
Reference in a new issue