Wireless Sensor Network with WiFi Access

Hi all!

I'm working on developing a portable wireless sensor network. The goal is to have a set of battery operated sensor modules that can be placed at 20m-30m intervals to form a perimeter around a site. These modules would all be networked to each other to share sensor information. This part isn't too difficult, and wold be straightforward to accomplish with XBees.

The tricky part comes with wanting users to connect to the network via Wi-Fi. Ideally, a user would be able to be near the site, connect to a specific Wi-Fi network, enter a password, and then be able to monitor the sensors from an app on their phone or tablet. Because the sensor network could be set up in a more remote area, connecting this network to the Internet isn't a concern.

So far I've found a few possibilities for the overall system architecture, and I'd like some feedback on the feasibility and effectiveness of each approach.

1. XBee + Central Router with Repeaters
In this solution, each sensor module would have an XBee chip (probably a DigiMesh 2.4), and send all of their information to a central controller. This controller would be connected to a router with DHCP capabilities, and then each sensor module would have a Wi-Fi range extender to connect phones to the sensors.

While this seems like it would be the easiest to set up, it also seems like a rather clunky solution.

2. Entirely Wi-Fi
In this solution, there would be a central router again, and each sensor module would have both a WiFi range extender and connect to the network themselves. This seems like it would be the ideal solution, since it only requires one wireless protocol, and the router could take care of addressing and whatnot. But, an Arduino based Wi-Fi repeater would require two Wi-Fi modules, one to work as an access point and the other to work as a client. And, while I may be wrong with this, it seems like it would be difficult to keep the module's Wi-Fi cards from just connecting to each other without giving the access points different credentials, which would make it difficult for a phone to stay connected while roaming the site.

I understand that Espressif have recently released a mesh-protocol for their popular ESP8266 module, but it doesn't allow nodes to work as access points for external devices. Commercially available Wi-Fi range extenders also don't usually have a serial interface that could be accessed by an Arduino.

It seems like this would be fairly feasible with an RPI, but there's still the issue of needing different access points for each module, and an RPI would add unnecessary cost and power consumption.

3. XBee + SoftAPs
In this solution, there would not be a central controller. Instead, the sensor modules would connect to each other through an XBee mesh network, and each module would have its own soft AP to allow devices to connect. This could be done using a MKR1000 board as the main MCU, with each soft AP configured to have the same name and credentials.

While this seems like it would work, and would be the slimmest, cheapest option overall, I'm not quite sure if having different soft APs that are configured identically would actually solve the roaming issue of not. Also, since the APs would only be connected to each other through XBee, I could see there being issues with address allocation conflicts.

Any thoughts or feedback would be greatly appreciated. If there's another, more straightforward solution that I'm just overlooking, that would be also be welcome, and I'd be glad to provide any more information that I may have left out.

Thank you!

What are you sensing with the individual nodes? Why do the individual nodes need to share data with each other? With a coordinator I understand, but not with each other.

How much data do the nodes need to share with each other?

What is the area that sensor network covers?

Have you looked at any of the ESP devices? Some have all the capabilities of an Arduino built in, and can create access points.

The amount of data each sensor module is collecting is very small, enough to easily fit in a single TCP or UDP packet. I suppose they don't need to share information directly with one another, but for now I'm more concerned with the lower level architecture than how data flows through the network once it's constructed.

I have looked at some of the ESP devices, though mostly just the ESP8266. After looking a bit further into it, the ESP8266 can run in both Access Point and Station mode simultaneously, which might mean it can do what I need.