Work in progress This site is under construction — content, figures and specifications are provisional.
5 — Hardware

A phone, an IMU,
and not much else.

FlySys Swiss PFS is built around an external Bluetooth LE inertial measurement unit for clean, repeatable attitude — with the phone's own sensors as a fallback.

System§1 — How it fits together.

The external 10-DOF (ten degrees of freedom) Inertial Measurement Unit (IMU) streams over Bluetooth LE straight to the Android device, which does everything else — calibration, attitude estimation, the display, logging and GPS. An ESP32-S is optional (battery-voltage monitoring today, a data or TCP gateway later) and can be left out.

Fig.01 — System block diagramIMU → BLE → Android
10-DOF IMU Inertial — accel, gyro Magnetic Barometric Temperature ANDROID DEVICE Calibration Attitude — CF, Madgwick, ESKF Display & graphics (OpenGL) CSV data logging GPS sensor BLE ESP32-S — OPTIONAL battery, TCP gateway
Main path: 10-DOF IMU ↔ BLE ↔ Android. The ESP32-S is optional and may be omitted.
Primary path§2 — Waveshare 10-DOF.

A dedicated 10-degree-of-freedom IMU mounted to the airframe streams accelerometer, gyroscope, magnetometer and barometric data over Bluetooth LE. Keeping the sensor off the phone means attitude no longer depends on how the device happens to be propped on the panel.

ConnectionBluetooth Low Energy (high-speed mode)
Stream rate30–250 Hz, configurable in 10 Hz steps (250 = firmware maximum; can follow the display refresh rate)
Mountingphysical preset — 6 positions (FLAT default)
Extrasbattery-voltage reader over BLE
Fig.02 — IMU body frameFLAT preset
IMU x: forward y: left z: up
The board's own right-handed frame — FLU (Forward‑Left‑Up): x forward along the nose, y to the left, z up. This is the FLAT preset. The app supports the six mounting presets; the chosen preset tells the IMU how the board is fixed, so the fused output stays in this frame regardless of the physical mounting.

In Settings you pick the physical mounting preset — which face the board rests on: FLAT (default), UPSIDE‑DOWN, NOSE‑UP, NOSE‑DOWN, LEFT/RIGHT‑EDGE‑DOWN. The preset is written to the IMU so its fused output stays correct; a wrong one would invert gravity. It is not a compass or earth-frame switch — only physical compensation. Heading comes from the magnetometer (absolute), so it is correct on the main filters regardless of preset. When setting a preset, point the nose (X axis) at North — this zeroes the firmware's internal heading reference; after any mounting change the app re-Aligns automatically.

The device§3 — Any modern Android.
Android7.0 or newer
GraphicsOpenGL ES 3.0
RadiosBluetooth LE for the IMU path
Fallbackinternal accel, gyro, mag, baro

No Bluetooth hardware? The internal-sensor, simulator and replay paths run on an emulator, so you can try the full display before wiring anything up.