IOT Weather Station with Air Quality monitoring

Similar projects worth following
Our school is involved in water analysis in the local area, so we thought to build a weather station with a particulate sensor, to monitor air quality in Alba. It has to be modular and upgradable in the future, so new students will be able to work on it and keep it working if something fails. They will also learn electronics by doing that.
It will be solar powered and connected to the school website using an ESP8266 and an IOT platform.

For the microcontroller we chose an ATmega328P-PU, rather than using a standard Arduino Uno, for less power consumption. We hope it will not run out of memory :).

The station will upload data to ThingSpeak™ using an ESP8266, mainly chosen for its low cost ad popularity, and we will public the data collected from the sensors on our school website, showing in real time weather and air quality conditions. We will probably develop an app for android devices for faster readings.

In the following years these could be implemented by using a GSM module instead of the ESP8266, so more stations could be added to the “network” and placed in fields; we could also use a Raspberry Pi as a server to store data and take track of the environmental conditions all over the years.

For the sensor, we have chosen:

The station will be powered by a solar setup made by a 20W solar panel, a 12V 12Ah lead acid battery and a solar charge controller. We decided to build a custom version of “Arduino solar charge controller version 2.0” made by Debasish Dutta ( because we like DIY stuff, but if you want to replicate our project, our suggestion is to buy one of the cheap PWM ones.

The temperature and pressure sensors will be protected by a solar shield, that we decided to 3D print to reduce the cost (buying one is about 90€ in Italy). The one designed by micromet ( seems very good, but we will have to make some mods to fit both sensors. Once done we will upload them on Thingiverse.

The entire cost will be around 300€, an affordable price that allows us to create an enough good product to collect precise data.


ARDUINO SOLAR CHARGE CONTROLLER (Version 2.0) made by Debasish Dutta is released under the Creative Commons Attibution-NonCommercial-ShareAlike 2.5 Generic license.

Radiation Shield For Weather Station Temperature/Humidity made by micromet is released under the Creative Commons Attribution 3.0 Unported license.


    Matteo Monsello12/17/2016 at 16:36 0 comments

    I’M FORCED TO CLOSE THE PROJECT due to lack of interest by the school.

    I kept it running in my bedroom for the last four and a half months, but no one seems interested to put it on the field and get it working properly.

    I’m fed up, so I left it at school (they paid most of the parts so I can't keep it).

    If you need further information do not hesitate to contact me.


    Matteo Monsello

  • V 0.1

    Matteo Monsello07/20/2016 at 09:38 0 comments

    With a couple of code fixes from the previous version we made everything working perfectly (or at least we hope so :) ). We have also modified the vertical mount of the solar shield, so that now fits perfectly among with the Sparkfun’s Weather Meters and created a mount for the dust sensor. Check on Github and Thingiverse for every detail.

    Unfortunately our schools is closed until September, meaning that we are not able to install the weather station right now. In the meantime all our data is uploaded to two Thingspeak channels and we are doing further tests on the sensors. Our goal is to keep it online 24/7, but we are waiting for a special varnish that will waterproof all the electronics, so we won’t upload data for a day or two in the next few weeks.

    Channel 1:

    Channel 2:

  • V0.1 BETA

    Matteo Monsello07/01/2016 at 16:41 0 comments

    Current version of the main board

    We apologize for the long time taken to publish our schematics and code, but we are really busy with exams at schools, and left with less time to test our project.

    The biggest problem of missing uploads has been solved and everything seems to work really well, but we need to improve current consumption (the main board drains about 0,3W during standby) and avoid some temperature errors. As anticipated we will probably switch to Julian Ilett’s PWM5 Charge controller, because it has lower current consumption than the one that we are currently using. It also uses an N-Channel Mosfet, which has a lower Drain-Source resistance, so more power from the solar panel will go to the battery instead of being wasted as heat.

    Current solar charge controller, modified from

    You can find our code on our github page HERE.

    Here is the link to Julian Ilett’s site

    On the next update we will probably show an intensive test.

  • Project show

    Matteo Monsello06/09/2016 at 17:16 0 comments

    Today we have shown our project at our school’s projects show, made after an Arduino course.

    We have shown our prototype working and uploading data to ThingSpeak.

    We have a lot of positive feedback from our mates and teachers and some tips for further improvements such as:

    • make it smaller and portable (to take analysis on a field for a small amount of time);
    • adding a light sensor, to count light hours during the day (we thought to analyze the voltage from the solar panel to do that);
    • store data on a separate server (we already planned to do that in the summer holidays using a raspberry pi).

    If you have any ideas please write a comment below!

  • Upload Test

    Matteo Monsello05/29/2016 at 20:12 0 comments

    Yesterday we run a 7 hour test to check if everything works fine with the main board. We were at the same point excited and disappointed about the results: the hardware works without problems (wich was the main goal), but the station wasn’t able to upload data 8 times for about 15 minutes each.

    We are putting all our efforts to solve that problem.

    We made 3 hypothesis:

    • The server could have been busy (but it could not have been for such a long time);
    • There could have been problems in the serial communication between the ESP8266 and the ATMEGA328 (maybe because we used 115200 as baudrate)
    • There could also have been problems between the ESP8266 and our modem, not allowing it to connect to the internet and so to perform the upload.

    If you want to look at the results here is the link to our Thingspeak channel:

  • Working on the code for the upload on Thingspeak

    Matteo Monsello05/25/2016 at 18:47 0 comments

    We spent all the afternoon working on the piece of code for the upload on ThingSpeak. After struggling for a couple of hours we finally managed to upload pressure, temperature and humidity from the BMP280 and the AM2315 sensors.

    We had problems with bad data and a faulty ESP8266 module.

    In the next few days we are planning to do an “intensive” test, by uploading data continuously for at least 5-6 hours to see if something goes wrong.

  • Solar Charge Controller

    Matteo Monsello05/19/2016 at 18:58 0 comments

    First test of the solar charge controller. It seems to work pretty well, but it needs some improvements in the code as well in the hardware (the leds have to be removed to avoid waste of energy).

    Checking the solar charge controller behaviour .

    The solar panel has been turned upside down to make the system behave as night time, and so to turn on the load (in this case a light bulb).

  • The begin...

    Matteo Monsello05/16/2016 at 19:04 0 comments

    We've just built the solar shield!!

    That is one of the first steps for the final build. It took about 4 hours a piece on our slow 3d printer, so that's about 36 hours of total printing time :).

    We're currently really busy with the school, so we are mainly focussing on the code to make the weather station working as soon as possible.

    More info on how to build it will be available from the end of june/ beginning of july.

    We have created a thing on Thingiverse where we will upload all 3D files.

    First steps for the contruction of the solar shield are already available at this link:

View all 8 project logs

Enjoy this project?



pittemanjason wrote 09/27/2016 at 18:41 point

Nice realisation! Love this :)

  Are you sure? yes | no

Matteo Monsello wrote 09/28/2016 at 12:52 point

Thank you!

  Are you sure? yes | no

pittemanjason wrote 09/27/2016 at 18:41 point

Nice realisation! Love this :)

  Are you sure? yes | no

Karl SCHUH wrote 06/21/2016 at 18:41 point

cool project and good description with sources for sensors

I hope it works fine for a long time.

  Are you sure? yes | no

Matteo Monsello wrote 06/21/2016 at 19:04 point

we too! we are planning to switch to Julian Ilett's pwm5 charge controller because it has less current consumption and less heat generation, so we hope it will last longer. we will probably replace the PIC microcontroller with an Arduino compatible one.

here you can find more information about it

if you have some tips please share them with us!

  Are you sure? yes | no

Michael Haas wrote 06/14/2016 at 05:05 point

this looks really cool! :)

  Are you sure? yes | no

Matteo Monsello wrote 06/17/2016 at 18:12 point


  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates