Probleme mit 433 MHz

Hallo Leute,

mit meinem kleinen Projekt möchte ich mit einem Digispark ein 433 MHz Befehl empfangen und anschließend Digitale RGB Led Streifen steuern.

Leider macht mir meine Funkverbindung zu Testzwecken schon Probleme: Hierbei habe ich den Sender an einem Uno und den Empfänger an einem Mega 2560 angeschlossen.

Als Funkmodule habe ich: 433 MHz Module
Antennen habe ich mittlerweile an beide Platinen angelötet: 433 MHz Antennen

Der Sender hat folgenden Sketch (RadioHead ask transmitter Beispiel) und ist am UNO an Pin 12 angeschlossen:

// ask_transmitter.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to transmit messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) transmitter with an TX-C1 module
// Tested on Arduino Mega, Duemilanova, Uno, Due, Teensy, ESP-12

#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
#include <SPI.h> // Not actually used but needed to compile
#endif

RH_ASK driver;
// RH_ASK driver(2000, 4, 5, 0); // ESP8266 or ESP32: do not use pin 11 or 2
// RH_ASK driver(2000, 3, 4, 0); // ATTiny, RX on D3 (pin 2 on attiny85) TX on D4 (pin 3 on attiny85),
// RH_ASK driver(2000, PD14, PD13, 0); STM32F4 Discovery: see tx and rx on Orange and Red LEDS

void setup()
{
#ifdef RH_HAVE_SERIAL
  Serial.begin(9600);      // Debugging only
#endif
  if (!driver.init())
#ifdef RH_HAVE_SERIAL
    Serial.println("init failed");
#else
    ;
#endif
}

void loop()
{
  const char *msg = "hello";

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

Der Empfänger (RadioHead ask receiver Beispiel) am Mega 2560 und ist am Pin 11 angeschlossen:

// ask_receiver.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to receive messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) receiver with an Rx-B1 module
// Tested on Arduino Mega, Duemilanova, Uno, Due, Teensy, ESP-12

#include <RH_ASK.h>
#ifdef RH_HAVE_HARDWARE_SPI
#include <SPI.h> // Not actually used but needed to compile
#endif

RH_ASK driver;
// RH_ASK driver(2000, 4, 5, 0); // ESP8266 or ESP32: do not use pin 11 or 2
// RH_ASK driver(2000, 3, 4, 0); // ATTiny, RX on D3 (pin 2 on attiny85) TX on D4 (pin 3 on attiny85), 
// RH_ASK driver(2000, PD14, PD13, 0); STM32F4 Discovery: see tx and rx on Orange and Red LEDS

void setup()
{
#ifdef RH_HAVE_SERIAL
    Serial.begin(9600);      // Debugging only
#endif
    if (!driver.init())
#ifdef RH_HAVE_SERIAL
         Serial.println("init failed");
#else
    ;
#endif
}

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

    if (driver.recv(buf, &buflen)) // Non-blocking
    {
    int i;

    // Message with a good checksum received, dump it.
    driver.printBuffer("Got:", buf, buflen);
    }
}

Leider bekomme ich aber keinerlei Output an meinem Serial.

Es ist schon etwas länger her, dass ich das letzte mal mit meinen arduinos zusammen gearbeitet habe und vllt steh ich einfach aufm schlauch. Ich komm leider nicht mehr weiter!

Ich hoffe ihr könnt mir helfen.

MfG
3l3kt2o

PS: Tut mir leid für die doofe formatierung xD

Du solltest Quote und Code unterscheiden lernen. Das kannst du auch noch nachträglich ändern.

Gruß Tommy

Tommy56: Du solltest Quote und Code unterscheiden lernen. Das kannst du auch noch nachträglich ändern.

Gruß Tommy

sorry, hab ich iwie auf anhieb nicht gefunden und das erste symbol übersehen xD

Aus welchem Grund verwendest du die Library "RadioHead" ? Leider habe ich hier zu wenig Erfahrungen, da bei mir auch oft keine Funktionen vorhanden waren.

Daher verwende ich immer noch VirtualWire, die zwar etwas älter, aber durchaus gut arbeitet.

Edit: Auch kann dein Empfänger ein Problem bringen, der nicht sehr stabil arbeitet. Evtl. liegt das auch daran.

HotSystems: Aus welchem Grund verwendest du die Library "RadioHead" ? Leider habe ich hier zu wenig Erfahrungen, da bei mir auch oft keine Funktionen vorhanden waren.

Daher verwende ich immer noch VirtualWire, die zwar etwas älter, aber durchaus gut arbeitet.

