Mirovia BIMS is my pet project — a Boat Information and Management System for my small 26-foot sailboat, Mirovia II. It began in 2021 with my first sailboat, Mirovia, but due to other events and relocation, it was put on hold. I returned to the project in mid-2024, and I’m now slowly making progress.
The initial idea was to try to “digitize” a pretty old sailboat by using available cheap components and a DIY approach. Later, it developed into something more sensible: to make a system that supplements main navigational tasks — something like an infotainment system of cars, that is a supplement to all the major and mandatory indicators and tools of the car.
Also, it is a playground for my UI kit and information processing/visualization experiments.
Use cases
Multiple use cases were defined, separated for onboard and onshore activities:
During sailing and other onboard activities
- To be a universal instrument and provide information about GNSS motion parameters, wind, speed through water, roll, pitch, etc.
- Using a magnetic compass as a heading indicator with automatic inclination and deviation corrections.
- Show environmental and weather parameters, like air temperature, pressure, humidity, including weather forecasts from the Internet.
- Show AIS information from my old AIS NMEA 0183 receiver, and provide CPA/TCPA alerts
- Be a VDR (Voyage data recorder), i.e., record all the sensor information for further playback and visualization of trips.
- Send this information to the server, so my relatives and friends can see my position and trip details in real time.
- Get the status of batteries and solar panels
When I am not on the boat
- Remote monitoring of the boat state, including power, environmental parameters, severe motions because of bad weather, water leaks, and pump working time.
- Remote anchor watch monitoring when I leave the anchored boat with the dinghy.
- Planning trips.
- Making trip reports.
Architecture
The system is expected to contain:
- Onboard part:
- ESP32 and Arduino boards with sensors
- Raspberry PI for onboard server and cockpit display
- A web server to collect data and display it.
- A desktop application on the laptop.
- An optional mobile application for quick data access on the go.
Because I was interested in a full understanding of the algorithms and existing data exchange protocols, I didn’t want to use any external libraries. I am not a professional developer, so I used pretty old or niche frameworks that I used to work with before: Qt/C++ for onboard server and desktop applications, PHP for web server, and generic C++ for Arduino/ESP32.