Over the past year, our communities have suffered a lot. The environment has suffered just as much - if not more. As residents of the Chesapeake Bay watershed, we are very environmentally conscious of our actions. The Bay has just received a health score of a “D+” for the fourth year in a row - and as we see more and more pollution accumulate from disposable personal protective equipment (PPE) - this rating will likely plummet in the coming year. Out of our concern for the Bay, we were motivated to develop a hack that could help park rangers and environmental scientists monitor plastic pollution on a large scale. In addition to expanding the geographical scope of water quality monitoring, we hope to make this solution inexpensive and autonomous while accurate to increase its accessibility to state parks.

What it does

PlastiMap begins with an Arduino spectrophotometer that relies on principles of electromagnetism. An RGB LED aimed at a water sample flashes red, orange, yellow, green, blue, and purple for 10 seconds each. Each of these colors has a different wavelength, which affects how it is absorbed by different materials. Depending on which wavelengths are absorbed by the material, the composition of the material can be determined. To assess which of the wavelengths (colors) are absorbed, a photoresistor on the other side of the sample records the light intensity. After calibration using real-world water samples from Seneca Creek, we observed that plastic pollution while under yellow light generates a much greater resistance compared to other samples. This means that plastic pollution, likely due to its composition that is high in hydrocarbons, absorbs a greater amount of 500-nanometer wavelengths. From the calibration experiments, we were also able to obtain a level of precision that enables the device to distinguish between polluted water that contains human-produced garbage and water that contains natural sediment and flora. Once the sample has been correctly identified, this identification is sent to the Internet of Things (IoT) on An identification of the water is made every 20 minutes in a 24-hour time frame. The percentage of samples identified as plastic polluted serves as an indication of pollution density. This is downloaded into a geovisualization map made with GeoPandas, which theoretically would display 20 monitoring systems dispersed throughout the Chesapeake Bay. An algorithm made using Python would track if the plastic density is increasing over a larger time period to serve as an alarm system for state park rangers. The locality and real-time nature of this system holds an advantage over infrequent lab sampling, allowing park rangers to potentially narrow down pollution sources for what is otherwise considered a non-point source of pollution.

How I built it

The spectrophotometer was constructed using Arduino Uno hardware. Specifically, an SMD RGB LED and 3-pin photoresistor was used. The LED was wired to a 180 ohms, 110 ohms, and 110 ohms resistor for the blue, green, and red pins respectively to prevent burnout. To seamlessly upload the Arduino data to the ThingSpeak IoT, the 1Sheeld BlueTooth board was used on top of the Arduino. The Arduino was able to be remotely powered using a battery pack. Finally, a wooden caddy was built to house the water samples and align the LED and photoresistor. The software component was built using the Python programming language on Jupyter Notebook. Specifically, the GeoPandas and MatPlotLib modules were used to construct and overlay the maps displaying relevant data.

Challenges I ran into

Achieving a consistent calibration for the data samples was certainly not easy. Due to the equipment used, a lack of precision was a large concern for the spectrophotometer. Most spectroscopy is performed in a controlled lab that has consistent lighting and dust particles. We were able to improve the consistency of the data by adjusting the sensitivity of the photoresistor through additional resistors. Also, we modified the wooden caddy to provide optimal testing conditions for the spectrophotometer. Connecting the Arduino to the IoT held a lot of challenges, as we had to correctly set up a network connection between the BlueTooth shield, a nearby phone with the 1Sheeld app, and the IoT on We overcame this challenge by testing out the Internet request function on smaller projects and gradually implemented it into our final Arduino project. When coding our software we ran into several issues while trying to install the GeoPandas module and being able to import it on Jupyter. Issues included missing dependencies, and problems launching Anaconda. We overcame these challenges by finding specific tutorials to resolve the errors we were receiving.

Accomplishments that I'm proud of

Despite using equipment that cost a total of $42 - which can easily be reduced to $33 by replacing the Arduino Uno with an Arduino Pro Mini or Nano - the spectrophotometer showed an impressive level of sensitivity with respect to the samples. It was correctly able to distinguish between clear water, muddy water, and plastic-polluted water. This differentiation would be crucial for park rangers as no one wants to launch a full-blown river clean up only to find out the sensor was mistaking pebbles for trash. Accomplishing this truly proves how inexpensive equipment can be utilized to develop systems that rival more advanced technology.

We are also proud of learning how to use data analysis tools in Python.

What I learned

Starting this project as students interested in earth sciences and computer science, we unexpectedly learned quite a bit of physics in order to properly detect plastic. This really demonstrates how easily computer science can be interfaced with other areas of study.

We also learned technical skills such as using Anaconda to download Python libraries, and how to use GeoPandas.

What's next for PlastiMap

We’d like to continue improving upon the design of the PlastiMap by encasing the spectrophotometer in a waterproofed, 3D printed caddy. This caddy would also improve the autonomy of the device by featuring a PVC pipe for water to freely flow through. In addition to improving the design of the actual product, true proof of concept would come from small-scale deployment, where the PlastiMap spectrophotometers would be placed at state parks in the Chesapeake Bay watershed and monitored over a month-long period to see if this form of plastic pollution monitoring is both feasible and useful. We could also look into having one device monitor pollutants other than plastic such as high phosphorous content. Finally, we would like to implement the ARCGis API in our software to increase the aesthetic appeal of the data visualization and subsequently improve the user experience, as well as launching our software on a web app with an appealing user interface. This would help increase the accessibility of PlastiMap as a powerful monitoring tool for park rangers.

Share this project: