• EUR€
  • £GBP
  • $USD
TUTORIALS ArduinoGravityIoT

Build KnowFlow: automatic water monitor

DFRobot Sep 04 2017 5981

For a couple of months, I'm in Shanghai, working with DFRobot, a robotics and open-source hardware provider company, to develop an open-source automatic water quality monitoring device that could be used for Pearl River monitoring.


Background in environmental investigation NGO, my knowledge of electronic development is very limited. Hopefully, this document could help people like me to easily understand and replicate such a tool.


KnowFlow is the name of this water quality monitoring device, based on Arduino Uno. It can automatically monitor 5 parameters of water: pH, Temperature, Dissolved Oxygen, Electronic Conductivity, ORP.


Currently, KnowFlow is powered by a 7.4V lipo battery, the data is stored in a SD card. The field test will be described in a separate research note.


DFRobot produces all the electronic components except for DO, which is produced by Atlas Scientific (btw, all the DFRobot's products are open source), most of the materials I listed are made by them.


Prepare the materials


The size, modal, drawings, and other specifications of the materials can be found here at google docs.



  1. Download Arduino IDE
  2. Download Knowflow code from KnowFlow github
  3. find "WaterMonitor.ino" from the downloaded file, open it with Arduino IDE
  4. Connect your Arduino Uno board, in menus, select "Tools - Board: Arduino Uno", and "Ports - /dev/cu.usb..."
  5. click "Verify", than "Upload" the software to your board.



We need to connect all the sensors, MicroSD card module to the Arduino, then fixed it to the plate and the waterproof box, connected to the power supply.

Those who are familiar with the Arduino could directly read code annotation

1. Connect the circuit board and other modules to the Arduino expansion (I / O Expansion Shield V7.1)

  • Connect EC: Plug one end of the "orange-red-black" cable to the EC circuit board, other end to the IN terminal of the isolation module. Plug the white end of the "blue-red-black" cable to the OUT terminal of the isolation module, the black end to Analog port A1, note the color should be matched.
  • Connect the pH: Plug the white end of the "blue-red-black" cable to the pH data transfer board, the black end to port A2.
  • Connect ORP: Like EC, Plug one end of the "orange-red-black" cable to the EC data adapter and the other end to the IN terminal of the isolation module. Plug the white end of the "blue-red-black" cable to the OUT terminal of the isolation module, and the black end to the A3
  • Connection temperature: Plug the white end of the "green-red-black" cable to the Plugable Terminal V2, and the black end to Digital Port D5
  • Connect the dissolved oxygen DO: The connection of the dissolved oxygen is bit complicated. Using four wires and breadboard to connect DO to the serial port (connection principle is GND-GND, VCC-VCC, TX-RX, RX-TX)

Note! Very important! Each time you re-upload the program to Arduino, you need to pull out the Rx (0) Tx (1) cable, and re-plug it after uploading. Otherwise it can not be programmed successfully.

  • Connect the Real Time Clock (RTC) module: Plug the white end of the "blue-green-red-black" cable to RTC, and the black end to the blue I2C interface (you might need to wrap the line in case it's too long)
  • Connect the MicroSD card module to the blue SD card slot (note the direction) and insert the Micro SD card

Great!!! All sensors are connected!

Tips: You can use the write-on tape to mark different sensors to avoid confounding, and wrap the analog cables and DO cables respectively to avoid clutter.


2. Place the mounting plate to the waterproof box

(The drawing of the mounting plate is here at GitHub )

Find the mounting plate, bolts and screws, install the hexagonal column to the small holes. The nylon column is mounted on the front of the board and the nut is mounted on the opposite side. Among which, the 4 Arduino fixing hole requires 6mm nylon column, which the rest requires 4mm nylon columns. You can use a small wrench to help tighten.

Use two 4mm screws to secure the board in the waterproof box. (Some waterproof box might conflict with the lower right column, it can be removed in this case)


3. Attach the electronic components to the mounting plate

  • Since the DO module is more difficult to install, so we should install it first. (it can also be soldered). Attach the double-sided adhesive tape under the DO breadboard. Pass BNC interface from the circuit board through the hole, adhere the breadboard.
  • Fix Arduino Uno, place the Arduino expansion board.
  • Pass the BNC of ORP's circuit board though the rightmost hole of the waterproof box, fix it to the mounting plate with screws, install EC and pH in the same way.
  • Adhere the two isolating modules to the top right of the mounting plate by tape.
  • Fix RTC
  • Now, only left temperature module. Tighten the waterproof connector to the round hole outlet of the temperature probe
  • Then, the temperature probe has a bare end of the line, followed by waterproof connector cover and round hole,
  • There are three "gates" in the front of the temperature signal adapter board. Press the button above, and the "gate" will open. Plug the yellow wire in the A gate, the red wire to B gate, black wire to C gate. Try to pull out the three wires respectively to make sure there're fastened after plugging in.
  • Use a screw to secure the temperature signal adapter board to the board and tighten the waterproof connector nut on the housing.
  • In-box part is completed, now connect the battery to test whether the installation is correct. If the light turns on, it means that the circuit is normal.
  • Close the box and connect each probes.




The field test of this device will be written in a separate research note.


This research was made by shanlter published on publiclab.org.