Support distance measurement for long range

Hi

I am working on a project which uses distance measurement config for multiple peripherals with long range.

Our plan is to support DM for up to range 25m and we observed disconnect issue at 5-10m range. We also tried PHY with LE-CODED enabled and if it is enabled, the DM will not work as we do not read any result at all.

May I know is DM supported with LE-CODED enabled, or do we need to config anything to do so.

We are using NRF Connect SDK V2.7.0

Let me insert out prj file for better reference

# CENTRAL
CONFIG_BT=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_SCAN=y
CONFIG_BT_SCAN_FILTER_ENABLE=n
CONFIG_BT_MAX_CONN=5
# Allow to read RSSI for the connected peripheral
CONFIG_BT_CTLR=y
CONFIG_BT_CTLR_CONN_RSSI=y

# PERIPHERAL
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="Notify"
CONFIG_BT_PER_ADV=y
CONFIG_BT_SETTINGS=y
CONFIG_BT_GATT_CLIENT=y
CONFIG_BT_GATT_CACHING=n
CONFIG_BT_L2CAP_TX_MTU=252
CONFIG_BT_BUF_ACL_RX_SIZE=256
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=600
CONFIG_BT_PERIPHERAL_PREF_MIN_INT=120
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=160
CONFIG_BT_PERIPHERAL_PREF_LATENCY=2
CONFIG_OPENTHREAD_DEFAULT_TX_POWER=8
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

# PHY Coded enable for long range
# CONFIG_BT_PHY_UPDATE=y
CONFIG_BT_CTLR_PHY_CODED=y
CONFIG_BT_USER_PHY_UPDATE=y
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_EXT_ADV=y

# Distance Measurement
CONFIG_DM_MODULE=y
CONFIG_DM_GPIO_DEBUG=y
CONFIG_DM_HIGH_PRECISION_CALC=y
CONFIG_DM_INITIATOR_DELAY_US=2000
CONFIG_DM_RANGING_OFFSET_US=100000
CONFIG_DM_MIN_TIME_BETWEEN_TIMESLOTS_US=100000
CONFIG_DM_TIMESLOT_QUEUE_COUNT_SAME_PEER=3
CONFIG_MPSL=y
CONFIG_MPSL_TIMESLOT_SESSION_COUNT=3
CONFIG_MPSL_WORK_STACK_SIZE=8192

CONFIG_SETTINGS_NONE=y
CONFIG_SETTINGS=y

CONFIG_NEWLIB_LIBC=y
CONFIG_NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE=1024

# Use internal clock source
CONFIG_CLOCK_CONTROL_NRF=y
CONFIG_CLOCK_CONTROL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y

# Enable PWM buzzer module
CONFIG_PWM=y
CONFIG_NRFX_PWM1=y
CONFIG_NRFX_PWM2=y

# Enable ADC
CONFIG_ADC=y

# Enable NVS
CONFIG_NVS=y

CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y

CONFIG_REBOOT=y

# Below configurations to enable DFU
# Enable mcumgr.
CONFIG_NCS_SAMPLES_DEFAULTS=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_SIGN_IMAGES=y
CONFIG_SECURE_BOOT=y
CONFIG_SB_SIGNING_KEY_FILE="priv_key.pem"

# Some command handlers require a large stack.
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096

# power management
CONFIG_PM_DEVICE=y

Parents
  • Depends on how accurate you need the measurements to be. To increase range, there is generally the step of increasing TX power, but other than that we don't have many ways to increase the range. Antenna design and tuning on the HW side will also of course be relevant here. Are you testing with nRF52840 DKs or custom boards on your end?

    Best regards,

    Simon

Reply
  • Depends on how accurate you need the measurements to be. To increase range, there is generally the step of increasing TX power, but other than that we don't have many ways to increase the range. Antenna design and tuning on the HW side will also of course be relevant here. Are you testing with nRF52840 DKs or custom boards on your end?

    Best regards,

    Simon

Children
  • Hi Simonr,

    To increase range, there is generally the step of increasing TX power

    --> Yes, we did consider this step. Currently we have set the TX power to +8.

    Are you testing with nRF52840 DKs or custom boards on your end?

    --> Yes, we are. Also, we have a NRF52840 DK in which we had configured as central and testing with our custom peripheral boards.

    Our observation is same.

    Thank you for the support, will consider the antenna design and review our design.

    Please let me know if we have any other option that can be useful for us.

Related