Inspiration

As a team, we were inspired by underwater robotics and its capability in detection and sensing in aquatic environments. We saw an earlier implementation of the project last year as part of Buildathon 2024 from members of our society. We adapted an idea that was mainly mechanical-leaning, focused on soft robotics, to be more software-heavy. We make use of commands from an ESP32 to control each fin of the fish directly, as well as the speed using a PS4 controller. All team members have had some experience with projects in the past and wanted to challenge ourselves with a project that included a new but significant factor of water. In early research, we have also seen implementations of the robotic fish idea created by institutions like MIT and wanted to see if our team could achieve a similar feat.

What it does

So far, in the early design stages, RoboFish responds directly to commands from a PS4 Controller through the use of transmitter and receiver ESP32s. We have mapped certain buttons of the fish to perform different commands. The left back buttons of the controller are responsible for controlling the left angle of the fin, where the opposite is true for the right back buttons. The fish maintains a constant velocity due to the back fin, which is the most powerful servo in the whole build. Furthermore, to exert further control, we implemented state machines to increase the user interface and to segment our codebase better to be more efficient.

How we built it

We built the project first by deciding on communications. Through thorough testing, we decided that we would need 2 Arduinos for a transmitter and receiver but decided to change to ESPs to make use of the inbuilt Bluetooth module. The receiver module would be placed in the electrical housing of the fish structure with the battery and wiring. For waterproofing, we relied heavily on silicone for patching up gaps in the build onto our 3d printing shell. We would have one wire extending from the chassis connected to the transmitter ESP32, allowing for a remote-controlled robot.

Challenges we ran into

Challenges we ran into were the implementation of our state machine. And configuring our devices to run 2 ESP32's simultaneously and ensuring they were in communication with each other. Another issue was sourcing components, especially those that are waterproof. Components that had an IP68 rating usually came at a higher cost than those without. We also encountered unexpected shipping delays, which delayed our progress significantly, especially when it came to getting communications sorted out. We also found it hard to fit all the electronic components flush within the fish exterior and had to make CAD modifications close to the showcase deadline.

Accomplishments that we're proud of

  • Implementation of State Machine
  • Waterproofing
  • Communication between transmitter and receiver ESP32's
  • Team contributions, meeting deadlines, and showing up to meetings

What we learned

We learned more about C++ and the different libraries to use for using PS4 controllers with ESP32. We also learned more about using the PlatformIO extension which enables us to program and run Arduino files within VS Code, which makes it easier to move around different folders without wasting time. We learnt more about waterproofing methods, which involved us using silicone moulds. We have also extended our skills when it comes to building and debugging electrical circuits, and the same can be said for Arduino programming.

What's next for RoboFish

For the rest of this term and the rest of the year, our team wants to try to implement an autonomous version that can move in response to feedback. We also had ideas for camera implementation that can provide feedback images that the fish is detecting underwater. As this is a society project, we hope that at the end of the year we would be able to pass on our knowledge to the team in 2027 and they can make improvements to our initial design. We believe our fish design could be made more compact and our supply of power could be more efficient.

Built With

  • 3dprinting
  • c++
  • esp32
  • fusion
  • lasercutting
  • mechanicalservos
  • platformio
  • soldering
  • waterproofing
Share this project:

Updates