A small project, but vital when you're experimenting with the RaspberryPi because the RPi's General Purpose Input Output (GPIO) pins operate at 3.3v rather than 5v. There are several ways around this and I'm using a ULN2003 chip at the moment to play with the GPIO in output mode, but for I2C bus experiments, the ports are bi-directional, so the level-shifter needs to work both ways too. The circuit is a novel application of a MOSFET, in this case a BSS144 to provide a bi-directional level-shift circuit. I'd used the same approach once before to connect a 3.3v serial USB module to a PIC microcontroller operating at 5v TTL levels, which worked fine, but I wanted a design for a reproducible and reusable module that can be plugged into a breadboard. The only problem with the design (for me) is that the BSS144 is a tiny surface-mount component and is easy to lose so a fine-tipped soldering iron, a good magnifier and pair of tweezers are the order of the day. ...