SOLAR POWERED ARDUINO WEATHER STATION

Introduction: SOLAR POWERED ARDUINO WEATHER STATION

About: I am an Electrical Engineer.I love to harvest Solar Energy and make things by recycling old stuffs. I believe, IF YOU TRY YOU MIGHT,IF YOU DON'T YOU WON'T. www.opengreenenergy.com
More About deba168 »

In country like India most of the people are dependent on agriculture.For effective planning in agriculture weather forecast is of utmost importance.So farmers are always interested in the Weather Forecasts.As farmers stay in remote areas, they have to wait for the news updates in TV, Radio or News Papers.Unfortunately this weather information is not the accurate data of their local environment rather it gives data of nearest weather forecasting station.Being a son of a farmer, I decided to monitor the local weather and inform to my father earlier.So that he can take early decision for his farm.

My weather stations typically consist of two major parts:

1. The sensors that sit outside and measure temperature,humidity, rainfall, and barometric pressure.This data is send wirelessly through a RF transmitter module to the display unit.I named the entire module as Transmitter module.(Tx).

2. The display unit that lives inside in a convenient place so any one can read the external temperature,humidity etc. It equipped with a RF receiver to receive data from transmitter module.I named it as Receiver module (Rx).

Both the module are run by the arduino micro controllers.

As the transmitter module is deployed in the field,we have to deal with the power management.It is impractical to run a long cable to provide power to the sensor’s location.This leaves relatively few practical options.

1. Connecting directly an Arduino board to a battery. Though it sounds good and obviously it would work, but your battery would be depleted in a matter of days because some components like voltage regulators,power led and USB interfacing chip in the arduino board are always drawing power. But now a days high capacity battery packs are readily available in the market.Solar panels are getting more efficient and cheaper. Adding a boost converter in the circuits extract every last drops of juice out of battery.

2. Putting the arduino to “sleep mode" to consume even less power.

You can see it in the step-11 and 12.

In this guide I will teach a new skills on how you can make a solar powered battery pack for your arduino and how arduino power consumption can be optimize by putting it in to sleep mode.

By using the above technique you can run your sensor related or any other stand alone arduino project for a long time.

Step 2: SOLAR POWER

Why Solar Power ?

The main draw back of battery operated device is that it will depleted after a certain time.This draw back can be eliminated by using a natural resources like solar,wind or hydro energy.The most obvious free source of energy to recharge the battery is solar energy. It is a relatively simple, cheap and requires very less skill .

Among the rechargeable battery nickle metal hydride (NiMH) and Li Ion battery are widely used for battery operated device.

Facts on Battery Charging :

The thumb rule for charging Ni Mh batteries is 1/10th (commonly known as C/10). To charge the battery pack at 1/10th its rated current requires 16 hours of charge time( You can see the picture).The solar panel receives optimal sunlight for only four hours per day, from 10 a.m. to 2 p.m. Thus, a totally ideal system would require four days to fully charge the battery pack.

What is C/10 ?

For example we have a 2xAA–sized 1300mAh battery pack that is rated at 1.2 volts per cell. With cells in series, our pack outputs 2.4 volts and 1300mAh.

Here capacity C =1300mAh

C/10 means 1300/10 =130mAh

So to charge the above battery pack we need a higher voltage ( 2.4 to 3 V) with a maximum current of 130mAh.

As per C/10 rule it requires 16 hours to fully charge the battery pack.

You must be ask,what will happen if we increase the current (>130mAh) ?No doubt your battery will charge faster.But the life of the battery will be reduce.So my advice is to keep the current bellow the C/10 value.

Step 3: How to Choose the Right Solar Panel

The main source for powering the sensor module is solar panel.So it must be able to provide current for powering the arduino as well as current to charge the battery pack during the day.As per my experience it is the most challenging part for a novice user.

Don't worry these are the following tricks which can help you to buy a right solar panel.

1. Voltage : Choose 1.5 times the battery pack voltage

