🌊 EC+pH+ORP Isolated Dev Board

Manual📜 | Schematic ⚙️

A Mod-EC, Mod-pH, Mod-ORP and Mod-ISO module with everything needed to use it:

  • U.FL probe connector
  • 2 qwiic connectors
  • I²C pass through header
  • EN pin can completely shut down the entire board for power saving

1.

📦 Libraries

Install the libraries to use the on-board modules:

Mod-EC

Mod-pH

Mod-ORP


2.

🔌 Connections

  1. The board communicates with the controlling device through I²C and has two options for making that connection:

    • Qwiic connectors: if your controlling device has a qwiic connector, just connect the two with a qwiic wire, no need to bother with which wire is what. If your controlling device doesn't have a qwiic connector:

      Qwiic Wire Function
      black GND
      red VIN
      blue SDA
      yellow SCL
    • Pass-through header: located on the east side of the board, there are 5 pins for a dupont-style 2.54mm header to be attached.

      Controller Dev Board
      GND GND
      3.3 to 5 Volts VIN
      SDA SDA
      SCL SCL
      GPIO (optional) EN (optional)

    The EN pin is attached to GND through a solder paste jumper (JP1). When EN is LOW, it enables the isolation module, when it is HIGH, the module turns off. By default, the jumper is connected internally, enabling the module, but removing the ability to control the pin externally.
    To drive EN HIGH, the solder jumper must be cut or VIN will short to GND. There is a small trace between the two pads of the jumper, cut it with an exacto knife or similar. Ensure the connection has been broken with a continuity tester between the two pads. To revert this change, the pads can be connected with solder paste again.

  2. The probes connect to the board through U.FL to BNC wires. The modules are labeled 1, 2, and 3 in large numerals on the board.

    Label Probe
    1 EC
    2 pH
    3 ORP

    U.FL connectors are fragile and not intended for repeated connections.

    • Avoid unnecessary stress on the connector by not allowing the cable to hang loosely. One possible solution would be to use a small zip-tie and pass it through a nearby mounting hole with the cable as a form of strain relief. Tape can also be used. Ideally, the BNC end would be mounted on an enclosure wall and the board would be securely mounted inside which is the intended use of the board.
    • When making a connection, make sure the cable is even and flat on top of the connector before pressing down. This will avoid damaging the connector or cable and ensure they are seated properly.
    • To remove the cable, use a purpose-built tool, or pull the cable up using steady pressure while ensuring the cable remains flat. Prying will cause damage.
  3. The temperature probe connects to the board through the 3 pin screw-terminal near the EC probe connector.

    Temp Wire Terminal Lablel
    black GND
    red VCC
    yellow SIG

3.

📃 Arduino Code

#include <uFire_Mod-EC.h>
#include <uFire_Mod-pH.h>
#include <uFire_Mod-ORP.h>

uFire::Mod_EC::i2c ec;
uFire::Mod_pH::i2c ph;
uFire::Mod_ORP::i2c orp;
Include and initialize the libraries
void setup()
{
  Serial.begin(9600);
  Wire.begin();

  ec.begin();
  ph.begin();
  orp.begin();
}
::begin() for each instance
void loop()
{
  ec.measureTemp();
  ec.measureEC(ec.tempC);
  ph.measurepH(ec.tempC);
  orp.measureORP();

  Serial.println((String) ec.mS + " mS/cm");
  Serial.println((String) ph.pH + " pH");
  Serial.println((String) orp.mV + " ORP mV");
  Serial.println((String) ec.tempC + " °C");
  Serial.println();

  delay(1000);
}
Take all the measurements and print them

🥧 Raspberry Pi Python Code

import uFire_Mod_EC
import uFire_Mod_pH
import uFire_Mod_ORP

ec = uFire_Mod_EC.i2c()
ph = uFire_Mod_pH.i2c()
orp = uFire_Mod_ORP.i2c()
Import and initialize the libraries
ec.begin()
ph.begin()
orp.begin()
::begin() for each instance
ec.measureTemp();
ec.measureEC(ec.tempC);
ph.measurepH(ec.tempC);
orp.measureORP();

print("{:.3f}".format(ec.mS) + "mS/cm")
print("{:.3f}".format(ph.pH) + "  pH")
print("{:.3f}".format(orp.mV) + " ORP mV")
print("{:.3f}".format(ec.tempC) + " °C")
Take all the measurements and print them