1. Dossiers concernés
assets/station_s/
+- include/app/tools/
¦ +- obb_dual_gimbal.h
+- src/app/tools/
+- obb_dual_gimbal.cpp
Ces fichiers cohabitent avec les modules GeoMail/Settings déjà exposés : un même build embarque diagnostic + contrôleur.
2. Abstraction double gimbal
struct StickState {
int16_t x = 0;
int16_t y = 0;
bool press = false;
};
struct ControllerState {
StickState left;
StickState right;
uint32_t keypad_mask = 0; // 20 touches tactiles
bool rp2040_online = false; // dongle USB/I2C détecté
};
Les axes sont normalisés (-1024/+1024). Le masque de 20 touches est utilisé pour les combinaisons durgence décrites dans la page concept.
3. Pont RP2040 ? ESP32
bool read_stick_from_i2c(uint8_t channel, StickState &stick) {
Wire.beginTransmission(0x28);
Wire.write(channel);
if (Wire.endTransmission(false) != 0) return false;
if (Wire.requestFrom(0x28, (uint8_t)5) != 5) return false;
stick.x = (Wire.read() << 8) | Wire.read();
stick.y = (Wire.read() << 8) | Wire.read();
stick.press = Wire.read();
return true;
}
Le mini RP2040 (branché en USB sur la Station?S) lit les gimbals analogiques et renvoie les valeurs via I²C. On peut ainsi brancher nimporte quel module Arduino low-cost ou un joystick récupéré.
4. Clavier 20 touches
bool read_keypad_mask(uint32_t &mask) {
Wire.beginTransmission(0x28);
Wire.write(0x80); // registre matrice tactile
if (Wire.endTransmission(false) != 0) return false;
if (Wire.requestFrom(0x28, (uint8_t)3) != 3) return false;
mask = Wire.read(); // 16 premiers boutons
mask |= Wire.read() << 8;
mask |= Wire.read() << 16; // touches spec + urgence
return true;
}
Les combinaisons (ex : touche 18 + appui stick gauche) déclenchent lenregistrement durgence évoqué dans la page Tools.
5. Profils firmware
void set_callback(controller_callback_t cb) {
s_callback = std::move(cb);
}
controller_callback_t drone_cb = [](const ControllerState &state) {
if (!state.rp2040_online) return;
// Mapper vers un paquet RC Wi-Fi / caméra PTZ
};
Chaque firmware (drone, caméra PTZ, jeux éducatifs) na quà brancher un callback différent. Les scripts Tools permettent de pousser ces firmwares sur demande.
Future illustration : carter Station?S + double gimbal + RP2040.