Go Down

Topic: RS232 (MAX232) shield with hardware handshaking (Read 6558 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.
The art of getting good answers lies in asking good questions.


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

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131