Creative Commons images are CC BY-NC-SA 3.0

9.95

added to your
shopping cart

quantity
In stock 70 in stock
9.95 1+ units
8.96 10+ units
7.96 100+ units

Description: This is a breakout board for the SP3485 RS-485 transceiver IC, which will convert a UART serial stream to RS-485. The SP3485 is a half-duplex transceiver, so it can only communicate one way at a time, but it can reach transmission speeds of up to 10Mbps. This board requires a very low amount of power and can operate from a single +3.3VDC supply.

This breakout board includes the SP3485 RS-485 transceiver, filter capacitor, and other components shown on the schematic. We've broken out the RS-485 output to three different connections: (1) an RJ-45 connector, (2) a 3-pin 3.55mm screw terminal, and (3) a 3-pin 0.1" pitch header; none of these output connectors come populated.

Features:

  • Fully equipped with SP3485 RS-485 transceiver and supporting components
  • Operates from a single +3.3V supply
  • Interoperable with +5.0V logic
  • RS-485 input/output broken out to RJ-45 connector, 3.5mm screw terminal, and 0.1" pitch header
  • Driver/Receiver Enable connected to RTS line
  • -7V to +12V Common-Mode Input Voltage Range
  • Allows up to 32 transceivers on the serial bus
  • Driver Output Short-Circuit Protection

Dimensions: 0.9x1.0"

Documents:

Replaces: BOB-09823

