level switch for running Connect One iWifi board

I'm interested in building a Wifi shield using the Connect One iWifi module. First, has anyone done this already? I've seen the Little Bird Brain wifi shield, but that's 4x more expensive, and the iWifi looks pretty simple to connect to.

The only issue is that it runs at 3.3V, so I'd need a level switcher. Is anyone familiar with any I/O module for doing 5V to 3.3V easily? I'm planning on just using pins 0 and 1 for the builtin UART without flow control, so I may be able to get by with just two transistors or diodes and pullups. I was wondering if anyone had any experience with this sort of thing before I start designing.

Hi Jin

Have you had any luck with this? I am also interested in the connect one chip as it is the only one (at reasonable cost) I can find in SA. :-?


I have a shield design that I've got working with the NewSoftSerial library, using SMD parts. It is single sided for easy home manufacturing, using Schottky diodes for level shifting down and a FET for shifting up. I may publish it on BatchPCB's new design gallery if there is interest.

The iWifi module is a great Wifi board, supports a great number of internet protocols and comes with a SerialNET mode that makes retrieving data from the Arduino very easy. I'm working on another version that uses the ConnectOne Secure Socket board that has a smaller form factor and different antenna connector, but appears to be the same otherwise. The WiReach also seems to be a very interesting module, very small and supports many more protocols other than serial (SPI, USB, RMII).

Contact me for the Eagle files if you're interested in making your own.

Thanks Jin. :) PM sent ..

Jin, Can you post an example explaining how do you make the connections between wifi module and the arduino? I use this circuit, but i can send "messages" by the serial. How do you set up the wifi module? Thanks for your help. Roberto

Here is a useful article for level shifting voltages: http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=65

I used the diode and mosfet methods. You can leave out the pullup resistors on the Arduino side and use the built-in pullups, but you'll have to remember to enable them.

Hi Jin,

Are you using the Nano Socket iWiFi? It looks like a neat board and would allow swapping with Nano SocketLAN. I think these boards are all the same as far as programming and connecting. It uses 3.3v so using a 3.3v arduino would eliminate the level shifting issues.

Do you like the configuration tools from connectone?

scurvyrat The iWifi use 3.3 and arduino in the tx pin give you 5v. This is the reason for the shift level. What kind of tools do you have for the ConnectOne? I'm interested. Greets! Roberto

I was using the other board, not the Nano. I have a couple of Nano boards now and was thinking of making an interface board with the Arduino Nano for a really small wifi arduino setup without the need for much level shifting, but I haven't really done anything on it.

I've only used the ConnectOne tools to update the firmware, which is actually fairly hard to do unless you are using their evaluation board. I had to hack up a USB/Serial cable interface on a protoboard before I could get it to work. The ConnectOne firmware is pretty decent, and takes care of a lot of protocol stuff for you.

I was going to write up all the work I did a while ago with interfacing Arduino to the connectone boards, but I just haven't had the time.

Roberto, I was hoping to use something like the http://www.sparkfun.com/commerce/product_info.php?products_id=8824 and keep everything 3.3v

Jin, have you tried a custom website image?

I'm also curious about their system to be able to access misconfigured ones via their website (bad IPs etc...). It must do some sort of call-in to their central servers.

I'm looking at building a wireless datalogger for solar projects with it. If you ever get the time to jot down your experience that would be great.

scurvyrat, I have been using this: http://www.olimex.cl/product_info.php?cPath=76_78&products_id=273

I don't get the point with the 3.3v.

By the way, this guys use an arduino and ConnectOne. They use a solar panel to energyze the equipment. http://www.ece.gatech.edu/academic/courses/ece4007/09spring/ece4007l04/dk2/index.html

Greets! Roberto

forgot to ask, where you got your nano boards from. Mouser has them, but is out of stock. The eval board just seems to have some cables and a few headers unless i'm missing something.

Do you have any sketches you would be willing to share?

I got mine from Mouser when they had them.

I was using it to interface to a Kestrel wind/weather meter. I configured it into listening mode, then read a line and output a valid HTTP response with the information I was interested in. Thus I could use a regular web browser to access the data, although the actual content of the request was entirely ignored so it would always return the data.

Some notes: You can only service one request at a time, and there's a limit to how quickly you can service requests. The wifi board has to reset itself after every request and that takes a second or two. Make sure you output a "Connection: close" header or the browser will hold open the connection. You can also define a close connection character (AT+iDSTR) and output that at the end of the data to force a connection close.

Here are the parameters I used:

No echo


No flow control


SerialNET config


Listen port


Close connection character


Flush character


DHCP pool size


Default IP address




Default channel, required for initiating ad hoc


Roberto, I was using the 3.3v on another project that gyros and accelerometers that were all 3.3v so went with 3.3v for that.

Thanks for the link! they seemed to have spec'd a Roving Networks module: Wi-Fly? RN-111BWireless. Haven't compared the two systems and they seem about the same price (Roving is a bit more). But went with the oneconnect in the end. Didn't see anything on why the switch in their blog.

scurvyrat, by that i remember, the guys got some problems with one wifi card (if you read the log of the project, will got this info). I suppose that it is not the connect one problematic card.

Jin, thanks for the codes that you have used. I will search for my backup and i will recover this project. For me i make an interface with django to access to the connect one. It was not too elegant (i open a socket direct to the connect one), but it works. I will try to publish something. Greets! Roberto