ESP32 Solar Weather Station

15,807

114

12

About: I like making things, specially if they can move.

For my first IoT project I wanted to build a Weather Station and send the data to data.sparkfun.com.

Small correction, when I decided to open my account in Sparkfun, they were not accepting more connections, so I choose another IoT data collector thingspeak.com.

Continuing...

The system will be placed on my balcony and will retrieve temperature, humidity and air pressure. The microcontroller selected for this project is the FireBeetle ESP32 IOT Microcontroller supplied by DFRobot.

Please check DFRobot wiki page for more info regarding this microcontroller and how to upload the code using Arduino IDE.

All the physic parameters are given by the BME280 sensor. Also check the wiki page for some more info.

To turn the system completely "wireless" the power necessary is provided by two 6V solar panels that can deliver 2W of power. The cells will be connected in parallel. The energy produce is then be stored in a 3.7V Polymer Lithium Ion Battery with +/- 1000mAh capacity.

The Solar Lipo Charger module from DFRobot will be responsible for the energy management.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Components

For this project you will need:

Also you will need the following tools:

  • Hot glue gun
  • Soldering iron
  • Drilling machine

Step 2: Assembly

The FireBeetle ESP32 IOT Microcontroller is powered by the 3.7V battery that is connected to the Solar Lipo Charger in the battery input port. The solar cells are connected in the PWR In ports. The Vcc and GND ports of the FireBeetle ESP32 IOT Microcontroller are connected to Vout ports of the Solar Lipo Charger.

The BME280 power is supplied by the 3.3V port in the FireBeetle ESP32 IOT Microcontroller. The communication is done trough the I2C lines (SDA / SCL).

To fix all components in the box I used a perfboard, some headers and wires.

For the solar cells, I just used hot glue to fix them in the top cover of box. Since the box already had holes, no need to do more :)

Note: Diodes should be placed in the solar panels to avoid damaging them and discharging the battery.

You can read more about it in:

https://www.instructables.com/community/Use-of-diodes-when-connecting-solar-panels-in-para/

Step 3: Code

For you to use my code, some changes are necessary.

The first one is defining your wifi network name and password. The second is getting an API Key from Thingspeak.com. I will explain it below. Also you can define a new sleeping interval, if you wish so.

Thingspeak.com
If you do not have a Thingspeak account, you will need to go to www.thingspeak.com and register yourself.

After your email is verified, you can go to Channels and create a new channel. Add the variables that you want to upload. For this project, Temperature, Humidity, and Pressure.

Scroll down and press "Save Channel". After this you can click in API Keys. And retrieve the the API write key. Then add it in your code file.

If everything is correct, your Weather Station can start sending data to your channel.

Step 4: Conclusion

As always in my projects I will to give room for future improvements, this is not different.

During the development, I start getting concern with the energy consumption of the system. I already place the ESP32 and BME280 to sleep and even so I have a consumption of around 2mA!!! Being the BME280 the big responsible for this, I will probably need a switch to turn off completely the module during sleeping mode.

Another interesting feature would be to retrieve the battery voltage. After some investigation and testing of some internal functions of the ESP32 nothing worked. So probably I will add a voltage divider and connect it to an Analog Input and read directly the voltage. Please let me know if you come up with a better solution.

Please write me if you found any mistake or if you have any suggestion/improvement or questions.
"Do not get bored, do something"

Outside Contest 2017

Participated in the
Outside Contest 2017

Be the First to Share

    Recommendations

    • Assistive Tech Contest

      Assistive Tech Contest
    • Reuse Contest

      Reuse Contest
    • Made with Math Contest

      Made with Math Contest

    12 Discussions

    0
    None
    mike.maikaefer

    4 months ago

    Haven't I seen exactly the same project somewhere else? Ok...nevertheless my comment on this here too: Nice idea but in my optionion the DFRobot charger is problematic. It does not provide a fixed, stabilised power but juts outputs the battery voltage which is in range 3.7 to 4.2 V. and even more problematic: it does not provide a deep discharge protection, so the battery may be damaged irreversibly when it is discharged too much. Only ready-to-use solution I know about is the one from https://iot.halaser.de which includes both components, battery charging and deep discharge protection.

    2 replies
    0
    None
    Tiobelmike.maikaefer

    Reply 3 months ago

    Hello Mike,

    Thanks for your comment.

    If you saw it Hackster.io that its also mine, if you saw it elsewhere, then it was copied from one of this two sites.

    Regarding your comment you are right about the charger, but I used what I had, and since in my projects there are always room for improvement, a voltage monitoring could be added and a shutdown featuring also.

    Best Regards,
    Hugo Gomes

    0
    None
    GeertV8

    1 year ago

    HI, it looks like you used fritzing, where did you find the dfrobot parts for fritzing? I would be very much interested in using them. Thanks for the pointer.

    1 reply
    0
    None
    TiobelGeertV8

    Reply 3 months ago

    Hello GeertV8,

    Thank for the comment.
    I did not find them to fritzing, I edit them and "photoshop" them :)

    Best Regards,
    Hugo Gomes

    1
    None
    ThomasR218

    Question 1 year ago on Step 4

    I am not sure, if your wiring of the solar panels should be done like that.
    If you directly wire the two solar panels in parallel, there might some reverse or balancing current between the solar panels, especially if the panels don't supply the voltage. So you should really consider to use some diodes to prevent that.

    1 answer
    0
    None
    TiobelThomasR218

    Answer 3 months ago

    Hello ThomasR218,

    Thanks for your comment. You are ABSOLUTELY RIGHT. I will place a note in the instructable.

    Best Regards,
    Hugo Gomes

    0
    None
    raufjay

    2 years ago

    Your project is neat. Some value able info for the people looking for the data collecting sites. For the Voltage reading with the help of voltage divider is the way to go. Try to use 1% of resistance for voltage divider. For power switch for BMP280, I would suggest to use a tiny MOSFET or bipolar transistor. The base or gate of the transistor could be controlled by the ESP32 io pin.

    0
    None
    Bakamon

    2 years ago

    Hey! Good job on the weather station. I was thinking you could reduce the power consumption on the DFRobot Gravity - I2C BME280 by removing the red led indicator. On the NodeMcu there is a hack that can make it run on µA instead of ma. Maybe this would be of interest to you. https://tinker.yeoman.com.au/2016/05/29/running-nodemcu-on-a-battery-esp8266-low-power-consumption-revisited/.

    0
    None
    Swansong

    2 years ago

    That's a neat setup :) This would be really useful to have in the back yard.

    1 reply
    0
    None
    TiobelSwansong

    Reply 2 years ago

    Thanks Swansong, please tell me if you encounter any problems. Or if you have any improvements