Forum: Mikrocontroller und Digitale Elektronik 433MHz Receiver an Arduino Mega2560


von Sonic (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

um meine Motorleinwand über einen Arduino ansteuern zu können benötige 
ich eine 433MHz Funkverbindung.
Habe einen Sender und einen Empfänger. Möchte mit dem Empfänger den Code 
der orginal Fernbedienung auslesen und dann mit dem Sender die Befehle 
senden.
Allerdings kann ich nichts empfangen. folgendes Setup:
Arduino Mega2560 (Elegoo)
Den Sender und Empfänger habe ich von einem Arbeitskollegen bekommen. 
Ersieht wie aus wie in dem Tut: 
https://funduino.de/nr-03-433mhz-funkverbindung

Auch die Pinbelegung passt.

Empfänger:
VCC - 5V
GND - GND
Data: Pin21 (ist der INT0 Pin des ATMega)

Sender:
VCC - 5V
GND - GND
Data: pin10

Code:
1
#include <RCSwitch.h>
2
3
RCSwitch mySwitch = RCSwitch();
4
RCSwitch mySwitchTx = RCSwitch();
5
6
void setup() 
7
{
8
  Serial.begin(9600);
9
  mySwitch.enableReceive(0);  // Empfänger ist an Interrupt-Pin "0" - Das ist am UNO der Pin2
10
  Serial.println("Start Receiver");
11
  mySwitchTx.enableTransmit(10);  // Der Sender wird an Pin 10 angeschlossen
12
  Serial.println("Start Transmitter");
13
}
14
15
void loop() {
16
  mySwitchTx.send(1234, 24); // Der 433mhz Sender versendet die Dezimalzahl „1234“
17
  Serial.println("gesendet...");
18
  delay(3000);  // Eine Sekunde Pause, danach startet der Sketch von vorne
19
  
20
  if (mySwitch.available()) // Wenn ein Code Empfangen wird...
21
  {
22
    
23
    int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
24
  
25
    if (value == 0) // Wenn die Empfangenen Daten "0" sind, wird "Unbekannter Code" angezeigt.
26
    {
27
      Serial.println("Unbekannter Code");
28
    } 
29
    
30
    else // Wenn der Empfangene Code brauchbar ist, wird er hier an den Serial Monitor gesendet.
31
    {
32
      Serial.print("Empfangen: ");
33
      Serial.println( mySwitch.getReceivedValue() );
34
    }
35
36
    mySwitch.resetAvailable(); // Hier wird der Empfänger "resettet"
37
  }
38
}

Allerdings empfange ich nichts. Wenn ich das Ausgangssignal mit dem Oszi 
messe (Ohne ein Signal zu senden) kommt ein ziemlich verstörtes Signal 
an, dass ich hier nichts empfangen ist eigentlich klar (siehe 
angehängtes Bild). Eine Antenne habe ich eingelötet.
Ist der Empfänger defekt?

von Wolfgang (Gast)


Lesenswert?

Sonic schrieb:
> Wenn ich das Ausgangssignal mit dem Oszi messe (Ohne ein Signal zu senden)
> kommt ein ziemlich verstörtes Signal an.

Das ist ein gutes Zeichen. Der Empfänger wird das Rauschen der Welt 
empfangen und versuchen, zu demodulieren.
Deine Empfangsroutine muss damit klar kommen, dass es noch andere Sender 
als nur deinen Sender gibt.
Viel interessanter wäre zu wissen, was du empfängst, wenn du deinen 
Code sendest.

von hinz (Gast)


Lesenswert?

Sonic schrieb:
> Wenn ich das Ausgangssignal mit dem Oszi
> messe (Ohne ein Signal zu senden) kommt ein ziemlich verstörtes Signal
> an, dass ich hier nichts empfangen ist eigentlich klar (siehe
> angehängtes Bild). Eine Antenne habe ich eingelötet.
> Ist der Empfänger defekt?

Nein, das ist ganz normal. Miss nochmals während der Sender aktiv ist.

von Sonic (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnellen Antworten. Ihr habt recht, das Signal müsste 
eigentlich richtig ankommen.
Ch1: Daten des Empfängers
Ch2: Daten des Senders

Aber der Arduino empfängt aber nichts. Terminal Ausgabe:
1
Start Receiver
2
Start Transmitter
3
gesendet...
4
gesendet...
5
gesendet...
6
gesendet...
7
gesendet...
8
gesendet...

Dann müsste der Fehler in meinem Code liegen. Habe bisher noch sehr 
wenig mit Arduinos gemacht. Nutz die RCSwitch Bibliothek den externen 
Interrupt 0? oder kann ich einfach nicht gleichzeitig senden und 
empfangen?

von Sonic (Gast)


Lesenswert?

Habs hinbekommen, hatte den Falschen Interrupt ausgewählt.

Da das Beispiel mit dem Arduino Uno war, ich aber einen Mega habe musste 
ich einen anderen Interrupt Pin nutzen, da bin ich wohl verkommen.

Richtig:
1
mySwitch.enableReceive(digitalPinToInterrupt(21));

Danke für euere Unterstützung

von Arduino Anfaenger (Gast)


Lesenswert?

Sonic schrieb:
> Habs hinbekommen, hatte den Falschen Interrupt ausgewählt.
>
> Da das Beispiel mit dem Arduino Uno war, ich aber einen Mega habe musste
> ich einen anderen Interrupt Pin nutzen, da bin ich wohl verkommen.
>
> Richtig:mySwitch.enableReceive(digitalPinToInterrupt(21));
> Danke für euere Unterstützung


Hallo,

ich habe genau das gleiche Problem den Empfänger und den Sender in 
Betrieb zu nehmen. Da die Anleitungen sich immer nur an Arduino richten 
habe ich auch schon etliche Stunden verbracht und immer noch kein 
Erfolg.

Hast du eventuell ein Bild von der Aufbaum, so dass man sich das 
abschauen kann?

Pin hin und her und jetzt lese ich auch was vom digitalPinToInterrupt().

Bin noch mehr verwirrt.

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.