Bekomme ARDUINO+433 RX Modul v. Conrad nicht hin

Hallo,

ich bekomme das RX Modul v. Conrad nicht mit Arduino Uno zum laufen. Ich habe dieses Module

http://www.conrad.de/ce/de/product/130428/SENDE-EMPFAeNGERMODULSET-433MHZ/2401020

Ich möchte das RX Modul an den Arduino anschließen. Aber selbst wenn ich DATA an Eingang 2 des Arduino anschließe und lediglich den Port auslese bekomme ich nur komische Zeichen, nicht aber die Aussendungen, die ich mit HTERM sende. Kennt jemand das Problem?

Irgendjemand meinte mal, dass LOW 0V ist und HIGH 0,8V. Muss ich die 0,8V auf >3V hochziehen? Oder heißt 0,8V nur, das alles über 0,8V HIGH ist? :-[

Ich möchte mit mit diesen Modulen einen kleinen Info-Arduino mit Nokia 3310 Shield basteln. Der PC soll per TX Modul (welches schon läuft, habe TX wie hier an PC gebaut: http://www.roboternetz.de/phpBB2/viewtopic.php?p=6276), Daten an Ardo senden, die ich per Display darstelle.

Ich sehe 2 Probleme: Bandbreite ca 2kHz Ausgangssignal Hi: 0,8V Lo: 0V. Das mit dem Ausgangssignal kann ich auf dem Schaltplan nicht nachvollziehen. Der Ausgang des Operationsverstärkers müßte voll durchschalten und bei 5V Versorgungsspannung mindestens 3,4V ausgeben. Schalte den Eingang des Senders auf High und messe am Empfänger nach, welche Spannung rauskommt, dann weißt Du es.

Wegen der Bandbreite versuch mal probeweise die Baudrate auf 2400 oder 1200 zu setzen.

Grüße Uwe

Hallo Uwe,

selbst mit 300 BD kam nur Mist an. Als ich den RX mit MAX232 am PC hatte konnte ich von einem zum anderen PC Texte senden. Zwar wurde die ersten Zeichen verschluckt, aber es klappte.

1200 BD ging auch nicht. Ich habe die Daten mal per SpekOszi am PC ausgelesen (mit Spannungsteiler heruntergezogen). Sie kamen mir stimmig vor. Auch Audacity zeigte vermeintlich korrekte Bits. Nur Ardo schnallt es ganicht mit dem RX. buääähhhäääähäää :’( :’(

Nun ja, dann müsstest du zumindest mal deinen Code zeigen. ielleicht liegt da was im Argen...

Code ist soweit noch garnicht vorhanden. Ich möchte bisher lediglich irgendeinen Text ausgeben.

Ich gehe direkt mit 433-Modul-DATA an Arduino-RX. Es kommt nichts rechtes an. Code:

void setup(){
  Serial.begin(300);
}

void loop()
{
  if (Serial.available()) {
    while (Serial.available() > 0) {
    Serial.print(Serial.read());
    }
  }
}

Ausgabe:

?|pp~<\0>p?p?p?p?

Gesendeter ASCII Text: “Hallo Welt” aus Textdatei. Ardo 300 BD, HTERM 300 BD.

Audacity zeigt:

Sollte das mal irgendwann klappen werde ich den richtigen Code schreiben.

Verstehe ich nicht. Du liest Daten ein von der externe Quelle ein und hältst trotzdem die Verbindung zwischen PC und Arduino bei? Die serielle Schnittstelle ist eine Punkt-zu-Punkt-Verbindung, kein Netz oder sonstwas. Also entweder hast du die Verbindung Arduino-Empfangsmodul oder Arduino-PC. Das Koppeln on drei Geräten geht hier nur softwareseitig, indem du dem Arduino eine zweite serielle Schnittstelle "beibringst". Das geht am besten über die Bibliothek SoftSerial. Sonst musst du natürlich drauf achten, dass die Baudrate jeweils stimmt, also im Terminalprogramm, bei Arduino und bei den Modulen. Zum Testen kannst du ja auch mal einfach den Arduino aus dem Sockel ziehen, dann hast du ja nur noch die Verbindung Empfangsmodul-PC.

Zum Testen kannst du ja auch mal einfach den Arduino aus dem Sockel ziehen, dann hast du ja nur noch die Verbindung Empfangsmodul-PC.

Den Atmega328 aus dem Sockel ziehen und das Signal vom Empfänger auf TX geben. Grüeß Uwe

Meine Konfiguration sieht so aus:

PC (mit HTerm als Sendesoftware mit 300 BD sendet ASCII "Hallo Welt") -----> 433 MHz-TX-Modul (wie http://www.roboternetz.de/phpBB2/viewtopic.php?p=6276 ) -----> LUFT -----> 433 MHz-RX-Modul -----> ARDUINO (RX Port) -----> ARDUINO Serial In-Code (mit 300 BD) auf PC mit Arduino Serial Monitor -----> Ergebnis Blösinnstext, nicht "Hallo Welt" :'(

Das einundderselbe PC als Sender und Empfänger gilt ist nur im Entwicklungssadium so. Das soll nachher natürlich getrennt laufen ;)

Ok, mal anders

gefragt: welches 433MHz/800MHz Modul gibt es, welches schon erfolgreich am Arduino getestet wurde? Also ganz simples PC>TX>LUFT>RX>ARDUINO macht?

Nicht XBEE (zu teuer)...

Ich breche zusammen. Ich habe die Basics von Serial.read() nicht verstanden. Wenn ich diesen Code habe:

#include <nokia_3310_lcd.h>
Nokia_3310_lcd lcd=Nokia_3310_lcd();

int x=0;
int y=0;

void setup()
{
  Serial.begin(300);
  lcd.init();
  lcd.clear();

}
void loop()
{

    while (Serial.available() > 0) {
      // display each character to the LCD

      int ser = Serial.read();
      char serz[1];
      serz[0]=ser;
      lcd.gotoXY(x,y);
      lcd.writeChar(serz[0], 0 );
      x+=7;
      if (x>83) { 
        y+=1; 
        x=0; 
      }
      if (y>6) { 
        y=0; 
        x=0; 
      }
      Serial.print(ser,DEC);
      Serial.print(127,BYTE);
      Serial.println("");
    }
  
}

und den Arduino und Serial Monitor auf 300 BD stelle und etwas in das Eingabefeld des Serial Monitor eintippe, z.b. ein “A”, dann bekomme ich im Serial Monitor das:

pp?pðp?|p

Also denke ich mal, das genau das mein Problem ist. Er setzt “A” in “pp?pðp?|p” um. Was mache ich falsch? :-? Der Monitor ignoriert auch vollständig das “Serial.println(”");", macht also keinen Zeilenumbruch :-[.

OMG: Bin ich zu doof oder bin ich es? Stelle ich auf 1200 BD klappt es. Höh??? geht 300 BD nicht?

#include <nokia_3310_lcd.h>
Nokia_3310_lcd lcd=Nokia_3310_lcd();

int x=0;
int y=0;

void setup()
{
  Serial.begin(1200);
  lcd.init();
  lcd.clear();

}
void loop()
{

    while (Serial.available() > 0) {
      // display each character to the LCD

      char ser = Serial.read();
      Serial.print(ser);
      Serial.println("");
      lcd.gotoXY(x,y);
      lcd.writeChar(ser,0);
      x+=7;
      if (x>83) { x=0; y+=1; }
      if (y>5) { x=0; y=0; }
      
    }
  
}

Zumindest ohne Funkstrecke. Ich werde mal die Funkstrecke wieder mit implementieren. Mal sehen was passiert… :-/

Hallo,

ich benötige nochmal Eure Ideen. Ich habe nun das 433 MHz Modul direkt an den Arduino gebaut. VCC an 5V, GND an GND und DATA an RX.

Nun nimmt Arduino etwas an. Aber ein Problem habe ich noch: wenn ich die Reihe

“abcdefghijklmnopqrstuvwxyz12345678” mit 300 BD sende, dann sieht das am Arduino so aus (ohne “433MHz Monitor” ;)):

a==O, g==z, h==j, i==Z :-?

Woran kann es jetzt noch scheitern. Code ist:

#include <nokia_3310_lcd.h>
Nokia_3310_lcd lcd=Nokia_3310_lcd();

int x=0;
int y=1;

void setup()
{
  Serial.begin(300);
  lcd.init();
  lcd.clear();
  lcd.writeString(0,0,"433MHz Monitor",0);

}
void loop()
{

    while (Serial.available() > 0) {
      // display each character to the LCD

      char ser = Serial.read();
      if (ser == 'A') { lcd.clear(); x=0; y=0; }
    
      //    Serial.print(ser);
  //    Serial.println("");
      lcd.gotoXY(x,y);
      lcd.writeChar(ser,0);
      x+=6;
      if (x>83) { x=0; y+=1; }
      if (y>5) { x=0; y=1; }
    }
  
}

Apropos: ich habe bei 300 BD und 1200 BD das gleiche Ergebnis… :-[

Nochmal ich. Ich lese hier und da, dass die 433 MHz RX/TX con C Manchester codieren. Ist dem so? Bekomme ich deshalb nur Müll am Display per Funk im Gegensatz zur direkten Verbindung mit Kabel?

Wie implementiere ich die Manchaster decodierung? Muss ich dann Softserial oder so nehmen?

Ich glaube ich freeze das Vorhaben. Ich bekomme nichts lesbares auf den Screen und die Manchester Decodierung kann ich auch nicht "somalebend" implementieren.

Fall ihr irgendeine Idee habt: meldet Euch.... :'(

Ist der RX Pin, den Du für den Empfänger verwendest, der Pin 0 des Arduinos? Grüße Uwe

Hallo Uwe,

ja, ich nehme PIN 0.

Richte doch mal mit der NewSoftSerial Library eine 2. serielle Schnittstelle ein und verwende diese dann für das Einlesen der seriellen Daten vom Übertragungsmodul.

So gibt es keinen Konflikt mit der Standardschnittstelle (Pin 0 und 1), welche üblicherweise die Kommunikation mit dem angeschlossenen Rechner macht.

das IST DAS Problem. Man kann nicht 2 TX Ausgänge (Funkmodul un Interfacebaustein FT232RL seriell /USB) an einen RX Eingang legen. Benutze die sofwareserial Bibliothek und einen anderen Pin. http://arduino.cc/en/Reference/SoftwareSerial Grüße Uwe

Nachtrag: Webmeister war mal wieder schneller ;)

Hallo, für ähnliche RF Module benutze ich die virtual Wire Library. In diesem

http://www.open.com.au/mikem/arduino/VirtualWire.pdf

PDF-Dokument wird der Anschluss der Module beschrieben. Unter 3. findet man den Link zur Lib. Zusätzlich sind noch Examples im Dokument.

Hardwareseitig scheinen sich die Module von Dir mit denen die Ich benutze zu gleichen.

Gruß Klaus

Hallo,

gleiches Ergebnis mit

#include <nokia_3310_lcd.h>
#include <NewSoftSerial.h>

Nokia_3310_lcd lcd=Nokia_3310_lcd();
NewSoftSerial mySerial(2,3);

int x=0;
int y=1;

void setup()
{
  mySerial.begin(1200);
  lcd.init();
  lcd.clear();
  lcd.writeString(0,0,"433MHz Monitor",0);

}
void loop()
{

   if (mySerial.available()) {
      char ser = mySerial.read();
      lcd.gotoXY(x,y);
      lcd.writeChar(ser,0);
      x+=6;
      if (x>83) { x=0; y+=1; }
      if (y>5) { x=0; y=1; }
    }
}

Wenn ich “a” gebe kommt “O”, “g” wird “L” usw. Ich kenne keinen Rat mehr.