Gather round and follow this here Instructable to transform your iRobot Create into your very own personal WiFi scanner and optimizer! What the iRobot Create will do is find the best WiFi signal in a given area or room based on discrete sample relative to the iRobot's starting position.

Here's what you need for this project:

~The one used in this project has five LEDs, four green displaying signal strength when signal is available, and one red when no signal is found

Tools needed:
  • Soldering Iron
  • Flux/Soldering Paste
  • Computer

What it does:
  • Takes in WiFi data from four spots, North (up), West (left), South (down), and East (right).
  • Analyzes data, moves towards best wireless direction.
  • Continues to get WiFi data and move towards the best direction.

When the data is found, beeps are transmitted for the signal strength. That is, 1 beep for 1 bar strength, 2 beeps for 2 bars, etc. The beeps also move up octaves for each level of signal. The iRobot will continue its algorithm to infinity, and is based around the gradient descent algorithm.

Please "+" this if you like it!

#Featured on Make:Blog!
& BitShift

Step 1: Crack Open Your Wifi Detector

"If you can't open it, you don't own it." is one of my favorite Makephrases. Take off the back battery panel and then grab a small flathead screwdriver to pry it open. There are clips holding the gadget together at the two ends of the long sides (see pic). Be careful not to scratch or hit the circuit board when opening.

Step 2: Solder the LEDs to the DB9 Connectors

In this step, we will being soldering the LED voltages to DB-9 connectors. The DB-9 connectors will interface with the iRobot Command Module to provide input data to the WiFi detector program. Also, the powering voltage will be soldered to its own DB-9 connector. This will allow the WiFi detector itself to be turned on and off.

To begin, secure the WiFi detector's circuit board in something like the "Helping Hands" set. Then, solder one end of a DIFFERENT color wire to each of the LEDs. We will be soldering to the end of the LED that is NOT connected to the common voltage supply. (See picture)

Left DB9 Connector
The topmost LED (the one soldered sideways instead of up) connects to Pin 1 of the DB9 connector. The next one down connects to Pin 2 of the DB9 connector. A wire is also soldered onto Pin 5 of this DB9 connector, to be connected to Pin 5 on the center DB9 connector.

Center DB9 Connector
The middle LED is soldered onto Pin 1 of the DB9 connector, and the one below it connects to the second Pin of the DB9. The wire from Pin 5 on the left DB9 connector is soldered onto Pin 5 of this DB9.

Right DB9 Connector
A wire is soldered from Pin 4 on the DB9 to the positive end on the WiFi detector. Another wire connects from Pin 9 to the negative end on the WiFi detector.

Step 3: Solder the Jumper Wires

Now, we want the WiFi detector to run just whenever we send power to it. Therefore, we have to bypass the switch on the detector.

Using the multimeter's continuity test (the one with the beep!), it was found that the pins going left to right needed to be soldered together in order to bypass the switch.

We got some shielded wire (don't want to mess up the other components by accident!) and soldered onto the pins. See the picture if you're having trouble understanding.

Step 4: Coding

The iRobot must be coded to accept and utilize the input given from the wifi detector. Since we specified which LED goes to which pin of the DB-9 in the last step, it won't be too difficult to read the data.

Download these files and open "Programmer's Notepad". Go to "File -> New -> Project" and name it what you wish (search in our case). Then, right click search in the left column and hit "Add Files". Then, find where you saved the attached files "search.c", "makefile", and "oi.h". Go to "Tools -> Make All". This compiles the code so the robot can read it. After it completes (look at the output bar on the bottom of the screen), plug in your iRobot Create and turn the Command Module on. Go to "Tools -> Program". This programs the on board microchip in the module. After this finishes, unplug, turn the Command Module off, and then turn it on again and wait. The program will then start.

This program heavily utilizes the demo code provided by the iRobot demo files. A timer and the bump sensor data are based on the SIGNAL interrupt. The rest of the code is divided into various functions which are hopefully not too hard to read. The calculation we used to determine the optimal direction did not use trig functions, but rather, a less intense approximation calculation.

Step 5: Making a Nicer Looking Product

Here, we took the case and filed it down so the wires trailing from the LED's on the circuit board could exit the enclosure when it was snapped shut.

The case was test fitted and marked with a pencil. A straight file was used to make the holes (see pic three). The key part was to make sure no wires were pinching when the case closed. For the top half, we made four rectangular indentions, and for the bottom, we filed it sown in a straight line. See the picture.

Step 6: Final: Video & Pics

Here is the final product! (Video attached.)


Have you seen this, pretty cool creation. <br> <br>http://www.kickstarter.com/projects/567971283/iroo?ref=live
不知道还有这东西的啊 ·1
Nifty! I expect the wifi signal will also change depending on how far up from the ground you are. Hopefully, the spatial variation won't be too large though. Is there any existing software available to enable the roomba to layout the space it's exploring? It would be really cool if you could visualize the signal strength in your entire home. Hmm... wifi LED throwies? :D
I think you could do this with some small RFID tags. There is software that will monitor some WIFI RFID tags for locations, and map to a floorplan. ( <a rel="nofollow" href="http://www.ekahau.com/">http://www.ekahau.com/</a> ) I agree that the floor is not the best possible place for sensing WIFI signal strength though.<br/>Cool instructable.<br/>
great idea, but the title is a bit off. I don't really see where this is an Optimizer for your wifi signal unless it can repeat it. Although it looks like you have enough room in that thing to do so, do i smell another project?
This would be a great idea for network people installing a wireless system in conference rooms, meeting halls, etc. Most routers are in a closet and several walls separating them from the desired location. and some sheetrock with a fire code rating actually have an aluminum layer on them. Using the wifi to map out strategic areas to place a wifi repeater.
wow, good job. still baffled on what it's supposed to do, but nice work anyways. it would be cool to make that thing a wifi repeater, so it drives to wherever the signal edge is, and then repeat it.
Sorry about that. There's a clearer explanation in the intro now. Thanks, and that's a pretty sweet idea!
nice instructable...but i may have missed something....what exactly does it do? just drive around with LEDs blinking? does it make a map of the wireless range? what is it doing? why did you connect the wifi finder to the thing in the first place?
Sorry about the confusion. The iRobot Create gets data from the WiFi detector and emits beeps for the signal strength. It takes in four original points and then analyzes the data, moving toward the direction of the strongest signal.
I believe that it makes the iRobot move to the wireless signal like a photovore (sp?) robot.
that would be my assumption as well...but...it'd be nice if i didn't have to assume
Awesome! Great job! Congrats on being the first project done! How much are those wifi analyzers?
Hey thanks! Online, they were about $30, but we snagged two for $12-13 at Radioshack.
Wow? Only $12? I might have to look into that... Also, does the program drive around, or what? I haven't had a chance to look at it yet.
<a rel="nofollow" href="http://www.radioshack.com/product/index.jsp?productId=2288261&cp=&sr=1&origkw=wifi&kw=wifi&parentPage=search">Found it</a>.<br/>

About This Instructable




More by vector023:iRobot Create: WiFi Optimizer 
Add instructable to: