AEQ-WEB

Arduino CC1101 433Mhz Data Transfer ISM
Arduino
07.06.2018

Schalte Sprache zu: de German

Arduino CC1101 Transceiver

There is also a video on YouTube for this article: Arduino CC1101 Transceiver


The CC1101 433 mhz wireless module is a good transceiver for the Arduino board. There are different modules with different frequencies. The frequencies can also be modified. The most popular and also the most used band is the 70 cm band. With the SMA antenna connector it is also possible to use larger and more profitable antennas. The module is wired via the SPI interface. On other websites you will often read that the module can not be connected directly to the SPI pins because of the 3.3 Volt operating voltage. Basically this is true, however, during our test we connected the module directly to the Arduino for a few days and we could not detect any problems.


Arduino CC1101 Wiring

The module is connected via the SPI pins and powered with 3.3 volts. Therefore the pins are not changeable.



Range test

The module has a better range than the combination of RF-5V & FS1000A modules. Outside you can reach with the supplied antenna a range of 300 meters without problems. With better antennas you can reach ranges of up to 5 kilometers. There are also small power amplifiers that can be used to increase the transmission power by up to 5 watts. With power amplifiers, you can bridge distances of over 15 kilometers. If you want to operate the module with better antennas and amplifiers, you must have an amateur license and comply with the legal requirements.


Code for the Transmitter:

#include <ELECHOUSE_CC1101.h>
int i;

void setup() {
  Serial.begin(9600);
  ELECHOUSE_cc1101.Init(F_433);
}

void loop() {
  i++;
  delay(500);
  String tx_message = "Nr. of TX attempts: " + String(i);
  int m_length = tx_message.length();
  byte txbyte[m_length];
  tx_message.getBytes(txbyte, m_length + 1);
  Serial.println((char *)txbyte);
  ELECHOUSE_cc1101.SendData(txbyte, m_length);
}

Code for the Receiver:

#include <ELECHOUSE_CC1101.h>
byte buffer[100] = {0};

void setup()
{
  Serial.begin(9600);
  Serial.println("Rx");
  ELECHOUSE_cc1101.Init(F_433);
  ELECHOUSE_cc1101.SetReceive();
}

void loop()
{
  if (ELECHOUSE_cc1101.CheckReceiveFlag()) {
    ELECHOUSE_cc1101.ReceiveData(buffer);
    String str((char*) buffer);
    Serial.println(str);
    ELECHOUSE_cc1101.SetReceive();
  }
}

Von Alex @ AEQ-WEB 683
Info: This article has been partially translated automatically and may contain errors.