CC1101: RF transceiver for use with Arduino

cc1101

Surely in some projects you need to work with radio frequency with your Arduino, or with any other development board or DIY circuit. Well, if that is your case, you should know what the CC1101 radio frequency (RF) transceiver. And that is what we will try to explain to you in this article.

And with this other electronic component that joins our list, you can work with different signal frequencies…

What is RF?

electromagnetic spectrum

With radio frequency (RF) We are referring to a part of the electromagnetic spectrum that is used to transmit information through the air. RF waves are a type of electromagnetic radiation, and are produced whenever electrical energy is transmitted through a conductor, such as a cable. The term RF applies to the least energetic portion of the electromagnetic spectrum that I show you in the previous image, and which is located between 3 hertz (Hz) and 300 gigahertz (GHz).

Speed ​​of light = Wavelength · frequency

The speed of light (approximately 3.000.000 m/s) never changes, so as the wavelength of the RF signal increases, the frequency decreases proportionally and vice versa. A relatively high frequency RF signal has a short wavelength and a lower frequency RF signal has a longer wavelength. For this same reason, lower frequency signals are more penetrating or can cover greater coverage. For example, if you have 2.4 Ghz WiFi, it can reach further and cross barriers better compared to 5 Ghz WiFi, although the latter allows higher transmission speeds...

The hertz is the unit of measurement for the frequency of waves, and corresponds to one cycle per second. The higher the frequency of the wave, the shorter its wavelength. That is why gamma radiation is very penetrating, since the wavelength is very small, and its frequency is very high, so it is highly energetic.

Electromagnetic waves from this region of the spectrum can be transmitted by applying alternating current originating from a generator to an antenna. The radio frequency waves, being electromagnetic waves, travel at the speed of light. At its most basic, a varying electrical signal in an antenna can produce electromagnetic oscillations (i.e., RF waves). These can be unintentional (potentially causing interference with other devices) or intentional: carefully modulated signals that other antennas can receive and be interpreted as useful information.

Within this RF range, we can transmit data at high speed, for example, as done in Wi-Fi communications and cell phones, as well as traditional AM and FM radio.

What is a transceiver?

RF transducer

A transceiver is a device that combines the capabilities of a transmitter and a receiver on shared circuits. This means that it can send and receive signals, without needing to have a transmitter on the one hand and a receiver on the other. Something quite practical for many DIY projects.

The transceivers can be two general types: full duplex and half duplex. In a full duplex transceiver, the device can transmit and receive at the same time. A common example of a full duplex transceiver is a mobile phone. On the other hand, a half-duplex transceiver mutes one party while the other transmits.

The transceivers are the cornerstone of wireless communication and are used in a variety of applications, from mobile phones to communications satellites, through many other networks and ways of transmitting information, such as radio, TV, etc.

Applications of a transceiver

A radio frequency (RF) transceiver is a multifunctional device which can have a large number of uses. For example, as I said previously, its presence is essential in various applications that require wireless communication. In the field of mobile telecommunications, transceivers are used in mobile phones for the transmission and reception of signals. In addition, they are essential in technologies such as WiFi and Bluetooth, deployed in devices such as routers, computers and Internet of Things (IoT) devices, which depend on wireless communication for their operation.

In the professional field, RF transceivers are essential in security systems. two way radio, such as two-way radios used in professional applications, security and emergency services. These devices also find application in detection systems, such as radars used for object detection, navigation and air traffic control, as well as in sonar systems for underwater applications.

La broadcasting, For both radio and television, it depends on RF transceivers for the transmission of signals through different media, whether terrestrial or satellite. Furthermore, in the space domain, transceivers are crucial for communication between satellites and ground stations in satellite communications systems.

En remote control and telemetry applications, RF transceivers are used for data transmission from electronic devices, drones or unmanned aerial vehicles (UAV). They are also essential in navigation systems, such as GPS receivers, where they contribute to location determination and navigation. In summary, the versatility of RF transceivers makes them essential components in a variety of modern technologies that rely on wireless communication and data transmission.

Obviously, there are some of these applications that are not within the reach of the CC1101, since it has its limitations and operates in certain frequency ranges. However, you should know that there are more devices on the market like this transceiver to work with other frequencies, distances, etc.

What is CC1101?

cc1101

El CC1101 is a radio frequency (RF) transceiver designed to operate at frequencies below 1 GHz. This device can be used in conjunction with a processor such as Arduino to send or receive data via radio frequency. The CC1101 can work at any frequency within the following bands:

  • 300 to 348 MHz
  • 387 to 464 MHz
  • 779 to 928 MHz

