pH Device: dedicated probe, setup and calibration

Reading time: ~12 minutes ยท Execution time: ~30 minutes (excluding hardware) + 5 minutes of calibration ยท Audience: anyone who wants to monitor the tank's pH, or who needs to feed a Calcium Reactor (guide 10) or KH Titration (guide 12) with a reliable pH reading

๐Ÿ”ต Advanced guide โ€” not part of the 01-08 onboarding path. Tackle it only if you have already configured tank and sensors (guide 04) and you actually need a pH reading (tank monitoring, calcium reactor, or KH titration).


1. What you are about to do

Unlike in the past, in JoyReef the pH probe is no longer connected to the controller. pH is now a dedicated device: a small standalone board (type ph, name ph-XXXXXX) with its own ESP board, its own ADS1115 module, and its own probe. It behaves like any other JoyReef device: you flash it, connect it to WiFi, it appears on the portal as "pH Probe", and you assign it to a tank.

Why this change? Three concrete reasons:

โš ๏ธ The main controller no longer reads pH. If you previously used the pH probe connected to the controller via ADS1115, that function has been removed from the controller firmware (clean break). To get pH again you must set up a dedicated pH device as explained here.

In this guide:


2. What you need (hardware)

You'll find all the components in the shopping list (guide 01, advanced setup). For one pH device you need:

๐Ÿ’ก One board per probe. If you have multiple pH probes, repeat this guide once for each: every pH device is standalone (board + ADS1115 + probe).


3. Assembly

The connection is simple: the pH probe goes into the ADS1115, and the ADS1115 talks to the ESP board via I2C (2 data wires + power).

pH probe โ†’ ADS1115

The pH probe module (the DFRobot board with the BNC connector) has 3 wires: power (+, V), ground (-, G), and analog signal (A, Po). Connect the signal to an input on the ADS1115 (typically A0), and power/ground to VDD/GND.

ADS1115 โ†’ ESP board (I2C, 2 wires)

ADS1115 ESP board Notes
VDD 3V3 power
GND GND ground
SDA board's SDA pin I2C data
SCL board's SCL pin I2C clock

The I2C pins depend on the board:

๐Ÿ“ท PLACEHOLDER-PH-DEVICE-WIRING

๐Ÿ–ผ๏ธ Image to insert here (pH device wiring): diagram/photo of the ESP board with the ADS1115 connected on top via I2C (VDD/GND/SDA/SCL) and the BNC pH probe plugged into the A0 input of the ADS1115.

โš ๏ธ The pH probe is fragile and must always be kept moist. Don't leave it in the air for long: when it's not in the tank, keep it in its cap with a little storage solution (or, failing that, tank water โ€” never RO water, which "washes" the membrane).


4. Firmware flash + WiFi

The pH device is flashed and connected to WiFi exactly like the other JoyReef devices.

  1. Firmware flash: - Via USB (first installation of a blank board): follow guide 16, choosing the pH device firmware. - Via OTA (if the device is already flashed and online): follow guide 17.
  2. WiFi connection: on first boot the device creates a configuration network (captive portal). Connect with your phone and enter your home network credentials โ€” it's the same procedure as the controller, described in guide 03.

After a few seconds, the device appears on the portal under Config โ†’ Devices with the type "pH Probe" and the name ph-XXXXXX.

๐Ÿ“ท PLACEHOLDER-PH-DEVICE-IN-LIST

๐Ÿ–ผ๏ธ Image to insert here (pH device in the Devices list): screenshot of Config โ†’ Devices with the "pH Probe" device row (ph-XXXXXX) online.


5. Assign the pH device to a tank (for ATC)

Open the device in Config โ†’ Devices โ†’ your pH Probe and assign it to a tank from the Tank field, just like you do with the controller. You can also rename it with something meaningful (e.g., "Tank pH", "Reactor pH", "KH titration pH").

Assign it to the same tank as the controller measuring the temperature: this is needed for ATC.

