The Pi 5 was also prone to crashing during power brownouts, making it unreliable for the constant field conditions we face. On top of that, adaptive learning with AI was far more complex than anticipated. While AI excels in situations where it has access to pre-trained models (like object detection or language processing), teaching it to actively learn from real-time data in our marine environment proved difficult. The sheer amount of training data required to get the AI models functioning accurately was overwhelming and hard to gather in a sailing environment.
In the end, the Raspberry Pi 5 AI Kit ended up feeling like too much complexity for our relatively simple task of holding the buoy on station.
The ESP32: A Return to Simplicity
After wrestling with the AI kit, I decided to circle back to something simpler, more robust, and—most importantly—reliable: ESP32 microcontrollers. These little devices have a fraction of the power consumption of the Pi 5, but they’re much better suited for our needs. Low power, high reliability, and long battery life are essential when we’re out on the water for hours or days at a time.
I’ve now focused my attention on a new approach: using whole-number wind speeds and power percentages for station-keeping. The idea is simple: at 10 knots of wind, the buoy needs about 10% motor power to hold position; at 15 knots, it needs closer to 50%, and so on. By keeping things predictable and consistent, I can store these power settings in the ESP32’s memory and use them to actively adjust motor output based on real-time wind speed data. No need for complex AI algorithms—just straightforward logic based on known wind-to-power ratios.
Training Data and Refinement
During operation, the ESP32 constantly logs wind speed data in simple CSV files. These are automatically saved and updated every hour so I can later analyze the numbers in Excel. The goal is to refine the system day by day. Every time the buoy completes a session and I bring it back to the dock, the data is saved. This means I can review the performance at the end of the day, tweak the wind-to-power ratios if needed, and feed that refined data back into the system for the next sailing session.
At the end of sailing sessions, I can see patterns emerge: at 10 knots, we need about 10% power; at 16 knots, closer to 60%. This ongoing learning process is simple but highly effective. Instead of training a complex AI model, I’m letting the buoy learn from real-world, real-time data—but in a way that’s manageable, transparent, and easy to adjust.