An autonomous submarine is an extremely versatile tool for simple underwater jobs. Many tasks can be executed in a safer way with robots, sparing life and limb of professional divers that once were the only option. This is now exclusive to submarines, today robotic systems can access most terrains where only humans went previously.

    Two functions are the core of any automated activity: Data input, and the capacity to act based on that data, in short, sensors and actuators.  For our sub, we decided to develop a shared circuit board that handles most parts of these functions. One advantage that this configuration has is the modularity, that gives us a degree of freedom on the positioning of the other boards in the robot. Beyond that, in case of a component failure, losing either one of those systems would be enough to abort a mission, which means they don't need to be independent in relation to technical issues.

    Our sensors/actuators board gathers several different systems. Starting with the sensors, we have a BMP180 [1], a BAR30 [2] and the leak detection system [3].

    The BMP180 sensor is directly connected to the board, near the microcontroller (ATMEGA328P), but all its communication happens through the I2C bus, independent of the ATMEGA. The BAR30 sensor is connected by wires to a header next to the BMP180 and it too uses the I2C bus. Both these sensors measure pressure, with the BMP180 being responsible for the internal air pressure and the BAR30 for the external water pressure.

    Evidently, the external pressure is mainly used to calculate the water depth of the AUV, and it allows for the precise 3D movement of the robot. As for the BMP180, a sudden change in internal air pressure could mean that there is a leak present in the hull, and the detection of that kind of failure has to be in high priority, since it could cause a total loss of the vehicle. With that information, the AUV can quickly decide to emerge and save all the components from water damage. Working together with that funcion, the leak detection system is composed by wires that connect to the pads near the border of the PCB [3]. Those wires connect to a few sponges around the body of the robot, and if at any moment they become wet, a circuit is closed and the robot knows it has to emerge from the water immediately.

    In relation to the actuators, we have two: The arm [4], and the torpedo/balls system [5]. Starting with the torpedoes, they're one of the activities our AUV needs to be capable of as a task. The microcontroller simply emits a signal, and through a transistor, connects one of the bornes with 12V and GND, releasing a torpedo on the outside of the sub. The ball releaser is very similar, but made to work with a solenoid release system. Differently, the arm is much more versatile. The board simply supplies a header with 12V and GND, and a third pin is connected to a PWM signal that will be interpreted by a different board and become movement in a claw mounted outside.

    There are also the expansion headers, each unused pin in the ATMEGA gets a header pin, allowing certain new functions to be added in later. For example, one fo these headers is configured just like the arm header, allowing the easy addition of another independent arm to the submarine.

    As an external connection, There is a 24-pin ATX connector, that connects to a backplane, common to every board in the robot. It follows a symmetric pattern (SCL, SDA, 12V, 5V, 3V3, and GND) that is completely inversible, so that it is possible to change the orientation and position of the board within the robot, since the connector can go on either side of the board and facing in either direction. In that connector, SDA and SCL are refering to the I2C bus that communicates with the rest of the AUV.

... Read more »