KnowFlow
KnowFlow Automatic Water Monitoring device is an open source tool enabling everyone to have access to first hand water quality data with low cost.
https://github.com/KnowFlow/KnowFlow_AWM
Category: Natural Resources
Sub Category: Water Supply and Quality
Keywords
citizen-science iot-application water-monitoring water-quality
Last synced: about 24 hours ago
JSON representation
Repository metadata
KnowFlow Automatic Water Monitoring device is an open sourced tool enable everyone having access to first hand water quality data with low cost.
- Host: GitHub
- URL: https://github.com/KnowFlow/KnowFlow_AWM
- Owner: KnowFlow
- Created: 2017-06-08T03:50:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-12-05T09:49:57.000Z (about 1 month ago)
- Last Synced: 2025-12-20T19:27:50.852Z (19 days ago)
- Topics: citizen-science, iot-application, water-monitoring, water-quality
- Language: C
- Size: 10.3 MB
- Stars: 95
- Watchers: 23
- Forks: 41
- Open Issues: 8
- Releases: 0
-
Metadata Files:
- Readme: README.md
README.md
This branch is for ongoing development
KnowFlow - an open source river quality meter with Arduino
KnowFlow is an open source water monitoring device and an education program.
For the device part, KnowFlow is designed for environmental activists, researchers, students... anyone
who wants to know the water quality using low cost and customized tools. It is based on Arduino Uno and
can currently monitor 5 parameters: Temperature, pH, ORP, Electrical conductivity and Dissolved Oxygen.
The data is stored on a micro SD card and can be read directly on phone by bluetooth (except for Dissolved Oxygen).
All the modules are easy to change or add. Most of the sensors used are from DFRobot and Atlas Scientific,
the main 2 sensor suppliers for Arduino users.
Supported Hardware Platforms
- Arduino Uno (primary platform)
- Arduino Mega 2560
- Arduino M0
- ESP32 ✅ (see ESP32 README)

