Electronics

Wireless CC1101 Transceiver 433MHz Module With SMA FZ0223 Antenna

Out Of Stock

1

Description

A radio module (receiver and transmitter) operating in the frequency range of 433 MHz, with the SPI communication interface. Powered with a voltage of 1.8 V - 3.6 V.Transmission distance: 300 - 500 meters (Depending on the specific situation of the environment and communication baud rate, etc.) The device has an external antenna that is connected to the SMA connector, the signals get transmitted and received on the goldin pin connectors.

 

Specification

  • Supply voltage: 1.8 V to 3.6 V
  • Frequency: adjustable from 387 MHz to 464 MHz
  • Maximum momentary current consumption: up to 30 mA
  • Transmission distance: 200 meters
  • Maximum transmission power: 10 mW (10 dBm)
  • Support for the modulation of 2-FSK, GFSK, MSK
  • Receiver sensitivity: 110 dBm 1200 baud
  • Minimum operating range: 1.2 kbps to 500 kbps
  • Separate 64-byte RX and TX (FIFO) buffer 
  • Built-in CRC error detection 
  • Low current consumption: for RX - 15.6 mA, 2.4 kbps, 433MHz
  • Programmable control of output power: not more than 10 dBm for all frequencies
  • Dimensions: 50 x 27 x 9 mm
  • Weight: 13 g

 

Included

  • The wireless CC1101 module
  • External FZ0223 antenna 

 

Pins

The system has soldered SMA goldin pin connectors - a pitch of 2.54 mm. The description of the pins is presented in the array:

Pin Description
Vcc The supply voltage is 3.3 V.

SI

MOSI pin, the data line of the SPI bus.

It works with a voltage of 3.3 V, in the case of the use of boards of 5 V, for example, Arduino Uno you must use a voltage converter.

SO

MISO pin, data line of the SPI bus

it works with a voltage of 3.3 V, in case of using the board of 5 V, for example, Arduino Uno, you must use a voltage converter

CS Chip select - the selection of a device of the SPI bus
GND The ground of the system.
CCS

Clock line of the SPI bus.

It works with a voltage of 3.3 V, in the case of the use of 5 V boards, for example, Arduino Uno, you must use a voltage converter.

GDO2 output, it can be left not connected.
GDO0 output, it can be left not connected.

with this Module, we can Adjust the frequency (from 315 to 915), the modulation (Ask, fsk, etc), and tons of other parameters.

You can use smartRF (optional) to dive into parameters.

First, let's start with the pins of the cc1101.

 

This is How to connect Wireless Cc1101 Transceiver 433MHz Module with the Arduino:

To use the CC1101, you will need the panstamp library here.

Note that it will also work with the elechouse library here.

Arduino Sending and Transmitting Code for Wireless Cc1101 Transceiver 433MHz Module :

#include "EEPROM.h"
#include "cc1101.h"
CC1101 cc1101;
// The LED is wired to the Arduino Output 4 (physical panStamp pin 19)
#define LEDOUTPUT 7
// counter to get increment in each loop
byte counter;
byte b;
//byte syncWord = 199;
byte syncWord[2] = {199, 0};
void blinker(){
digitalWrite(LEDOUTPUT, HIGH);
delay(100);
digitalWrite(LEDOUTPUT, LOW);
delay(100);
}
void setup()
{
Serial.begin(38400);
Serial.println("start");
// setup the blinker output
pinMode(LEDOUTPUT, OUTPUT);
digitalWrite(LEDOUTPUT, LOW);
// blink once to signal the setup
blinker();
// reset the counter
counter=0;
Serial.println("initializing...");
// initialize the RF Chip
cc1101.init();
//cc1101.setSyncWord(&syncWord, false);
cc1101.setSyncWord(syncWord, false);
cc1101.setCarrierFreq(CFREQ_433);
cc1101.disableAddressCheck();
//cc1101.setTxPowerAmp(PA_LowPower);
delay(1000);
Serial.print("CC1101_PARTNUM "); //cc1101=0
Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER));
Serial.print("CC1101_VERSION "); //cc1101=4
Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER));
Serial.print("CC1101_MARCSTATE ");
Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);
Serial.println("device initialized");
//Serial.println("done");
}
void send_data() {
CCPACKET data;
data.length=10;
byte blinkCount=counter++;
data.data[0]=5;
data.data[1]=blinkCount;data.data[2]=0;
data.data[3]=1;data.data[4]=0;
//cc1101.flushTxFifo ();
Serial.print("CC1101_MARCSTATE ");
Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);
if(cc1101.sendData(data)){
Serial.print(blinkCount,HEX);
Serial.println(" sent ok :)");
blinker();
}else{
Serial.println("sent failed :(");
blinker();
blinker();
}
}
void loop()
{
send_data();
delay(4000);
}

 Arduino Receiving Code for Wireless Cc1101 Transceiver 433MHz Module :

#include "EEPROM.h"
#include "cc1101.h"
// The LED is wired to the Arduino Output 4 (physical panStamp pin 19)
#define LEDOUTPUT 4
// The connection to the hardware chip CC1101 the RF Chip
CC1101 cc1101;
byte b;
byte i;
byte syncWord = 199;
long counter=0;
byte chan=0;
// a flag that a wireless packet has been received
boolean packetAvailable = false;
void blinker(){
digitalWrite(LEDOUTPUT, HIGH);
delay(100);
digitalWrite(LEDOUTPUT, LOW);
delay(100);
}
/* Handle interrupt from CC1101 (INT0) gdo0 on pin2 */
void cc1101signalsInterrupt(void){
// set the flag that a package is available
packetAvailable = true;
}
void setup()
{
Serial.begin(38400);
Serial.println("start");
// setup the blinker output
pinMode(LEDOUTPUT, OUTPUT);
digitalWrite(LEDOUTPUT, LOW);
// blink once to signal the setup
blinker();
// initialize the RF Chip
cc1101.init();
cc1101.setSyncWord(&syncWord, false);
cc1101.setCarrierFreq(CFREQ_433);
cc1101.disableAddressCheck(); //if not specified, will only display "packet received"
//cc1101.setTxPowerAmp(PA_LowPower);
Serial.print("CC1101_PARTNUM "); //cc1101=0
Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER));
Serial.print("CC1101_VERSION "); //cc1101=4
Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER));
Serial.print("CC1101_MARCSTATE ");
Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);
attachInterrupt(0, cc1101signalsInterrupt, FALLING);
Serial.println("device initialized");
}
void ReadLQI()
{
byte lqi=0;
byte value=0;
lqi=(cc1101.readReg(CC1101_LQI, CC1101_STATUS_REGISTER));
value = 0x3F - (lqi & 0x3F);
Serial.print("CC1101_LQI ");
Serial.println(value);
}
void ReadRSSI()
{
byte rssi=0;
byte value=0;
rssi=(cc1101.readReg(CC1101_RSSI, CC1101_STATUS_REGISTER));
if (rssi >= 128)
{
value = 255 - rssi;
value /= 2;
value += 74;
}
else
{
value = rssi/2;
value += 74;
}
Serial.print("CC1101_RSSI ");
Serial.println(value);
}
void loop()
{
if(packetAvailable){
Serial.println("packet received");
// Disable wireless reception interrupt
detachInterrupt(0);
ReadRSSI();
ReadLQI();
// clear the flag
packetAvailable = false;
CCPACKET packet;
if(cc1101.receiveData(&packet) > 0){
if(!packet.crc_ok) {
Serial.println("crc not ok");
}
if(packet.length > 0){
Serial.print("packet: len ");
Serial.print(packet.length);
Serial.print(" data: ");
for(int j=0; j