INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatur mit nrf24 übertragen
06.09.2016, 19:30 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2016 19:53 von jgrothe.)
Beitrag #1
Temperatur mit nrf24 übertragen
Hallo, kann mir einer von euch mal helfen ?
Habe ein Sender und ein Empfänger Program zu Übertragung von Dallas Daten,
der Sender zeigt die Temperatur im Serial.println() an, nur werden wohl keine
Daten übertrage oder empfangen.

Sieht einer hier den Fehler den ich mache? Danke
Code:
// TX 1 sender

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define ONE_WIRE_BUS_1 2


OneWire oneWire(ONE_WIRE_BUS_1);


DallasTemperature sensor(&oneWire);
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
             //pipe = 0xE8E8F0F0E1LL;
void setup(void)
{
    Serial.begin(9600);
    Serial.println("Dallas Temperatur  Library Demo - EinPin_DS18B20");

    radio.begin();
    radio.openWritingPipe(pipe);
    sensor.begin();
    
}

void loop(void)
{
    
    sensor.requestTemperatures();
    Serial.println(sensor.getTempCByIndex(0));

    sensor.requestTemperatures();
    float temperature = sensor.getTempCByIndex(0);
    radio.write(&temperature, sizeof(float));
    delay(1000);
        
}
Code:
//RX 1 empfänger
      #include <SPI.h>
      #include <nRF24L01.h>
      #include <RF24.h>
      
      RF24 radio(9, 10);
      const uint64_t pipe = 0xE8E8F0F0E1LL;
                   //pipe = 0xE8E8F0F0E1LL;
      void setup(void) {
      Serial.begin(9600);
      radio.begin();
      radio.openReadingPipe(1, pipe);
      radio.startListening();
      Serial.begin(9600);
      Serial.println("Temperature ");
      //delay(1000);
      Serial.println("Versuch ");
      delay(1000);
      }
      
      void loop(void)
      {
      if (radio.available()) {
      float temperature = 0;
      if (!radio.read(&temperature, sizeof(float))) {
      Serial.println("ACK not received by client.");
      }
      Serial.print("Temperatur : ");
      Serial.println(temperature);
      delay(1000);
      }
      }

Ich bin für jeden Vorschlag dankbar. Gruß Jörg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 10:10
Beitrag #2
RE: Temperatur mit nrf24 übertragen
Hallo zusammen,
schaut nicht so aus als ob ich mit meiner frage hier richtig bin,
oder ist in diesem Tema keiner so bewandt.https://www.arduinoforum.de/images/smilies/angry.gif

Gruß Jörghttps://www.arduinoforum.de/images/smilies/angel.gif
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 11:08 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2016 12:08 von ardu_arne.)
Beitrag #3
RE: Temperatur mit nrf24 übertragen
Hallo Jörg,
ich hatte mir deine Frage gestern schon mal kurz angeschaut.

