Electrical components

List of components

Component Quantity Remarks
15V DC Motor 2 These control the propellers
Servo Motor 4 2 of them have been modified to be continuous to control container spools, and the other 2 (unmodified) control bicycle brakes
Arduino Mega 2560 1
SparkFun GPS Shield 1
Bluetooth Module 1
TIP110 8 NPN transistors. For the H bridges, 2 per H bridge.
TIP115 8 PNP transistors. For the H bridges, 2 per H bridge.
1kΩ Resistor 25 24 for the H bridges, 6 per H bridge. 1 for the voltage divider used for the Bluetooth Module.
2kΩ Resistor 1 For the voltage divider used for the Bluetooth Module.
47μF 16V Capacitor 4 For the H bridges, 1 per H bridge.
Multi-core wires 3 Black, red and white. Flexible wires, 7 strands, 0.2mm diameter, 5 metres long for each colour.
Breadboard 1


The maximum current flowing through the circuit is about 2A.


Arduino code

The code is publicly available on GitHub: https://github.com/AjayPillay/Imp-Bot

The Arduino code handles motor control as well as serial communication for the Bluetooth module and GPS Shield with the Arduino board. The code at GitHub is fully commented, do visit the page to read through how the program works.

Android application

The Android application can be downloaded here – http://is.gd/yuRdi5 or alternatively, you can scan the QR code below:


MIT App Inventor

app1blocks (1)

The first picture above shows the main screen layout in MIT App Inventor, while the second picture shows the block code. The block code is responsible for everything that goes on in the background of the app.  You may click on the pictures to view them in their original sizes.



The first picture above shows the Log screen, and the second shows the block code for the log screen.

This application allows the user to have full control over Imp Bot’s water collection and navigation capabilities. It allows for two-way communication between the Arduino board on Imp Bot and the Android application via Bluetooth. The block code deals with how the information is received, and subsequently carries out string manipulation in order to display the water sampling location coordinates neatly for the user. It makes use of a TinyDB database to store this information as the data persists across application sessions.