-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: RF433 Mhz Sender / Receiver - Übertragen von Werten

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    175

    RF433 Mhz Sender / Receiver - Übertragen von Werten

    Anzeige

    Hi,

    ich baue gerade eine Temperatur Überwachung und habe das Ganze nun erweitert um die Werte via RF433 MHz zu übertragen.

    Vom Prinzip funktioniert das Ganze, aber irgendwie will es mir nicht gelingen, das die Werte sauber angekommen.
    Ich benutze die VirtualWire Lib


    funktionierter Sender-Programm-Auszug:

    Code:
    .
    .
    .
    .
    const char *toSend = "24,48,1009";
    vw_send((uint8_t *)toSend, strlen(toSend));
    vw_wait_tx();
    delay(200);
    
    .
    .
    .
    .
    funktionierter Empfänger-Programm-Auszug:

    Code:
    .
    .
    .
    .
    if (vw_get_message(buf, &buflen)) // check to see if anything has been received
        {
          int i;
          for (i = 0; i < buflen; i++)
          {
            Serial.print((char)buf[i]);                     // the received data is stored in buffer
            StrReceived[i] = char(buf[i]);   // data to array
          }
           // split data into array sensorData
           sscanf(StrReceived, "%d,%d,%d", & sensor[0], & sensor[1],& sensor[2]); // Converts a string to an array
          
    //      }
            
    //         for (int i = 0; i < maxSensorData; i++){       // nice output
    //         Serial.print("Sensor"); Serial.print(i); Serial.print(":"); 
    //         Serial.print(sensor[i]); Serial.print("\t");
    //     }
            Serial.println("");                        // linefeed
            // reset variable StringReceived
    //        memset(StrReceived, 0, sizeof(StrReceived));
    //        delay(1000);
          }
            
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.print("Temperatur: ");
          display.print(sensorData[0]);
          display.println(" *C");
    //      display.display();
    //      display.clearDisplay(); 
                
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.print("Pressure: ");
          display.print(sensorData[2]);
          display.println(" hPa");
      
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.print("Approx. Alt: ");
    //      display.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
          display.println(" m");
          
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.print("Humidity:   ");
          display.print(sensorData[1]);
          display.println(" %");
          display.display();
          delay(5000);
          display.clearDisplay(); 
         
    
    }
    .
    .
    .
    .
    wenn ich nun den statischen String umbaue, um die Messwerte zu übertragen funktioniert es nicht mehr.

    nicht funktionierter Sender-Programm-Auszug:

    Code:
    .
    .
    .
    .
    void Read_Sensor4() {
      alt = (bme.readAltitude(SEALEVELPRESSURE_HPA));            
      //alt = 300;            
      itoa(alt, msg1, 10);                  
    }
    
    
    void Send_Data() {
      //strcat(msg1, msg0);
      //strcat(msg1, msg2);
      //strcat(msg3, msg0);
      //strcat(msg3, msg4);
      
      strcat(toSend, msg1);
      strcat(toSend, msg0);
      strcat(toSend, msg2);
    
    vw_send((uint8_t *)toSend, strlen(toSend));
    
    vw_wait_tx();
    delay(200);
    
    .
    .
    .
    .
    ich sehe zwar im Monitor, das die Werte ausgelesen werden und, aber es kommt nichts mehr an... interessant je länger es läuft desto länger wird die Zeile ich weiss nur nicht ob es am Monitor liegt oder ob es ein Fehler ist. er bufft die irgendwie zwischen. jemand ähnlich Erfahrungen gemacht ? oder fehlt mir nur Programm Verständnis

    cYa
    Geändert von piggituX (06.02.2017 um 22:43 Uhr)
    cYa pig

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    175
    bin nun ein Stückchen weiter, aber generell ist das RF433 doch echt murks, was die Reichweite angeht und gute Übertragung
    cYa pig

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.319
    https://alexbloggt.com/fenstersensoren-arduino/

    Da steht, dass man bessere Empfänger benutzen sollte...
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    175
    moin,

    was mich gerade so nervt ist, schicke ich eine statische Messung kann ich locker 10m entfernt sein, und das kommt an. Auch das Senden eines einfachen On / Off funktioniert ohne Probleme ...... nur wenn man mehr als das schickt , will es nicht so richtig.

    vielleicht sollte ich die andere Lib testen.

    oder ich überspinge V2 und gehe gleich zu V3 über und baue es mit nem ESP8622 nochmal neu auf.
    cYa pig

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.670
    ESP32, der hat auch BT mit drinne aber die Lib ist leider immernoch SEHR Basic, du brauchst schon ein gutes BTLE Buch um die Config für den GATT Server zu verstehen XD

    Ein Kollege von mir arbeitet gerade dran eine einfache Lib mit Grundlegenden Funktionen zu implementieren, der hat wesentlich mehr Plan von BTLE.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.947
    Mit welcher Datenübertragungsrate überträgst Du deine Bits denn?
    Je höher die ist, um so empfindlicher wird das Ganze.
    Wir haben mal vor ein paar Jahren ein Telemetriesystem mit RFM Modulen gebaut.
    http://www.toeging.net/flieger/profi...telemetrie.htm
    Das hat über 200...300m Outdoor gut funktioniert.
    Auch eine Fehlererkennung bzw. Korrektur sollte bei einer Funkstrecke schon mit drin sein.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    175
    hi,

    das ist ein guter Hinweis, ich habe erstmal den Standard drin mein ich von 2000 bits pro Sekunde

    Code:
     vw_setup(2000);       // Bits pro Sekunde
    wenn ich nur ne statische Message sende klappt das, wobei ich mich schon frage, wo da der Unterschied liegt, weil ich die Messwerte auch als char Message übertrage.

    Oder die China Teile haben so eine grosse Toleranz..... und je länger die laufen desto schlechter werden die
    cYa pig

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.947
    Wenn es mit kurzen Sequenzen geht und mit Langen nicht, könnte es an einer "Überlastung" beim Controller liegen.
    Bits werden verschluckt, weil der Controller gerade was anderes macht - Das Problem hatte ich mal bei einer SD-FAT Library.
    Kommen die vorderen Bytes richtig an und die späteren nicht mehr?
    Das würde auf so einen Fehler hinweisen.
    Obwohl man das bei 2000 Bit/s eigentlich nicht schaffen kann.

    Ich bin da leider mit dem Arduino nicht so fit, drum kann ich mit Deinem Code relativ wenig anfangen.
    Versuch doch mal den Hardware USART zu nutzen und die Empfangsroutine im Interrupt laufen zu lassen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    60
    Beiträge
    2.435
    Zitat Zitat von piggituX Beitrag anzeigen
    bin nun ein Stückchen weiter, aber generell ist das RF433 doch echt murks, was die Reichweite angeht und gute Übertragung
    Wie hast du msg2 deklariert?
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    175
    HI,

    so wie msg1 auch mit

    Code:
    const char msg0[] = {","};
    char msg1[10];
    char msg2[10];
    
    char toSend[140];

    liegen sender / empfänger nur 1m auseinander funktioniert es.

    ich habe mich ein bisschen an dem Tutorial lang gehangelt

    cYa
    cYa pig

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Verständniss zu den Werten/Programmierung...
    Von Peterueps im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 19.05.2010, 13:51
  2. Übergabe von Werten an eine SUB per Byval
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 23.11.2008, 11:52
  3. Ausgabe von int Werten
    Von filth im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 17.09.2007, 13:18
  4. Umrechnung in dB Werten
    Von heikilo im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 11.06.2007, 19:44
  5. Prüfsumme von 500 Werten berechnen
    Von hotijack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 01.02.2007, 06:59

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •