River Conditions
James River Conditions shows the latest water status from USGS and WaterReporter.org
The river map is of the entire James River basin and shows all waterways named as rivers.
This is the drainage basin map used to trace the rivers into a format that is usable by a laser engraver.
Each LED indicates either a USGS streamgage or a Water Reporter Org testing site. Streamgages provide river height and water flow by using sensors that automatically report data. Water Reporter Org is a network of human volunteers testing and reporting bacterial levels at designated testing sites.
There are many streamgage and water quality testing sites so only a few are added to the map.
As you see green indicates recent water tests find the bacteria levels to be acceptable for human interaction, while yellow indicates elevated bacteria levels, and red indicates the water is not safe for human recreation.
Blue indicates the selected testing site shown on the display.
The display provides testing site data and the control buttons moves the selected testing site up or down the river.
The back of the dashboard reveals the electronics.
Due to the prototype nature of this project, everything was hand soldered to keep it simple.
The MCU (microcontroller) is an ESP32 used for it's CPU speeds, large RAM, and built in WiFi.
The ESP32 uses REST to reach out to a custom endpoint hosted on my blog's domain that in turn reaches out to the USGS and waterreporter.org endpoints and caches the data. The reason for this chain of events is due to unoptimized waterreporter.org APIs that are sized in multiple megabytes and the ESP32 can not handle downloading and decoding that much JSON data. (See the design files linked below for the PHP script used.)
This shows how the river map is a separate piece from the main front plate which was designed this way so the river map is replacable in case of mistakes.
This is the micro SD card reader module bracket.
The SD card contains WiFi credentials for quick AP changes. Also, testing locations are stored in a JSON config file so if a testing site becomes defunct or a new one is added, instead of compiling new firmware only the locations file on the SD card needs updated.
This little DC-DC converts the 12vDC input into 5vDC and provides enough power for the LEDs, display, and ESP32 without worry.