SEN0711 always timeout — no response via RS485 adapter
ber 2026-09-02 12:57:04 238 Views5 Replies Hello,
I am using the SEN0711 Water Quality Ammonia Nitrogen, pH and
Temperature sensor with the Gravity Active Isolated RS485 to
UART Signal Adapter Module. I am consistently getting a timeout
error and zero readings on both Arduino UNO and ESP32.
i already tried and follow the official wirings and code from the tutorial.
Thank you for your help.
The default baud rate is 4800, not 9600 — make sure your code has sensorSerial.begin(4800). The wiki sample uses 4800 and the comment says "do not change it."
If the baud rate is correct, swap the A and B wires. RS485 timeout is almost always A/B reversed. The yellow wire goes to A, blue to B on the adapter.
Jason.Miao I already did that, but I’m still getting a timeout. Can someone help me. Thank you!
Hi ber, since you've already checked baud rate (4800) and A/B wiring, here are the next most likely culprits for a persistent timeout on both UNO and ESP32:
Check the electrode protective sleeves. On first use you must remove both the black and transparent sleeves from the probe tip. If they're still on, the sensor can't measure and may not respond over RS485 at all.
Bump the polling interval to >200 ms. The SEN0711 wiki troubleshooting note says the host polling interval and waiting response time both need to be above 200 ms, but the official sample code sends a request every 100 ms. Try changing > 100 to > 300 in the timeStart1 check, or add a delay(300) at the end of loop().
Activate the probe if it's new or has been sitting unused. The sensor needs to be soaked in a 10 mg/L standard solution for at least 12 hours before first use. A probe that hasn't been activated often gives no response.
https://wiki.dfrobot.com/sen0711/docs/23359
Verify the sensor still answers on address 0x01. If the ModBus address was ever changed, the default query frame {0x01,0x03,0x00,0x00,0x00,0x03,0x05,0xCB} will time out. If you have a USB-to-RS485 adapter, try polling the sensor directly from a PC with a ModBus tool — this tells you immediately whether the problem is the sensor or the Arduino/ESP32 side.
If none of the above helps, the probe itself may need to be checked by DFRobot support.
Hello,
I just bought this sensor and i'm still troubleshooting the SEN0711 timeout issue.
Based on your advice , the
sensor needs to be activated and calibrated before it
can respond to RS485 commands. I am ready to do the
calibration but I have a few questions before I proceed.
1. Which probe is for ammonia and which is for pH?
Looking at the sensor tip I can see what appears
to be a black electrode and a glass electrode.
Which one is the ammonia electrode and which one
is the pH electrode? I want to make sure I am
soaking and calibrating the correct part.
2. Where can I find the calibration code? The wiki
reference page at:
https://wiki.dfrobot.com/sen0711/docs/23361
shows the Modbus command bytes for calibration
but there is no ready-to-use Arduino code for
sending those calibration commands. Is there
an official Arduino calibration sketch available
for the SEN0711? Or do I need to manually send
the raw Modbus bytes?
3. Does the sensor need to be submerged in liquid
during calibration to respond to the calibration
commands, or can I send the commands while it
is in open air?
4. After completing calibration, will the sensor
then respond normally to the standard reading
command 0x01 0x03 0x00 0x00 0x00 0x03 0x05 0xCB
without any further setup?
Thank you for your continued help.
Hi ber, those are all doable — here's what I found in the SEN0711 wiki.
Which is ammonia vs pH: honestly, the wiki doesn't label them by color, so I can't be 100% sure from the docs. The getting-started page only says not to touch the membrane head at the front, and lists the ammonia electrode's lifespan at ~3–6 months vs ~1 year for the pH one (Getting Started).
Calibration code: you're right, the Reference page (Reference) only gives the raw Modbus frames, no ready-to-run Arduino sketch. But calibration is just two register-write commands (function code 0x10), and you can send them the same way the read example uses sensorSerial.write():
Ammonia 1st point, 10 mg/L: 0x01 0x10 0x12 0x00 0x00 0x02 0x04 0x00 0x01 0x03 0xE8 0x76 0x71
Ammonia 2nd point, 100 mg/L: 0x01 0x10 0x12 0x00 0x00 0x02 0x04 0x00 0x02 0x27 0x10 0x9C 0xF3
pH 1st point (4.01): 0x01 0x10 0x11 0x00 0x00 0x02 0x04 0x00 0x03 0x01 0x91 0x03 0xC3
pH 2nd point (9.18): 0x01 0x10 0x11 0x00 0x00 0x02 0x04 0x00 0x04 0x03 0x96 0xF2 0xA0
The full frame table is on the Reference page linked above.
Submerged or air: it has to be in the liquid. The getting-started page says put the electrode in the standard solution, shake to speed up response, then wait at least 15 minutes for the reading to stabilize before sending the calibration command (Getting Started).
After calibration: the normal read frame 0x01 0x03 0x00 0x00 0x00 0x03 0x05 0xCB returns ammonia, pH and temperature — that's what the protocol section shows (Reference), and I don't see any extra toggle needed to enable reading, but that's my reading rather than the wiki stating it word-for-word. It also only works if the sensor is answering on address 0x01 at 4800 baud with the A/B wiring correct.
If it still won't answer at all after activation + calibration, that points more toward the sensor side, and DFRobot support would be the next step.
Hope this helps!