Mein Problem war dass dein RX-Sketch bei mir nicht fehlerfrei übersetzt wird.
Code:
if (!radio.read(&temperature, sizeof(float))) {
An dieser Zeile klemmt es.
Möglicherweise verwenden wir unterschiedliche RF24 Library Versionen.
So wie dein Programm geschrieben ist, wird ein Rückgabewert aus "radio.read" ausgewertet.

Wenn ich keine Rückgabe auswerte, also nur:
Code:
if (radio.available()) {
    float temperature = 0;
    radio.read(&temperature, sizeof(float));
    Serial.print("Temperatur : ");
    Serial.println(temperature);
    delay(1000);
schreibe wird es auch bei mir ohne Fehlermeldung übersetzt.

In der Doku zur RF24 Lib steht aber eindeutig drin, dass radio.read eine boolean Rückgabe liefert.
So gesehen ist das was du programmiert (geguttenbergt) hast also o.k.

Wird es denn bei dir Fehlerfrei übersetzt?

Ansonsten stört mich das delay(1000); im RX-Code.
Du weist dass der Controller bei einem delay(); in Urlaub geschickt wird?
Der macht in dieser Zeit also nichts mehr im Programm und wird deshalb in der Zeit auch nichts empfangen.

Vorschlag:
Ändere den Code von loop() mal so ab wie es bei mir übersetzt wird und entferne die Zeile mit dem delay(1000);

Wenn es dann noch nicht geht sehen wir weiter.

Gruß
Arne

p.s.
(07.09.2016 10:10)jgrothe schrieb:  Hallo zusammen,
schaut nicht so aus als ob ich mit meiner frage hier richtig bin,
oder ist in diesem Tema keiner so bewandt.Angry

Gruß JörgAngel
Nur mal so als Hinweis:
Dies ist ein Forum welches überwiegend von Usern lebt die als Hobby mit dem Arduino zu tun haben. Die meisten User sind auch noch berufstätig und haben nicht den ganzen Tag Zeit sich um dieses Forum zu kümmern.
Es gibt hier also keinen 24/7 Fulltime-Service.
Wenn du das künftig berücksichtigst, kommen wir alle hier miteinander besser klar. Smile

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2016 14:16 von jgrothe.)
Beitrag #4
RE: Temperatur mit nrf24 übertragen
Hallo ardu_arne,

vielen Danke für deine Analyse, bei mir lief der Sketch so durch und lassen sich auch
ohne mühe aufspielen nur tat sich da nichts außer im Serial Monitor die Temperatur.


Ich werde die Sketchs änder und das Delay(1000) im RX raus nehmen und Probiere es noch mal.

Vielen Dank Gruß Jörg

Verwendete Lieb. RF24 https://github.com/maniacbug/RF24
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 15:30
Beitrag #5
RE: Temperatur mit nrf24 übertragen
Hallo Jörg,

ich verwende die Lib von hier: https://github.com/TMRh20/RF24Network
Die ist etwas neuer und schneller, aber wohl nicht fehlerfrei. Undecided

Im loop(); habe ich:
Code:
if (radio.available())
      RF24_Empfangen();                   // RF24 Daten einlesen
stehen und rufe damit bei bedarf die Empfangsroutine auf.

Mit der Lib die du hast, hatte ich 4000 loops pro Sekunde erreicht.
Mit der Lib die ich jetzt habe sind es knapp 6000 loops pro Sekunde.
So stark hat der Aufruf "if (radio.available())" meine loop() ausgebremst.
Deshalb bin ich auch bei der anderen Lib geblieben.
Weil ich in meinem Programm aber den Rückgabewert von "radio.read" nicht auswerte taucht der Fehler bei mir auch nicht auf.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 18:16
Beitrag #6
RE: Temperatur mit nrf24 übertragen
Hallo Arne,

habe die Delays ausgeklammert // hat aber leider nichts geholfen habe die
NRF24 mit einen anderen Sketch getestet die sind ok.
Der TX
Code:
#include  <SPI.h>                    
#include  "RF24.h"                    
byte data[1];                         // Wir werden eine Datenvariable erstellen.
const uint64_t pipe = 0xF0F0F0F0A1LL; // Wir haben die parallelen Bus-Adressen definiert.
RF24 radio(9,10);                     // Wir haben gesagt, dass wir das CE-Pin des Moduls 9.p der CS-Pin zum 10.p. verbinden

void setup(){
pinMode(3, INPUT_PULLUP);            // Wir setzen den Arduino pin 3 resistent gegen interne Eingänge.
pinMode(5, INPUT_PULLUP);            // Wir setzen den Arduino pin 5 resistent gegen interne Eingänge.
pinMode(7, INPUT_PULLUP);            // Wir setzen den Arduino pin 7 resistent gegen interne Eingänge.
radio.begin();                       // Wir beginnen die drahtlose Kommunikation.
radio.openWritingPipe(pipe);         // Wir definieren den ID-Kanal für den Versand Daten.
}

void loop(){
if(digitalRead(3)==HIGH || digitalRead(5)==HIGH || digitalRead(7)==HIGH){
  data[0]=0;
}
if(digitalRead(3)==LOW){
  data[0]=1;
}
if(digitalRead(5)==LOW){
  data[0]=2;
}
if(digitalRead(7)==LOW){
  data[0]=3;
}
radio.write(data, 1);                 //Daten Nachricht hier senden.
}
und der RX
Code:
#include <SPI.h>                      
#include "RF24.h"                      
byte data[1];                          // Wir werden eine Datenvariable erstellen.
boolean var;                           // Wir haben eine Variable des Formulars erstellt
const uint64_t pipe = 0xF0F0F0F0A1LL;  // Die parallelen Bus-Adressen definieren.
RF24 radio(9,10);                      // Wir haben gesagt, dass wir das CE-Pin des Moduls 9.p der CS-Pin zum 10.P verbinden.

void setup(){
pinMode(3, OUTPUT);                    // Wir setzen den Arduino Pin 3 auf ausgang
pinMode(5, OUTPUT);                    // Wir setzen den Arduino Pin 5 auf ausgang
pinMode(7, OUTPUT);                    // Wir setzen den Arduino Pin 7 auf ausgang
radio.begin();                         // Wir beginnen die drahtlose Kommunikation.
radio.openReadingPipe(1,pipe);         // Wir definieren wo die ID-Kanal-Daten empfangen werden soll. Zuhören radio.start ();
}

void loop(){
if(radio.available()){
   var = false;
   while(!var){
     var = radio.read(data, 1);  
      if(data[0] == 0){
      digitalWrite(3, LOW);
      digitalWrite(5, LOW);
      digitalWrite(7, LOW);
      }
      if(data[0] == 1){
      digitalWrite(3, HIGH);
      }
      if(data[0] == 2){
      digitalWrite(5, HIGH);
      }
      if(data[0] == 3){
      digitalWrite(7, HIGH);
   }
  }
}
}
Es gab ein paar hinweise das die erst getestet werden sollten, med. in Chaine.
Die LEDs machten was sie sollten.

Damit bin ich ein wenig ratlos warum es nicht mit der Temperatur funst,
es solle auch noch die Daten des Fühlstandes meiner Zisterne von HSR04
übertragen werden.

Gruß Jörg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 18:34
Beitrag #7
RE: Temperatur mit nrf24 übertragen
Irgendwie fehlen mir bei dir Zeilen wie

Code:
radio.setChannel(50);
radio.setPALevel(RF24_PA_LOW);

Geschweigeden

Code:
radio.startListening();

und

Code:
radio.stopListening();
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2016, 18:47 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2016 18:49 von jgrothe.)
Beitrag #8
RE: Temperatur mit nrf24 übertragen
(07.09.2016 18:34)MeisterQ schrieb:  Irgendwie fehlen mir bei dir Zeilen wie

