Small submersible equipped with sensors to read local temperature, pressure, accelerations, and angular velocities.
- Community of Practice's STEM-related project from Fall 2023 - Spring 2024.
- There is an educational motif present throughout the code base.
- If a current CoP group would like to change and use this code base themselves, feel free to let me know.
Version History
Version 0.1.0 (11/2023) - T. W. Herring
- Code to control motors, read temperature and pressure data, and read/write to SD card.
- Code to calculate depth based on pressure; logs sensor data to a .csv.
Version 0.1.1 (02/2024) - Damian Contreras
- Pin numbers #define'd, maximum file count raised to 9999, each component separated into their own .h file.
- Pressure calculation slightly modified based on sensor documentation voltages.
Version 0.2.0 (04/2024) - Damian Contreras
- Physical class added to hold position, velocity, acceleration, angle, and angular velocity, and update all of them.
- MPU-6050 functionality added; pitching submersible vertically toggles it on/off in a test loop.
- Many files call this autonomous submersible a Remote Operated Vehicle. As it turns out, communicating through even a meter of water is difficult, but "ROV" stuck.
- Programming is done with the Arduino IDE and an Arduino microcontroller. Arduino's language is most similar to C++, but not everything from C++ (notably the standard library) is native to Arduino, so keep that in mind.
- Feel free to download the repository to test the code base or learn with it in your spare time. It is also recommended you borrow Arduino-compatible devices and look up how to get them to function; solid for general programming familiarity.
Device | Purpose | Links |
---|---|---|
Arduino Uno Rev3 | Microcontroller | Datasheet |
TB6612FNG | Motor Controller | Datasheet |
??? | 12V Waterproof Motors (x2) | |
MPU-6050 | 3.3V Accelerometer, Gyrometer | Datasheet Registers |
MicroSD Breakout board+ | 5V SD Card Reader | Tutorial |
DS18B20 | 5V Waterproof Temperature Probe | Datasheet |
5V Pressure Sensor (Old) | Datasheet | |
??? | 5V Waterproof Pressure Sensor | Store |
- The MPU-6050's acceleration is now exclusively returning 1 instead of something over its full range [-32768, 32767].
- Extremely tiny changes to mass distribution cause leaning, affecting movement.
- The wires are shockingly loose; ideally they should be soldered when you're confident in your setup.
- The pressure-sensing code only applies to the MPX4250A (and even then it may be off), not the bulky waterproof guy. Gather some experimental data like was done with the MPU-6050.
- Having to call a function twice to access a register (unless that's intended in the library, not sure).
- Buoyancy control, or another vertical movement method? Below consideration is relevant to your chosen method.
- Either way, will you need to upscale to an Arduino Mega? You will if you add another motor or servo or digital pin-heavy chip.
- Depending on that, and any additional sensors, what do you want to use as the hull? Unsure whether hot glue for plastic holes or resin for resin holes is better.
- Do you have enough people to delegate into specific enough roles? Speaking from experience, try to have "task forces" (I didn't push that agenda, but maybe should have).