7 in 1 Soil Sensor (N, P, K, pH, EC, Moisture, Temperature), RS485, 5–30V
zoom_out_map
chevron_left chevron_right

Product images are for informational purposes only and may vary slightly depending on the batch and supplier. Product specifications and prices may be subject to change without notice. We do our best to provide accurate and complete product specifications, but they may not be completely accurate. If you encounter any such situation, please let us know.

The product is intended for specialists and requires qualified and authorized personnel. The product does not include assembly/use instructions . Putting the product into operation by unqualified persons leads to the loss of the warranty according to the Terms and Conditions on the site.

The specified technical parameters (current, power, etc.) represent maximum allowable values under ideal operating conditions. For safe use and optimal lifespan, it is recommended to operate the product continuously at no more than 50% of the specified maximum values.

Out-of-Stock

7 in 1 Soil Sensor (N, P, K, pH, EC, Moisture, Temperature), RS485, 5–30V

Quickly monitor essential soil parameters for precise fertilization and irrigation, measuring N, P, K, pH, EC, moisture, and temperature in a single device, RS485 Modbus RTU communication for easy integration into SCADA or IoT projects, 316 stainless steel probes and IP68 sealed housing for long-term use, wide 5–30V power supply with low consumption.

447.54 RON Tax included

369.87 RON Tax excluded

No reviews yet
block Out-of-Stock
Close
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
LOYALTY POINTS
You earn points with every order, worth 5%.

The NPKPHCTH-S sensor is a complete soil monitoring solution, integrating the simultaneous measurement of nine parameters in a single device: humidity, temperature, electrical conductivity (EC), pH, nitrogen (N), phosphorus (P), potassium (K), salinity, and TDS (total dissolved solids).

The five probes made of 316 stainless steel ensure resistance to rust, corrosion, and prolonged electrolysis, while the sensor body is fully sealed with black flame-retardant epoxy resin, providing an IP68 protection rating suitable for continuous use in harsh agricultural environments or wet soil.

Data transmission is carried out via an RS485 interface using the industrial Modbus RTU protocol, allowing easy integration into SCADA systems, automatic weather stations, or IoT projects based on microcontrollers such as ESP32, Arduino, or Raspberry Pi.

In addition to the RS485 digital output, the sensor is also available in versions with analog outputs of 4-20 mA, 0-5 V, or 0-10 V, for compatibility with a wide range of acquisition systems. The wide power supply voltage (4.5 – 30 VDC) and low consumption (under 0.5 W at 24 VDC) make it compatible with battery-powered or solar panel installations. The connection cable has a standard length of 2 m, with customization options.

 

Specifications:

Operating voltage: 4.5 - 30 VDC

Maximum consumption: 0.5 W (at 24 VDC)

Interface: RS485 / 4-20 mA / 0-5 V / 0-10 V

Protocol: Modbus RTU

Humidity measurement range: 0 - 100% RH

Humidity accuracy: ±2% (0 - 50% RH), ±3% (50 - 100% RH)

Long-term humidity stability: ≤1% RH/year

Humidity response time: ≤4 s

Temperature measurement range: -40 - 80°C

Temperature accuracy: ±0.5°C

Long-term temperature stability: ≤0.1°C/year

Temperature response time: ≤15 s

Conductivity (EC) measurement range: 0 - 20000 uS/cm

Conductivity accuracy: ±3% (0 - 10000 uS/cm), ±5% (10000 - 20000 uS/cm)

Long-term conductivity stability: ≤1 uS/cm/year

Conductivity response time: ≤1 s

pH measurement range: 3 - 9 pH

pH accuracy: ±0.3 pH

Long-term pH stability: ≤5%/year

pH response time: ≤10 s

NPK measurement range: 1 - 1999 mg/kg

NPK resolution: 1 mg/kg

NPK response time: ≤1 s

Cable length: 2 m (customizable)

Probe material: 316 stainless steel

Housing material: Black flame-retardant epoxy resin

Protection rating: IP68

Operating temperature: -40 - 80°C

Dimensions: 45 x 15 x 123 mm

 

Probe Pinout:

Pin Color Function
1 Brown VCC (4.5 - 30 VDC)
2 Black GND
3 Yellow RS485 A+ (Data+)
4 Blue RS485 B- (Data-)

 

Registers:

Register Parameter Unit Factor
0x0000 Humidity %RH /10
0x0001 Temperature °C /10
0x0002 Conductivity uS/cm x1
0x0003 pH pH /10
0x0004 Nitrogen (N) mg/kg x1
0x0005 Phosphorus (P) mg/kg x1
0x0006 Potassium (K) mg/kg x1
0x0007 Salinity g/L x1
0x0008 TDS mg/L x1

 

Usage:

Insert the probes fully into the soil up to the mark on the sensor body, avoiding contact with stones or roots.

Connect the wires according to the pinout table to the RS485 module (MAX485 or similar) or directly to the RS485-USB converter.

Power the sensor with a voltage between 4.5 and 30 VDC on the brown wire (+) and black wire (GND).

Connect the yellow wire to terminal A+ and the blue wire to terminal B- of the RS485 module.

Configure the serial port with the following parameters: baud rate 4800, 8 data bits, no parity, 1 stop bit (4800 8N1).