Code:
radio.setChannel(50);
radio.setPALevel(RF24_PA_LOW);

Geschweigeden

Code:
radio.startListening();

und

Code:
radio.stopListening();

Hallo Arne,
das ist richtig es ist nur einmal im RX Empfänger der Satz vorhanden und das im
setup(), müsste aber in beiden Sketch sein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 83 07.12.2016 19:21
Letzter Beitrag: hotsystems
  I2C Daten übertragen Gandalf 3 217 04.11.2016 13:20
Letzter Beitrag: hotsystems
  nrf24 an Mega 2560 jgrothe 2 167 10.09.2016 13:39
Letzter Beitrag: jgrothe
  Problem bei Temperatur/volt Ampere Abfrage LCD Flimmern nuernie66 9 647 04.03.2016 19:25
Letzter Beitrag: hotsystems
  Temperatur auf 3,2 Zoll TFT Anzeigen jgrothe 12 1.901 04.07.2015 17:06
Letzter Beitrag: jgrothe
  NRF24 soll Daten empfangen und senden... MaHaI976 2 943 08.06.2015 19:36
Letzter Beitrag: MaHaI976
  werte von 2 Ultraschallsensoren mit xbee übertragen Darkon 4 1.176 25.05.2015 21:23
Letzter Beitrag: HaWe
  float per NRF24 übertragen F2Ingo 9 1.654 14.04.2015 21:21
Letzter Beitrag: F2Ingo
  HC-05 Ardurino Bluethooth werte übertragen RFID ChrisBeer222 0 657 10.04.2015 23:16
Letzter Beitrag: ChrisBeer222
  PWM-Signal auf anderen Pin übertragen Ard_Gast 23 2.335 16.03.2015 12:04
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste