Firmware for an autonomous wave-measurement buoy (ATmega2560-based WII5 v2 board). Reads wave motion from a Sparton AHRS-M1/M2 IMU, samples GPS and battery state, and reports back over Iridium SBD satellite telemetry. Originally developed 2012-2024. This is the first public release. Code, documentation, and field-tested operating modes (Capture, Sleep, Position, ManualTest, SelfTest, LowBattery) are licensed under Apache 2.0 — see LICENSE and NOTICE. See README.md for an overview and build instructions, CONTRIBUTING.md for how to contribute, and DEPLOYMENTS.md for the field-deployment log.
1.6 KiB
External References
Vendor documentation that the WII5 buoy firmware was developed against. These documents are not redistributed in this repository (their licensing is unclear); refer to the vendor sites for current copies.
Iridium 9602 / 9603 SBD modems
Used for satellite telemetry. Key reference is the Iridium 9602 / 9603
SBD Transceiver Developer's Guide (AT-command set, SBD message lifecycle,
binary message framing for +SBDWB / +SBDI).
- Iridium developer portal: https://www.iridium.com/services/iridium-sbd/
- Search the Iridium partner network for the current "9602/9603 Developer Guide" PDF.
Relevant code: WII5Iridium.cpp, WII5SerialManager.cpp (+SBDWB,
+SBDI, +CSQ parsing), WII5BinData.* (340-byte message format).
Sparton AHRS-M1 / AHRS-M2
Used as the primary IMU / wave-motion sensor. Key references:
-
AHRS-M1 / AHRS-M2 Software Interface Control Document
-
AHRS-M1 / AHRS-M2 Hardware ICD
-
NorthTek Programming Manual (Sparton's Forth-like configuration language; the
programLine()helpers inWII5SerialManager.cppemit NorthTek commands). -
Sparton (now Bel Power Solutions / part of Bel Fuse) documentation: https://www.belfuse.com/
Relevant code: WII5Sparton.cpp, WII5Setup.cpp (compass/AHRS init).
Other components
- Dallas DS18B20 — temperature sensor:
https://www.analog.com/en/products/ds18b20.html
(Used in
WII5Weather_18B20.cppvia the OneWire / DallasTemperature Arduino libraries.) - TinyGPS++ — NMEA parser library: https://github.com/mikalhart/TinyGPSPlus
- u-blox NEO-6M / NEO-7M — GPS module datasheets (NMEA reference): https://www.u-blox.com/