- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 13

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223

    RF433 Mhz Sender / Receiver - Übertragen von Werten

    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 23:43 Uhr)
    cYa pig

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    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 Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    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 Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    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
    40
    Beiträge
    3.416
    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
    2.232
    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 Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    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?

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    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

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    Ich bekomme das Verhalten nicht gefixed, somit gehen wir gleich auf die iot Lösung und machen es über ESP8266

    die RF433 kommen dann in den Keller als On/Off Funkstrecke für das Licht via BewegungsSensor


    Klicke auf die Grafik für eine größere Ansicht

Name:	esp8266.jpg
Hits:	8
Größe:	26,7 KB
ID:	32409
    cYa pig

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Code:
    char msg1[10];
    itoa(alt, msg1, 10);
    funktioniert nur richtig, wenn int = 16-Bit lang ist.
    Bei 32-Bit int ist der grösste Wert "-2147483648", das sind 11 Zeichen plus /0 am Ende, also 12 Zeichen. msg1 hat aber nur Platz für 10 Zeichen.
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Verständniss zu den Werten/Programmierung...
    Von Peterueps im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 19.05.2010, 14: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, 12:52
  3. Ausgabe von int Werten
    Von filth im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 17.09.2007, 14:18
  4. Umrechnung in dB Werten
    Von heikilo im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 11.06.2007, 20:44
  5. Prüfsumme von 500 Werten berechnen
    Von hotijack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 01.02.2007, 07:59

Berechtigungen

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

12V Akku bauen