Send individual Modbus RTU commands to the default address 0x01 for each desired register, according to the register table above.

Interpret the received values by applying the corresponding scale factor for each parameter.

After use, clean the probes with clean water and store the sensor protected from freezing.

 

Test code with ESP32 and RS485 Module:

88159

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

// NPKPHCTH-S - 9-parameter soil sensor | ESP32 + ThingSpeak

// RS485 module connected to Serial1 (RX=17, TX=16), RE/DE pin=4

// Baud rate: 4800, 8N1, sensor default address: 0x01

// Data is uploaded to ThingSpeak every 10 minutes

#include "WiFi.h"

#include "ThingSpeak.h"

#define RE    4

#define RXD2 17

#define TXD2 16

const char* ssid     = "YOUR_SSID";

const char* password = "YOUR_PASSWORD";

unsigned long channelID  = 0;           // your ThingSpeak channel ID

const char*   writeAPIKey = "YOUR_KEY"; // your ThingSpeak write API key

WiFiClient client;

// Modbus RTU requests - one register each (address 0x01, function 0x03)

const byte humi[]  = {0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0A};

const byte temp[]  = {0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0xD5, 0xCA};

const byte cond[]  = {0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x25, 0xCA};

const byte phph[]  = {0x01, 0x03, 0x00, 0x03, 0x00, 0x01, 0x74, 0x0A};

const byte nitro[] = {0x01, 0x03, 0x00, 0x04, 0x00, 0x01, 0xC5, 0xCB};

const byte phos[]  = {0x01, 0x03, 0x00, 0x05, 0x00, 0x01, 0x94, 0x0B};

const byte pota[]  = {0x01, 0x03, 0x00, 0x06, 0x00, 0x01, 0x64, 0x0B};

const byte sali[]  = {0x01, 0x03, 0x00, 0x07, 0x00, 0x01, 0x35, 0xCB};

const byte tds[]   = {0x01, 0x03, 0x00, 0x08, 0x00, 0x01, 0x05, 0xC8};

byte values[7];

int readRegister(const byte* request, uint8_t len) {

  digitalWrite(RE, HIGH);

  delay(10);

  for (uint8_t i = 0; i < len; i++) Serial1.write(request[i]);

  Serial1.flush();

  digitalWrite(RE, LOW);

  delay(100);

  unsigned long t = millis();

  uint8_t idx = 0;

  while (millis() - t < 300 && idx < 7) {

    if (Serial1.available()) values[idx++] = Serial1.read();

  }

  if (idx < 5) return -1;

  return int(values[3] << 8 | values[4]);

}

void setup() {

  Serial.begin(115200);

  Serial1.begin(4800, SERIAL_8N1, RXD2, TXD2);

  pinMode(RE, OUTPUT);

  digitalWrite(RE, LOW);

  delay(1000);

  WiFi.mode(WIFI_STA);

  ThingSpeak.begin(client);

  Serial.println("NPKPHCTH-S ready.");

}

void loop() {

  if (WiFi.status() != WL_CONNECTED) {

    Serial.print("Connecting to WiFi...");

    while (WiFi.status() != WL_CONNECTED) {

      WiFi.begin(ssid, password);

      delay(5000);

    }

    Serial.println(" connected.");

  }

  int raw;

  float val[9];

  const byte* reqs[]   = {humi, temp, cond, phph, nitro, phos, pota, sali, tds};

  uint8_t     lens[]   = {sizeof(humi), sizeof(temp), sizeof(cond), sizeof(phph),

                           sizeof(nitro), sizeof(phos), sizeof(pota),

                           sizeof(sali), sizeof(tds)};

  float       scales[] = {10.0, 10.0, 1.0, 10.0, 1.0, 1.0, 1.0, 1.0, 1.0};

  const char* names[]  = {"Humidity","Temperature","EC","pH",

                           "Nitrogen","Phosphorus","Potassium","Salinity","TDS"};

  const char* units[]  = {"%","deg.C","uS/cm","","mg/kg",

                           "mg/kg","mg/kg","g/L","mg/L"};

  for (uint8_t i = 0; i < 9; i++) {

    raw = readRegister(reqs[i], lens[i]);

    val[i] = (raw >= 0) ? raw / scales[i] : -1;

    Serial.print(names[i]); Serial.print(": ");

    if (raw >= 0) { Serial.print(val[i], (scales[i] > 1) ? 1 : 0);

                    Serial.println(units[i]); }

    else Serial.println("read error");

    delay(200);

  }

  // Upload to ThingSpeak (8 fields max per free channel)

  ThingSpeak.setField(1, val[0]); // humidity

  ThingSpeak.setField(2, val[1]); // temperature

  ThingSpeak.setField(3, val[2]); // EC

  ThingSpeak.setField(4, val[3]); // pH

  ThingSpeak.setField(5, val[4]); // nitrogen

  ThingSpeak.setField(6, val[5]); // phosphorus

  ThingSpeak.setField(7, val[6]); // potassium

  ThingSpeak.setField(8, WiFi.RSSI());

  int status = ThingSpeak.writeFields(channelID, writeAPIKey);

  Serial.println(status == 200 ? "Upload OK." :

                 "Upload failed, HTTP " + String(status));

  Serial.println("----------------------------------");

  delay(600000); // 10 minutes

}