{"id":20697,"name":"KnowFlow","description":"KnowFlow Automatic Water Monitoring device is an open source tool enabling everyone to have access to first hand water quality data with low cost.","url":"https://github.com/KnowFlow/KnowFlow_AWM","last_synced_at":"2026-04-07T14:30:19.138Z","repository":{"id":43764844,"uuid":"93705141","full_name":"KnowFlow/KnowFlow_AWM","owner":"KnowFlow","description":"KnowFlow Automatic Water Monitoring device is an open sourced tool enable everyone having access to first hand water quality data with low cost.","archived":false,"fork":false,"pushed_at":"2025-12-05T09:49:57.000Z","size":10837,"stargazers_count":95,"open_issues_count":8,"forks_count":42,"subscribers_count":23,"default_branch":"master","last_synced_at":"2026-03-27T19:02:50.968Z","etag":null,"topics":["citizen-science","iot-application","water-monitoring","water-quality"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KnowFlow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-06-08T03:50:23.000Z","updated_at":"2025-12-19T08:15:57.000Z","dependencies_parsed_at":"2022-09-17T00:10:26.757Z","dependency_job_id":null,"html_url":"https://github.com/KnowFlow/KnowFlow_AWM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KnowFlow/KnowFlow_AWM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KnowFlow","download_url":"https://codeload.github.com/KnowFlow/KnowFlow_AWM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31139842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T08:59:23.639Z","status":"ssl_error","status_checked_at":"2026-03-29T08:57:18.852Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"KnowFlow","name":"KnowFlowTeam","uuid":"29268263","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.","email":"shanh0510@gmail.com","website":"https://publiclab.org/wiki/knowflow","location":"China","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/29268263?v=4","repositories_count":2,"last_synced_at":"2024-05-02T14:24:54.447Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/KnowFlow","funding_links":[],"total_stars":86,"followers":1,"following":0,"created_at":"2024-05-02T14:24:54.454Z","updated_at":"2024-05-02T14:24:54.454Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KnowFlow","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KnowFlow/repositories"},"packages":[],"commits":{"id":1254513,"full_name":"KnowFlow/KnowFlow_AWM","default_branch":"master","total_commits":97,"total_committers":5,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":19.4,"dds":0.5670103092783505,"past_year_total_commits":1,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":1.0,"past_year_dds":0.0,"last_synced_at":"2026-04-02T12:02:29.457Z","last_synced_commit":"6b4487431e968eea47a083569eb0fbcf397fee1a","created_at":"2023-03-27T11:48:30.975Z","updated_at":"2026-04-02T12:02:29.425Z","committers":[{"name":"Rockets_cn","email":"rockets.cn@gmail.com","login":"rockets-cn","count":42},{"name":"Shan","email":"i@shan.blue","login":"shanlter","count":21},{"name":"Jason","email":"921891608@qq.com","login":"cnlg","count":21},{"name":"Jonathan Raviotta","email":"jraviotta@gmail.com","login":"jraviotta","count":10},{"name":"Lauren","email":"lauren.pan@hotmail.com","login":"Lauren-ED209","count":3}],"past_year_committers":[{"name":"rockets-cn","email":"rockets.cn@gmail.com","login":"rockets-cn","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:08.903Z","repositories_count":6211229,"commits_count":921932100,"contributors_count":35687158,"owners_count":1143388,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"KnowFlow/KnowFlow_AWM","html_url":"https://github.com/KnowFlow/KnowFlow_AWM","last_synced_at":"2026-03-19T05:01:08.632Z","status":"error","issues_count":9,"pull_requests_count":23,"avg_time_to_close_issue":72077.0,"avg_time_to_close_pull_request":205670.47826086957,"issues_closed_count":1,"pull_requests_closed_count":23,"pull_request_authors_count":5,"issue_authors_count":2,"avg_comments_per_issue":0.7777777777777778,"avg_comments_per_pull_request":0.6956521739130435,"merged_pull_requests_count":9,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:37:33.076Z","updated_at":"2026-03-19T05:01:08.632Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/KnowFlow%2FKnowFlow_AWM/issues","issue_labels_count":{"enhancement":3,"Community":2},"pull_request_labels_count":{},"issue_author_associations_count":{"CONTRIBUTOR":9},"pull_request_author_associations_count":{"NONE":13,"CONTRIBUTOR":10},"issue_authors":{"jraviotta":7,"rockets-cn":2},"pull_request_authors":{"Frankie34":12,"jraviotta":7,"rockets-cn":2,"HMLeao":1,"cnlg":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:09.270Z","repositories_count":14106272,"issues_count":34454647,"pull_requests_count":112472246,"authors_count":11227558,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"WatchEvent":12},"last_year":{"WatchEvent":9}},"keywords":["citizen-science","iot-application","water-monitoring","water-quality"],"dependencies":[],"score":6.244166900663736,"created_at":"2023-09-11T14:52:14.739Z","updated_at":"2026-04-07T14:30:19.141Z","avatar_url":"https://github.com/KnowFlow.png","language":"C","category":"Natural Resources","sub_category":"Water Supply and Quality","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\n\nThis branch is for ongoing development\n\n\n# KnowFlow - an open source river quality meter with Arduino\n\nKnowFlow is an open source water monitoring device and an education program.\n\n![](https://publiclab.org/system/images/photos/000/020/692/large/BOM.JPG)\n\n\n\nFor the device part, KnowFlow is designed for environmental activists, researchers, students... anyone\nwho wants to know the water quality using low cost and customized tools. It is based on Arduino Uno and \ncan currently monitor 5 parameters: Temperature, pH, ORP, Electrical conductivity and Dissolved Oxygen. \nThe data is stored on a micro SD card and can be read directly on phone by bluetooth (except for Dissolved Oxygen). \nAll the modules are easy to change or add. Most of the sensors used are from DFRobot and Atlas Scientific, \nthe main 2 sensor suppliers for Arduino users.\n\n### Supported Hardware Platforms\n- **Arduino Uno** (primary platform)\n- **Arduino Mega 2560**\n- **Arduino M0**\n- **ESP32** ✅ (see [ESP32 README](ArduinoESP32/README.md))\n\n![](https://publiclab.org/system/images/photos/000/020/719/large/Lauren_Field_Test.jpg)\n\nFor the education program, KnowFlow is an 8 week online course and a learning group hosted on \nGreenseed Project platform. During the course, we cover the fundamentals of water quality, indicators of water quality, \nArduino and monitoring systems and show you how to build your own monitoring system based on Arduino. In addition to \nthe 5 included in the KnowFlow kits, you can add other environmental sensors, such as carbon dioxide, ozone, \ndust, light, temperature, or humidity sensors, then add GPS and a communication module to connect data from a distance. \nStep by step demos in the course walk you through the learning process.\n\nThis page is a collective information for KnowFlow, it can also be found on github, [Youku](http://v.youku.com/v_show/id_XMTYzNTA1NzU1Mg==.html?spm=a2hzp.8253876.0.0\u0026f=27620513).\nWill release this series video tutorial on youtube later soon!\n\n\n\n## KnowFlow Hardware \n\nA complete list of components, measurements, drawings, and other specifications can be found [here](https://docs.google.com/spreadsheets/d/1rwVUIwqTOvZiKi_0vdBPrXMIw2YB-nsFnhaVy5seE-M).\nDFRobot also offers a [KnowFlow starter kit.](https://www.dfrobot.com/product-1649.html)\n\n#### Central Control Unit: \n* Arduino Uno (DFRobot Bluno in this case) and \n* Expansion Shield (DFRobot Expansion Shield V7.1 in this case)  \n* real time clock circuit board\n#### Water Sensors: \n* pH (pH probe and pH circuit board)\n* EC (EC probe and EC circuit board)\n* ORP (ORP probe and ORP circuit board)\n* Temperature (temperature probe and temperature circuit board)\n* Dissolved Oxygen (DO probe, BNC and circuit board)\n#### Data Storage:\n* Micro-SD module\n* Micro SD card\n#### Fit and finish:\n* Mounting plate\n* Water proof box(200mm_150mm_75mm)\n* Water proof bushing\n#### Other parts: \n* Wires\n* Bread board\n* Bolts and nuts\n* Screws\n* Battery\n* Double-sided adhesive\n* Write on tape\n* Basic hand tools\n* Spiral cable wrap \n\n## Installing KnowFlow Firmware\nKnowFlow is designed for beginners. You don't need to have experience with Arduino or software development. \nKnowFlow is packaged with supporting software libraries to make it easier for you to enable different sensor features \nfor your application. Feel free to post your software questions on our wiki page on public lab or github.\n\n### Firmware Versions\n\nThis repository contains multiple firmware versions for different hardware configurations:\n\n#### 1. ArduinoUnoDo\n- **Location**: `ArduinoUnoDo/WaterMonitor/`\n- **DO Sensor**: Uses Serial port communication (Rx(0), Tx(1))\n- **Best for**: Atlas Scientific DO sensor or similar serial-based DO sensors\n- **Note**: DO sensor uses Serial port, which may conflict with USB debugging\n\n#### 2. ArduinoUnoGravityDo\n- **Location**: `ArduinoUnoGravityDo/WaterMonitorDo/`\n- **DO Sensor**: Uses analog pin A0 (Gravity DO sensor)\n- **Best for**: DFRobot Gravity DO sensor\n- **Features**: Includes calibration support for pH and EC sensors\n- **Recommended**: This is the most feature-complete version\n\n#### 3. ArduinoESP32\n- **Location**: `ArduinoESP32/WaterMonitorESP32/`\n- **DO Sensor**: Uses analog pin GPIO33 (Gravity DO sensor)\n- **Best for**: ESP32 development boards\n- **Features**: \n  - Uses ESP32's 12-bit ADC for higher precision\n  - Compatible with all 5 sensors\n  - Ready for WiFi/IOT features (planned)\n- **Note**: Requires ESP32 board support in Arduino IDE\n\n#### 4. Firmware (Legacy)\n- **Location**: `Firmware/WaterMonitor/WaterMonitor/`\n- **Status**: Legacy version, contains compiled binaries\n- **Note**: Use for reference only\n\n### Installation Steps\n\n1. **Download Arduino IDE** (version 1.8.2 or later)\n   - Download link: https://www.arduino.cc/en/Main/Software\n\n2. **Download KnowFlow code**\n   ```bash\n   git clone https://github.com/KnowFlow/KnowFlow_AWM.git\n   ```\n\n3. **Choose the appropriate firmware version**\n   - For **ESP32**: Use `ArduinoESP32/WaterMonitorESP32/` (see [ESP32 README](ArduinoESP32/README.md))\n   - For **Gravity DO sensor** (Arduino Uno): Use `ArduinoUnoGravityDo/WaterMonitorDo/`\n   - For **Serial DO sensor** (Arduino Uno): Use `ArduinoUnoDo/WaterMonitor/`\n\n4. **Install required libraries**\n   - Copy libraries from `Firmware/libraries/` to your Arduino IDE libraries folder\n   - Or install OneWire library via Library Manager: Sketch → Include Library → Manage Libraries → Search \"OneWire\"\n\n5. **Configure your hardware**\n   - Edit `config.h` (or `Config.h`) to match your sensor pins and calibration values\n   - Enable/disable debug output by uncommenting `DEBUG_AVR` or `DEBUG_M0`\n\n6. **Upload to board**\n   - Open `WaterMonitor.ino` (or `WaterMonitorDo.ino`) in Arduino IDE\n   - Connect your Arduino Uno board\n   - Select Tools → Board: Arduino Uno\n   - Select Tools → Port: (your USB port)\n   - Click \"Verify\" then \"Upload\"\n\n## FAQ\n\n### Q: Why can't I verify the code?\n**A:** The IDE may be missing a library, most often OneWire. \nInstall the missing library from Sketch → Include Library → Manage Libraries. Search \"OneWire\" then install it.\n\n### Q: Which firmware version should I use?\n**A:** \n- Use **ArduinoUnoGravityDo** if you have DFRobot Gravity DO sensor (recommended)\n- Use **ArduinoUnoDo** if you have Atlas Scientific or other serial-based DO sensors\n- Check your DO sensor documentation to determine which type you have\n\n### Q: How do I calibrate the sensors?\n**A:** \n- Edit `config.h` (or `Config.h`) in your firmware directory\n- Set `PHOFFSET` for pH calibration offset\n- Set `ECKVALUE` for EC sensor K value\n- Re-upload the firmware after calibration\n\n### Q: Can I use both Serial DO and Gravity DO?\n**A:** No, you need to choose one firmware version based on your hardware. The two versions are incompatible due to different DO sensor interfaces.\n\n### Q: How do I enable debug output?\n**A:** \n- Open `config.h` (or `Config.h`)\n- Uncomment `#define DEBUG_AVR` for Arduino Uno/Mega\n- Or uncomment `#define DEBUG_M0` for Arduino M0\n- Re-upload the firmware\n\n\n## How to build KnowFlow \nInstructions are available [here.](https://publiclab.org/notes/shanlter/06-08-2017/knowflow-automatic-water-meter)\n\n## How to contribute:\nSee this [tutorial.](https://help.github.com/articles/creating-a-pull-request/)\n1. Fork the repository!\n1. Create your feature branch: git checkout -b my-new-feature\n1. Commit your changes: git commit -am 'Add some feature'\n1. Push to the branch: git push origin my-new-feature\n1. Submit a pull request\n \n## About Branches\n**master** is the current stable release.\n\n**development** is the research version. It has experimental features that are not fully tested. For example, IOT\nintegrations, new sensors, etc.\n\n\n**test** is for the team to practice with github. We will delete when we figure out how to use github. (We are newbees\nto github, so please forgive any stupid errors. Suggestions are welcome!) :)\n\n\n## To DO List\n- [x] Support DO Sensor from DFRobot\n- [x] Modify the construction of the files system\n- [x] Code cleanup and configuration unification\n- [ ] Add YouTube video tutorial\n- [ ] Website setup (www.knowflow.org)\n- [ ] IOT feature\n- [x] Calibration function (partially implemented in ArduinoUnoGravityDo)\n- [x] ESP32 support (basic sensor functionality)\n- [ ] ESP32 WiFi/IOT features\n- [ ] Low power function\n\n## Contact\n\nEmail addresses for the KnowFlow team.\n\n* Rockets \u003cRockets.xia@dfrobot.com\u003e\n* He Shan  \u003cshanh0510@gmail.com\u003e\n* Lauren \u003cLauren.pan@hotmail.com\u003e\n* Jason \u003cjason.liang@dfrobot.com\u003e\n\n\n\n## Documents\n\n * [Tutorial][1]\n * [GreenSeed online courses][2]\n * [Application:非洲茶园水质调研][3]\n * [Application:Willow Creek Water Quality Monitoring][4]\n * [KnowFlow Special Design][6]\n\n## License\n\nAll KnowFlow related materials are released under the [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)][5]\n\n## This project has benefited from the support from the following funders:\n\n* GreenSeed Foundation\n* Mushroom Cloud Maker Space\n\n  [1]: https://publiclab.org/notes/shanlter/06-08-2017/knowflow-automatic-water-meter\n  [2]: http://blog.sina.com.cn/s/blog_9f86b6d50102w9m1.html\n  [3]: http://www.dfrobot.com.cn/community/thread-26733-1-1.html\n  [4]: https://publiclab.org/notes/MadTinker/07-31-2017/willow-creek-water-quality-monitoring\n  [5]: https://creativecommons.org/licenses/by-nc-sa/4.0/\n  [6]:https://www.instructables.com/id/KnowFlow-Special-Design/\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20697","html_url":"https://ost.ecosyste.ms/projects/20697"}