Transmitting a Pulse Output From Water Meter

Hi everyone. I am new to the forums, and thought it would be a great place to ask a few questions regarding a project I am currently working on.

I have a pulse output (reed switch generated) water meter. My goal is to transmit the signal approximately 300-400m and collect the information on the receiving end. I have two different RF transmitters in the mail. The meter will be placed in a small village in Nicaragua to monitor water consumption.

RFM22B-S2 SMD Wireless Transceiver - 434MHz from SparkFun

and

2KM Long Range RF link kits w/ encoder and decoder from SeedStudio

I don't have much Arduino experience and was wondering where I will need to implement microcontrollers in the system. Will I need one on both the transmitting and receiving end? Or can the meter pulse output go directly to the transmitter? I understand that once I have transmitted the data, I will need to use a code to count the frequency and do basic calculations to get a number that represents water flow.

So my questions are:

Where will I need an Arduino(s) in the system?
Do any of you have experience with this type of data transmission?

And anything else that you think will be helpful...

Thank you!

You'd really want a micro controller at each end. This is such a simple task though that you could use an ATtiny at the sending end (on the meter). This would merely wait for those pulses and then send a signal each time.

On the receiving end you'd have arduino looking for those RF signals doing the maths and displaying results, or possibly giving results to an attached computer.

2KM Long Range RF link kits w/ encoder and decoder from SeedStudio

That is probably max range under ideal line of sight conditions. YMMV depending on the actual conditions where the RF link is to be used.

How are ATtiny's implemented? Is it plug and play with the meter, or will I need to program it?

jjwvt:
How are ATtiny's implemented? Is it plug and play with the meter, or will I need to program it?

They need programming. They're basically arduino type chips without any of the circuitry. You simply program them and then solder them to a PCB with any other hardware you need to do the job.

Although, thinking about how simple this task is (sending a RF signal every time a pulse is detected) you might even be able to make a discrete circuit out of dumb components to do the job. You don't specify what form this pulse takes. I'm also conscious of the fact that you imply that this is in a remote region, so a better understanding of what you have available could lead to a more tailored solution. Would you perhaps have any old CB type radios lying around?

Also what are you going to do with the data when it's received? Is it going to be uploaded to a computer for computing bill useage or whatever. Perhaps you just need to log it?

I'm not sure what you have in mind, but I don't think it would be practical just to transmit the pulse over any distance - beyond a few centimetres. The problem is that you will have no means to distinguish the pulse from noise.

If you have an Arduino connected to the meter it can then transmit a more complex signal which the receiving Arduino will be able to verify as genuine - or discard erroneous data.

...R

That is a good point about distinguishing the pulses from noise. I am not sure what types of signals will be flying around there, but it may be worth it to transform the pulses in some way. I do not have access to any CB radios at the moment, but could look into it.

The microcontroller connected to the meter must also be battery efficient and withstand all weather conditions. I don't think using another full Arduino is necessary, but some other transforming circuit sounds like it would be best.

KenF:

jjwvt:
How are ATtiny's implemented? Is it plug and play with the meter, or will I need to program it?

They need programming. They're basically arduino type chips without any of the circuitry. You simply program them and then solder them to a PCB with any other hardware you need to do the job.

Although, thinking about how simple this task is (sending a RF signal every time a pulse is detected) you might even be able to make a discrete circuit out of dumb components to do the job. You don't specify what form this pulse takes. I'm also conscious of the fact that you imply that this is in a remote region, so a better understanding of what you have available could lead to a more tailored solution. Would you perhaps have any old CB type radios lying around?

Also what are you going to do with the data when it's received? Is it going to be uploaded to a computer for computing bill useage or whatever. Perhaps you just need to log it?

The data is going to be logged and plotted vs. time. The overall goal is to provide the community with water usage information in hopes of it leading to less waste and more conscious use.

Over those distances an error-detecting transmission protocol is absolutely required, and simple analog circuitry won't do it. VirtualWire with an Arduino on both ends would work with very inexpensive 433 MHz modules, up to (maybe) 400 m range in the open, with clear line of sight between transmitter and receiver. In such an implementation, the transmitter/receiver plus Arduino modules could cost less than US$10 each (see the Arduino Pro Mini boards on ebay).

Or use the more expensive XBEE Series 1 which have the error detection protocol built in. If the range is obstructed by trees, etc. you will need higher power transmitting modules.

In addition to a simple "switch closure" message, you should incorporate a record number in each transmitted packet, so the receiver can check that there were no missed transmissions.

On the other hand, since you will have a small computer on each end, you could accumulate some data and transmit a summary of water usage from time to time, rather than simple switch closure messages. The system could also detect and warn of unusual activity, like major leaks, pipe breaks, etc.

jjwvt:
I don't think using another full Arduino is necessary, but some other transforming circuit sounds like it would be best.

It would be easy to make up a circuit board with an Atmega 328 chip (same as in the Uno) - you can even do it on perf-board. It would run the exact same code as the Uno so you could do all the development on the Uno and when everything is working upload the program to the standalone Atmega 328. All the joints on your circuit board would be soldered and you could spray it or otherwise cover it with weather resistant coating.

The Atmega chip on its own uses a lot less power than a full Arduino Uno and you can put it to sleep to save even more power. It could be woken by the pulses to record them and it would only need to transmit data every 10 minutes or 30 minutes. Transmitting will be the biggest power consumer. It could also be programmed to make a special transmission if a fault is detected in the water system.

Maybe you could use one of the small Arduino boards (with solder connections) in the same way and make the job even easier.

...R