Rs485 Signal Problem

Hi everyone,

I’m working on a remote water monitoring project and am currently stuck trying to get reliable turbidity data from a Modbus RS-485 sensor into a Particle Boron.

I don’t have a deep electronics/firmware background, so I’m hoping someone can point me in the right direction or help identify what I may be doing wrong.


:wrench: Hardware Setup

  • MCU: Particle Boron LTE

  • Sensor: Yosemitech turbidity sensor (RS-485 Modbus)

  • Interface: DFRobot RS-485 to TTL signal adapter

  • Power:

    • Sensor powered via 12V supply

    • Boron powered via USB

    • Shared ground between components


:electric_plug: Wiring (as currently configured)

  • Sensor → RS-485 adapter:

    • A → A

    • B → B

    • 12V → 12V

    • GND → GND

  • RS-485 adapter → Boron:

    • TX → Boron RX

    • RX → Boron TX

    • GND shared

(Photos attached for reference)


:bullseye: Goal

  • Read turbidity (NTU) values from the sensor via Modbus

  • Send data to Particle Cloud (via Particle.publish)

  • Ultimately deploy this in a remote buoy system


:police_car_light: Current Issues

  • I am not getting valid turbidity readings

  • Particle Console shows events, but values are incorrect (e.g. “test” or junk data)

  • Serial monitor becomes unstable or stops working when RS-485 is connected

  • Unsure if issue is:

    • Wiring

    • UART configuration

    • Modbus request/response handling

    • Voltage level mismatch


:test_tube: What I’ve Tried

  • Verified Particle Boron connects to cloud (breathing cyan)

  • Able to publish test events successfully

  • Confirmed sensor powers on

  • Double-checked A/B wiring polarity

  • Attempted basic serial reads (but inconsistent results)


:red_question_mark: Key Questions

  1. Is there anything obviously wrong with my wiring/setup?

  2. Do I need a specific library or proper Modbus implementation for Particle devices?

  3. Could this be a voltage level or RS-485 direction control issue?

  4. Any recommendations for debugging Modbus communication on Boron?

Hi, I am not familiar with any of those components, but I checked the docs for the adapter and it looks like it needs 3v3 connected from the Boron.

Not 100% sure though, please double check my idea before making the connection.

On this Arduino, both gnd and 5v are connected, so I believe gnd and 3v3 should be connected on the boron.

Best,

There’s also a 120 Ohms switch on the adapter board that I would see if I need to play with.

I have been using RS485 to communicate from Photon and now Raspberry Pico to a control (CU) board that uses RS485 comms.

Our initial custom interface board design included a termination resistor R1 and pull-up and pulldown resistors R6 and R7.

This initially seemed to work but after a while we saw an unacceptable level of comms errors. A review by a different design engineer suggested removing R1, R6 and R7 - this almost completely removed the comms errors. Conclusion - R1 may or may not be required if a device on the bus has a termination resistor already.

We then had a batch of CU boards that would not communicate at all. This turned out to be a change in the RS485 signal timing. It could be the sensor RS485 timing won’t work with the Boron.

Using the P2 on the latest design we introduced a Pico to handle all the comms to timing critical sensors knowing that the IO is slow and this seems to have completely eliminated comms errors.

My advice is to try with a sidecar device (Pico or Arduino Uno X) and see if that works.