GroPoint Profile GPLP-8 Soil Moisture & Temperature topic

Profiling Probe. Classes for the GroPoint Profile GPLP-8 Soil Moisture & Temperature Probe.

Sensor Datasheet

Sensor Constructor

GroPointGPLP8::GroPointGPLP8(byte modbusAddress, Stream* stream, int8_t powerPin, int8_t powerPin2 = -1, int8_t enablePin = -1, uint8_t measurementsToAverage = 1)

Construct a new GroPoint GPLP8 object.

Parameters
modbusAddress The modbus address of the sensor.
stream An Arduino data stream for modbus communication. See notes for more information on what streams can be used.
powerPin The pin on the mcu controlling power to the GPLP-8. Use -1 if it is continuously powered.
powerPin2 The pin on the mcu controlling power to the RS485 adapter, if it is different from that used to power the sensor. Use -1 or omit if not applicable.
enablePin The pin on the mcu controlling the direction enable on the RS485 adapter, if necessary; use -1 or omit if not applicable.
measurementsToAverage The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.


Example Code

The GPLP-8 Probe is used in the menu a la carte example.

1#include <sensors/GroPointGPLP8.h>
2
3// NOTE: Extra hardware and software serial ports are created in the "Settings
4// for Additional Serial Ports" section
5
6// NOTE: Use -1 for any pins that don't apply or aren't being used.
7byte gplp8ModbusAddress = 0x19; // The modbus address of the gplp8
8// Raw Request >>> {0x19, 0x03, 0x00, 0xC8, 0x00, 0x01, 0x06, 0x2C}
9const int8_t gplp8AdapterPower = sensorPowerPin; // RS485 adapter power pin
10const int8_t gplp8SensorPower = A3; // Sensor power pin
11const int8_t gplp8EnablePin = -1; // Adapter RE/DE pin
12const uint8_t gplp8NumberReadings = 1;
13// The manufacturer recommends averaging 10 readings, but we take 5 to minimize
14// power consumption
15
16// Create a GroPoint Profile GPLP-8 sensor object
17GroPointGPLP8 gplp8(gplp8ModbusAddress, modbusSerial, gplp8AdapterPower,
18 gplp8SensorPower, gplp8EnablePin, gplp8NumberReadings);
19
20// Create moisture variable pointers for each segment of the GPLP-8
21Variable* gplp8Moist1 = new GroPointGPLP8_Moist(
22 &gplp8, 0, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist1");
23Variable* gplp8Moist2 = new GroPointGPLP8_Moist(
24 &gplp8, 1, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist2");
25Variable* gplp8Moist3 = new GroPointGPLP8_Moist(
26 &gplp8, 2, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist3");
27Variable* gplp8Moist4 = new GroPointGPLP8_Moist(
28 &gplp8, 3, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist4");
29Variable* gplp8Moist5 = new GroPointGPLP8_Moist(
30 &gplp8, 4, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist5");
31Variable* gplp8Moist6 = new GroPointGPLP8_Moist(
32 &gplp8, 5, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist6");
33Variable* gplp8Moist7 = new GroPointGPLP8_Moist(
34 &gplp8, 6, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist7");
35Variable* gplp8Moist8 = new GroPointGPLP8_Moist(
36 &gplp8, 7, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Moist8");
37
38// Create temperature variable pointers for each sensor of the GPLP-8
39Variable* gplp8Temp1 = new GroPointGPLP8_Temp(
40 &gplp8, 8, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp1");
41Variable* gplp8Temp2 = new GroPointGPLP8_Temp(
42 &gplp8, 9, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp1");
43Variable* gplp8Temp3 = new GroPointGPLP8_Temp(
44 &gplp8, 10, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp3");
45Variable* gplp8Temp4 = new GroPointGPLP8_Temp(
46 &gplp8, 11, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp4");
47Variable* gplp8Temp5 = new GroPointGPLP8_Temp(
48 &gplp8, 12, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp5");
49Variable* gplp8Temp6 = new GroPointGPLP8_Temp(
50 &gplp8, 13, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp6");
51Variable* gplp8Temp7 = new GroPointGPLP8_Temp(
52 &gplp8, 14, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp7");
53Variable* gplp8Temp8 = new GroPointGPLP8_Temp(
54 &gplp8, 15, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp8");
55Variable* gplp8Temp9 = new GroPointGPLP8_Temp(
56 &gplp8, 16, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp9");
57Variable* gplp8Temp10 = new GroPointGPLP8_Temp(
58 &gplp8, 17, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp10");
59Variable* gplp8Temp11 = new GroPointGPLP8_Temp(
60 &gplp8, 18, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp11");
61Variable* gplp8Temp12 = new GroPointGPLP8_Temp(
62 &gplp8, 19, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp12");
63Variable* gplp8Temp13 = new GroPointGPLP8_Temp(
64 &gplp8, 20, "12345678-abcd-1234-ef00-1234567890ab", "GPLP8Temp13");

Classes

class GroPointGPLP8
The Sensor sub-class for the GroPoint Profile GPLP8 probe.
class GroPointGPLP8_Moist
The Variable sub-class used for the soil moisture output from a GroPoint Profile GPLP8 probe.
class GroPointGPLP8_Temp
The Variable sub-class used for the temperature output from a GroPoint Profile GPLP8 probe.

Sensor Variable Counts

The number of variables that can be returned by GPLP8

#define GPLP8_NUM_VARIABLES = 21
Sensor::_numReturnedValues; the GPLP8 can report 8 values.
#define GPLP8_INC_CALC_VARIABLES = 0
Sensor::_incCalcValues; we don't calculate any additional values.

Sensor Timing

The sensor timing for a GroPoint Profile GPLP-8

#define GPLP8_WARM_UP_TIME_MS = 350
Sensor::_warmUpTime_ms; time before sensor responds after power - 1.6 seconds (1600ms).
#define GPLP8_STABILIZATION_TIME_MS = 100
Sensor::_stabilizationTime_ms; the GPLP-8 is stable after 100 ms.
#define GPLP8_MEASUREMENT_TIME_MS = 200
Sensor::_measurementTime_ms; the GPLP-8 takes ~200 ms to complete a measurement.

Moisture

The volumetric soil moisture variable from a GroPoint Profile GPLP-8

  • Range is 0% to 50% volumetric water content
  • Accuracy is ± 1%

GroPointGPLP8_Moist::GroPointGPLP8_Moist(GroPointGPLP8* parentSense, const uint8_t sensorVarNum, const char* uuid = "", const char* varCode = "GPLP8Moist") explicit

Construct a new GroPointGPLP8_Moist object.

Parameters
parentSense The parent GroPointGPLP8 providing the result values.
sensorVarNum The position the variable result holds in the variable result array. The GroPoint GPLP8 can have up to 8 soil moisture results. When creating the variable for soil moisture, you must specify the output number from the sensor.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "GPLP8Moist".

#define GPLP8_MOIST_RESOLUTION = 1
Decimals places in string representation; soil moisture should have 1.
#define GPLP8_MOIST_VAR_NAME = "volumetricWaterContent"
Variable name in ODM2 controlled vocabulary;.
#define GPLP8_MOIST_UNIT_NAME = "percent"
Variable unit name in ODM2 controlled vocabulary;.
#define GPLP8_MOIST_DEFAULT_CODE = "GPLP8Moist"
Default variable short code; "GPLP8Moist".

Temperature

The temperature variable from a GroPoint Profile GPLP-8

  • Range is -20°C to + 70°C
  • Accuracy is ± 0.5°C

GroPointGPLP8_Temp::GroPointGPLP8_Temp(GroPointGPLP8* parentSense, const uint8_t sensorVarNum, const char* uuid = "", const char* varCode = "GPLP8Temp") explicit

Construct a new GroPointGPLP8_Temp object.

Parameters
parentSense The parent GroPointGPLP8 providing the result values.
sensorVarNum The position the variable result holds in the variable result array. The GroPoint GPLP8 can have up to 8 temperature results. When creating the variable for temperature, you must specify the output number from the sensor.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "GPLP8Temp".

#define GPLP8_TEMP_RESOLUTION = 1
Decimals places in string representation; temperature should have 1 - resolution is 0.1°C.
#define GPLP8_TEMP_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define GPLP8_TEMP_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define GPLP8_TEMP_DEFAULT_CODE = "GPLP8Temp"
Default variable short code; "GPLP8Temp".

Define documentation

#define GPLP8_NUM_VARIABLES = 21

Sensor::_numReturnedValues; the GPLP8 can report 8 values.


#define GPLP8_INC_CALC_VARIABLES = 0

Sensor::_incCalcValues; we don't calculate any additional values.


#define GPLP8_WARM_UP_TIME_MS = 350

Sensor::_warmUpTime_ms; time before sensor responds after power - 1.6 seconds (1600ms).

This is the time for communication to begin.


#define GPLP8_STABILIZATION_TIME_MS = 100

Sensor::_stabilizationTime_ms; the GPLP-8 is stable after 100 ms.


#define GPLP8_MEASUREMENT_TIME_MS = 200

Sensor::_measurementTime_ms; the GPLP-8 takes ~200 ms to complete a measurement.


#define GPLP8_MOIST_RESOLUTION = 1

Decimals places in string representation; soil moisture should have 1.

  • resolution is 0.1 %.

#define GPLP8_MOIST_VAR_NAME = "volumetricWaterContent"

Variable name in ODM2 controlled vocabulary;.


#define GPLP8_MOIST_DEFAULT_CODE = "GPLP8Moist"

Default variable short code; "GPLP8Moist".


#define GPLP8_TEMP_RESOLUTION = 1

Decimals places in string representation; temperature should have 1 - resolution is 0.1°C.


#define GPLP8_TEMP_VAR_NAME = "temperature"

Variable name in ODM2 controlled vocabulary; "temperature".


#define GPLP8_TEMP_UNIT_NAME = "degreeCelsius"

Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)


#define GPLP8_TEMP_DEFAULT_CODE = "GPLP8Temp"

Default variable short code; "GPLP8Temp".