2.Current : Current taken by the Arduino + current for charging (should be

Example :

A battery pack is made of 2 AA Ni Mh battery.

Battery voltage = 1.2 x 2= 2.4V

So required voltage for solar panel =2.4 x 1.5 = 3.6V

By taking some margin we can choose a 4V solar panel for it.

The sensor module along with arduino taking 100mAh current.

Battery capacity is 1300mAh

C/10 = 130mAh

Solar panel have to provide current 100mAh for arduino along with a current not more than 130mAh.

Lets take 100 mAh for charging the battery Total current required = 100+100=200mAh

From the above calculation it is clear that we need a solar panel of 4V and 200mAh.

The following table shows the solar system configuration relationship between storage batteries and mini solar panels.

Battery ---->Solar Panel

1.2V ------> 2V ~ 2.5V

2.4V ------> 3.5V ~ 4V

3.6V ------> 5V ~ 6V

6V ------> 7.5V ~ 9V

12V ------>15V ~ 18V

Note : It is not the strict rule for choosing the exact rating solar panel,rather it is approximate rating .I write as per my experience.

Step 4: Ni Mh Battery Charger :

To power a arduino we need 5v.There are two options

1. Use a 4 AA battery pack :

Total voltage =1.2V x4=4.8V (nominal ) but when it is fully charge,voltage is more than 5V.This is not efficient.

2.Use 2 AA battery pack :

Total voltage =1.2Vx2 =2.4 V

In this case we have to raise the voltage level to 5V by using a voltage booster circuit.

I recommend to use this pack.It is reliable and efficient.Charging Circuit :

Adafruit have also designed a boost converter known as Minityboost for USB charging.You can also use it.

In our case the input to the boost converter is 2.4V and out put is 5V which is sufficient to power a arduino.

Solder the '+' terminal of boost converter to the battery positive terminal.

Solder the '-' terminal of the boost converter to the battery negative terminal.

Step 6: Li Ion Battery Charger

Among the all charger what I have discussed earlier ,I like it most.This is the most powerful and efficient battery pack.The interesting thing is that you can use this for charging any usb powered gadget like smart phone,tablet,MP3 etc.

If you look at the Periodic Table, you will find that Lithium is on the far left in the first column, where all the most reactive elements live.

Caution :

You must take certain precautions when dealing with Lithium Ion Batteries. In order to maintain a very precise voltage when charging. The 3.7V batteries we're using in this guide need to have a charging voltage of 4.2V.A volt high or a volt low can mean an out of control chemical reaction which can lead to danger.

The boost converter output is a USB terminal. For powering a bread board circuit we need two wires for connection.So we have to modify something according our requirement.

The usb have four terminals (5V,D-,D+and GND).

Solder the red and black wire to the + and - respectively as shown in the back side of the boost converter.

Note : The boost converter do not have any marking.So use my picture during soldering.

Step 7: TRANSMITTER

The transmitter module contain the DHT11 sensor which is a relatively cheap sensor for measuring temperature and humidity of the environment.It is good for 20-80% humidity readings with 5% accuracy and for 0-50°C temperature readings with ±2°C accuracy.

I ordered the Barometric Pressure Sensor( BMP085) and rain fall sensor from eBay to forecast more weather data.For the time being I am happy with only temperature and humidity.

The weather data is measured by DHT11 ,processed by a Arduino nano/bread board arduino and transmit it wirelessly through a RF transmitter.

DHT11 Connection :

DHT11 sensor have 4 pins : 1->Vcc ,2->Data ,3->NC ,4 ->GND

DHT11 -->ARDUINO

Vcc-->5VData-->D8NC --> No connectionGND-->GNDConnect a 10K resistor between VCC and Data pin of DHT11

RF Transmitter Connection :

The RF transmitter has 3 pins ( VCC,Data and GND).

RF Transmitter -->ARDUINO

VCC --> 5VData-->D11GND-->GND

Note : Add a antenna in the RF transmitter to increase the range.click here

To test it expose to sunlight ,you will see red led in all (arduino,boost converter,charging) the boards will glow.

Step 9: RECEIVER

The receiver module receive the weather data by a RF receiver and it is processed by Arduino UNO .The processed data is displayed through a 20x4 char LCD display.You can also choose a 16x2 LCD also.The main reason for using a 20x4 char LCD is display is that I can display large number of weather parameters.

I add a I2C module to the LCD for reducing the number of connection with arduino (requires only 4 wires).

If you don't have a I2C module go to my tutorial on LCD tutorial for connection and example code.

LCD connection :

The I2C LCD have only 4 pins (GND,VCC,SDA,SCL)

LCD-->ARDUINO

GND-->GNDVCC-->5VSDA-->A4SCL-->A5

RF receiver Connection:

The RF receiver has 3 pins ( VCC,Data and GND).RF Receiver -->ARDUINO

VCC --> 5V Data-->D11GND-->GND

Note : Add a antenna in the RF receiver to increase the range.click here

I use a 12V dc adapter for powering the arduino uno.Make a hole in the back side of the card board box for inserting the dc adapter cable.

Step 11: POWER OPTIMIZATION BY USING SLEEP MODE

The weather data does not change frequently.So we can take reading at an interval of 5mins.As we are taking readings at regular intervals, it is a fantastic way to save lots of power. A system with appropriate sleep schedules can run for several months on just two AA batteries.We are so lucky that Arduino has several sleep modes that can be used to reduce power consumption.

This is most useful for any sensor networks.You can use this tricks in any of your stand alone sensor project.

After searching through the internet for using the sleep modes, I found a simple but powerful library by Rocket Scream has a Lightweight Low Power library supports all AVR power down modes. Each mode has an associated library method that lets you control sleep duration using the watchdog timer.For a novice programmer like me it is very simple and easy to use.

How to use LowPower Library :

1. Download the library from GitHub2.Extract the zip file to the arduino library in your computer.3.Import the library in your code. 4.Write the following one line code for power saving. "LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF) ; "

Are you happy to reduce 32.43 % power ?? Hey there is still room to reduce the power consumption.Your arduino board have different power sucking components like power led,voltage regulator and USB interface chip which takes most of the power even when it is idle.For other alternatives see the next step.

Step 12: Alternatives for Power Saving

>> The simplest method to reduce the power consumption is by passing the voltage regulator in the Arduino board.

Buy a separate boost regulator circuit and connect its output to the 5 volt pin on the Arduino board, which bypasses the 5 volt regulator on board.This procedure is used in our project.

>> using a "bare bones" board instead of arduino board.>> Disable the unnecessary led >> If you do not need time accuracy, then use the Atmega 328 internal 8MHz crystal instead of a external 16Mhz crystal.

>> Operate Atmega 328 at 3.3V instead of 5V

>>Turn off sensor as soon as possible

To know more details on arduino power saving techniques click here

The maximum power saving is done by using a Bare bones board.By using a bare bone board the power consumption can be reduced to micro amps level during sleep period.You can see the above figure.

You can easily make this on a bread board by following the links bellow :

Step 13: Battery Life Estimation

The battery life can be calculated by determining the average current for the circuit.

Use the following general equation to calculate average current.

Iavg = (Ton*Ion + Tsleep*Isleep ) / (Ton +Tsleep)

Ton (arduino is active ) = 250 ms =0.25s and Ion = 16mA

Tsleep = 5min =300s and Isleep = 200 uA (approx)

It is very difficult measure the current during the sleep period .Some time I got zero reading.

Iavg = 0.205 mA

Operating Voltage =5 V

Pavg=VxIavg =5x.205=1.026 mW

Li Ion battery capacity =3000 mAh

Battery voltage =3.7V

Power =3.7x3000=11100 mWh

Battery life = 11100/1.026 =10,818.7 hours = 15 months approximately

From the above calculation it is clear that theoretically by using a fully charged 3000 mAh Li Ion battery we can run the arduino for 15 months.In practical due to battery self discharge this figure may be different.

As the system is equipped with solar charging system ,we can run for few years without any interruption.

I hope you enjoyed by reading my tutorial.Please comments if any mistake found.

Hello, I am new to these Arduino things and I think this instructable is perfect to help me learn. First thank you for posting this. I am fully following your instructions letter for letter. I do have a question (besides the fact that I am having some problems with the sketches). My question is about the accuracy of the completed solar powered transmitter. Where is it placed outdoors, in the sun or in the shade? My concern is the whole transmitter circuit is enclosed in a plastic box, wouldn't there be excessive heat build up? Would this project be accurate if I placed the box in the shade and ran a power wire to the solar panel located somewhere close but in the sunlight?

Hi. This diode is necessary to place, because if it is not placed and there is a shadow on the panel, this consumes energy. That is, if there is a stain on the panel, that part of the panel will consume energy. With the diode we get that it can not consume.

Hello . I did this project, but I used DHT22 and much more accurately measured. Tell me what it is "HI" on the display, because the project has no other sensor than DHT and it shows some strange values.