I Make Projects . com
On the right project, some bad rust looks better than some good paint.
This is an older site that's no longer maintained (as of ~2010). For my professional site and contact information, visit AE Innovations. You can also visit my new site at It Came From The Workshop.
Giving Yourself a Sixth Sense for Wireless Networks
What This Is
This project is for a small electronic unit that allows the user to sense the presence and relative signal strength of wireless hotspots. It can be worn as a pendant or carried in a pocket. It is "always on" and communicates the presence and signal strength of an in-range hotspot by way of sequences of pulses - like a heartbeat you can feel. The stronger and faster the "heartbeat", the stronger the wireless signal detected.
It does not actually authenticate or otherwise interact with a hotspot in any way. It is a 100% passive device, meaning it transmits nothing --- it can detect hotspots, but cannot be detected itself.
How It Was Made
This project consists of a microcontroller, some custom interface electronics, a small vibe motor, and an off-the-shelf Wi-Fi detector - the one I used is by D-Link and is keychain-sized.
Here is the sensor I used, and some pictures of the construction. Details of the design will follow.
How It Works
The microcontroller periodically "presses" the button on the detector to initiate a reading. Then the microcontroller "reads" the output from the indicator LEDs on the detector, and uses this as the basis for pulsing out a signal on the vibe motor, which the wearer can feel.
In this way, the unit keeps you updated on the presence and signal strength of a wireless hotspot in your vicinity. No pulses means no signal. Short pulses means a weak signal. Faster, more frequent pulses means a stronger signal. This feedback is very much like a heartbeat, and is extremely intuitive to interpret.
How To Make Your Own
First of all, I use a microcontroller in this project. If you aren't familiar with terms like 12F629 or .HEX files and how to blast them into a PIC, you will have trouble with this project.
The D-Link sensor I used works like this -- press the button and the LEDs light up in a "scanning" pattern while it looks for a signal. It can be in this scanning pattern for up to a few seconds. Afterwards, it lights up either one, two, three, or four of the green LEDs to indicate relative signal strength. If there is no signal detected, a single red LED is lit. The LED(s) remain lit for a few seconds, then the sensor shuts off.
If your chosen sensor works differently, you will need to adjust the electronic interface and the program in the microcontroller accordingly.
This is a basic description of how the unit works (the code in the microcontroller is a little more complicated, but this will tell you what happens).
The microcontroller program is a big loop that does the following tasks asynchronously: activates the sensor every 10 seconds or so, checks to see if any LEDs are lit solidly (a signal strength reading is ready), pulses an appropriate "heartbeat".
Signal strength 4 (highest): pum-pum-pum-pum-pum-pum
Signal strength 3 (high): pum-pum ... ... pum-pum ... ... pum-pum ... ...
Signal strength 2 (low): pum ... ... ... pum ... ... ... pum ... ... ... pum ... ... ...
Signal strength 1 (lowest): No change (provides hysteresis beftween LOW and NO signal).
Signal strength 0 (none): No heartbeat.
Specific Design Information
is a schematic of the interface and electronics. The sensor and
electronics run on a 3V supply (provided by CR2032 cells in
parallel) and the vibe motor has a separate power supply. A couple
AAA cells or even another CR2032 cell should do the trick.
I used the Microchip 12F629 microcontroller, and Melabs' PICBasic compiler.
I ignore the lowest signal strength LED for purposes of reading the sensor's output (I actually do not read it, and as a result it acts as a "no change"). This provides some hysteresis between the LOW SIGNAL and NO SIGNAL results.
The HIGH SIGNAL and NO SIGNAL are OR'd together on GP5 on the PIC. This saved me an I/O pin at the time. Since a HIGH SIGNAL reading lights all the signal LEDs, if GP5 is low (active) then I can check GP4 (the next signal LED down) to determine the "real" reading. If GP4 is also low, then the HIGH led was lit. If GP4 is not low (led not lit) then the NO SIGNAL led was lit. This is explained more fully in the source code -- but the short version is that I saved an I/O pin by doing it this way. (The I/O pin I "saved" (GP1) is unused in the schematic -- this is intentional as I was actually having quite a lot of trouble with it, so I simply avoided the problem and just left it alone.)
A Possible Alternate Use: Friendly I.Q. Test
Stick it in an envelope (so it works and the vibration can be felt, but it can't be seen). Then present it to a friend. Using it only in its intended manner (i.e. no opening it up allowed), how long before they figure out what it is sensing?
Main | Projects | About | Contact and Services
Original Content - Copyright 2010 (Except where specified)