AnsweredAssumed Answered

Narrowband with SPSGRF-868 module

Question asked by marcel.geofrey on May 31, 2016
Hello,

I bought some X-NUCLEO-IDS01A4 for evaluation of the SPSGRF-868 module. I am not really pleased with the results. So far the best range I could get was 175 m in the same conditions in which I got 150 m with a competitor's Bluetooth 4.0 module, ie outside with a clear line of sight.

I am using the P2P demo software, with reduced datarate and FEC activated. Please see below the configuration pasted from the file spirit1_appli.h :
<code>
/*************************Uncomment the the protocol to be used****************/
//#define USE_STack_PROTOCOL
#define USE_BASIC_PROTOCOL




#if defined(USE_STack_PROTOCOL)
#define USE_STack_LLP  /*Uncomment if LLP featured need to be used*/
#endif
/******************************************************************************/




#if defined(X_NUCLEO_IDS01A4)
         #define USE_SPIRIT1_868MHz
#elif defined(X_NUCLEO_IDS01A5)
         #define USE_SPIRIT1_915MHz
#else
#error SPIRIT1 Expansion Board is undefined or unsupported
#endif




#if defined(MCU_SLEEP_MODE) || defined(MCU_STOP_MODE)
#define RF_STANDBY
#endif






/* Exported constants --------------------------------------------------------*/


/*  Radio configuration parameters  */
#define XTAL_OFFSET_PPM             0
#define INFINITE_TIMEOUT            0.0


#ifdef USE_SPIRIT1_433MHz
#define BASE_FREQUENCY              433.0e6
#endif


#ifdef USE_SPIRIT1_868MHz
#define BASE_FREQUENCY              869.3e6
#endif


#ifdef USE_SPIRIT1_915MHz
#define BASE_FREQUENCY              915.0e6
#endif


#define CHANNEL_SPACE               25e3
#define CHANNEL_NUMBER              2
#define MODULATION_SELECT           GFSK_BT1
#define DATARATE                    19200
#define FREQ_DEVIATION              9600
#define BANDWIDTH                   38400


#define POWER_DBM                   11.6
#define POWER_INDEX                 7
#define RECEIVE_TIMEOUT             2000.0 /*change the value for required timeout period*/   


#define RSSI_THRESHOLD              -120


/*  Packet configuration parameters  */
#define PREAMBLE_LENGTH             PKT_PREAMBLE_LENGTH_04BYTES
#define SYNC_LENGTH                 PKT_SYNC_LENGTH_4BYTES
#define SYNC_WORD                   0x88888888
#define LENGTH_TYPE                 PKT_LENGTH_VAR
#define LENGTH_WIDTH                7
#define CRC_MODE                    PKT_CRC_MODE_8BITS
#define CONTROL_LENGTH              PKT_CONTROL_LENGTH_0BYTES
#define EN_FEC                      S_ENABLE
#define EN_WHITENING                S_ENABLE


/*  Addresses configuration parameters  */
#define EN_ADDRESS                  S_DISABLE
#define EN_FILT_MY_ADDRESS          S_DISABLE
#define EN_FILT_MULTICAST_ADDRESS   S_DISABLE
#define EN_FILT_BROADCAST_ADDRESS   S_DISABLE
#define EN_FILT_SOURCE_ADDRESS      S_DISABLE//S_ENABLE
#define SOURCE_ADDR_MASK            0xf0
#define SOURCE_ADDR_REF             0x37
#define MULTICAST_ADDRESS           0xEE
#define BROADCAST_ADDRESS           0xFF 
    
    
#define EN_AUTOACK                      S_DISABLE
#define EN_PIGGYBACKING                  S_DISABLE
#define MAX_RETRANSMISSIONS              PKT_DISABLE_RETX




#define PAYLOAD_LEN                     25 /*20 bytes data+tag+cmd_type+cmd+cmdlen+datalen*/
#define APPLI_CMD                       0x11
#define NWK_CMD                         0x22
#define LED_TOGGLE                      0xff
#define ACK_OK                          0x01
#define MAX_BUFFER_LEN                  96
#define TIME_TO_EXIT_RX                 3000
#define DELAY_RX_LED_TOGGLE             100   
#define DELAY_TX_LED_GLOW               200 
#define LPM_WAKEUP_TIME                 100
#define DATA_SEND_TIME                  50//30
</code>


I am using a still relatively large bandwith and data rate. The problem is that further reducing datarate and bandwith litterally kills the range. If I set the following settings :

datarate 9600
frequency deviation 4800
bandwidth 19200
all else stays equal

I do not even get a full meter of range !

Why does reducing datarate and bandwith kills the range ? Is it a hardware issue ? A software misconfiguration ?

Shouldn't this module be able to get around 1 km of clear line of sight range ?

Outcomes