soweit ich gelesen habe ist die virtualwire zur radiohead geworden. deswegen dachte ich mir, dass die radiohead halt aktueller usw. ist.

HotSystems: Edit: Auch kann dein Empfänger ein Problem bringen, der nicht sehr stabil arbeitet. Evtl. liegt das auch daran.

ich hab ja n 10er set gekauft. hab bereits andere hin getan. hat auch keine änderung gebracht

3l3kt2o: soweit ich gelesen habe ist die virtualwire zur radiohead geworden. deswegen dachte ich mir, dass die radiohead halt aktueller usw. ist. ich hab ja n 10er set gekauft. hab bereits andere hin getan. hat auch keine änderung gebracht

Ja , das stimmt so. Allerdings habe ich wie geschrieben, auch Probleme damit, deshalb keine gute Erfahrung.

Wenn es dir keine Umstände macht, wechsel die Lib und teste mal die VirtualWire, da kann ich dir besser helfen. Da nimmst du dann auch ein Beispiel und solltest schnell zum Erfolg kommen.

Wenn sich dann doch noch jemand hier mit besseren Erfahrungen meldet, kannst du ja jederzeit wieder einsteigen. Die Sketche musst du ja nicht löschen.

3l3kt2o: Der Empfänger (RadioHead ask receiver Beispiel) am Mega 2560 und ist am Pin 11 angeschlossen:

Hast Du mal mit seriellen Ausgaben experimentiert, ob überhaupt was passiert?

    if (driver.recv(buf, &buflen)) // Non-blocking
    {
    Serial.println("Daten empfangen");

Dein Ser-Mon ist auch richtig eingestellt????

    Serial.begin(9600);      // Debugging only

Und ja, ich weiss warum ich das frage!

@3l3kt2o

Wie schon geschrieben, dein VirtualWire-Sketch funktioniert bei mir sofort.
Auch der RadioHead funktioniert hier, kA was ich damals falsch gemacht habe. Jetzt läuft er.

Allerdings hat der Sketch (RH Sender und Empfänger) jeweils die doppelte Größe, verbraucht als doppelt so viel Ram im Vergleich zur VirtualWire.

Hier mal die etwas abgewandelte Version des Receiver-Sketches aus den VirtualWire-Beispielen, damit Text im seriellen Monitor angezeigt wird.

#include <VirtualWire.h>
char StringReceived[15];

void setup()
{
  Serial.begin(9600);  // Debugging only
  Serial.println("setup");

  pinMode(LED_BUILTIN, OUTPUT);
  // Initialise the IO and ISR
  vw_set_rx_pin(8);
  vw_setup(2000); // Bits per sec
  vw_rx_start();       // Start the receiver PLL running
}

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

  if (vw_get_message(buf, &buflen)) // Non-blocking
  {
    int i;

    digitalWrite(LED_BUILTIN, HIGH); // Flash a light to show received good message
    // Message with a good checksum received, dump it.
    Serial.print("Got: ");

    for (i = 0; i < buflen; i++)
    {
      StringReceived[i] = char(buf[i]);
    }
    Serial.println(StringReceived);
    Serial.println("");
    digitalWrite(LED_BUILTIN, LOW);
  }
}

Fazit:
Du musst einen Fehler im Aufbau haben, oder deine Module haben einen Defekt.

Habe das mal genau so nachgebaut.

Sender: Arduino UNO, Sendepin 12

Empfänger: Arduino MEGA2560, Empfang über Pin 11

Funktioniert auf Anhieb. Ausgabe am Emfpänger:

Got:
68 65 6C 6C 6F 
Got:
68 65 6C 6C 6F 
Got:
68 65 6C 6C 6F

(hello)

Antennen: normaler Draht, Länge etwas mehr als 17 cm. Als Sender verwende ich ein "gängiges Ding" - so eines wie im Link des Ausgangsposts. Als Empfänger habe ich zuerst einen RXB8 verwendet. Damit funktioniert es sehr zuverlässig und problemlos.

Dann hab ich noch meinen "Billig-Schrott-Emfänger" aus der Wühlkiste ausgegraben (sieht genauso aus wie der vom Link des Ausgangsposts). :) Und siehe da: Das funktioniert leider nur sehr unzuverlässig.

Dann habe ich die Datenrate reduziert. Und jetzt läuft es auch mit dem Billig-Empfänger so einigermaßen.

Um die Datenrate zu reduzieren musst du sowohl beim Sender- als auch beim Empfänger-Sketch folgende Zeile:

RH_ASK driver;

ersetzen durch:

RH_ASK driver(500, 11, 12, 4);

