Development Board: Wireless Transceiver (Sure Electronics, PN GP-GC011)

After a recent article from Jon Chandler, I thought it best to share my recent work on the Sure Electronics 915Mhz Wireless Transceivers.

Here's what one looks like from the box;

GP-GC011

It's very important to note here that they come in a pair. That means 2xTransceivers and 2xOmni Antenna. At the time of purchase/writing this article, the modules cost US$17.72 a pair.

The datasheet can be downloaded here: GP-GC011

 

Features

  • Running frequency: 915M,2.5K Frequency Step.
  • 64 channels setting, non-volatile on power off, Transmitting power: 7dBm
  • Receiving sensitivity: -109dBm
  • Modulation method: FSK
  • Receiving method: Zero IF digital receiving
  • Airborne speed rate: 300-19200bps
  • Serial port speed rate:19200bps
  • Transmitting current: 20-30mA(including MCU)
  • Receiving current: 15-20mA(including MCU)
  • Standby current: <1uA
  • Running voltage: 2.8-3.3V
  • Communication distance: 250-350m(Notes: the maximum communication distance correlates with environment, antenna form and communication speed rate).

 

Operation

That's the product description out of the way, now to physically get it working. The datasheet does cover every aspect of operation, but lets consider the normal modes of operation, Initialise, Transmit, Receive.

 

Initialise

The first stage of operation is initialising the module. Here's the pinout configuration for the transceiver:

Pin # Name Description
1 Vcc Positive voltage supply (3.3V)
2 GND Ground
3 RXD Outgoing UART data (transmit)
4 TXD Received UART data
5 Enable Standby mode control
6 Busy Busy indicator (TX/RX in progress)
7 R/T Not Used
8 Set F Used for changing frequency


Now to initialise the module with the PIC program. Here's a guide;

  1. Transceiver (known as TXR herewith) Enable pin should be pulled low (can be permanently pulled low for constant operation).
  2. TXR Set Frequency pin should be pulled high (can be permanently pulled high for constant operation).
  3. Busy pin made an input.
  4. Configure PIC UART to operate at 19200 baud (True, 8 data bits, 1 start bit, 1 stop bit.... All default settings for the Hardware USART module in Swordfish, excluding baud speed).

Notes:

  • 3.3V operation. Do not connect or interface with direct 5V. Use any 18LFxxx PIC (low voltage type), or level shifting circuitry.
  • The TXR Enable pin controls the modules power state. When pulled low the TXR is ON. When pulled high the TXR will enter STANDBY mode (extremely low current consumption).
  • The TXR Set Frequency pin should ONLY be pulled low during a special sequence. You could inadvertently hop frequencies with this pin not pulled high during normal operation.
  • The TXR Busy pin is required for polling the TXR to ensure its ready to transmit. This connection is not required for RECEIVE ONLY configurations.

 

Transmit