Comments 31 comments

  • Any chance of starting a repo for this product? We’ve made an improved version of this board now which doesn’t require the RTS pin. The change makes use of the Max13487 chip which has a built in state machine to determine the Rx and Tx directions. No more struggling with getting the timing delays correct for the RTS triggering. We use the new board design to communicate reliably with industrial equipment such as HMIs and VSDs at anything up to 115200baud. We’d love to share the changes with you, but don’t want to start our own repo as it would be better placed under your original design. Thanks in advance…

  • can someone tell me where can I find this in the Sparkfun Eagle libraries ???

  • I am interested in the new board design using the Max13487. Will Sparkfun be carrying these soon? If not does anyone know where I can find one or find the design and parts? I’ve been messing around with the 485 breakout board now for about a month and it is extremely difficult to get reliable fast communication. At best so far I’m only able to get communication speed to about 1/3 as fast as it should be and I still have some errors. When I use a USB to 485 it works flawlessly, except I don’t want to use USB for the finished product.

  • Help please… Can someone please provide a schema on how to connect this boars?? I have in one side a device with RS485 that is sending out data (I just send out and I don’t need to read) and I would like to connect few of this board and get a TTL out from them? I try few times but without good result… Thanks

  • I’ve been using this breakout for about a year now and it’s been working pretty well. I’ve noticed from the beginning, that I need to have a delay of about 25 ms after I send serial data before I can bring the RTS line low otherwise the transmission gets corrupted or is not transmitted. This hasn’t been a big issue yet, but for a recent project I am running two 485 lines from one Arduino Mega 2560. I am receiving commands on one 485 line from the host software and transmitting them if the address is correct (I have several Megas running). I am expecting a response on the second 485 line from the devices I am sending commands to. The issue is that the peripheral devices respond in ~20ms and sometimes I get it and sometimes I don’t (based on the state of the RTS pin). I need to transmit these responses back to the host software.

    I feel like I should need these delays in the program. I would assume that the arduino has completed the transmission before it moves on from a serial.write() command. Any ideas?

    • This is an interesting issue when designing half-duplex systems: when you’re done transmitting you need to quickly switch to receive, but because the UART buffers at least one character (it will return to your code when it starts, not finishes, sending the last character), how do you know when you’re actually done transmitting? I don’t know exactly how the Arduino Serial driver works, but it might be worth digging into the source code (yay open source!) to determine if and how it is buffering characters before sending them. You might also look at the 2560 datasheet, as there is likely a UART status bit that is asserted when the UART is busy transmitting, which is something you could busy-wait on to deassert RTS immediately after the last bit is sent. With the above knowledge, you might be able to tighten things up in your code, or even hack on the Serial driver to automatically assert RTS while you’re sending data and deassert it when you’re done.

      Arduino is great at making the easy stuff easy. Here you’re pushing it into something new, which may take a bit of work, but the nice thing about open source is that they give you the freedom to do so. Good luck and let the world know your solution to make it easier for the next person who wants to do this!

      • Hi Mike, just a quick follow up on this. We played with this breakout board, as well as the Max485 for a few weeks. It is extremely sensitive to delays and timing in order to trigger the RTS line reliably. We decided instead to use the Max13487 chip which has a built-in state machine and handles the TX-RX latching by itself. This removes all of the delays from the Modbus library file and also frees up the RTS pin. We now have Modbus running flawlessly at 115200baud. This is only positive criticism, but I would highly recommend and suggest that you change your Modbus chips to the Max13487. I think the majority of us customers would rather just plug and play and the sadistic ones can buy their own Max485 with an RTS pin and spend weeks debugging :) Use it, don’t use it…

        • What code are you using to drive the Max485? I’ve been working on a project where I’ve used both Max485 and ST485’s directly (no breakout board) and haven’t seen this problem, I can reliably get no-op responses from a remote board in ~1ms, however I’ve only been doing using SoftwareSerial and not the built in serial. I’ve also been using direct communication and not-DMX, using http://www.gammon.com.au/forum/?id=11428 (worth checking out, depending on what you’re doing with it) combined with a socket-like layer I’ve been working on (https://github.com/aphelps/HTML/tree/master/Libraries/RS485Utils)

    • Will this help? http://pydoc.org/2.5.1/termios.html “tcdrain(…) tcdrain(fd) -> None Wait until all output written to file descriptor fd has been transmitted.”

    • serial.flush() may help

    • if the delay seems excessive make sure you have 220 ohm termination at both ends of the twisted pair

  • am trying to connect Sparkfun RS485 breakout to Xbee Pro modem. Since the RS485 breakout uses the SP3485 RS-485 transceiver IC which has its RTS pin to control the data flow I assumed that this signal should be obtained from the Xbee RTS (DIO6), or CTS (DIO7). Although both IOs where configured as RTS and CTS respectively, they fail to show any change in their status when data sent (from PC) or received from another Xbee..

    Has any one tried this type of connection ? and can offer advise with tat regard.

    • The issue you’re running into is that RS-485 is half-duplex (it can transmit or receive, but not at the same time), while the XBee is full-duplex (separate transmit and receive lines).

      What you’d need to implement this is a signal that indicates when you’re transmitting and when you’re receiving. Unfortunately RTS and CTS don’t provide this signal. They’re for flow control, which allows the two sides to tell each other if their buffers are full and data transfer should pause to avoid losing data. I don’t know of a signal on an XBee that could be used for this. You might be able to approximate this signal from your host system, but you’d need to be sure to switch to receive immediately after sending your data to avoid losing any of the reply, AND you’d have to reliably get this signal to both ends of the RS485 bus, which kind of defeats the point.

      I can think of two ways around this problem. One is to use a total of four RS485 boards, two for the TX and two for the RX signal, with the direction control permanently on. This would give you a four-wire connection with all the benefits of RS485. Another option is to use RS422 instead of RS485; RS422 is the full-duplex version of RS485 (there is no direction control). SFE doesn’t currently carry any RS422 hardware, but the chips are out there and very easy to use.

      Anyone have any other ideas? I hope this helps, good luck with your project!

  • Stray solder balls? Sure I can clean them up with my soldering iron, but for this price we should get some sort of quality control.

  • Has anyone had any luck using this with an arduino? I’m trying to drive a dmx light using the tinker.it DmxSimple library.

  • How do I know what uart baud rate to use when connecting to the tranceiver.

    The rs485 side is connected to a “black box”

    • This board doesn’t care what baud rate you use, it just passes the signal straight through.

      But if you don’t know what baud rate your black box is using, you’ll likely have to try all the standard values to see if it responds to any commands.

  • HI,

    I know this might be stupid, but is there an easy way to connect this to a usb to rs232 converter on the UART side?

    Thanks

  • I considered using this breakout for my projects but the lack of full duplex capabilities had me looking elsewhere. I settled on the max488. A breakout of that chip would be very awesome. Of course the downside is that the max 488 is limited to 250 Kbps but I only needed it for serial translation from ucontroller to ucontroller.

  • to monitor the 485 bus while transmitting (for collision detection), would it work to separate pin 2,3 on the sp3485 and then ground pin 2? That would still leave transmitter control on the RTS, but would it then receive while it was sending?

  • There should be an assembled picture of this. In my haste to order I didn’t realize the break-out was either RJ-45 -OR- 3.5mm screw terminal. The verbiage states “and” not “or”.
    Upon receiving it, I realized that the side-pins are the standard .1" header pins mentioned, not for the screw terminal which only mounts if you do not mount the RJ-45 connector.
    It’s my fault for not doing enough looking at the schematic/eagle board layout/PCB picture, but a simple picture of the completed PCB would have helped.

    • In addition to my previous comments, I have found another flaw. There are no provisions for pull-up/pull-down resistors. The A/B RS-485 lines don’t make their way to the breadboard so you can’t put pull-up/pull-down resistors on easily.
      Also, why a 220 ohm terminating resistor? If you’re using Cat-5 isn’t the impedance of the twisted pair typically 120 ohm?

      • Assuming you use one board at each end, the two 220 ohm parallel to 110 ohm, and you’re correctly terminated.

  • Hello everyone, i wish you could help me…
    I bought this module a while ago and i was trying to make a simple application using a capacitive keyboard that sends data using RS485 protocol and my new Arduino Mega.
    The thing that is going on is that i am able to send messages to my keyboard from my arduino, but not in the other way… the arduino code get stucked in the line where the serial is supposed to receiva data.
    It is possible that the receiver module of the SP3485 chip is not working properly? or what else could it be?
    Greetings,

  • I could use this in my next DMX-512 design.
    Any chance for a full duplex transceiver? Possible even a breakout with optical isolation, protection circuitry, and a DC to DC converter for isolated power?

    • i noticed that full duplex could be possible by connecting a second board’s A and B pins to the pins 1, 2, 3, or 5 of the first board when using a RJ-45 connector.
      but a full transceiver board with extra circuitry would be nice

    • I was just about to ask for the same thing


Related Products