preloader

Auf AEQ-WEB Suchen

AEQ-WEB | Blog

Arduino CC1101 433Mhz Data Transfer ISM

Arduino CC1101 Transceiver

5 Jahre AEQ-WEB - Zeig dein Projekt

Hinweis (9. März 2020): Es gab in den letzten Wochen einige Rückmeldungen, dass der Beispielcode vom Sender nicht mehr funktioniert. Zwar lässt sich das Programm mit der Bibliothek im Arduino IDE ohne Fehler kompilieren, aber der Mikrocontroller reagiert nach kurzer Zeit nicht mehr. Sobald neue Erkenntnisse zur Fehlerursache/Fehlerbehebung vorliegen, wird dieser Beitrag entsprechend aktualisiert.

Update (25. März 2020):Das Thema und ein aktueller Hotfix wurden in der YouTube Fragestunde besprochen.

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.

Arduino CC1101 Wiring

Das Modul wird über die SPI Pins verbunden und mit 3.3 Volt gespeist. Die Pins sind deshalb nicht veränderbar.


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();
  }
}


Share:
thumbnail
30.05.2018
Arduino Anemometer bauen

Auf dieser Seite geht es um die Konfiguration eines Anemometer Windrades mit dem Arduino Board. Welche Bauteile und Software man braucht, erfährt ihr hier

Alex @ AEQ-WEB
thumbnail
02.06.2018
Arduino Wetterstation

Hier gibt es eine professionelle Anleitung zum Bau einer Arduino Wetterstation. Temperatur, Wind, Feuchte & Luftdruck werden per HTTP an den Server gesendet

Alex @ AEQ-WEB