Skip to content

Commit

Permalink
Initial checkin of files.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicholas Kinar committed Apr 16, 2021
0 parents commit 79570e4
Show file tree
Hide file tree
Showing 366 changed files with 1,280,823 additions and 0 deletions.
219 changes: 219 additions & 0 deletions LICENSE.md

Large diffs are not rendered by default.

154 changes: 154 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
# Development of a Sensor and Measurement Platform for Water Quality Observations: Design, Sensor Integration, 3D Printing, and Open-Source Hardware
## by Nicholas J. Kinar, Markus Brinkmann

*Environmental Monitoring and Assessment*

## What is it?

This is the complete Python source code required to reproduce graphs in the paper. The source code also produces data figures and comparisons.

Electronic and mechanical design files are provided. These files are licensed
using permissive open source licenses as indicated below.

## Paper Abstract
A measurement and development platform for collecting water quality data (the WaterWatcher) was developed. The platform includes sensors to measure turbidity, total dissolved solids (TDS), and water temperature as variables that are often collected to assess water quality. The design is extensible for research and monitoring purposes, and all design files are provided under open-source permissive licenses for further development. System design and operation are discussed for illustrative purposes. A block diagram indicates elements of mechanical, electrical, and software design for this system. The mechanical assembly used to house circuit boards and sensors is designed using 3D printing for rapid prototyping. The electronic circuit board acts as a carrier for an Arduino 32-bit microcontroller board and an associated cellular module along with a GPS for geolocation of water quality measurements. The cellular module permits data transfer for Internet of Things (IoT) functionality. System operation is set up using a command line interface (CLI) and C++ code that allows for calibration coefficients and human-readable transfer functions to be defined so that sensor voltages are related to physical quantities. Data are cached on a secure digital (SD) card for backup. The circuit was calibrated, and system operation assessed by deployment on an urban reservoir. Biogeochemical cycles were identified in the collected data using spectrogram and semivariogram analyses to validate system operation. As a system with hardware and software released under an open source license, the WaterWatcher platform reduces the time and effort required to build and deploy low-cost water quality measurement sensors and provides an example of the basic hardware design that can be used for measurements of water quality.

## Code Dependencies

For paper code to re-create figures.

* Python 3
* pipenv
* sh utility for Windows to run shell scripts

Install the `pipenv` utility using `pip`.

To download STEP files for the mechanical design (also required):

* Windows OS and Autodesk Inventor installed and activated
* Windows OS that supports VBScript (most versions of Windows do)
* Chrome desktop browser
* Selenium
* Selenium browser driver installed on the path
* Cmder - <https://cmder.net/>

To program the microcontroller and to compile the device code,
an Arduino code IDE is required along with the required compilers:

* Platform.io - <https://platformio.org/>

## Use

The shell script `run.sh` in the `paper-code` directory will automatically
create graphs in the paper.

The shell script `run.sh` in the `mechanical/download-files` directory
will download STEP files and convert the files for use in the mechanical assembly.
As listed above, Windows and a licensed installation of Autodesk Inventor is required for this process. The download can take time; please be patient.
The Chrome browser will be used. The purpose of the
script is to help the user download the files and some manual downloads might
still be necessary.

The part files are downloaded from McMaster-Carr (<https://www.mcmaster.com/>)
and these downloaded files are for your own use as per the distribution
license provided by McMaster-Carr.
Create an account and log in to the McMaster-Carr website before downloading parts.

The conversion between STEP and IPT is performed by VBScript and the Inventor API.
This process can only be completed using a Windows machine. If you do not have
access to a Windows machine, please contact the authors.

When opening the assembly for the first time in Inventor (`assembly-with-lid.iam`)
some benign errors or dialog boxes might appear indicating that files
are not the same as originally referenced. When asked "Do you really want to use the resolved document?" click "Yes." When asked "Would you like to update the assembly now?" click "Yes" and then save the assembly.

Click on "Accept" if a dialog box indicates that there are errors. When saving the assembly, click on the "Yes to All" button and then "OK."

If some files are still missing, re-run the shell script `run.sh` to ensure
that everything was downloaded. The `files-download.txt` file with the
download links might have to be modified as required in the `mechanical/download-files` directory. This file is only provided to be potentially useful.

## FILES

Bolded entries in the table indicate parent directories. Non-bolded entries indicate subdirectories.

| Directory | Description |
|----------|:-------------:|
|**data**| Data collected in the context of this project |
|calibration data| Data collected from calibration |
|deployment| Data collected during deployment |
|**electrical-schematic-appendix-b**| Appendix B of the paper |
|**electronic**| Electronic design files |
|bom| Bill-of-Materials (BOM) for PCBs |
|gps-power-pcb| | Electronic design files for GPS power PCB |
|gps-power-pcb-gerber| | Gerber files for GPS power PCB |
|main-pcb| Electronic design files for the main PCB |
|main-pcb-gerber| Gerber files for the main PCB |
|**mechanical**| Mechanical design files |
|bom| Bill-of-Materials for mechanical design|
|download-files| Python script for downloading and converting STEP files|
|inventor| Inventor files for mechanical design|
|**mechanical-diagram-appendix-a**| Appendix A of the paper |
|**paper-code**| Code used to create paper outputs|
|**software**| Code to implement the system |
|v1| Version 1 of the microcontroller software |
|v2| Version 2 of the microcontroller software |
|ww-server| Example code to run on the server that receives data from the WaterWatcher |

## GERBER FILES README AND MAPPING

1. The main PCB is a four-layer PCB with nominal stackup.
2. Round up drill size to the next available drill if required.
3. Soldermask on both sides of the PCB.
4. Silkscreen on both sides of the PCB.
5. DFM Now! software can be used for Gerber preview (https://www.numericalinnovations.com/)
6. gerbv also works well as Gerber preview software (http://gerbv.sourceforge.net/)

| Layer Extension | Layer Description |
|----------|:-------------:|
|.GTO| Top Overlay |
|.GTS| Top Solder |
|.GTL| Top Layer |
|.G1| Layer 2 |
|.G2| Layer 3 |
|.GBL| Bottom Layer |
|.GBS| Bottom Solder |
|.GM1| Mechanical 1 |
|.GPT| Top Pad Master |
|.GPB| Bottom Pad Master|
|.DRR| NC Drill File Report|
|.TXT| NC Drill File|

## Data DOI

The data and code are available in this repo.
The data can also be downloaded from Figshare and the DOI is given in the paper.

## Built With

* Python 3
* Altium Designer
* Autodesk Inventor

Python libraries:
* numpy
* scipy
* matplotlib
* and others...

## Built @

* Smart Water Systems Lab (University of Saskatchewan)

## License

The project code is licensed under the GPLv3 License - see the [LICENSE.md](LICENSE.md) file for details.
The GPLv3 License ensures that the code can be freely shared
and used.

The electronic and mechanical design files as created
by Nicholas J. Kinar in the context of this project are licensed under the CERN
Open Hardware License Version 2 - Strongly Reciprocal.

All other parts or technologies used for this project are as licensed by the
original license holder.
Loading

0 comments on commit 79570e4

Please sign in to comment.