Well another year of testing has come and gone so, it's time for an update! In short, I'm nearly there. This version is the last one with components mounted to a proto board. This is also the last dedicated version of the software.
I'm not going to go through a project synopsis in this post as that's all been done before here, and collectively here. No, this is more like a ChangeLog and a summary of what's to come.
NOTE: I wrote an Instructable for this version of the station and posted it here if you want more detailed information about this version:
So, what's changed?
A few things have changed about this version - one, I've changed the connectors from RJ-12 to terminal blocks as the RJ-12 connectors are too bulky to all fit easily on a shield. I am also considering JST connectors for the final version as an additional space saving option. In my setup, I opted for a wired Ethernet connection since I also opted to run power to the station - two birds one stone. However, this limits the vertical access to my instrumentation shield.
I've also changed the device I'm using to get temp and humidity from a DHT22 to a BME280. I get three instruments in one in a smaller footprint! I kept the DHT, however. Over the course of testing during the summer, it became clear that under very certain conditions, my station would lock up. I'm fairly certain that temperature was a principle issue but I had no way of knowing for sure. So, beta 2 has heat and humidity data inside the box collected for analysis.
I needed to send that internal system status data somewhere but it didn't make sense to store it with the weather data so I created a second table in my database for system data. Here I can store the above mentioned heat and humidity data as well as...
- error and anomaly counts
- individual device diagnostics data
- controller memory statistics
- user web access data
Speaking of data, I expanded my dataset to include Dew Point and "Feels Like" for calculated data and I've also added a new sensor that gives me UVA, UVB and UV Index. So, that brings us to the following data set which now hits all of the original goals for this project.
- Temperature - What is the current temperature?
- Humidity - What is relative humidity?
- Dew Point - At what temperature will water vapor in the atmosphere condense?
- "Feels Like" - This is a combination of wind chill and heat index.
- Barometric Pressure - What is the current pressure in kPa?
- Wind Speed / Direction - How fast is the wind blowing in mph and from what direction(deg)?
- Wind Gusts - What is the highest recorded wind speed in this interval?
- Rainfall (inches per interval) - How much has it rained in the last two minutes?
- Rainfall (Is it raining) - Is it raining or not right now?
- Lightning (counts per interval) - Is there lightning in the area and how intense is it?
- LUX - How bright is it outside?
- UV - What is the current levels of Ultraviolet Radiation outside?
- UVA - How much Tanning / Damaging energy is there?
- UVB - How much burning energy is there?
- UV Index - What is the overall UV Index now?
- Date/Time - The date and time of the current recorded interval
There were some other odds and ends that needed to be address as well:
- Lightning Detector - As suspected, the lightning detector had a faulty connection. Fairly easy to fix but I'm still fiddling with the code for this thing. It is still having trouble detecting lightning reliably. I've changed the code a bit to try to dynamically change it's sensitivity to account for different environmental issues but I'm not sure how well that will work. These things are very sensitive to static discharges and I suspect it is still having trouble determining the difference between lightning and noise.
- Libraries - I've upgraded all of the underlying libries and now the code is fully current.
- Connectors - One of the biggest issues with the longevity of the station is how fast connectors corrode. So, I'm trying out different connectors in a high humidity environment to see what happens. I'm trying to get the best bang for the buck on cost vs reliability. Some of the new internal data I'm collecting now should help with this.
- Weather Underground - About the time that I was starting to incorporate the WU API into my code, I received an email stating that they were about to shut down the API and that maybe I'd like to use Weather.com's API instead. Nah, I'll pass. At the time it seemed like they wanted to charge for access so I didn't pursue it.
As I said in the opening of this post, I'm nearly there. Unless I run up against a completely unexpected wall, this should be the last beta for the hardware. I'm fiddling with some 3D printed mounts and such but this is mostly for cosmetic difference rather than operational concerns.
As for the software, this is the last version of the software that is all together combined with this project. I'm spinning off the station code into my first real open source project that will be released to the public on Github. There's a lot to talk about here - more than is appropriate for this post - but just to summarize for now, here are the highlights:
- Modular - Each point of data is optional and is compiled (or not) based on user settings prior to sending to the controller
- Support for Multiple Devices - I've collected a lot of data over the years across many different devices that each have their pros and cons. This software will allow you to pick and choose the devices you want and, if it isn't included, can be added as a module.
- Support for Multiple MCUs - Currently, the baseline controller is the Arduino Mega but this code should work well on any board with 4K of RAM or more that is programmed on the Arduino IDE or comparable IDE.
- Support for Wired or Wireless Networking - While my preference was to save money on the solar power hardware for my station and wire it directly using power over Ethernet, that may not be someone else's preference.
- Support for OTA - I hate having to crack open my device every time I need to upgrade the software, in this new version, that will not be an issue any more.