iBeacon distance

Hi,

   We are using iBeacon to locate the relative position of mobile phone between two beacons.And the distance between mobile phone and beacons no more than 20m.

Is that feasible with ibeacon? And should we need adding PA in RF?

(sdk 14.2 with nRF52810)

Thanks!

  • Hi,

    Taylor said:
    I have some problems about the   example of beacon.(sdk 14.2)

    This is from the app_timer implementation in <SDK 14.2>\components\libraries\timer\app_timer.c. The app_timer is a SW library that lets you create an arbitrary number of timers using a single RTC instance (RTC1). This library is central in the SDK and is used by most examples.

    You do not normally need to consider this implementation details of this library as it is provided read for use.

    Taylor said:
    Why we should to close SWI_IRQ?

    What do you mean by closing the SWI_IRQ? If you mean clear, then this is done to make sure that there is no pending SWI interrupt before enabling it (for instance in case that was used by some other code before staring the app_timer). Note that this code typically only run once during startup, so there is usually no point in optimizing away things you think is not needed.

    Taylor said:
    Wha't the rtcl_count means?

    That is the counter value of RTC1.

  • I have downloaded the same softdevice and app in nRF52810 and nRF52832.And I don't edit anything.

    I can find the beacon when use nRF52832, but can't find in nRF52810.Here is the hardware of nRF52810.

    I didn't use 32.768kHz crystal oscillator in 52810, but used in nRF52832.Is that question?

  • Hi,

    Taylor said:
    I didn't use 32.768kHz crystal oscillator in 52810, but used in nRF52832.Is that question?

    Yes, that will be a problem. If the FW attempts to start the LFXO and the crystal is not there SoftDevice initialization will block forever, waiting for the clock that does not exist to start.

    If you still use the beacon example in SDK 14.2 you need to change the clock configuration in sdk_config.h to use internal LFRC instead, so that it looks like this:

    // <o> NRF_SDH_CLOCK_LF_SRC  - SoftDevice clock source.
     
    // <0=> NRF_CLOCK_LF_SRC_RC 
    // <1=> NRF_CLOCK_LF_SRC_XTAL 
    // <2=> NRF_CLOCK_LF_SRC_SYNTH 
    
    #ifndef NRF_SDH_CLOCK_LF_SRC
    #define NRF_SDH_CLOCK_LF_SRC 0
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. 
    #ifndef NRF_SDH_CLOCK_LF_RC_CTIV
    #define NRF_SDH_CLOCK_LF_RC_CTIV 16
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. 
    // <i> How often (in number of calibration intervals) the RC oscillator shall be calibrated
    // <i>  if the temperature has not changed.
    
    #ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
    #define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_XTAL_ACCURACY  - External crystal clock accuracy used in the LL to compute timing windows.
     
    // <0=> NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM 
    // <1=> NRF_CLOCK_LF_XTAL_ACCURACY_500_PPM 
    // <2=> NRF_CLOCK_LF_XTAL_ACCURACY_150_PPM 
    // <3=> NRF_CLOCK_LF_XTAL_ACCURACY_100_PPM 
    // <4=> NRF_CLOCK_LF_XTAL_ACCURACY_75_PPM 
    // <5=> NRF_CLOCK_LF_XTAL_ACCURACY_50_PPM 
    // <6=> NRF_CLOCK_LF_XTAL_ACCURACY_30_PPM 
    // <7=> NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM 
    
    #ifndef NRF_SDH_CLOCK_LF_XTAL_ACCURACY
    #define NRF_SDH_CLOCK_LF_XTAL_ACCURACY 1
    #endif


Related