These features make the CC1101 an option Versatile for a variety of projects requiring wireless communication, including Arduino and ESP8266/ESP321 projects, and other electronics projects within the field of remote communications.

Additionally, the CC1101 Allows you to adjust the bit rate for different uses, allowing higher transmission speeds, from 0.6 Kbps to 600 Kbps. And it also supports 2-FSK, GFSK and MSK3 modulations.

If you are interested, you can find it in specialized electronics stores, or also on online sales platforms such as Amazon, Aliexpress and eBay. Here you have one buy recommendation:

The output power is also programmable, for all frequencies supporting up to +10 dBm. He range is up to 100-150 meters, depending on the frequency. And for its operation it needs a voltage of 1.8 to 3.6V. Data communication is carried out through the SPI bus, so it is easy to use it together with an MCU or boards such as Arduino...

Using the CC1101 with Arduino

Arduino IDE, data types, programming

Now, once you understand what the CC1101 is, if you want to use it with Arduino, it is easy to do. To do this, the first thing is connect correctly the RF device or module to your development board. Be careful, as the CC1101 does not tolerate 5v voltages and you can damage it, so it will not connect to the Arduino's 5v socket as we have done with many other devices. The connection for it to work properly is as follows:

  • Vcc: it will be connected to the Arduino 3v3 in order to have this socket, if it does not have it and you only have 5v, then you will have to connect it to a battery or external source that can supply that voltage or the CC1101 will be damaged.
  • SI: It will be connected to the Arduino SCK, which can change pin depending on the model, but which is generally D13.
  • SO: In this case it will be connected to GO2, which is usually the D12 pin of the Arduino.
  • CSN: you have to take it to the GO0 pin, which is D9 of the Arduino.
  • GND: and finally, GND will be connected to GND of the Arduino or your power supply.

Once this is done, it's time to write the code to test it in the Arduino IDE. To do this, here I show you a very basic example, but one that you can modify to your liking. In this case the CC1101 will be operating as receiver RF signal:

Note that you will have to install a library in your Arduino IDE to be able to work, that library is the ELECHOUSE one for the CC1101 that you can download from here.
#include <ELECHOUSE_CC1101_SRC_DRV.h>

void setup(){

    Serial.begin(9600);

    if (ELECHOUSE_cc1101.getCC1101()){         // Comprobar la conexión SPI del CC1101.
    Serial.println("Connection OK");
    }else{
    Serial.println("Connection Error");
    }

    ELECHOUSE_cc1101.Init();              // Inicializa el CC1101
    ELECHOUSE_cc1101.setCCMode(1);       // Configuración del modo de transferencia interna.
    ELECHOUSE_cc1101.setModulation(0);  // Modulación: 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK.
    ELECHOUSE_cc1101.setMHZ(300,15);   // Pon la frecuencia que quieras usar para la transmisión (por defecto es 433,92 Mhz)
    ELECHOUSE_cc1101.setSyncMode(2);  // Modo de sync: 0 = No preamble/sync. 1 = 16 sync word bits detected. 2 = 16/16 sync word bits detected. 3 = 30/32 sync word bits detected. 4 = No preamble/sync, carrier-sense above threshold. 5 = 15/16 + carrier-sense above threshold. 6 = 16/16 + carrier-sense above threshold. 7 = 30/32 + carrier-sense above threshold.
    ELECHOUSE_cc1101.setCrc(1);      // 1 = CRC calculado en TX y comprobación CRC en RX habilitada. 0 = CRC deshabilitado en TX y RX.
    
    Serial.println("Rx Mode");
}
byte buffer[61] = {0};

void loop(){

    //Comprueba si se ha recibido algo en un tiempo marcado por (time in millis)
    if (ELECHOUSE_cc1101.CheckRxFifo(100)){
    
    if (ELECHOUSE_cc1101.CheckCRC()){    //Prueba CRC. Si "setCrc(false)" CRC devuelve un OK siempre.
    Serial.print("Rssi: ");
    Serial.println(ELECHOUSE_cc1101.getRssi());
    Serial.print("LQI: ");
    Serial.println(ELECHOUSE_cc1101.getLqi());
    
    int len = ELECHOUSE_cc1101.ReceiveData(buffer);
    buffer[len] = '\0';
    Serial.println((char *) buffer);
    for (int i = 0; i < len; i++){
    Serial.print(buffer[i]);
    Serial.print(",");
    }
    Serial.println();
    }
    }
}

The CC1101 operating as transmitter RF signal has a code similar to the previous one.


Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.