๐Ÿ’ก What is ATC (automatic temperature compensation). The pH reading slightly depends on the water temperature. The pH device receives the tank temperature automatically from the portal and corrects the reading accordingly โ€” you don't have to wire any temperature probe to the pH device. You just need the pH device and the controller with the DS18B20 probe to be on the same tank. If the temperature hasn't arrived for more than ~10 minutes, the device uses a 25 ยฐC fallback until the data is available again.

๐Ÿ“ท PLACEHOLDER-PH-DEVICE-TANK

๐Ÿ–ผ๏ธ Image to insert here (pH device tank assignment): screenshot of the pH device page with the "Tank" field set to the same tank as the controller.


6. Calibration (2 points, on the pH device page)

Do not skip this step. An uncalibrated probe can be off by 0.5-1 pH, making everything else useless (or dangerous, for a reactor).

Calibration is done on the pH device page: from Config โ†’ Devices open your pH Probe, then go to the Calibration section (direct URL portal.joy-reef.com/ph/{id}).

What you need

Procedure (2-point wizard)

  1. Open the pH device's Calibration section and start the wizard.
  2. Neutral point (pH 7.0): rinse the probe with RO water, immerse it in the pH 7.0 buffer, wait 30-60 seconds for the reading to stabilize, then click "Calibrate pH 7.0".
  3. Acid point (pH 4.0): rinse again, immerse in the pH 4.0 buffer, wait for it to stabilize, click "Calibrate pH 4.0".
  4. The device calculates offset and slope and saves the calibration.

After calibration, rinse the probe with RO water and reinsert it into the tank (or into the reactor/titration chamber). Wait 10-15 minutes before considering the readings stable.

๐Ÿ“ท PLACEHOLDER-PH-DEVICE-CALIBRATION

๐Ÿ–ผ๏ธ Image to insert here (pH calibration wizard): screenshot of the pH device's Calibration section during the pH 7.0 point, with the current reading and the "Calibrate pH 7.0" button.

๐Ÿ’ก Recalibrate every 2-3 months. pH probes "drift" over time, especially in salt water. Regular recalibration guarantees reliable readings.

โš ๏ธ Do not reuse buffers. Once poured and used, a buffer loses accuracy rapidly. Fresh buffer for every calibration.


7. Using pH

Once calibrated, the pH device is ready. The reading appears on the dashboard among the metrics of the tank you assigned it to.

If you need pH for a chemical integration, the pH device is the source you'll select on the respective pages:

๐Ÿ’ก With a separate pH device for each need (tank / reactor / titration), on the pages above you just select the right one by the name you gave it in sec. 5 โ€” no more confusion about "which probe on which controller".


8. If something goes wrong

Symptom Probable cause What to do
pH missing / "Waiting for pH" Device offline or probe not in water Check that the device is online in Devices; make sure the probe is immersed
pH device offline WiFi/MQTT down Check the power and the WiFi connection (repeat the captive portal of guide 03 if you changed network)
ADS1115 not detected Wrong I2C pins or wiring Verify SDA/SCL. On ESP32-S3 check the defaults (SDA=GPIO8, SCL=GPIO9); on ESP8266 SDA=GPIO0, SCL=GPIO2. Also check the ADS1115's VDD/GND
"Jumpy" or clearly wrong pH readings Old calibration or electrical noise Recalibrate (sec. 6); keep the BNC cable away from pumps/power supplies
Reads ~7 even in the 4/10 buffers Probe exposed to air, disconnected, or dry membrane Rehydrate the probe; check the BNC connector on the module
pH "stuck" even when temperature changes Temperature not arriving โ†’ ATC on 25 ยฐC fallback Assign the pH device to the same tank as the controller with the temperature probe (sec. 5)
Probe no longer calibrates (slope out of range) Probe at end of life pH probes last ~1-2 years: if it reads clearly off values in pH 4.0, replace it

JoyReef Guide ยท v1.0 ยท Questions? Write to us at supporto@joy-reef.com