The ESP8266 WiFi modules might be a nice fit for your project. When using the nodeMCU Lua firmware they basically become programmable wireless access points. The ESP-01 costs about $3 and exposes 2 GPIOs. The modules operate as a TCP client or server or both. Out of the box firmware uses an AT command set, but the Lua firmware offers much more and is very stable. They require about 240 ma when talking on the network and 70 ma when not. They are also 3.3V and not 5V tolerant. The disadvantage is that one needs to learn a bit of Lua, but there are plenty of examples in the nodeMCU forum link below.
GPIO2 supports an interrupt to count pulses for your sensor and the latest version of Lua has floating point math so you could directly compute the flow rate on each ESP module. Each ESP module also has its own MAC address and a chipID for identification, accessable via Lua functions. There is also a Lua repeatable timer alarm with a callback function. This is where you could do your calculations and send the flow rate with an ID every X seconds via TCP or UDP.
The range in open air has been reported as 366 meters with the PCB antenna. This, however, is optimistic in the real world. I have an ASUS RT-n66U router and about 40 feet away from it, through 2 walls and a floor, a laptop shows 5 bars for the network SSID. For an ESP under the same conditions, the ESP broadcast SSID shows 2 bars signal strength. Given your longer distances, you might need to add a wireless extender to the mix.
If you use them behind a wireless router, each of the modules can obtain an IPaddress with with Lua code like the following: (Lua has a file system and a file is executed with dofile("myfile.lua")
-- File name: init.lua print("set up wifi mode") --this is sent back to serial terminal if connected, otherwise does nothing wifi.setmode(wifi.STATIONAP) wifi.sta.config("ret13x","XXXXXXXXX") --here SSID and PassWord should be modified according your wireless router wifi.sta.connect() tmr.alarm(1, 1000, 1, function() -- repeat function every 1000 ms if wifi.sta.getip()== nil then print("IP unavaiable, Waiting...") else tmr.stop(1) print("Config done, IP is "..wifi.sta.getip()) --dofile("yourfile.lua") end -- if end) -- function
The init code will run on a powercycle or soft restart. The dofile("yourfile.lua") above will run once an IPaddress has been obtained and this is where you could put your flowmeter stuff.
here are some links,
ebay seller (USA fast shipping)
http://www.ebay.com/...html?rmvSB=true
nodeMCU forum:
http://www.esp8266.c...wforum.php?f=17
nodeMCU firmware(see pre_build) :
https://github.com/n...odemcu-firmware
API instruction set:
https://github.com/n.../nodemcu_api_en
For development, I use LuaLoader and a PC console TCP client for testing networking:
http://benlo.com/esp....html#LuaLoader