Simulate Climate With An Arduino

Greenhouses create an artificial climate specifically suited to the plants you want to grow. It’s done by monitoring conditions like temperature and humidity, and making changes using things like vents, fans, irrigation, and lighting fixtures to boost temperature. But how do you know when it’s time to up the humidity, or vent some of the heat building up inside? The easy way is to use the Arduino-powered Norman climate simulator from [934Virginia] which leverages data from different locations or times of year based on NOAA weather data to mimic a particular growing environment.

Norman relies on a simple input of data about the target location, working from coordinates and specified date ranges to return minimum/maximum values for temperature and humidity weather conditions. It makes extensive use of the Dusk2Dawn library, and models other atmospheric conditions using mathematical modeling methods in order to make relatively accurate estimates of the target climate. There are some simulations on the project’s Plotly page which show what this data looks like.

This data is used by [934Virginia’s] Arduino library to compare the difference between your target climate and actual sensor readings in your greenhouse. From there you can make manual changes to the environment, or if you’re luck and already have an Arduino-based greenhouse automation system the climate adjustments can be done automatically. The project is named after Norman Borlaug, a famous soil scientist and someone worth reading about.

Editor’s Note: This article has been rewritten from the original to correct factual errors. The original article incorrectly focused on replicating a climate without the use of sensors. This project does require sensors to compare actual greenhouse conditions to historic climate conditions calculated by the library. We apologize to [934Virginia] for this and thank them for writing in to point out the errors.

Images courtesy of Wikimedia Commons.

16 thoughts on “Simulate Climate With An Arduino

  1. “The first (and possibly only) sensor we might want to add to this project is a soil moisture sensor, since yearly estimates won’t tell us whether it has just rained or not.”

    Water meter might tell you. ;-)

  2. If you need “dozens of sensors”, you apparently need to have measurements from different locations inside the greenhouse, or outside. No model without many local inputs will give you this data. Also, many local factors, like the actual plant growth, have a huge impact on moisture and CO2 levels, while those are among the most important to monitor and control in a greenhouse.

    Let’s see, an NTC and photodiode or LDR cost pennies, soil moisture and humidity can be measured capacitively with any cheap modern microcontroller, measuring CO2 levels is a bit more complicated, but also completely impossible to predict without recent and local measurements.

    Sure, calculating sunset and sunrise is easy, predicting actual sunlight intensity is something completely different, and unnecessary as the sensors are cheap and more reliable than the internet connection you’d need to get actual data from external sources in many places in the world.

    Saving a few bucks on reliable sensors to become dependant on an internet connection and datasources you have no control over? Sure, great idea!

    On the other hand, using a model with input from local sensors to get a better overall picture, detect and gracefully handle single sensor failures, might actually be useful.

  3. >simple input of data about the current location – target coordinates, specified date ranges, and minimum/maximum values for temperature and humidity
    Surely that includes the recent heat waves we are experiencing this summer, right? Local sensors could at least tell you when it is not the case.

  4. Hi there, I just wanted to clarify that temperature/humidity sensors are absolutely required in order to use this library as a control loop. Please see the GitHub page for more information.

  5. For a small, personal greenhouse, this could make for an interesting experiment. But if you are depending on the success of your crops, nothing beats local sensors in, real time. The internet isn’t 100% reliable, 24/7. Most every site has downtime, for maintenance and upgrades. The are occasional issues, like failed updates, crashes, breaches. The data is sometimes a little off. How often are local weather predictions spot on? Totally off the mark? And that forecast is for a much larger area, than a single piece of real estate. The whole point of running a greenhouse, is to provide optimal growing conditions, 24/7. It’s entirely about what’s going on inside the greenhouse. You can still get better growing inside a greenhouse, without any monitoring or sensors, doing everything manually. Sensors and automation make it simpler, consistent, more precise. You get faster results, better quality, greater yields.

    Relying on internet data, could just turn this into the devastating effects of Climate Change on plant growth. We seldom are presented with raw data anymore, it get’s cleaned up a little, to better illustrate how CO2 is ruining our climate, a little biased, maybe. If you really want to greatly improve the growing conditions in your greenhouse, augment the CO2, to 1500-2000 ppm, well past the predicted planet killing level. The internet data would be pretty useless, though, since the outside conditions would be based on only 400 pmm CO2 levels, least for a few more centuries. By then, most of will be eating Soylent Green anyway…

  6. “No sensors that can go wrong” traded for internet connection that can go wrong. Add to that that 934Virginia just said the code does require sensors and the hackaday editors think it’s necessary to add a soil moisture sensor, I wonder what the point is.

    1. Yeah, I’d honestly recommend just checking out the GitHub if you want a clear picture. The point was to simulate climatic cycles for remote locations, so you could build a space bucket or whatever and make the plant think it’s growing in Peru or wherever else. You can run projections with just an uno, but a practical build 100% requires a RTC, temp/rh sensors, and whatever outputs you choose to control fans/ac/humidifiers/whatever (using relays, rf, wifi, etc.)

      1. I fully agree, even in the small village where I live, temperature readings can vary from one end of the village to another, some soil loses water faster than other soil. A decent local sensor will always be more reliable than an internet connection giving you expectations based on averages

        1. Honestly, I haven’t the foggiest idea where the idea of weather prediction, soil moisture, or internet connectivity came from in relation to the library. Hahaha. All it’s supposed to do is return values for air temperature, relative humidity, and daylight using the parameters of the location you’re trying to mimic. It doesn’t deal with precipitation, so it doesn’t deal with soil moisture.
          I apologize for any confusion. I’m hoping the article gets rewritten or removed altogether, because I don’t want people to be disappointed if they try to use the library and find it isn’t what was described in the article.

          1. Lol! It’s funny because I saw this in my Google feed and imaged it to be what you described. When I read the article I was disappointed and confused.. I almost disregarded the project until I read the comments! Using historical or live data and sensors / controls to mimic growing in various environments sounds well cool!!

  7. As 934Virginia ommented, you are going to need a temperature/humidity sensoe, which makes sense, how else are you going to check if your controls are putting it to the right temperature and humidity.
    But then the question rises: why would i want to imitate my, or any local climate? might as well just create the climate one desires

Leave a Reply to OstracusCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.