What's the best way to power arduino for long term remote use

I tried searching the forums but I didn’t see anything that answered my question.

I want to make a wireless soil moisture sensor and would like to power it off a battery. I am shooting for it to run a couple months on batteries. I am looking to only update the soil moisture reading every 15, 30 maybe 60 minutes and have the unit sleep the rest of the time(reading sensor times kinda depends on battery life i can get). I see there are step up converters for batteries but I am not sure how much capacity I need for my project yet and if they trickle out power when not in use. It sounds like supplying exactly 5v of power is the most efficient but since most batteries are 1.5v or 1.2v the math just doesn’t work out. I have an uno since I am a newbie but I am guessing there are more efficient boards that can handle a moisture sensor and a wireless card. Any thoughts would be appreciated. Thanks

I'm not really good at batteries, but what I know is that all wireless shield use a lot of power when transmitting... You should try setting some kind of solar cells to recharge the battery if you want months of power.

You'll want to make a stripped downd design, run from ~3V, 8 MHz.
Spend most time in power down sleep mode.
Can wake on 1Hz from RTC module, check the time, go back to sleep until time for a reading.
When it is time, power up the sensor, wireless card, make/send your readings, power back down, go back to sleeping.
Run from battery power directly - no LEDs, no USB/Serial adapter, no regulator.
Card like this with 328P on one side, crystal, 22pF caps, 100nF caps, 10K pullup resistor on the other side, or a commercial version of same.

Some RTC modules use chips with alarms also, can sleep until alarm comes in, do the readings, set next alarm time, back to sleep. DS1307 RTC is inexpensive & easy to use, but does not have alarms.

Some of us made remote devices like this:

Very cheap 315 or 433MHz transmitter, they use almost no current when not transmitting.
The VirtualWire library for communication.
You can add an encryption library for the communication, a good and very small one is XTEA.
A barebones Arduino running at 8MHz. Just an ATmega328P chip with a few components, or an 8MHz Arduino Nano with the voltage regulator removed.
The power is 3 AA batteries for 1 year (maybe 2 or 3 years) operating.
The sleepmode of the ATmega328P chip is very good, a library narcoleptic uses it. That library is good if you want to transmit something every 5 minutes or every hour. When you have to know the exact time, you need a RTC module, but you better add a timestamp for the data at the receiver side.

https://code.google.com/p/narcoleptic/
http://www.airspayce.com/mikem/arduino/VirtualWire/

Sounds like the Uno is not the board I should use for this project. I am just learning about electronics so I am a little out of my element. I am assuming I will need a shield to program the board pictured above? I know that the crystal is for clock speed but what about the resistors? I am reading some books to learn about electronics but I am still pretty green. thanks

There is too much on the Arduino Uno board that needs current. It is therefor not very good for battery operating.

For a barebones Arduino, you need to connect the usb-port to it to be able to upload a sketch. You need a usb-to-serial-ttl converter.
There are a few other options, like the Trinket and the Lilypad USB.
http://arduino.cc/en/Main/ArduinoBoardLilyPadUSB.
At www.adafruit.com they have a lot about wearable electronics, there should be more information, but I can't find it right now.

No, just need an FTDI Basic to program it. The resistor keeps the reset line stable.
The 22pF caps are for the crystal. The 100nF caps are for the power supply.

Start with a little reading:

AtmelAVR042 AVR Design Considerations.pdf (236 KB)

teedo757:
but I am guessing there are more efficient boards that can handle a moisture sensor and a wireless card. Any thoughts would be appreciated. Thanks

