NSPH01-NB-IoT Soil pH Sensor User Manual
Table of Contents:
- 1. Introduction
- 2. Use NSPH01 to communicate with IoT Server
- 2.1 How it works
- 2.2 Configure the NSPH01
- 2.3 Uplink Payload
- 2.4 Payload Explanation and Sensor Interface
- 2.5 Downlink Payload
- 2.6 LED Indicator
- 2.7 Installation and Maintain
- 2.8 PH and Temperature alarm function
- 2.9 Set the number of data to be uploaded and the recording time
- 2.10 Read or Clear cached data
- 2.11 Calibration
- 2.12 Firmware Change Log
- 2.13 Battery & Power Consumption
- 3. Access NB-IoT Module
- 4. Using the AT Commands
- 5. FAQ
- 6. Trouble Shooting
- 7. Order Info
- 8. Packing Info
- 9. Support
1. Introduction
1.1 What is NSPH01 Soil pH Sensor
The Dragino NSPH01 is a NB-IoT soil pH sensor for IoT of Agriculture. It is designed to measure the soil pH and soil temperature, so to send to the platform to analyze the soil acid or alkali level. The probe is IP68 waterproof.
NSPH01 probe is made by Solid AgCl reference electrode and Pure metal pH sensitive electrode. It can detect soil's pH with high accuracy and stable value. The NSPH01 probe can be buried into soil for long time use.
NarrowBand-Internet of Things (NB-IoT) is a standards-based low power wide area (LPWA) technology developed to enable a wide range of new IoT devices and services. NB-IoT significantly improves the power consumption of user devices, system capacity and spectrum efficiency, especially in deep coverage.
NSPH01 supports different uplink methods include TCP,MQTT,UDP and CoAP for different application requirement.
NSPH01 is powered by 8500mAh Li-SOCI2 battery, It is designed for long term use up to 5 years. (Actually Battery life depends on the use environment, update period & uplink method)
To use NSPH01, user needs to check if there is NB-IoT coverage in the installation area and with the bands NSPH01 supports. If the local operator supports it, user needs to get a NB-IoT SIM card from local operator and install NSPH01 to get NB-IoT network connection.
1.2 Features
- NB-IoT Bands: B1/B3/B8/B5/B20/B28 @H-FDD
- Monitor soil pH with temperature compensation.
- Monitor soil temperature
- pH and Temperature alarm function
- Monitor Battery Level
- Support pH calibration by end user
- Uplink on periodically
- Downlink to change configure
- IP66 Waterproof Enclosure
- IP68 rate for the Sensor Probe
- Ultra-Low Power consumption
- AT Commands to change parameters
- Micro SIM card slot
- 8500mAh Battery for long term use
1.3 Specification
Common DC Characteristics:
- Supply Voltage: 2.1v ~ 3.6v
- Operating Temperature: -40 ~ 85°C
NB-IoT Spec:
- B1 @H-FDD: 2100MHz
- B3 @H-FDD: 1800MHz
- B8 @H-FDD: 900MHz
- B5 @H-FDD: 850MHz
- B20 @H-FDD: 800MHz
- B28 @H-FDD: 700MHz
1.4 Probe Specification
Soil pH:
- Range: 3 ~ 10 pH
- Resolution: 0.01 pH
- Accuracy: ±2% under (0~50 ℃, Accuracy will poor under 0 due to frozen)
- Temperature Compensation Range: 0 ~ 50℃
- IP68 Protection
- Length: 3.5 meters
Soil Temperature:
- Range -40℃~85℃
- Resolution: 0.1℃
- Accuracy: <±0.5℃(-10℃~40℃),<±0.8℃ (others)
- IP68 Protection
- Length: 3.5 meters
1.5 Applications
- Smart Agriculture
1.6 Pin mapping and power on
2. Use NSPH01 to communicate with IoT Server
2.1 How it works
The NSPH01 is equipped with a NB-IoT module, the pre-loaded firmware in NSPH01 will get environment data from sensors and send the value to local NB-IoT network via the NB-IoT module. The NB-IoT network will forward this value to IoT server via the protocol defined by NSPH01.
The diagram below shows the working flow in default firmware of NSPH01:
2.2 Configure the NSPH01
2.2.1 Test Requirement
To use NSPH01 in the field, make sure meet below requirements:
- Your local operator has already distributed a NB-IoT Network there.
- The local NB-IoT network used the band that NSPH01 supports.
- Your operator is able to distribute the data received in their NB-IoT network to your IoT server.
Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8. The NSPH01 will use CoAP(120.24.4.116:5683) or raw UDP(120.24.4.116:5601) or MQTT(120.24.4.116:1883)or TCP(120.24.4.116:5600)protocol to send data to the test server.
2.2.2 Insert SIM card
User need to take out the NB-IoT module and insert the SIM card like below. ( Pay attention to the direction)
2.2.3 Connect USB – TTL to NSPH01 to configure it
User need to configure NSPH01 via serial port to set the Server Address / Uplink Topic to define where and how-to uplink packets. NSPH01 support AT Commands, user can use a USB to TTL adapter to connect to NSPH01 and use AT Commands to configure it, as below.
Connection:
USB TTL GND <----> GND
USB TTL TXD <----> UART_RXD
USB TTL RXD <----> UART_TXD
In the PC, use below serial tool settings:
- Baud: 9600
- Data bits: 8
- Stop bits: 1
- Parity: None
- Flow Control: None
Make sure the switch is in FLASH position, then power on device by connecting the jumper on NSPH01. NSPH01 will output system info once power on as below, we can enter the password: 12345678 to access AT Command input.
Note: the valid AT Commands can be found at: https://www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0
2.2.4 Use CoAP protocol to uplink data
Note: if you don't have CoAP server, you can refer this link to set up one: http://wiki.dragino.com/xwiki/bin/view/Main/Set%20up%20CoAP%20Server/
Use below commands:
- AT+PRO=1 // Set to use CoAP protocol to uplink
- AT+SERVADDR=120.24.4.116,5683 // to set CoAP server address and port
- AT+URI=5,11,"mqtt",11,"coap",12,"0",15,"c=text1",23,"0" // Set COAP resource path
For parameter description, please refer to AT command set
After configure the server address and reset the device (via AT+ATZ ), NSPH01 will start to uplink sensor values to CoAP server.
2.2.5 Use UDP protocol to uplink data(Default protocol)
This feature is supported since firmware version v1.0.1
- AT+PRO=2 // Set to use UDP protocol to uplink
- AT+SERVADDR=120.24.4.116,5601 // to set UDP server address and port
- AT+CFM=1 // If the server does not respond, this command is unnecessar
2.2.6 Use MQTT protocol to uplink data
This feature is supported since firmware version v110
- AT+PRO=3 // Set to use MQTT protocol to uplink
- AT+SERVADDR=120.24.4.116,1883 // Set MQTT server address and port
- AT+CLIENT=CLIENT // Set up the CLIENT of MQTT
- AT+UNAME=UNAME // Set the username of MQTT
- AT+PWD=PWD // Set the password of MQTT
- AT+PUBTOPIC=NSE01_PUB // Set the sending topic of MQTT
- AT+SUBTOPIC=NSE01_SUB // Set the subscription topic of MQTT
MQTT protocol has a much higher power consumption compare vs UDP / CoAP protocol. Please check the power analyze document and adjust the uplink period to a suitable interval.
2.2.7 Use TCP protocol to uplink data
This feature is supported since firmware version v110
- AT+PRO=4 // Set to use TCP protocol to uplink
- AT+SERVADDR=120.24.4.116,5600 // to set TCP server address and port
2.2.8 Change Update Interval
Users can use the below command to change the uplink interval.
- AT+TDC=7200 // Set Update Interval to 7200s (2 hour)
NOTE: By default, the device will send an uplink message every 2 hours. Each Uplink Include 8 set of records in this 2 hour (15 minute interval / record).
2.3 Uplink Payload
In this mode, uplink payload includes 87 bytes in total by default.
Each time the device uploads a data package, 8 sets of recorded data will be attached. Up to 32 sets of recorded data can be uploaded.
Size(bytes) | 8 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 4 | 2 | 2 | 4 |
Value | Device ID | Ver | BAT | Signal Strength | MOD | Interrupt | Soil PH | Soil Temperature | Time stamp | Soil Temperature | Soil PH | Time stamp ..... |
If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NSPH01 uplink data.
The payload is ASCII string, representative same HEX:
0x f868411056754138 0064 0c78 17 01 00 0225 010b 6315537b 010b0226631550fb 010e022663154d77 01110225631549f1 011502246315466b 01190223631542e5 011d022163153f62 011e022163153bde 011e022163153859
where:
- Device ID: 0xf868411056754138 = f868411056754138
- Version: 0x0064=100=1.0.0
- BAT: 0x0c78 = 3192 mV = 3.192V
- Singal: 0x17 = 23
- Mod: 0x01 = 1
- Interrupt: 0x00= 0
- Soil PH: 0x0225= 549 = 5.49
- Soil Temperature: 0x010b =267=26.7 °C
- Time stamp : 0x6315537b =1662342011 (Unix Epoch Time)
- Soil Temperature,Soil PH,Time stamp : 010b0226631550fb
- 8 sets of recorded data: Temperature,Soil PH,Time stamp : 010e022663154d77,.......
2.4 Payload Explanation and Sensor Interface
2.4.1 Device ID
By default, the Device ID equal to the last 15 bits of IMEI.
User can use AT+DEUI to set Device ID
Example:
AT+DEUI=868411056754138
The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
2.4.2 Version Info
Specify the software version: 0x64=100, means firmware version 1.00.
For example: 0x00 64 : this device is NSPH01 with firmware version 1.0.0.
2.4.3 Battery Info
Check the battery voltage for NSPH01.
Ex1: 0x0B45 = 2885mV
Ex2: 0x0B49 = 2889mV
2.4.4 Signal Strength
NB-IoT Network signal Strength.
Ex1: 0x1d = 29
0 -113dBm or less
1 -111dBm
2...30 -109dBm... -53dBm
31 -51dBm or greater
99 Not known or not detectable
2.4.5 Soil PH
Get the PH content of the soil. The value range of the register is 300-1000(Decimal), divide this value by 100 to get the percentage of PH in the soil.
For example, if the data you get from the register is 0x05 0xDC, the PH content in the soil is
0229(H) = 549(D) /100 = 5.49.
2.4.6 Soil Temperature
Get the temperature in the soil. The value range of the register is -4000 - +800(Decimal), divide this value by 100 to get the temperature in the soil. For example, if the data you get from the register is 0x09 0xEC, the temperature content in the soil is
Example:
If payload is 0105H: ((0x0105 & 0x8000)>>15 === 0),temp = 0105(H)/10 = 26.1 °C
If payload is FF7EH: ((FF7E & 0x8000)>>15 ===1),temp = (FF7E(H)-FFFF(H))/10 = -12.9 °C
2.4.7 Timestamp
Time stamp : 0x6315537b =1662342011
Convert Unix timestamp to time 2022-9-5 9:40:11.
2.4.8 Digital Interrupt
Digital Interrupt refers to pin GPIO_EXTI, and there are different trigger methods. When there is a trigger, the NSPH01 will send a packet to the server.
The command is:
AT+INTMOD=3 //(more info about INMOD please refer AT Command Manual).
The lower four bits of this data field shows if this packet is generated by interrupt or not. Click here for the hardware and software set up.
Example:
0x(00): Normal uplink packet.
0x(01): Interrupt Uplink Packet.
2.4.9 +5V Output
NSPH01 will enable +5V output before all sampling and disable the +5v after all sampling.
The 5V output time can be controlled by AT Command.
AT+5VT=1000
Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
2.5 Downlink Payload
By default, NSPH01 prints the downlink payload to console port.
Downlink Control Type | FPort | Type Code | Downlink payload size(bytes) |
---|---|---|---|
TDC (Transmit Time Interval) | Any | 01 | 4 |
RESET | Any | 04 | 2 |
INTMOD | Any | 06 | 4 |
Examples:
- Set TDC
If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
Payload: 01 00 00 1E TDC=30S
Payload: 01 00 00 3C TDC=60S
- Reset
If payload = 0x04FF, it will reset the NSPH01
- INTMOD
Downlink Payload: 06000003, Set AT+INTMOD=3
2.6 LED Indicator
The NSPH01 has an internal LED which is to show the status of different state.
- When power on, NSPH01 will detect if sensor probe is connected, if probe detected, LED will blink four times. (no blinks in this step is no probe)
- Then the LED will be on for 1 second means device is boot normally.
- After NSPH01 join NB-IoT network. The LED will be ON for 3 seconds.
- For each uplink probe, LED will be on for 500ms.
2.7 Installation and Maintain
2.7.1 Before measurement
If the NSPH01 has more than 7 days not use or just clean the pH probe. User should put the probe inside pure water for more than 24 hours for activation. If no put in water, user need to put inside soil for more than 24 hours to ensure the measurement accuracy.
2.7.2 Measurement
Measurement the soil surface:
Choose the proper measuring position. Split the surface soil according to the measured deep.
Put pure water, or rainwater to make the soil of measurement point to moist mud. Remove rocks or hard things.
Slowly insert the probe to the measure point. Don't use large force which will break the probe. Make sure not shake when inserting.
Put soil over the probe after insert. And start to measure.
Measurement inside soil:
Dig a hole with diameter > 20CM.
Insert the probe inside, method like measure the surface.
2.7.3 Maintain Probe
- pH probe electrode is fragile and no strong. User must avoid strong force or hitting it.
- After long time use (3~ 6 months). The probe electrode needs to be clean; user can use high grade sandpaper to polish it or put in 5% hydrochloric acid for several minutes. After the metal probe looks like new, user can use pure water to wash it.
- Probe reference electrode is also no strong, need to avoid strong force or hitting.
- User should keep reference electrode wet while not use.
- Avoid the probes to touch oily matter. Which will cause issue in accuracy.
- The probe is IP68 can be put in water.
2.8 PH and Temperature alarm function
➢ AT Command:
AT+ PHALARM=min,max
² When min=3, and max≠0, Alarm higher than max
² When min≠0, and max=0, Alarm lower than min
² When min≠0 and max≠0, Alarm higher than max or lower than min
Example:
AT+ PHALARM =5,8 // Alarm when PH lower than 5.
AT+ TEMPALARM=min,max
² When min=0, and max≠0, Alarm higher than max
² When min≠0, and max=0, Alarm lower than min
² When min≠0 and max≠0, Alarm higher than max or lower than min
Example:
AT+ TEMPALARM=20,30 // Alarm when temperature lower than 20.
2.9 Set the number of data to be uploaded and the recording time
➢ AT Command:
- AT+TR=900 // The unit is seconds, and the default is to record data once every 900 seconds.( The minimum can be set to 180 seconds)
- AT+NOUD=8 // The device uploads 8 sets of recorded data by default. Up to 32 sets of record data can be uploaded.
The diagram below explains the relationship between TR, NOUD, and TDC more clearly:
2.10 Read or Clear cached data
➢ AT Command:
- AT+CDP // Read cached data
- AT+CDP=0 // Clear cached data
2.11 Calibration
User can do calibration for the probe. It is limited to use below pH buffer solution to calibrate: 4.00, 6.86, 9.18. When calibration, user need to clean the electrode and put the probe in the pH buffer solution to wait the value stable ( a new clean electrode might need max 24 hours to be stable).
After stable, user can use below command to calibrate.
pH buffer solution | AT Command to calibrate | Downlink Command | Read Cal Value |
4.00 | AT+PHCAL=4 | 0x13 04 | AT+PHCAL=? |
6.86 | AT+PHCAL=6 | 0x13 06 | AT+PHCAL=? |
9.18 | AT+PHCAL=9 | 0x13 09 | AT+PHCAL=? |
Factory Default | AT+PHCAL=15 | 0x13 15 | AT+PHCAL=? |
2.12 Firmware Change Log
Download URL & Firmware Change log: https://www.dropbox.com/sh/1tv07fro2pvjqj8/AAD-2wbfGfluTZfh38fQqdA_a?dl=0
Upgrade Instruction: Upgrade Firmware
2.13 Battery & Power Consumption
NSPH01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
Battery Info & Power Consumption Analyze .
3. Access NB-IoT Module
Users can directly access the AT command set of the NB-IoT module.
The AT Command set can refer the BC35-G NB-IoT Module AT Command: https://www.dragino.com/downloads/index.php?dir=datasheet/other_vendors/BC35-G/
4. Using the AT Commands
4.1 Access AT Commands
See this link for detail: https://www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0
AT+<CMD>? : Help on <CMD>
AT+<CMD> : Run <CMD>
AT+<CMD>=<value> : Set the value
AT+<CMD>=? : Get the value
General Commands
AT : Attention
AT? : Short Help
ATZ : MCU Reset
AT+TDC : Application Data Transmission Interval
AT+CFG : Print all configurations
AT+CFGMOD : Working mode selection
AT+INTMOD : Set the trigger interrupt mode
AT+5VT : Set extend the time of 5V power
AT+PRO : Choose agreement
AT+RXDL : Extend the sending and receiving time
AT+SERVADDR : Server Address
AT+TR : Get or Set record time"
AT+APN : Get or set the APN
AT+FBAND : Get or Set whether to automatically modify the frequency band
AT+DNSCFG : Get or Set DNS Server
AT+GETSENSORVALUE : Returns the current sensor measurement
AT+NOUD : Get or Set the number of data to be uploaded
AT+CDP : Read or Clear cached data
AT+TEMPALARM : Get or Set alarm of temp
AT+PHALARM : Get or Set alarm of PH
AT+ PHCAL : calibrate PH value
COAP Management
AT+URI : Resource parameters
UDP Management
AT+CFM : Upload confirmation mode (only valid for UDP)
MQTT Management
AT+CLIENT : Get or Set MQTT client
AT+UNAME : Get or Set MQTT Username
AT+PWD : Get or Set MQTT password
AT+PUBTOPIC : Get or Set MQTT publish topic
AT+SUBTOPIC : Get or Set MQTT subscription topic
Information
AT+FDR : Factory Data Reset
AT+PWORD : Serial Access Password
5. FAQ
5.1 How to Upgrade Firmware
User can upgrade the firmware for 1) bug fix, 2) new feature release.
Please see this link for how to upgrade: http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList
Notice, NSPH01 and LSPH01 share the same mother board. They use the same connection and method to update.
5.2 Can I calibrate NSPH01 to different soil types?
NSPH01 is calibrated for saline-alkali soil and loamy soil. If users want to use it for other soil, they can calibrate the value in the IoT platform base on the value measured by saline-alkali soil and loamy soil. The formula can be found at this link.
6. Trouble Shooting
6.1 Connection problem when uploading firmware
6.2 AT Command input doesn't work
In the case if user can see the console output but can't type input to the device. Please check if you already include the ENTER while sending out the command. Some serial tool doesn't send ENTER while press the send key, user need to add ENTER in their string.
6.3 Not able to connect to NB-IoT network and keep showing "Signal Strength:99".
This means sensor is trying to join the NB-IoT network but fail. Please see this link for trouble shooting for signal strenght:99.
6.4 Possible reasons why the device is unresponsive:
1. Check whether the battery voltage is lower than 2.8V
2. Check whether the jumper of the device is correctly connected
3. Check whether the switch here of the device is at the ISP(The switch can operate normally only when it is in RUN)
7. Order Info
Part Number: NSPH01
8. Packing Info
Package Includes:
- NSPH01 NB-IoT pH Sensor x 1
- External antenna x 1
Dimension and weight:
- Device Size: cm
- Device Weight: g
- Package Size / pcs : cm
- Weight / pcs : g
9. Support
- Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
- Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to support@dragino.com