3.3v to 5v logic level converter

Hi,

I know this type of thing has been posted before, but I'd like some general things cleared up. I want to make something like this to connect an electric imp (3.3v) and an arduino uno (5v).

The BSS138 in the schematic is described as an "N-Channel Logic Level Enhancement Mode Field Effect Transistor".

I have a decent selection of components at home - some BJTs (2N3904, 2N3906), MOSFETs (IRF830), JFETs(TL071,TL074).
Why choose one over another? If there's some basics I should read, please let me know.

Advance thanks,
Karol.

This is what that board does: http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf

You might not need that complexity though. Arduino inputs recognize 3.3V as “HIGH” and a two-resistor voltage divider will convert an Arduino output to 3.3V.

I need bidirectional communication, so I think the simple voltage divider is not enough.

revkarol:
I need bidirectional communication, so I think the simple voltage divider is not enough.

With the right resistors the voltage divider should work both ways (I think).

When your 3.3V device pulls the pin low the Arduino pin is connected to ground via the upper resistor of the divider. The Arduino input has an internal pullup of around 30k. If the upper resistor of the divider is small compared to that (eg.1k) then it should register as low.

I'd try it and see before making things more complicated.