- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 91

Thema: abstandhalten mit 433MHz

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    Du könntest versuchen, die Laufzeit eines Signals zu messen. Zum Server hinschicken, der schickt es direkt zurück und Du ermittelst, wie lange das gedauert hat. Vielleicht ist das brauchbarer. Das Signal/Zeichen kann auch vom Server kommen, der Client schickt es zurück und Du ermittelst die Laufzeit auf dem Server.

    MfG

    mit der korrespondenz in einer richtung mit UDP funktioniert es, die LED wird an- und ausgeschaltet. Für das versenden des echos zurück habe ich diesen
    Code:
    void echo_senden()
    {   
        if (Udp.parsePacket()) 
        {
            // Fetch received message
            int len=Udp.read(udp_buffer,sizeof(udp_buffer)-1);
            udp_buffer[len] = 0;
                    
            // Display the message
            Serial.print(F("Received from "));
            Serial.print(Udp.remoteIP());
            Serial.print(":");
            Serial.print(Udp.remotePort());
            Serial.print(": ");
            Serial.println(udp_buffer);
            
            // Send echo back
            Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
            Udp.print(F("Echo: "));
            Udp.print(udp_buffer); 
            Udp.endPacket();
        }    
    }
    da Du ja schon UDP-erfahrungen hast, kannst Du mir bitte ein wenig auf die sprünge helfen wie das mit der registration des echos auf der gegenseite funktioniert? Da komme ich nicht so recht weiter
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von inka Beitrag anzeigen
    wie das mit der registration des echos auf der gegenseite funktioniert?
    Wenn das Paket angekommen ist schickst Du es zurück, was Du gemacht hast. Kommt es nicht wieder zurück oder was meinst Du?

    MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    Wenn das Paket angekommen ist schickst Du es zurück, was Du gemacht hast. Kommt es nicht wieder zurück oder was meinst Du?

    MfG
    ich nehme an, dass das echo verschickt wird, nur weiss ich nicht wie ich es auf der gegenseite feststellen soll ob es auch angekommen ist...
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ich würde denken, genau so, wie sonst auch. Mit .parsePacket()
    Lesen dann mit .read()

    Du hast doch auf dem Client alles dafür angelegt:

    Code:
    WiFiUDP Udp;
    unsigned int localUdpPort = 4210;  // local port to listen on 
    char befehl[10];  // buffer for incoming packets
    
    .read(befehl,sizeof(befehl)-1);


    ???

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    wäre es also so etwas:

    Code:
      int packetSize, len;
      // UDP
      packetSize = Udp.parsePacket();
      // Da ist was da
      if (packetSize) 
      {
        Serial.print("Empfangen "); Serial.print(packetSize);
        Serial.print(" von IP "); Serial.print(Udp.remoteIP());
        Serial.print(" Port "); Serial.println(Udp.remotePort());
        len = Udp.read(befehl, 10);
        ledStatus = befehl[0]; // erstes Byte 0 oder 1
        if (ledStatus) 
        {
          //digitalWrite(LED, HIGH);
          digitalWrite(ledPin_rt, HIGH);
          Serial.println("LED einschalten");
        }
        else {
          //digitalWrite(LED, LOW);
          digitalWrite(ledPin_rt, LOW);
          Serial.println("LED ausschalten");
        }
    ist demnach also der empfang eines UDP pakets auf beiden seiten (server und client) gleich?
    gruß inka

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Wenn Du zum Verschicken des UDP-Paketes WIFIClient verwendest, solltest Du auch damit empfangen können.
    Um das abkürzen, hier ist eine Doku: https://arduino-esp8266.readthedocs....rom-the-server

    interessant wird dann dieser Abschnitt sein:

    Code:
    if (client.available())
      {
        String line = client.readStringUntil('\n');
        Serial.println(line);
      }

    Ich habe das in der Form: Senden und dann wieder Empfangen auf einem nodeMCU, noch nicht ausprobiert. Ich habe bisher nur empfangen und zurückgesendet. Mehr brauchte ich nicht. Für weiteres muss ich mich damit beschäftigen.

    Die Zeile mit: Serial.println(line)
    musst Du nat. ersetzen durch einen Vergleich, ob das Zeichen oder die Zeichen angekommen ist oder sind, das oder die Du gesendet hast.


    MfG

    - - - Aktualisiert - - -

    Allerdings, kann man mit WIFIClient UDP-Pakete verschicken?

    Wozu nutzt Du:

    Code:
    WiFiClient client;
    
    ??

    Ich werde das mal selber ausprobieren. Mal sehen..

    MfG

    - - - Aktualisiert - - -

    ------------------------------------------------------------------------
    Nochmal ein Anlauf.

    Ich habe das eben schnell selbst zusammengwürfelt.
    Ausgehend davon, dass es ein nodeMCU gibt, das als Zugriffspunkt und Server funktioniert und die ankommende Nachricht auch zurückschickt,
    wäre das mein (nicht verifizierter Code), mit dem ich eine Nachricht dort hin schicke und auch anschließend empfange:

    Code:
    void loop() 
    {
      send = 0;
      if (udp.beginPacket(IPAddress(192,168,0,64),50000)==1)
      {
        udp.write("%"); 
        udp.endPacket();
        send=1;
      }
      
      if (send==1 && udp.parsePacket()) {
        // Nachricht abholen
              int len=udp.read(udp_buffer,sizeof(udp_buffer)-1);
              udp_buffer[len] = 0;
              if (strstr(udp_buffer, "%")){
               ....  //alles andere hier, wenn das angekommene Zeichen (können auch mehrere sein) dem Versendeten entspricht   
              }
      }
    Entscheidend ist jetzt nicht, ob der Code so funktioniert oder auch etwas anders. Aber die Reihenfolge:

    Senden der Daten mit:
    - udp.beginPacket
    - udp.write()
    - udp.endPacket()

    Dann warten bis was zurück kommt, mit:

    - if(udp.parsePacket()){...}

    und lesen der Daten mit:

    - udp.read(udp_buffer,sizeof(udp_buffer)-1);
    Geändert von Moppi (05.07.2020 um 09:50 Uhr)

Ähnliche Themen

  1. 433MHz Funkmodule bei Pollin
    Von toemchen im Forum Elektronik
    Antworten: 97
    Letzter Beitrag: 24.05.2009, 20:43
  2. antenne 433MHz Easyradio
    Von nobody1900 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 30.01.2007, 12:46
  3. 433MHz Übertragung
    Von Muecke im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 28.12.2006, 20:01
  4. 433Mhz Verstärker
    Von BastelWastel im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 16.09.2006, 21:35
  5. Problem mit Abstandhalten zur Wand
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 12.07.2006, 21:08

Berechtigungen

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

LiFePO4 Speicher Test