You guessed correctly. You can do something like the JeeNode (The JeeLabs Shop - JeeNode(v6)) which strips the microcontroller to the bare essentials and adds an RF transciever. The Moteduino (http://lowpowerlab.com/blog/2012/12/20/moteino-the-wireless-low-power-low-cost-arduino-clone/) is very similar. You could even do a custom one with a smaller microcontroller, like an ATTiny84. That's what I did for a light sensor and I managed to get it to run for a couple months on a coincell battery, sending a light reading every 8 seconds.

Great information, thanks.

I am wondering how far the wireless is able to transmit. I want to put this in my outside garden which is going to be about 40 yards from the receiver inside the house. I was initially thinking wifi just because I know the signal reaches that far. The receiver inside will be powered with a wall plug so power isn't an issue. I figure I will just have it listening all the time for the transmitter and update when it receives information.

Wifi requires a lot of power. When talking about a barebones Arduino and sleep mode and so, wifi requires an enormous amount of power.
Those 315/433MHz use little power.

40 yards = 37 meters. That might be beyond the limit of the very cheap 315/433MHz transmitters. Perhaps not the cheapest ones, but a better one and with a good antenna will do. The better receivers use a crystal for tuning. The cheapest ones use a coil. I think I can go up to 20 meters (and also outside to indoors) with the cheapest ones.
There are other RF modules: Search Results for rf - SparkFun Electronics
For example the RFM22B, those are still in the 433MHz band. SparkFun RF Transceiver Breakout - RFM22B-S2 (434 MHz) - WRL-10154 - SparkFun Electronics

Is it okay that you miss a transmission now and then ?

Peter_n:
Is it okay that you miss a transmission now and then ?

Yes but I would want to set some code on the receiver that would notify me if it has missed a few transmissions. I want to do all the heavy lifting on the receiving end so I am planning on doing a transmission every 15 minutes based just on a sleep function so it not a big deal if the clock is not exact since I will be "listening" all the time.

I am really leaning towards trying (2) Moteino units to transmit and receive.
LowPowerLab Store?route=moteino-r4
With the RFM69HW chipset.

I still have my uno board soI assume I could just buy the RFM69HW chipset for the receiver?

Also what if I want to add more sensors, do I need additional receivers or can I just add transmitters.
Sorry for all the questions but thanks for the help.

I don't know the RFM69HW module, but I think that you can set one as receiver and use the others as transmitter. It's a tranceiver, it is ment to talk both ways.
I also don't know if it can be disabled to reduce power usage or if it will work with battery voltages.

When you transmit something, you can add a 8-bit or 16-bit counter to the data. That way you know when something is missed.
You could transmit something with 7 minutes interval, if your goal is every 15 minutes. Just to be sure.
I have added some random time to the interval, to prevent that collisions keep on going. For example a random delay of 4 to 10 minutes.

You also have to check if the RFM69HW is legal in your country.

Peter_n:
You also have to check if the RFM69HW is legal in your country.

Yes according the the website it is legal, it runs in the 433mhz. Also the website is specifically for creating low power devices so I believe you can put the chip to sleep. I am still new so thanks for the info, I will double check before ordering.

I am new to Arduino projects also, and have been playing with my new UNO for a only a few weeks now.
I am starting a project very simliar to the one you describe and have done quite a bit of research about which wireless devices and which Arduino to use. I decided on the Moteuino with the RFM69HW as the previous poster suggested. I do know that the built in RFM69HW radio can be put to sleep and woken up by the Moteuino and that the library supports that function. I bought two Moteuinos with radios built in because I did not want to try to interface one of the receivers to my UNO myself yet (I am waiting for the Mteuinos to arrive). The Moteuino was designed from the beginning to be a very low power board with it's own power library. Members of the discussion group on the "Low Power Lab" web site (lowpowerlab.com) have said that they can get their project to use less power than the natural decay rate of batteries. You might want to look up the normal decay rate of different types of batteries to see which ones have a battery chemistry that decays the slowest, as some batteries will slowly drop naturally in voltage faster than your project will use the battery capacity up. Remember that you will either need to buy a USB-TTL adapter for one of the Moteuinos, or the USB-TTL cable to be able to communicate with the Moteuino that you connect to your PC if you decide to go that route.

Good luck!

leelorr:
Remember that you will either need to buy a USB-TTL adapter for one of the Moteuinos, or the USB-TTL cable to be able to communicate with the Moteuino that you connect to your PC if you decide to go that route.

Can I use a bread board and program it with the arduino or do you know if I can just cut the ends of a USB cable to make that cable?

teedo757:
do you know if I can just cut the ends of a USB cable to make that cable?

Definitely not. If you need to pass data over a USB cable then one end needs to be connected into a USB host port and the other end needs to be connected into a USB slave port. You can't simple break out the wires from the USB cable and connect them to non-USB serial devices. If you want to connect a TTL async serial port to a USB port then you will need an adapter between then that presents a USB port on one side and a TTL async serial port on the other side. They're commonly available an inexpensive, the only thing to watch out for is that the TTL voltage of the adapter must match the TTL voltage level of the device it will connect to i.e. 3.3V or 5V for your Arduino.

PeterH:

teedo757:
do you know if I can just cut the ends of a USB cable to make that cable?

Definitely not. If you need to pass data over a USB cable then one end needs to be connected into a USB host port and the other end needs to be connected into a USB slave port. You can't simple break out the wires from the USB cable and connect them to non-USB serial devices. If you want to connect a TTL async serial port to a USB port then you will need an adapter between then that presents a USB port on one side and a TTL async serial port on the other side. They're commonly available an inexpensive, the only thing to watch out for is that the TTL voltage of the adapter must match the TTL voltage level of the device it will connect to i.e. 3.3V or 5V for your Arduino.

Thanks for the note. I will order one up then.