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
-
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. -
-
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.
-
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;
void setup()
{
Serial.begin(9600);
Wire.begin();
ec.begin();
ph.begin();
orp.begin();
}
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);
}
🥧 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()
ec.begin()
ph.begin()
orp.begin()
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")