I'm building an Online Controlled Aquarium Submarine

What is it?
Imagine you can access a website and control a tiny submarine with W,A,S,D for movement, and camera controls while watching the video on your screen, but the submarine is into a real water tank with living creatures and amazing decoration where you have the relaxing and mysterious feeling of being in the ocean depths navigating and exploring marine life.
Sounds amazing, doesn't? That's what I'm building! 🙂
Let's step back a little bit first.
I'm Fabio! Professionally I'm a software engineer but on my free time I love building stuff, especially robotics related.
I started working on this project recently, it began with a mix of ideas from things I like as RC, robots, software development in general and the Sea of course, I'm fascinated by how the underwater world behaves and the creatures it hides.
Then I had this idea as "What if I can create a mini submarine that people can control over the internet?". Starting from that, I got thinking what would be the challenges and steps to achieve it, at least on a simple prototype project. A few things I can bring that would be required on the initial setup would be:
[Submarine]
- Camera
- Microcontroller (Arduino, etc)
- Motors for movement
- 3d Printed Parts
[Environment]
- Water Tank / Aquarium
- Fish
- Aquarium Decoration
- Water Pump / Filters
[Software & Services]
- Website / Home page
- Control & Streaming UI
- Backend for making Http Requests move the motors
- Ultra-low latency video streaming
The Engineering
Now, explaining a bit for each of those items.
Camera
We need a decent camera, at least something users can see the environment with a great quality, being able to look for details. Things like auto focus and light controls might become a strong requirement.
Microcontroller
The submarine will have many motors, and possibly other features as well, so those things need to be wired to something able to control them and also integrate on other technologies as well, for example an ESP32 connected to a server, or a Raspberry PI being the server and controlling motors etc.
Motors
Here we will have some fun prototyping the engine, how will the submarine move? How does the system operates underwater? 3D printing will save a lot of time and money here. I already have some ideas on how to build this but not giving spoilers too early, make sure to follow the project to keep yourself updated with latest news!
3D Printed Parts
The overall structure and big parts can be purchased on a couple different places, but there will be some need for small and customized shapes parts that would be a perfect case for 3d printing like specific gears, adapters, supports, cases, fittings etc.
Aquarium
For building the aquarium we need something relatively big, at least something that the submarine can move freely on the prototype tank. For the fish and decoration I'll not get much in details here but this is also a beautiful piece in this project.
Control & Streaming UI
The project needs a platform where users can connect with the web browser and use it in a simple way, like playing a game, but connected to the real submarine instead. The UI needs to be similar to a game where people can control things on intuitive ways.
Backend Server
This will bring some nice challenges to solve, like building the session service where users connect through browser and the server forward the inputs to the microcontroller. The interesting part of this will be the technologies used, should we use Web sockets? What about security? How do we control the user session limits?
Ultra-low latency video streaming
This is a critical part of the system as when users press a button, they want to see the submarine responding quickly to movements, luckily there are already services like CDNs that can simplify the content streaming on such latency requirements. But the challenges of connecting the camera to the CDN and programmatically assigning the stream to the user connected will be very interesting.
Prototype?
This scope is mainly focused on the prototype aquarium were we can understand what works better, fix problems early and improve based on feedback. First sessions would be based on a waitlist with invite only, but as soon it gets reasonably stable, more users can join. It's too early to think what could come after the prototype tank, but if the service gets user attention then sky is the limit (or the ocean haha).
The Community
Reading this far you already know the concepts and the main engineering stuff I'm going to work with. Now it comes the most important part for this project, at least for this moment.
Building a community!
I want to build an amazing product that people will really enjoy spending some time into. But not just that. I also want to share the entire journey!
I want to connect people that have common interests, so if you like at least one of these:
- Robotics & Engineering
- Software Engineering
- 3D Printing
- Aquariums & Sea Exploration
- Sea Games
Then you're definitely welcome to follow this project as you would probably like to read and participate on the development process.
By following this project you will not just have some fun and entertainment but will be able to learn a lot through many different fields of building software, engineering, aquariums and much more. There are also some exclusive benefits that followers will have, as primarily being a more direct contact where we can discuss and improve together the ideas and implementation.
So if you liked this project and want to support it, there are many ways you can help (If you have read to this point, I already thank you a lot!).
Free ways to help
- Subscribe for free to the email updates at ROVeye.com
- Clap for this article on Medium! (This is a free article)
- Share this post with someone that also like related technologies!
- Subscribe on my Medium profile
Paid ways to help
- Check the paid support at ROVeye.com (There are exclusive benefits)
