Hello everyone,
I got an issue with the custom board nRF52832 (Raytac BLE module) as I only achieve very short distance between the BLE device and Android app without data loss. This distance is about 50 cm. The RSSI I noticed is below -70dBm.
With same code, it perfectly ran on nRF52 DK and the range I tested without data loss is about 5 meters.
I tried to increase TX power as the following code ( using sd_ble_gap_tx_power_set()). However, it didn't improve much. Is there any suggestion in this case?
static void advertising_init(void) { uint32_t err_code; ble_advdata_t advdata; ble_advdata_t scanrsp; ble_adv_modes_config_t options; int8_t tx_power_level = 4; // Build advertising data struct to pass into @ref ble_advertising_init. memset(&advdata, 0, sizeof(advdata)); advdata.name_type = BLE_ADVDATA_FULL_NAME; advdata.include_appearance = false; advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE; advdata.p_tx_power_level = &tx_power_level; sd_ble_gap_tx_power_set(tx_power_level); memset(&scanrsp, 0, sizeof(scanrsp)); scanrsp.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]); scanrsp.uuids_complete.p_uuids = m_adv_uuids; memset(&options, 0, sizeof(options)); options.ble_adv_fast_enabled = true; options.ble_adv_fast_interval = APP_ADV_INTERVAL; options.ble_adv_fast_timeout = APP_ADV_TIMEOUT_IN_SECONDS; err_code = ble_advertising_init(&advdata, &scanrsp, &options, on_adv_evt, NULL); APP_ERROR_CHECK(err_code); ble_advertising_conn_cfg_tag_set(CONN_CFG_TAG); }
Thanks!