Yes this is trivial for the hardware guys, but it took me some time to find the very simple solution, so I’m putting this out in case it helps someone.

And a better page has appeared since I wrote this. Don’t know why I initially missed it: http://www.savagehomeautomation.com/projects/raspberry-pi-installing-a-rs232-serial-port.html

The problem:

  • The I/O pins for the Raspberry SOC (System On a Chip) work with 3.3V. This is not enough output for RS232, and conversely, RS232 line levels could kill the chip

  • The solution: use a level converter chip, such as the MAXIM MAX3232, which costs a few Euros/Dollars, and can be powered from the 3.3 or 5V outputs from the Raspberry Pi.

  • The new problem: every page I’ve seen about this has a nice guy explaining how he designed a small board to support the MAX3232, the few capacitors it needs and other tinkering. Plus attaching a DB9 socket. And none of them sells the result at a reasonable price, especially in Europe. WTF?

  • Ebay to the rescue: you will find MAX3232-based adaptors for a few dollars on Ebay. Search for "MAX3232 RS232". Some will even include the small cable to connects the adaptor pins to the Raspberry’s. All for less than 5$. Simple?

Ok, so I’m still waiting for my adaptor, so I can’t swear it will work (will keep this place updated), but I can’t see why it wouldn’t as this is not really rocket science (Maxim does the hard work…).

For the curious: how does this work

I was intrigued: after all the device gets a 5V supply at best (works with 3.3V too). How does it create the RS232 levels ?

The answer is that it uses a "charge pump" to create the appropriate levels. A charge pump is a number of capacitors in series. You charge them one at a time by switching the low voltage to one of the capacitors, then the next, etc. And you get the sum of the individual voltages between the extremities of the series ! Which you filter with another capacitor and use for your output.