Introduction: Water Monitoring System (Arduino Uno) WIP

About: For coding and Arduino tutorials covering various different areas.

This system serves as my iteration of a low-cost water monitoring device within a small form factor. Inspiration for this design derived from a Science Olympiad event called Water Quality. What was initially just a salinity meter, evolved into this system that detects the temperature, pH, and turbidity of any water source.

Step 1: The Materials

Here's what you need to complete this project.

Parts List

  • Arduino Uno
  • Arduino Program
  • Breadboard
  • Cardboard Box
  • Fritzing Program
  • Heat-Shrink Tube
  • Jumper Wires
  • GPS Module
  • LCD Module
  • SD Card Module
  • pH Sensor
  • Temperature Probe
  • Turbidity Sensor

Tools List

  • Adhesive
  • Heat Gun
  • Scissors
  • Solder
  • Soldering Iron
  • Tape
  • Wire Strippers

Step 2: Setting Up the Box

This monitor is very light weight and versatile in form factor. Begin by finding a chassis to store the entire contraption (at least # cubic inches) and cutting out the necessary holes (1 # x # inch rectangle and 1 # inch diameter circle) for the LCD Module and the sensors to be able to function properly. In my example, I modified a cardboard box for my chassis.


  1. Find a container to store the system that is at least (# x # x # inches)
  2. Cut out 2 holes (# x # inch rectangle and # inch diameter circle)

Step 3: Setting Up Arduino & Breadboard

After the chassis has been selected and correctly modified, connect the Arduino 5V and GND holes with jumper wires to the + and - bus lines (the holes along the long red line for + and the holes along the blue line for - ). Now the breadboard will be powered when the Arduino is on and this will be the foundation for the rest of the components.


  1. Connect Arduino 5V and GND holes to the + and - bus lines that you will use on the bread board.

Step 4: Linking the Sensors

All of the three sensors in this project use a 3 wire design, with the red wire connecting to power, the black to ground and the yellow/blue connecting to their respective input pin. The Temperature sensor input wire connects to #, the pH sensor input wire to #, and the Turbidity input to #. If necessary, use a soldering iron and solder to create a solid connection and heat-shrink tubing to add to the structural integrity of the connection.


  1. Connect the sensors onto the breadboard, red to the + bus line, black to the - bus line, and yellow/blue to the correct input slots on the Arduino.
  2. Temperature Slot: ??, pH Slot: ??, Turbidity Slot: ??
  3. Solder wires together and use heat-shrink tubes to build a better connection with breadboard.

Step 5: Connecting the Modules

All the modules in this project have different types of connections and therefore interfaces with the Arduino in a different manner. SDA goes to A4 and SCL goes to A5 for the LCD. RXD goes to digital pin 6 and TXD goes to digital pin 7 for the GPS. CS goes to digital pin 4, SCR goes to digital pin 13, MISO goes to digital pin 12, and MOSI goes to digital pin 11 for the SD card module. For all modules, VCC connects to power and GND goes to ground. If necessary, soldering iron and solder should be used to connect the wires to the modules to insure a solid connection.


  1. Connect all module VCC lines to + bus line and GND lines to - bus line.
  2. Connect the SDA to A4 and SCL to A5 for the LCD Module.
  3. Connect RXD to digital pin 6 and TXD to digital pin 7 for the GPS Module.
  4. Connect CS to digital pin 4, SCR to digital pin 13, MISO to digital pin 12, and MOSI to digital pin 11 for the SD Card Module.

Step 6: Putting the Hardware Together

With the wiring between all modules and sensors all complete, you can now place the Arduino and components into the chassis. The organization doesn’t matter as long as the LCD has access to the rectangle cutout from Step 1 and the sensors can go through the hole cutout from Step 1.


  1. Place the components into your chassis from Step 1, making sure sensors have access to the circle cutout and LCD has access to the rectangle cutout.

Step 7: Uploading the Code

The code is the most integral part of this entire system, that tells the Arduino how to manage the signals and convert them into readings that can be displayed and stored. Below I have displayed an annotated picture of the code that will attempt to explain every part and its purpose. You can just copy paste this code into the Arduino program and using the USB cord that connects to the Arduino Uno, upload it into the micro controller.


  1. Copy and paste code (modify, if desired) into the Arduino program and upload to Arduino Uno board.

Step 8: Finishing Touches & Extensions

With the completed device, any readings from the sensors will be stored to the SD card that is inserted into the SD card module with a certain format. This data can then be compiled into a Google Map as shown by the link below to better graphically represent the demographic of water in the local area.


  1. Collect and document data from the device in any way you choose.

Step 9: Completion!

The system is now complete and will now take the temperature, turbidity, and pH of any water source.

There are a multitude of other possibilities of what can be done with this water monitoring system that are just waiting to be explored. It would be interesting to see how you decide to use this project towards accomplishing your own goals.

Congratulations on finishing this tutorial!