Small range of IQ in Bluetooth direction finding

Hi, I am trying to use the nRF52833 development board for Bluetooth direction finding. I am having some problems, and I would appreciate it if I could get your help.

My transmitter and receiver are both nRF52833 and I have AoA only mode enabled. I am using this example. I configured a three-antenna receiver array and modified the overlay and other files as instructed. Both the transmitter and receiver are on my desktop, and they are very close together, about 30 cm apart. At direction_finding_connectionless_rx/src/main.c:137, there is a struct called bt_df_per_adv_sync_iq_samples_report that has an internal pointer to IQ samples. Based on these clues, I have done some experiments and obtained IQ, but I am currently experiencing a problem.

In the experiments, the RSSI is usually between -45 and -60, the values of I and Q vary within ±10, and I/Q is an integer. The problem is that such accuracy has some roughness in finding the exact AoA. In the definition of the bt_hci_le_iq_sample struct (nRF_Connect_SDK/v1.7.1/zephyr/include/bluetooth/hci.h:2443), I and Q are integers of int 8, but it looks like the range of int 8 is not sufficiently reached at the moment. I'm guessing that I and Q may have gone through some preprocessing, but I'm not sure if that's the case. My question is how to improve the precision of I and Q at the usual signal strength. For example, make I and Q floating-point, or in the case of integers, make the variation more pronounced (up to a hundred or more).

Thank you for reading this post, and I look forward to getting your help.

Parents
  • Hi

    Unfortunately you won't get a very exact result with an array of only 3 antennae on the receiver end. I would recommend a 2x3 antenna array at the very least to get usable results, and would suggest going up to a 3x3 or 3x4 array for good accuracy.

    Please note that you will need an AoA algorithm to handle the received sample data and output it so it makes sense. There is no point in looking at raw IQ data when received, as you should always convert the data to a vector in order to review it You can check out this page for information on the formulas used to translate between polar and rectangular form.

    Best regards,

    Simon

Reply
  • Hi

    Unfortunately you won't get a very exact result with an array of only 3 antennae on the receiver end. I would recommend a 2x3 antenna array at the very least to get usable results, and would suggest going up to a 3x3 or 3x4 array for good accuracy.

    Please note that you will need an AoA algorithm to handle the received sample data and output it so it makes sense. There is no point in looking at raw IQ data when received, as you should always convert the data to a vector in order to review it You can check out this page for information on the formulas used to translate between polar and rectangular form.

    Best regards,

    Simon

Children
  • First of all, thank you for writing such a thorough answer in your busy schedule. Both the explanation of the number of antennas and the detailed explanation of I/Q are very clear. I will follow the instructions to modify some settings in the future.

    But for now, I still have some curiosity about why the I/Q changes are not too obvious. In another Q&A thread, its I/Q can reach 30 with an RSSI of -63 (sample [18]). I believe the nRF52833DK is capable of this. But on my side, no matter what I try, the I/Q varies within a range of 10. I think maybe there is a slight difference in the phase obtained from the (-2, -8) and (-7, -32). I've posted a few sets of IQ samples that I collected below.

    RSSI: -60 [45 samples]:
    (-6, -8), (5, 7), (-6, -9), (4, 8), (-5, -9), (5, 8), (-5, -9), (4, 9), (-4, -9), (-3, -10), (-3, -10), (-4, -10), (-2, -10), (-2, -10), (0, -10), (0, -10), (0, -10), (1, -10), (2, -10), (3, -10), (2, -10), (4, -9), (5, -9), (5, -8), (6, -9), (6, -8), (6, -8), (6, -8), (8, -6), (8, -5), (8, -7), (8, -5), (9, -4), (9, -4), (9, -3), (9, -1), (9, -1), (9, -2), (10, 0), (9, 0), (9, 0), (9, 1), (9, 2), (9, 2), (8, 4)
    
    RSSI: -40 [45 samples]:
    (-9, -6), (8, 5), (-8, -6), (7, 6), (-8, -7), (7, 6), (-8, -7), (7, 7), (-7, -8), (-7, -8), (-6, -8), (-6, -9), (-5, -9), (-4, -10), (-5, -9), (-3, -10), (-2, -10), (-2, -10), (-1, -10), (-1, -10), (0, -10), (1, -10), (1, -10), (2, -10), (3, -10), (3, -10), (4, -9), (5, -9), (6, -9), (6, -8), (6, -8), (7, -7), (7, -7), (7, -6), (9, -5), (9, -4), (9, -5), (9, -3), (9, -3), (9, -2), (9, -1), (9, 0), (9, -1), (9, 1), (9, 2)
    
    RSSI: -37 [45 samples]:
    (-10, -2), (9, 1), (-10, -3), (9, 2), (-10, -3), (9, 2), (-10, -3), (9, 2), (-10, -4), (-10, -4), (-9, -5), (-9, -5), (-8, -6), (-9, -6), (-8, -7), (-6, -8), (-7, -8), (-6, -9), (-6, -9), (-6, -9), (-4, -10), (-3, -10), (-3, -10), (-2, -10), (-2, -10), (-1, -10), (-1, -10), (0, -10), (1, -10), (2, -10), (3, -10), (3, -10), (3, -10), (4, -9), (5, -9), (5, -8), (6, -8), (6, -7), (7, -7), (8, -5), (8, -6), (8, -5), (8, -5), (9, -4), (9, -3)
    

    I think I may have missed some points. I would appreciate any help you can give me.

  • Hi, Shuang!

    I have met the same phenomenon with you, somehow you may need to connect the chip with an antenna to get a larger IQ value from my experience.

    And it also seemed that there is no obvious relationship between the degree of the absolute value of IQ value and RSSI value.

    But I do believe with a larger IQ value, I can calculate the angle of arrival precisely.

Related