For the education program, KnowFlow is an 8 week online course and a learning group hosted on
Greenseed Project platform. During the course, we cover the fundamentals of water quality, indicators of water quality,
Arduino and monitoring systems and show you how to build your own monitoring system based on Arduino. In addition to
the 5 included in the KnowFlow kits, you can add other environmental sensors, such as carbon dioxide, ozone,
dust, light, temperature, or humidity sensors, then add GPS and a communication module to connect data from a distance.
Step by step demos in the course walk you through the learning process.
This page is a collective information for KnowFlow, it can also be found on github, Youku.
Will release this series video tutorial on youtube later soon!
KnowFlow Hardware
A complete list of components, measurements, drawings, and other specifications can be found here.
DFRobot also offers a KnowFlow starter kit.
Central Control Unit:
- Arduino Uno (DFRobot Bluno in this case) and
- Expansion Shield (DFRobot Expansion Shield V7.1 in this case)
- real time clock circuit board
Water Sensors:
- pH (pH probe and pH circuit board)
- EC (EC probe and EC circuit board)
- ORP (ORP probe and ORP circuit board)
- Temperature (temperature probe and temperature circuit board)
- Dissolved Oxygen (DO probe, BNC and circuit board)
Data Storage:
- Micro-SD module
- Micro SD card
Fit and finish:
- Mounting plate
- Water proof box(200mm_150mm_75mm)
- Water proof bushing
Other parts:
- Wires
- Bread board
- Bolts and nuts
- Screws
- Battery
- Double-sided adhesive
- Write on tape
- Basic hand tools
- Spiral cable wrap
Installing KnowFlow Firmware
KnowFlow is designed for beginners. You don't need to have experience with Arduino or software development.
KnowFlow is packaged with supporting software libraries to make it easier for you to enable different sensor features
for your application. Feel free to post your software questions on our wiki page on public lab or github.
Firmware Versions
This repository contains multiple firmware versions for different hardware configurations:
1. ArduinoUnoDo
- Location:
ArduinoUnoDo/WaterMonitor/ - DO Sensor: Uses Serial port communication (Rx(0), Tx(1))
- Best for: Atlas Scientific DO sensor or similar serial-based DO sensors
- Note: DO sensor uses Serial port, which may conflict with USB debugging
2. ArduinoUnoGravityDo
- Location:
ArduinoUnoGravityDo/WaterMonitorDo/ - DO Sensor: Uses analog pin A0 (Gravity DO sensor)
- Best for: DFRobot Gravity DO sensor
- Features: Includes calibration support for pH and EC sensors
- Recommended: This is the most feature-complete version
3. ArduinoESP32
- Location:
ArduinoESP32/WaterMonitorESP32/ - DO Sensor: Uses analog pin GPIO33 (Gravity DO sensor)
- Best for: ESP32 development boards
- Features:
- Uses ESP32's 12-bit ADC for higher precision
- Compatible with all 5 sensors
- Ready for WiFi/IOT features (planned)
- Note: Requires ESP32 board support in Arduino IDE
4. Firmware (Legacy)
- Location:
Firmware/WaterMonitor/WaterMonitor/ - Status: Legacy version, contains compiled binaries
- Note: Use for reference only
Installation Steps
-
Download Arduino IDE (version 1.8.2 or later)
- Download link: https://www.arduino.cc/en/Main/Software
-
Download KnowFlow code
git clone https://github.com/KnowFlow/KnowFlow_AWM.git -
Choose the appropriate firmware version
- For ESP32: Use
ArduinoESP32/WaterMonitorESP32/(see ESP32 README) - For Gravity DO sensor (Arduino Uno): Use
ArduinoUnoGravityDo/WaterMonitorDo/ - For Serial DO sensor (Arduino Uno): Use
ArduinoUnoDo/WaterMonitor/
- For ESP32: Use
-
Install required libraries
- Copy libraries from
Firmware/libraries/to your Arduino IDE libraries folder - Or install OneWire library via Library Manager: Sketch → Include Library → Manage Libraries → Search "OneWire"
- Copy libraries from
-
Configure your hardware
- Edit
config.h(orConfig.h) to match your sensor pins and calibration values - Enable/disable debug output by uncommenting
DEBUG_AVRorDEBUG_M0
- Edit
-
Upload to board
- Open
WaterMonitor.ino(orWaterMonitorDo.ino) in Arduino IDE - Connect your Arduino Uno board
- Select Tools → Board: Arduino Uno
- Select Tools → Port: (your USB port)
- Click "Verify" then "Upload"
- Open
FAQ
Q: Why can't I verify the code?
A: The IDE may be missing a library, most often OneWire.
Install the missing library from Sketch → Include Library → Manage Libraries. Search "OneWire" then install it.
Q: Which firmware version should I use?
A:
- Use ArduinoUnoGravityDo if you have DFRobot Gravity DO sensor (recommended)
- Use ArduinoUnoDo if you have Atlas Scientific or other serial-based DO sensors
- Check your DO sensor documentation to determine which type you have
Q: How do I calibrate the sensors?
A:
- Edit
config.h(orConfig.h) in your firmware directory - Set
PHOFFSETfor pH calibration offset - Set
ECKVALUEfor EC sensor K value - Re-upload the firmware after calibration
Q: Can I use both Serial DO and Gravity DO?
A: No, you need to choose one firmware version based on your hardware. The two versions are incompatible due to different DO sensor interfaces.
Q: How do I enable debug output?
A:
- Open
config.h(orConfig.h) - Uncomment
#define DEBUG_AVRfor Arduino Uno/Mega - Or uncomment
#define DEBUG_M0for Arduino M0 - Re-upload the firmware
How to build KnowFlow
Instructions are available here.
How to contribute:
See this tutorial.
- Fork the repository!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request
About Branches
master is the current stable release.
development is the research version. It has experimental features that are not fully tested. For example, IOT
integrations, new sensors, etc.
test is for the team to practice with github. We will delete when we figure out how to use github. (We are newbees
to github, so please forgive any stupid errors. Suggestions are welcome!) :)
To DO List
- Support DO Sensor from DFRobot
- Modify the construction of the files system
- Code cleanup and configuration unification
- Add YouTube video tutorial
- Website setup (www.knowflow.org)
- IOT feature
- Calibration function (partially implemented in ArduinoUnoGravityDo)
- ESP32 support (basic sensor functionality)
- ESP32 WiFi/IOT features
- Low power function
Contact
Email addresses for the KnowFlow team.
- Rockets Rockets.xia@dfrobot.com
- He Shan shanh0510@gmail.com
- Lauren Lauren.pan@hotmail.com
- Jason jason.liang@dfrobot.com
Documents
- Tutorial
- GreenSeed online courses
- Application:非洲茶园水质调研
- Application:Willow Creek Water Quality Monitoring
- KnowFlow Special Design
License
All KnowFlow related materials are released under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
This project has benefited from the support from the following funders:
- GreenSeed Foundation
- Mushroom Cloud Maker Space
Owner metadata
- Name: KnowFlowTeam
- Login: KnowFlow
- Email: shanh0510@gmail.com
- Kind: organization
- Description: KnowFlow focus on providing the low cost and technically advanced tools to improve the ability of solving Increasingly serious environment and issues.
- Website: https://publiclab.org/wiki/knowflow
- Location: China
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/29268263?v=4
- Repositories: 2
- Last ynced at: 2024-05-02T14:24:54.447Z
- Profile URL: https://github.com/KnowFlow
GitHub Events
Total
- Watch event: 11
Last Year
- Watch event: 9
Committers metadata
Last synced: 3 days ago
Total Commits: 97
Total Committers: 5
Avg Commits per committer: 19.4
Development Distribution Score (DDS): 0.567
Commits in past year: 1
Committers in past year: 1
Avg Commits per committer in past year: 1.0
Development Distribution Score (DDS) in past year: 0.0
| Name | Commits | |
|---|---|---|
| Rockets_cn | r****n@g****m | 42 |
| Shan | i@s****e | 21 |
| Jason | 9****8@q****m | 21 |
| Jonathan Raviotta | j****a@g****m | 10 |
| Lauren | l****n@h****m | 3 |
Committer domains:
Issue and Pull Request metadata
Last synced: about 1 month ago
Total issues: 9
Total pull requests: 23
Average time to close issues: about 20 hours
Average time to close pull requests: 2 days
Total issue authors: 2
Total pull request authors: 5
Average comments per issue: 0.78
Average comments per pull request: 0.7
Merged pull request: 9
Bot issues: 0
Bot pull requests: 0
Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- jraviotta (7)
- rockets-cn (2)
Top Pull Request Authors
- Frankie34 (12)
- jraviotta (7)
- rockets-cn (2)
- HMLeao (1)
- cnlg (1)
Top Issue Labels
- enhancement (3)
- Community (2)
Top Pull Request Labels
Score: 6.244166900663736