- NCD's Long Range Industrial IoT Wireless pH ORP Temperature Sensor
- Description
- Getting Started
- Troubleshooting
- Modes of Operation
- Appendix A
- 15. Sensor pH Calibration
- 16. Set pH Probe Warm up time
- 17. Set Temperature
- 17. Enable Disable Temperature Compensation
- 18. On Demand Data
- 19. Super Command
- 20. Sensor ORP Calibration
NCD's Long Range Industrial IoT Wireless pH ORP Temperature Sensor
Features
- Industrial Grade Wireless pH, ORP, and Temperature Sensor
- pH Measurement Accuracy ±2%pH and ±2°C temperature
- ORP Measurement Accuracy ±2%ORP and ±2°C temperature
- 3/4 inch NPT connector housing
- pH range: 0-14 pH
- ORP range: -1500mV to +1500mV
- 2 mile Line-of-Sight range with On-Board Antenna
- Superior LOS range of up to 28 miles with High-Gain Antennas
- Interface to Raspberry Pi, Microsoft®, Azure®, Arduino and More
- Example Software for Visual Studio and LabVIEW®
- Wireless Mesh Networking using DigiMesh®
- Open Communication Protocol for Easy Software Integration
- Validates and Retries Lost Communication Packets
- Operating temperature rated for 15°C to 60°C
- Can withstand a max pressure of 100 PSI
Applications
- Liquid pH
- Liquid ORP
- Temperature
- Green House
- Agriculture
- Water Quality
- Industry Standard Measurement
Description
Introducing NCD’s Industrial IoT Long Range Wireless pH, ORP (Oxidation-reduction potential), and Temperature Sensor, boasting up to a 2 mile range using a wireless mesh networking architecture. It incorporates a high resolution pH probe and ORP probe, allowing the user to sample both liquid pH and ORP at customizable intervals. The results are then transmitted to remote modems and gateways.
These Industrial IoT Wireless pH and ORP probes each contain a built in temperature sensor. The transmitter will send beacons of high-accuracy (±2% pH, ±2% ORP, and ±2°C temperature) data at user-defined intervals. The pH and ORP probes come with a 5 meter long cable and has a 3/4 inch NPT housing. The probe is rated for 15°C to 60°C with max pressure of 100 PSI and can be left in a solution to give real time, changing data. The probe can stay submerged in the liquid during its entire life span.
This Industrial IoT Wireless pH ORP Temperature Sensor does require periodic calibration. The calibration period depends on the usage. If the probe is used in either an extreme acidic or base environment, it will require monthly calibration. The calibration process can be done in house and calibration steps can be found in the product manual.
This sensor is powered by just 6 AA batteries and has an operational lifetime of 300,000 wireless transmissions. 10 years of battery life can be expected depending on environmental conditions and the data transmission interval. Optionally, this sensor may be externally powered and has capabilities of supporting 6-32 VDC external power supply.
The long range, accuracy, precision, low price, battery life and security features of the Industrial IoT Long Range Wireless pH ORP Temperature Sensor makes it an affordable choice which exceeds the requirements for most of the industry as well as consumer market applications. This sensor can be applied to many fields of work when testing water quality in a variety of environments.
To complete a network with an industrial sensor at one end, a USB Modem is required at the receiving end (PC end) that receives data from sensor.
Getting Started
The sensor and Zigmo/Router come pre-programmed and work out of the box. In this section we will setup a sensor and Zigmo link and start receiving data on our PC. Though this guide shows how to visualize data on LabVIEW utility, you can also use a simple serial terminal to see raw data by following these steps.
Resources Required
- Industrial IoT Long Range Wireless pH and Temperature Sensor (with power source Battery Or External DC)
- Zigmo/Router for PC (One Router will work with Multiple Sensors)
- PC/Laptop with an OS installed or Any IoT Embedded Device
- Alpha Station PC utility
Steps
- Power-up the Wireless Sensor and make sure its antenna is installed
- Connect your Zigmo/Router to your PC
- Identify the serial port allocated to it by going into device manager (You can also find the serial port using Digi provided utility XCTU)
At this stage, both the Sensor and Zigmo have automatically established communication and the data can be read from the serial port at which Zigmo has been installed.
Troubleshooting
Changed/Unknown setting at sensor end
One of the issues for unsuccessful communication can be a changed setting at the sensor end due to which the sensor and Zigmo are unable to establish a connection. You can resolve this problem by going back to the factory default settings which are provided in Table 1. Please refer to Figure 7 and follow steps shown in it for applying factory default settings.
Once the sensor resets it will start sending a frame every 600 seconds after factory reset.
One of the issues for unsuccessful communication can be a changed setting at the sensor end due to which the sensor and Zigmo are unable to establish a connection. You can resolve this problem by going back to the factory default settings which are provided in Table 1. Please refer to Figure 7 and follow steps shown in it for applying factory default settings.
Once the sensor resets it will start sending a frame every 600 seconds after factory reset.
Please refer to the detailed document available to Digi website to understand X-bee communication parameters and its operation mechanism.
Changed/Unknown setting at PC end
Sometimes a changed setting at Zigmo end, whether intentional or unintentional, can cause a network failure and no data reception at PC end. To fix this issue when the sensor end is operating at factory default settings you will have to bring the Zigmo/Router to factory default settings as well. For that, please download the configuration file for Zigmo from our website. You will also require XCTU utility provided by Digi.
After installing XCTU Utility, run it and go to add a radio module. Select the serial port at which Zigmo is connected and press finish. This will connect the Zigmo to XCTU.
After double clicking the added module, a list of parameters will be displayed on the right side. Select the load configuration file from the top and select configuration file form the location where you downloaded it earlier.
Now press the write button on top to write these parameters. Close the XCTU utility and open the LabVIEW utility and follow the steps in getting started section to communicate with sensor.
Modes of Operation
This module incorporates 2 modes of operation, these are
- Run Mode
- Configuration Mode
Run mode is the standard mode, the module will always enter Run mode if no button is pressed during Power-up/Reset. Configuration mode is intended to configure sensor parameters and the X-bee parameters on the sensor end. Note that the Sensor end X-bee is only configurable via the sensor controller using the commands provided in device manual. Figure 7 illustrates these modes.
The device sends a startup packet which can be used to determine the mode in which it is operating. These packets are shown in Table 2.
Mode Selection Process
The CFG button on the module is used to change mode. If CFG button is pressed and the module reset button is pressed, the module will enter the configuration mode. The amount of time CFG button has to be pressed is shown in Figure 7.
Note that settings only take effect after the reset.
Frame Communication at Power up
In figure 8, Mode bytes highlighted in red can be compared with the values provided in Table 2 to determine the mode in which the sensor is operating. Node ID is the ID of the given sensor while sensor type determines the type of sensor. Both of these can be used to determine the exact sensor which is sending the information.
A shown in second column in Table 2, the sensor configures its PAN ID automatically depending upon the mode it is working in. During factory reset it sets the PAN ID to the value given in table therefore the factory reset frame will only be received if your Zigmo/Router PAN ID matches this ID. Please note that right after factory reset the sensor enters configuration mode therefore its PAN ID is changed again and a new frame is generated. All 3 type of frames are shown in Figure 9, Figure 10 and Figure 11.
The factory default settings are shown in Table 1. For parameter description please refer to the section on configuration.
Run Mode
Run mode is the default mode of operation of this sensor. In this mode the sensor sends periodic packets to destination receiver. During the time it is not sending packets, it sleeps and conserves power. Sensor end X-bee operates in API mode and sends packets to the saved destination address on the network specified by the saved PAN ID. Figure 12 illustrates an API packet transmission and reception.
Packet reception at receiver end is ensured by the device by retrying up to 3 times if no acknowledgement is received that the packet has been successfully received. The device uses the acknowledgement functionality available in API mode in X-bee devices therefore user does not need to worry about sending acknowledgements for every packet.
The detail for API packet received at PC end can be read from the X-bee manual available from Digi. The detail of Payload section of packet is shown in Table 3.
Typical response from the device in Run mode is shown in Figure 13 and Figure 14. The utility shown in Figure 14 can be downloaded from the website.
Sensor Type == 61
Wireless pH and Temperature Sensor
The detail for API packet received at PC end can be read from the X-bee manual available from Digi. The detail of Payload section of packet is shown in Table 3.
Typical response from the device in Run mode is shown in Figure 13 and Figure 14. The utility shown in Figure 14 can be downloaded from the website.
Frame Field | Offset (Payload Section) | Fixed Value (if any) | Description | ||
---|---|---|---|---|---|
Header | 0 | 0x7F |
| ||
Node ID | 1 | 0x00 Factory Default |
| ||
Firmware | 2 | – |
| ||
Battery Voltage | MSB 3 | – | Sampled battery voltage of the device. Battery Voltage=((Battery Voltage MSB x 256+Battery Voltage LSB) x 0.00322 V | ||
LSB 4 | – | ||||
Packet Counter | 5 | – |
| ||
Sensor Type | MSB 6 | 0x00 |
| ||
MSB 7 | 0x3D | ||||
Reserved | 8 | error code |
| ||
pH | MSB 9/ Data[0] | – | pH Data pH(signed) = (((Data[0]>>8)+Data[1])/100.0) | ||
LSB 10/ Data[1] | – | ||||
Temperature | MSB 11/ Data[2] | – | Temperature data Temperature(signed) = (((data[2] x 256) + data[3])/100)°C | ||
LSB 12/ Data[3] | – |
Sensor Type == 62
Wireless ORP and Temperature Sensor
The detail for API packet received at PC end can be read from the X-bee manual available from Digi. The detail of Payload section of packet is shown in Table 3.
Typical response from the device in Run mode is shown in Figure 13 and Figure 14. The utility shown in Figure 14 can be downloaded from the website.
Frame Field | Offset (Payload Section) | Fixed Value (if any) | Description | ||
---|---|---|---|---|---|
Header | 0 | 0x7F |
| ||
Node ID | 1 | 0x00 Factory Default |
| ||
Firmware | 2 | – |
| ||
Battery Voltage | MSB 3 | – | Sampled battery voltage of the device. Battery Voltage=((Battery Voltage MSB x 256+Battery Voltage LSB) x 0.00322 V | ||
LSB 4 | – | ||||
Packet Counter | 5 | – |
| ||
Sensor Type | MSB 6 | 0x00 |
| ||
MSB 7 | 0x3E | ||||
Reserved | 8 | error code |
| ||
ORP | MSB 9/ Data[0] | – | ORP Data in mV ORP(signed) = (((Data[0]>>8)+Data[1])) | ||
LSB 10/ Data[1] | – | ||||
Temperature | MSB 11/ Data[2] | – | Temperature data Temperature(signed) = (((data[2] x 256) + data[3])/100)°C | ||
LSB 12/ Data[3] | – |
Sensor Type == 63
Wireless ORP,pH and Temperature Sensor
The detail for API packet received at PC end can be read from the X-bee manual available from Digi. The detail of Payload section of packet is shown in Table 3.
Typical response from the device in Run mode is shown in Figure 13 and Figure 14. The utility shown in Figure 14 can be downloaded from the website.
Frame Field | Offset (Payload Section) | Fixed Value (if any) | Description | ||
---|---|---|---|---|---|
Header | 0 | 0x7F |
| ||
Node ID | 1 | 0x00 Factory Default |
| ||
Firmware | 2 | – |
| ||
Battery Voltage | MSB 3 | – | Sampled battery voltage of the device. Battery Voltage=((Battery Voltage MSB x 256+Battery Voltage LSB) x 0.00322 V | ||
LSB 4 | – | ||||
Packet Counter | 5 | – |
| ||
Sensor Type | MSB 6 | 0x00 |
| ||
MSB 7 | 0x3F | ||||
Reserved | 8 | error code |
| ||
ORP and pH | MSB 9/ Data[0] | – | ORP Data in mV ORP(signed) = (((Data[0]>>8)+Data[1])) pH Data pH(signed) = (((Data[0]>>8)+Data[1])/100.0) | ||
LSB 10/ Data[1] | – | ||||
MSB 11/ Data[2] | |||||
LSB 12/ Data[3] | |||||
Temperature | MSB 13/ Data[4] | – | Temperature data Temperature(signed) = (((data[2] x 256) + data[3])/100)°C | ||
LSB 14/ Data[5] | – |
Configuration Mode
Configuration mode is intended to setup the device over the wireless link. Entering configuration mode was already explained in the section “mode selection procedure”. User can also setup X-bee communication and networking parameters using this mode via PC. Note that settings only take effect after reset and are stored inside the device.
In configuration mode, the device sets its X-bee pan id to 7BCD (Hex). Also, the destination address used by the sensor is broadcast (0000FFFF). This ensures that once you put a device in configuration mode you just need to change the PAN ID of your Zigmo to match with sensor and start configuring your device. You can change the PAN ID of your Zigmo using XCTU from Digi. If you use our LabVIEW utility, it will automatically change Zigmo PAN ID once you open the configuration window. When you exit this window your PAN ID will be restored to old value.
A standard configuration packet and its fields are explained in Figure 15. Its possible responses are also shown. The commands supported by this sensor are shown in Table 4, these can be used in the Parameters field of Payload section. The sensor responds to these commands with an acknowledgement if the process completed successfully or with an error if it failed to setup a parameter. The respective Data and Reserve section length and values are shown in Table 5 for the case of acknowledgement. In the case of error, the reserved section will be fixed and not used, while the Error number byte will determine the type of error returned. These errors are mentioned in Table 6.
Figure 15 depicts standard communication between Zigmo/Router and sensor. Sensor commands have variable length frames whereas responses received from sensor are fixed length. The 2 scenarios are also shown, where a command can result in an acknowledgement reception or an error reception at the Zigmo end.
Examples for setting parameters in configuration mode are shown in Appendix A.
Appendix A
Configuration Commands
1. Set Broadcast Transmission
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F7 0100 0001 FB
2. Set ID and Delay
Command For COPY: 7E 00 17 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 02 00 00 01 00 00 00 04 F6
3. Set Destination Address
Command For COPY: 7E00 1710 0000 0000 0000 00FF FFFF FE00 00F7 0300 0001 1234 5678 E5
4. Set Power
Command For COPY: 7E00 1410 0000 0000 0000 00FF FFFF FE00 00F7 0400 0001 02F6
5. Set PANID
Command For COPY: 7E00 1510 0000 0000 0000 00FF FFFF FE00 00F7 0500 0001 7CDE 9D
6. Set Retries
Command For COPY: 7E00 1410 0000 0000 0000 00FF FFFF FE00 00F7 0600 0001 03F3
7. Read Delay
Command For COPY: 7E00 1410 0000 0000 0000 00FF FFFF FE00 00F7 0600 0001 03F3
8. Read Power
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F7 1600 0001 E6
9. Read Retries
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F7 1700 0001 E5
10. Read Destination Address
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F7 1800 0001 E4
11. Read PANID
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F7 1900 0001 E3
12. Enable Encryption
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F2 0100 0001 00
13. Disable Encryption
Command For COPY: 7E00 1310 0000 0000 0000 00FF FFFF FE00 00F2 0200 0001 FF
14. Set Encryption Key
Command For COPY: 7E00 2410 0000 0000 0000 00FF FFFF FE00 00F2 0300 0001 0011 2211 2211 2211 2233 4433 4433 4433 4456
15. Sensor pH Calibration
pH7 Calibration Command
7E 00 18 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 43 00 00 00 07 1B 58 09 C4 75
Command — F4 43 00 00 00 07 1B 58 09 C4
0xF4 — Header
0x43 — Sub command
00 — Node ID
00,00 — Sensor type
07 — pH 7 mid point calibration
1B,58 — pH value of the calibration Liquid*1000
09 C4 — Temperature of the calibration Liquid * 100
pH4 Calibration Command
7E 00 18 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 43 00 00 00 04 0F A0 09 C4 3C
pH10 Calibration Command
7E 00 18 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 43 00 00 00 0A 27 10 09 C4 AE
pH calibration is an extremely important step. If calibration is not done properly it can lead to incorrect results.
Calibration steps —
- The probe should be calibrated for the pH7 firs and then pH4 and pH10.
- Put the sensor in configure mode
- Put the pH probe in pH7 liquid and steer it
- Wait for a minute
- Send the pH7 calibration command
- Once the calibration is done sensor will send a response. This could take upto 30sec
- Take the probe out of the pH7 liquid and use water to clean it. We recommend steering in the water. Do not use cloth or paper towel to clean the probe.
- Repeat step 5,6,7 for pH4 and 10
16. Set pH Probe Warm up time
Command For COPY: 7E 00 15 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 45 00 00 00 00 32 88
Above command is setting the Sensor warm up time to 50 sec.
pH electrodes has a settling time. This time can change from probe to probe. Generally this time is around 30 sec – 1 min.
17. Set Temperature
Command For COPY: 7E 00 16 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 41 00 00 00 00 17 70 37
Above command is setting the Temperature to 60’C.
Some pH probes come with in built temperature sensor but it might not be the most accurate and reliable. In such cases users can set the temperature and the pH sensor will use this temp value to compensate pH values.
F4 41 00 00 00 00 17 70
0xF4 — Header
0x41 — Sub command
00 — Node ID
00,00 — Sensor type
17 70 — Temperature of the Liquid * 100
Read stored Temperature value –
7E 00 13 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 42 00 00 3D 80
17. Enable Disable Temperature Compensation
Enable Command For COPY: 7E 00 14 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 46 00 00 00 01 B8
Disable Command For COPY: 7E 00 14 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 47 00 00 00 00 B8
The above commands can be used enable disable the Temperature Compensation
18. On Demand Data
Command For COPY: 7E 00 14 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 32 00 00 00 01 CA
The Above command can be used to enable the on demand mode.
In on demand mode the devices stays power on all the time and waits for a command from the user. Once it gets the data request command from the user the sensor will compute the sensor values and responds with data.
This will drain the battery and only recommended when the device is powered up ll the time.
The on demand data request command-
Command For COPY: 7E 00 15 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 34 00 00 00 00 00 C9
On demand Disable –
7E 00 14 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 32 00 00 00 00 CB
Command For COPY: Once sensor receives this command it will disable the on demand mode and go back to interval transmission mode.
19. Super Command
The super command can be used to configure some sensor parameters during run mode.
In order to set parameters like Delay, node id and other sensor related parameters the super command needs to be be enabled in the cfg mode.
Super command enable counter —
By sending this command users can set a counter after which sensor will stay awake for 2 sec and wait for a command from the user. if it does not get command withing 2 sec it will go back to sleep.
Command For COPY: 7E 00 14 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 30 00 00 00 03 CA
In above command we are setting the super command enable counter to 3. After every 3 data transmission the sensor will stay awake for 2 sec and wait for any cfg command from the user.
Read super command counter Value
Command For COPY: 7E 00 14 10 00 00 00 00 00 00 00 FF FF FF FE 00 00 F7 31 00 00 00 00 CC
20. Sensor ORP Calibration
ORP Calibration Command
7E 00 15 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 F4 44 00 00 00 00 E1 DA
Command — F4 44 00 00 00 00 E1
0xF4 — Header
0x43 — Sub command
00 — Node ID
00,00 — Sensor type
00,E1 –ORP calue of calibration Liquid in mV
ORP calibration is an extremely important step. If calibration is not done properly it can lead to incorrect results.
Calibration steps —
- Put the sensor in configure mode
- Put the ORP probe in ORP 225mV liquid and steer it
- Wait for a minute
- Send the ORP calibration command
- Once the calibration is done sensor will send a response. This could take upto 30sec
Appendix B
Frame Checksum Calculation
In order to successfully communicate over the API protocol, checksum is of vital importance. The X-bee at either end will reject packets if the checksum is not matched. Checksum is also checked by the sensor controller and LabVIEW utility for added security.
For sending packets, checksum calculation works as follows
- Not including the frame delimiter and length, add all the bytes and keep the lower 8 bits of result
- Subtract this value from 0xFF (hex)
- The resultant value is the checksum
- Append this byte to the original packet for sending
Consider the example for the command Set Broadcast shown in Figure 19 in A APPENDIX and see that the calculated checksum matches with the checksum sent by the terminal/LabVIEW
Although checksum is matched by the X-bee itself, but for understanding follow these steps to match checksum at reception
- Not including the frame delimiter and length, add all the bytes including the received checksum
- Keep only the last 8 bits
- If the result is 0xFF, the checksum is correct and the packet can be processed.
Consider the example of the command Set Broadcast shown in Figure 19 in A APPENDIX and see that the received packet checksum verifies since the result is 0xFF.