[CNLohr] wanted to test the WiFi range in his house. One look at his roommate’s cup and an unorthodox idea was born. The WiFi Cup used an ESP8266 to connect to his home network. For output, [CNLohr] also added a WS2812 LED strip to the cup. The ESP8266 was programmed to send UDP packets to [CNLohr’s] laptop. When the laptop responded back, the ESP8266 turned on the LEDs, lighting up the cup. The cup’s response to signal strength was very quick – about a second.
[CNLohr] took the WiFi Cup around the house. He was surprised to detect the connection in corners he didn’t expect; in fact, the signal wasn’t weakening at all! He proceeded to walk outside with it, hoping to see the signal strength decrease. As a testament to his roommate’s robust router, the cup merely flickered. Hoping for a better test, [CNLohr] switched out the router for a cheaper TP-Link with shorter antennas. While the initial ping test showed a slower response time, the cup detected WiFi around the house just fine. It only wavered for a couple of moments when it was placed inside a metal bucket. We have to wonder how thin [CNLohr’s] walls are. WiFi never works that well in our house!
Now add camera with 60s shutter speed, walk around with this cup and you have color map of your WiFi :)
why not add a roomba as well? http://inhabitat.com/geek-alert-led-light-paintings-created-by-roomba-robot-vacuums/
I really wanted to do this with the ESP, I have looked at other people doing it (like the link above) but I could not coax the ESP into giving me accurate signal strength on a per-packet basis. I really wish I could. That would be super cool. I spent about 8 hours looking around in ram, peeking and poking but eventually gave up.
you could go the other way, get the RSSID from the PC and send it back. Not the same, but it is still the best you can get.
I wonder if it is possible to draw a map of the wifi range by processing acceleration sensor signals and a given starting point.
It took me seconds to find a perfect solution for this…
Note to me: Google first, then comment.
Eh, it would be easier and cheaper in terms of time to just use a GPS module. Besides, they’re more accurate too!
Inside an apartment? Mine can’t even get a fix more than a meter from the window.
you cannot get accurate position, because of the drift.
On the other hand, as others have pointed out, it’s not useful. You need to use the real client at the real data rate to get accurate signal quality. So you are better of grabbing you phone/laptop with some software.
The thing is probably connecting at some low barely usable rate as it only has to pass a tiny UDP packet. I can get that from my AP’s with the signal around -85dBm – the thing is it doesnt actually work for anything useful like loading a webpage.
Just like GPS you may be acquiring GPs Data…. but doesnt mean you have a fix. So it wouldnt even fimd a staring point.
1Mbps, my router always says the link speed is 1Mbps for ESP TX, 72Mbps for RX. I haven’t tried forcing the rate on the router to see what happens.
hah this test is like using ETX routing metric for wireless – it kinda sucks;) (it just says it works (even barely) or not at all) and you can’t test throughput as I doubt ESP8266 can communicate any faster than base 1mbps speed.
If ESP8266 doesn’t provide any information about signal strength/noise I don’t think you can do any meaningful test except to check where you can put your esp module;)
Now I think about it, doing it roundabout way you could just read signal levels from access point and send it back as an brightness update to the lamp. If no update was received before timeout, turn off the lamp ;)
Datasheet gives the TX power consumption for 1, 11 and 54Mbps, so it should be possible. How to change it, I don’t know. I suppose new FW might be needed?
I can confirm from my own messing about that these things are ridiculously robust. In a totally unscientific test I was able to walk down to the other end of my street and maintain a full connection the whole thing. Everything else, laptop, phone, drop out before you’re even 5m out the door. I was extremely impressed.
That’s because there’s a huge difference between being connected and being connected and being able to transfer data at any usable rate.
You’re not going to be able to transfer a huge rate of data with one of these things anyway.
Absolutely true. Which is why it’s not exactly appropriate for a “wifi test” if you want that test to be meaningful for anything other than a low power wifi beacon that transmits tiny amounts of data.
My tests have all been with ~150 byte packets at ~40 Hz.
Can you get the rssi values from the ESP8266? For this type of application that would be ideal. Alternatively you could turn it around and get the rssi from the routers or base station and tell the ESP8266 what colour to display.
Well.. At least CWLAP returns the rssi for every ap found. But it takes some time.
Got my module yesterday and have no idea what to do with it first. So many great ideas.
I looked at a bunch of places in RAM trying to find the RSSI of every packet, I could not find it. Only on beacons which update once a second or so. I tried later doing something with light and the signal strength, but it was kinda useless since it was too slow. It may be possible, but I can’t find it.
some routers allow you to change the interval for the beacon, so you could make it faster, if you found the RSSI somewhere.
CNLohr knows what he’s doing …I’m impressed a lot by his previous work.
For those who want to measure more precisely should consider using netio132 ( comes with the SDK )
PC ( test side )
http://www.ars.de/ars/ars.nsf/docs/netio
> WiFi never works that well in our house.
Apparently these ESP8266 modules have quite a good reciever/transmitter, So they are pretty good at “range”.
Now to those who are complaining: not at a usable data rate… You are talking to the ESP8266 at 115k2, so the 1Mbps WIFI link can easily drown out the link to the “host” controller.
So, even if the ESP8266 has traded out some “speed” for “range”, it will function quite well in its intended applications…..
In most cases it does not matter, the serial interface is limiting (though i remember 4Mbps possible claimed somewhere?). But it matters in battery powered applications, where if the signal quality is high you would like to send the data as fast as possible.
i’m using the esp8266’s UART at 460800 with no issues, i may even have gone up from there.
Dude – Your house is a mess.
http://www.inssider.com/
I can “connect” to a store’s WiFi a block away. It’s when I try to use that connection that things fall apart.
When you test your connection you should send test packets. Signal strength isnt enough.
These packets are UDP packets, round trip. The packet must be sent replied to and received otherwise the light will dim.
why is there no smartphone app for wifi signal strength?
Perhaps you’re being snarky – asking why someone would use a completely useless measuring metric like a light instead of a actual meter – if so, well done.
If you’re actually asking for a wifi signal strength app, look at Wifi Analyzer in Google Play
https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer&hl=en
If you’re one of those sad apple fops, you don’t need such an app, the big words will be way beyond your fisher price comprehension (let alone the concepts).
I am sure his purpose was not to test the wifi strength, but rather to make a proof of concept with the ESP.
Sounds like a beer game in the making. =)
Awesome! :)
I see some miss conceptions here, at least from my point of view.
He tests the light fade when he blocks the antenna, for a “long” period of time like 2 ou 3 seconds.
I would like to see some tests like, if one ping fails between twoo consecutive sets of acknoledged pings, and test with 2 consecutive ping fails, and 3 ping fails, and 4 ping fails… that would clearly show when we would se some light fading..
From this point i can say that if one failed ping between 2 consecutive acknowledged ones does not afect light in a visible way, we can have a 50% fail without noticing it.
Other question, time between each ping..
Another question is that the ping size packet… small size packets will fail much less….
Another question, and important one the light turns on when it receives a ping request, or on a checked reply? this implies that you can receive wifi anywhere because you have high sensible device, but to communicate between 2 devices, you need rx sensibility and tx power… and all of us know that routers have high power compared to wifi cards.. so a laptop or even that device may be able to receibe packets, and may not be able to make the replies reach the router..
To conclude i think there are some great flaws on this project, it is funny, shinny but not very accurate.
i would suggest using vlc to stream a video, and using a laptop to recive it. this way anyone can get a simple and fast way to check not only if he has wifi, but also wifi quality in that specific point. This stream would have to be on real time, without any buffer, jitter, etc mechanism.
It’s a ESP8266. You don’t stream video with it. You install it in a washing machine to tell you the temperate and state of everything. You install it in a doorbell to tell you when the button was pressed, you install it in a light fixture to turn it on and off. These tests are exactly the application they are made for.
Is it possible to use wifi module without a microcontroller just to see signal strength?