This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Poor RSSI level of custom board based on BMD340

Hi,

We have made a custom board based on BMD340 for a vital signs monitor. The board will be attached onto various parts of human body.  The body shadowing effect plays an important role in the performance of wireless systems. This effect can lead to loss of packets or can even break the wireless link. In some of the designs we have made till date, we face this issue. Before going ahead with the design, we would love to make sure that BMD340 is the best option we have and we have not done any major mistake with respect to RFdesign.

To check for body shadowing effect, we performed a simple RSSI comparison test using NRF connect android app. We placed the BMD340 based design (PCB) on body as well as a Movesense device (with enclosure) on body and compared the both RSSIs reported by the app at various orientations. The values were monitored at the following scenarios at different distances

  1. Subject facing the phone (receiver)
  2. Subject facing away from the phone (receiver)
In all cases, the custom design one showed RSSI value in the range from -80 to -101 dBm whereas Movesense device showed RSSI in the range -57 to -85 dBm. We have few concerns with respect to the custom design. The design once kept inside enclosure will have further reduction in signal strength and this can severely affect the performance and our intended use case. The current BMD340AR10 uses integrated PCB antenna, so we were wondering if using  a BLE module with external antenna will help in overcoming this signal strength degradation issue.
Currently we have 3 options 
  1. Use BMD341 series with external antenna 
  2. Use BMD345 series with external antenna and PA, LNA
  3. Use existing BMD340
We have shared the schematics and layout details of our current design for review.  It would be great if someone can help us in understanding whether this RSSI level variations is due to something in our layout or these levels are expected and is absolutely normal?
Parents
  • Hi,

    Thanks for the valuable inputs. 

    To change the TX power, this change is enough right


    /**@brief Function for initializing the Advertising functionality.
    */
    static void advertising_init(void)
    {
    uint32_t err_code;
    ble_advertising_init_t init;

    memset(&init, 0, sizeof(init));

    init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
    init.advdata.include_appearance = false;
    init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;

    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids = m_adv_uuids;

    init.config.ble_adv_fast_enabled = true;
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
    init.config.ble_adv_fast_timeout = APP_ADV_DURATION;
    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);

    sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV,m_advertising.adv_handle,8);
    APP_ERROR_CHECK(err_code);
    }

    Please let me know if I am missing out something.

Reply
  • Hi,

    Thanks for the valuable inputs. 

    To change the TX power, this change is enough right


    /**@brief Function for initializing the Advertising functionality.
    */
    static void advertising_init(void)
    {
    uint32_t err_code;
    ble_advertising_init_t init;

    memset(&init, 0, sizeof(init));

    init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
    init.advdata.include_appearance = false;
    init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;

    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids = m_adv_uuids;

    init.config.ble_adv_fast_enabled = true;
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
    init.config.ble_adv_fast_timeout = APP_ADV_DURATION;
    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);

    sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV,m_advertising.adv_handle,8);
    APP_ERROR_CHECK(err_code);
    }

    Please let me know if I am missing out something.

Children
Related