Arduino TI CC1101 Modul

This article is also available in: enEnglisch

Das CC1101 Funkmodul ist ein guter Transceiver für das Arduino-Board. Es gibt verschiedene Module mit unterschiedlichen Frequenzen im ISM-Bereich. Die Frequenzen lassen sich auch modifizieren. Das beliebteste und auch am meisten verwendete Band ist das 70 cm ISM-Band. Dank des SMA-Antennenanschlusses ist es auch möglich, größere und gewinnbringendere Antennen zu verwenden. Das Modul wird über das SPI-Interface angesteuert. Auf anderen Webseiten liest man oft, dass man das Modul wegen der 3.3 Volt Betriebsspannung nicht direkt an die SPI-Pins anschließen darf. Grundsätzlich stimmt das auch, jedoch haben wir bei unserem Test das Modul über einige Tage direkt mit dem Arduino verbunden und wir konnten keine Probleme feststellen.

Reichweitentest
Das Modul ist von der Reichweite weit aus besser als die Kombination von RF-5V & FS1000A. Mit der mitgelieferten Antenne erzielt man im Freien eine Reichweite von 300 Metern ohne Probleme. Mit besseren Antennen können Reichweiten von bis zu 5 Kilometern erreicht werden. Es gibt auch kleine Endstufen, mit dem die Sendeleistung um bis zu 5 Watt erhöht werden kann. Mit der Verwendung solcher Amplifier können Distanzen von über 15 Kilometer überbrückt werden. Wer das Modul mit besseren Antennen und Verstärkern betreiben will, muss eine Amateurfunklizenz haben und die gesetzlichen Vorschriften einhalten.

Code für den Sender:
#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 für den Empfänger:
#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();
  }
}