433MHz-Module für Arduino II. (RXB8)

RXB8 Superheterodyn Empfänger (433MHz)

In dem Beitrag 433MHz-Module für Arduino (XD-FST/XD-RF-5V) wurden schon andere Funk-Module getestet, hier soll das Empfänger-Modul RXB8 ausprobiert werden.

Spezifikationen des RXB8 laut Hersteller

Betriebsspannung 4,5V - 5,5V
Frequenz 433,92 MHz
Empfindlichkeit -114dBm
Stromaufnahme 9,6mA (@5V) bei einer Datenrate von 2,4kbps
Betriebstemperatur -30°C bis +85°C

Sender

XD-FST (FS1000A) Sende-Modul

Als Sende-Modul wird hier das XD-FST (FS1000A) verwendet.

Verwendete Bauteile

Breadboard-Anpassung

Wie man im folgenden Bild sieht, ist das RXB8 zwar mit Pin versehen, passt jedoch nicht ins Raster, damit man es auf ein Breadboard stecken kann:

RXB8 passt nicht auf Breadboard

Eine kleine Anpassung und Ergänzung mit einer entsprechenden Antenne ist nun brauchbar.
(siehe: Rechner für Antennenlänge)

Abepasstes RXB8 mit Antenne

Anschlüsse

Sender

Arduino Uno/Nano XD-FST (FS1000A)
GND GND
5V VCC
8 (oder anderer digitaler Pin) Data

Empfänger

Arduino Uno/Nano RXB8
GND GND
5V +5V
9 (oder anderer digitaler Pin) Data

Sketches

Zum Test habe ich die Library PaulStoffregen/RadioHead verwendet. Für den Sender habe ich das Beispiel "RadioHead → ask → ask_transmitter" benutzt und leicht abgewandelt, so dass es für meine Zwecke funktioniert. Es soll die Zeichenfolge ABC alle 2 Sekunden verschicken:

#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
    #include <SPI.h>
#endif

RH_ASK driver(2000, 9, 8, 10);
const char *msg = "ABC";

void setup()
{
    Serial.begin(9600);
    if (!driver.init()) {
        Serial.println("error");
    }
}

void loop()
{
    Serial.println("senging msg " + String(msg));

    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();

    delay(2000);
}

Der constructor von RH_ASK bekommt dabei folgende Parameter:
RH_ASK(uint16_t speed = 2000, uint8_t rxPin = 11, uint8_t txPin = 12, uint8_t pttPin = 10, bool pttInverted = false);

Der Sketch für den Receiver (RXB8) ist das Gegenstück und wurde aus dem Beispiel "RadioHead → ask → ask_receiver" adaptiert. Es empfängt die Signale des Senders und stellt sie auf der seriellen Konsole der Arduino-IDE dar:

#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
    #include <SPI.h>
#endif

RH_ASK driver(2000, 9, 8, 10);

void setup()
{
    Serial.begin(9600);
    driver.init();
}

void loop()
{
    uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
    uint8_t buflen = sizeof(buf);

    if (driver.recv(buf, &buflen)) {
        driver.printBuffer("Got:", buf, buflen);
    }
}

Hier wird der Datenpin 9 für den Empfang verwendet.

Ausgabe auf der seriellen Konsole
Abb.: Ausgabe der empfangenden Daten auf der seriellen Konsole
zurück