Go Down

Topic: RS232 (MAX232) shield with hardware handshaking (Read 3807 times) previous topic - next topic


Here is my RS232 shield.  It uses a MAX232 chip to set the right signal levels for real RS232 communication.

This shield is fairly unique in that it allows you to implement hardware handshaking (CTS/RTS) through two standard digital pins.



This shield is fairly unique in that

A thing is or is not unique. There are no degrees of uniqueness. Like pregnant or not. There is no in-between.


I like the fact that it support hardware handshakes. I think it is fairly unique as there is so much place for prototyping that is left unused....

And that is a pity as it could be extended in such a way that I could choose the mapping of the pins with such a free prototyping area. Maybe an idea for V2.0 ?

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


You can already select the mapping for the pins for the RTS/CTS, but not the TX and RX... Maybe that would be useful for use with NSS I guess.  A very slight mod to the board will allow the change.


Indeed I had NSS in mind, moreover it would be great if the shield could be extended to hold 2 hardware enabled RS232's . room enough...

That would enable to place the Arduino between two serial devices to monitor communication, optional to modify it. It would be neat if the CTS/RTS pins
Another application is the multiplexing of the serial signal especially TX, e.g. one Arduino sending to 2 PC's .

INstead of 2 RS232's I can imagine to have all 9 pins supported, including lines as Ring Indicator etc. prefeably with the option to do some loopback, like connecting the RTS and the CTS line so if a device sets the RTS it gets immediately/automatically a CTS. Sort of breakout box functionality.

1 DCD - Data Carrier Detect
2 RX - Receive
3 TX - Transmit
4 DTR - Data Terminal ready
5 GND - Ground
6 DSR - Data Set Ready
7 RTS - Request To Send
8 CTS - Clear to Send
9 RI - Ring indicator ==> to arduino interrupt pin :)

e.g. see - http://www.lammertbies.nl/comm/cable/RS-232.html -

just thinking out loud ...
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


I can see you wanting RI and DCD if you have it linked to a modem, but having DCD/DSR and CTS/RTS?  The two are kind of mutually exclusive aren't they?  Yes, you can implement both at once, but they both do the same job don't they?  I suppose if you have an aged system that only does DCD/DSR maybe...


Why not beef it up some - add a dual SPI or I2C UART and the MAX232 to your Uno.

NXP Semiconductors SC16IS752 for instance.
Adds dual serial and 8 general purpose IO to your design.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


That looks a nice chip.

However, nice as it is, I can see a few down sides:

1. It's SMD only - yes, I can handle SMD OK, but this shield is for others to build, not me, so simple-to-construct is a must.
2. It doesn't do the RS-232 level shifting, so you'll still need a MAX232 (well, MAX3232 as it's a 3.3v chip) per channel - that's a minimum of 2 - 4 if you want the full flow control.

It's starting to get a bit big now.


I've just ordered some samples of the MAX3111 chip - similar to the NXP one except:

1. Only 1 channel.
2. Only CTS/RTS handshaking
3. Includes the voltage pump for the true RS-232 signal voltages.

That would give a true hardware second RS-232 port on the Arduino without the overheads of running NSS.

Of course, I'd have to write a library for it and make it work identical to the built in UART, but that's no biggie.

Go Up