Die Parameter haben folgende Bedeutung: Datenrate (Speed), RX-Pin, TX-Pin, pttPin (Der Standard-Speed ist 2000).

Aber wenn du wirklich brauchbare Empfangs-Ergebnisse habe willst würde ich dringend zu einem besseren Empfänger raten.

Hallo uxomm,

dein Post bestätigt meine zuvor gemachten Versuche. Somit muss da ein Hardwarefehler vorliegen.

Übrigens verwende ich in allen meine Projekt auch den RXB8. Kann sich der TO ja mal ansehen.

Ja, der RXB8 ist wirklich sein Geld wert! :)

Hi

Der von HotSystems verlinkte Empfänger mag ja 'sein Geld wert sein' - mit dem Verkäufer hatte ich aber eher unterirdische Erfahrungen mit zwei Lieferungen BME280-5V (1.te Lieferung nicht vollzählig - wollte eh mehr, sollte dann der 2.ten beigelegt werden - was auch halbwegs klappte - leider waren dort 80% der BME280 defekt - wir einigten uns, daß wir uns nicht einigten ...)

MfG

postmaster-ino: Der von HotSystems verlinkte Empfänger mag ja 'sein Geld wert sein' - mit dem Verkäufer hatte ich aber eher unterirdische Erfahrungen mit zwei Lieferungen BME280-5V (1.te Lieferung nicht vollzählig - wollte eh mehr, sollte dann der 2.ten beigelegt werden - was auch halbwegs klappte - leider waren dort 80% der BME280 defekt - wir einigten uns, daß wir uns nicht einigten ...)

Sorry, hier geht es um den Empfänger, nicht den Lieferanten. Wo der TO dann letztendlich kauft, bleibt ihm überlassen.

Hi

Dagegen habe ich ja Nichts - aber sorry - der TO muß ja nicht unbedingt mit diesem VK Das erleben, was ich erleben durfte - wenn Er drauf steht, habe ich damit aber auch recht wenig Probleme.

MfG

postmaster-ino: Hi

Dagegen habe ich ja Nichts - aber sorry - der TO muß ja nicht unbedingt mit diesem VK Das erleben, was ich erleben durfte - wenn Er drauf steht, habe ich damit aber auch recht wenig Probleme.

MfG

Ja, ok, da hast du natürlich Recht.

Hallo 3l3kt2o, wäre doch schön, wenn du wieder mitarbeiten könntest und uns dein Ergebnis mitteilst. Wir machen das doch auch.

Ich hab gerade gestern mal wieder mit Funkmodulen gearbeitet und gemerkt: wenn man so auf einem kleinen (oder sehr vollen) Schreibtisch arbeitet und Sender und Empfänger sehr nah zusammen liegen, dann geht teilweise nichts. Geht man in den Nebenraum mit dem Empfänger, dann wird die Verbindung besser.

Mahimus: Ich hab gerade gestern mal wieder mit Funkmodulen gearbeitet und gemerkt: wenn man so auf einem kleinen (oder sehr vollen) Schreibtisch arbeitet und Sender und Empfänger sehr nah zusammen liegen, dann geht teilweise nichts. Geht man in den Nebenraum mit dem Empfänger, dann wird die Verbindung besser.

Das passiert aber nur mit den billigen "Müllempfänger", die sehr schlecht auf zu kräftige Signale regieren. Zusätzlichen haben die Probleme wenn größere Metallflächen in der Nähe sind. All das sollte der TO aber bei seinen Versuchen berücksichtigen.

Das Problem hast du def. nicht mit den besseren Superhetempfängern RXB8.

Bei meinen Versuchen sind die Teile direkt nebeneinander, mit einem Abstand von max. 10 cm.

HotSystems: Das passiert aber nur mit den billigen "Müllempfänger", die sehr schlecht auf zu kräftige Signale regieren.

Interessant, dass die Singale auch zu kräftig sein können. Ich habe die Beobachtung nicht nur bei den ganz billigen gemacht, sondern auch bei denen hier, die aus D gekauft nicht ganz günstig sind:

433 MHZ Module "Mittelklasse"

Mahimus: Interessant, dass die Singale auch zu kräftig sein können. Ich habe die Beobachtung nicht nur bei den ganz billigen gemacht, sondern auch bei denen hier, die aus D gekauft nicht ganz günstig sind:

433 MHZ Module "Mittelklasse"

Diese Receiver kenne ich nicht, denke aber da wurde auch an der Technik gespart, so dass diese eben nicht Großsignalfest sind. Dann machen die einfach bei zu kräftigen Signalen dicht.