Once initialised, transmitting data is quite simple;

  1. Ensure TXR Busy pin is HIGH (indicates the module is free to transmit - no incoming/outgoing packets).
  2. Send UART data to TXR RXD pin (that's right, data is sent to the RXD pin on the TXR).
  3. Wait for 15mS (module will send data automatically after a 10mS delay - 15mS is the recommended wait time).

Notes:

  • Be sure to connect the UART TX pin of the PIC to the RXD pin on the TXR module.
  • The TXR module has a 63 byte transmit buffer. You can send 1 byte or 63 bytes - anything after this will be ignored.
  • Once data is sent to the TXR, the 15mS delay will initiate the transmit.
  • The TXR Busy pin will go high for the duration of the transmit.
  • The TXR Busy pin can drive loads upto 20mA. This allows an LED with series resistor to be connected to it. The LED will flash when TX/RX wireless data.

 

Receive

Even easier then transmitting, receiving goes like this;

  1. Received wireless data will be transmitted from the TXR TXD pin.

Notes:

  • Use the hardware UART module/library to ensure no lost/corrupt data.
  • That's about it.

 

Example Program

Naturally, a program says a thousands words. Consider the following TRANSMIT program;

Note: Program designed to operate with a 10Mhz external crystal. Also, there is some initialisation code for the development board I made which configures the MAX3223 interface - disregard if just using the TXR.

Transmit Program
Device = 18F2620
Clock = 40                         // clock configured to operate in HSPLL
Config OSC = HSPLL                 // (10Mhz external oscillator)
 
Include "USART.bas"                // include the hardware UART library
 
// user definable pinout
Dim TXR_Enable As PORTB.0,         // TXR Enable pin
    TXR_Busy As PORTB.1,            // TXR Busy pin
    TXR_SETFREQ As PORTB.2,        // TXR Set Frequency pin
    T1IN As PORTB.3,               // Development board MAX3223 T1IN pin
    R1OUT As PORTB.4               // Development board MAX3223 R1OUT pin
 
// some registers to send data with
Dim PacketNumber As Word
 
// init usart and TXR interface
Sub TXR_Init()
    // setup the TXR module
    USART.SetBaudrate(br19200)     // setup baud rate for 19200
    Low(TXR_Enable)                // Set TXR Enable pin low
    Input(TXR_Busy)                 // make TXR Busy pin input
    High(TXR_SETFREQ)              // set TXR Set Freq high
 
    // set high impedance for MAX3223 interface (not in use)
    Input(T1IN)                    // only used if connecting to PC
    Input(R1OUT)                   // only used if connected to PC
End Sub
 
// main program start...
TXR_Init                           // call init sub for TXR/Development Board
 
DelayMS(200)                       // allow circuit to stabilise
PacketNumber = 0                   // reset the variable
 
While True                         // main program loop
    If TXR_Busy = 1 Then           // ensure TXR is not busy (high = not busy)
        USART.Write("Online")      // send a string
        USART.Write(PacketNumber)  // send a word type variable
    EndIf        
    Inc(PacketNumber)              // increment the word type variable
    DelayMS(500)                   // delay for 500mS
Wend

 

You can put the above code on a PIC & connect it to the TXR up to 300 meters away from your PC. If you have, put the following program onto the "Receive" PIC, and connect the PICKit 2 to PORTC.1 to read the incoming packet numbers;

Receive Program
Device = 18F2620
Clock = 40                         // clock configured to operate in HSPLL
Config OSC = HSPLL                 // (10Mhz external oscillator)
 
Include "USART.bas"                // include the hardware UART library
Include "SUART.bas"                // inlcude the software UART library (PICKit 2)
Include "CONVERT.bas"              // include the convert library
 
// user definable pinout
Dim TXR_Enable As PORTB.0,         // TXR Enable pin
    TXR_Busy As PORTB.1,           // TXR Busy pin
    TXR_SETFREQ As PORTB.2,        // TXR Set Frequency pin
    T1IN As PORTB.3,               // Development board MAX3223 T1IN pin
    R1OUT As PORTB.4               // Development board MAX3223 R1OUT pin
 
// some registers to send data with
Dim PacketNumber As Word
 
// init usart and TXR interface
Sub TXR_Init()
    // setup the TXR module
    USART.SetBaudrate(br19200)     // setup baud rate for 19200
    Low(TXR_Enable)                // Set TXR Enable pin low
    Input(TXR_Busy)                // make TXR Busy pin input
    High(TXR_SETFREQ)              // set TXR Set Freq high
 
    // set high impedance for MAX3223 interface (not in use)
    Input(T1IN)                    // only used if connecting to PC
    Input(R1OUT)                   // only used if connected to PC
 
    UART.SetTX(PORTC.1)            // define PORTC.1 as the PICKit 2 UART interface
    UART.SetMode(umTrue)           // change mode to true
    UART.SetBaudrate(sbr38400)     // set baud rate to 38400
End Sub
 
// main program start...
TXR_Init                           // call init sub for TXR/Development Board
 
DelayMS(200)                       // allow circuit to stabilise
 
While True                         // main program loop
    USART.WaitForStr("Online")     // wait for the string "Online"
    USART.Read(PacketNumber)       // grab the word type variable that follows
    // display with SOFTWARE UART (in this case, connected to the PICKit 2)
    UART.Write("Data RXD: ",DecToStr(PacketNumber),13,10)
Wend

 

Here's the above two programs physically loaded onto development boards;

0029_Wireless_Transceiver

 

Note: The development boards are actually slightly different as they have undergone minor updates with each revision.

Both boards are powered up and operating in the above picture, here's what the PICKit 2 output looks like from the "Receive" board;

0029_TXR_PK2

 

Latest Development Board Revision

Schematic0029_Wireless_Transceiver_Schematic

 

Board Layout

Wireless_Transceiver_PCB_copy

Download ISIS, ARES and Swordfish Programs here.

Please share thoughts, comments and feedback!


Posted: 8 years 8 months ago by Anonymous #5539
Anonymous's Avatar
In the datasheet for the module it says that the baud rate is customizable,ha ve you found a way to alter it.
cheers
Posted: 8 years 8 months ago by Graham Mitchell #5540
Graham Mitchell's Avatar
From what I gather, this particular one is not changeable - though their other models are

edit: it appears this product is no longer sold by Sure Electronics, though their other models are very similar. I have a set of 433Mhz and will test them later in the day
Posted: 8 years 8 months ago by Anonymous #5541
Anonymous's Avatar
Thanks for your reply
I have acquired some of the 433mhz also,in the datasheet in the pin definitions it mentions the customizable baud rate but does not go on to explain how to alter it. I was thinking of posting in the sure electronics forum about it but replies seem pretty sparse on other questions asked.
Wish you luck in fiquring out this hidden feature during testing, i have 1 set as a transmitter and soon i will set up the other for receiving and also have a play round.
all the best

Forum Activity

Member Access