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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DHT22-Werte via Funk
15.07.2015, 18:53
Beitrag #17
RE: DHT22-Werte via Funk
Dann bleibe ich einfach dabei. Die guten Funkmodule von Watterott sind schon auf dem weg zu mir. Bin gespannt ob die unterschiede zu den ebaydingern haben.

Vielen dank nochmal für die Lösung!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 15:47 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2015 15:49 von Jetiman.)
Beitrag #18
RE: DHT22-Werte via Funk
Hi,

ich habe das mal so nachgebaut.

Wenn ich beim Sender die Zeilen
Code:
vw_setup(2000);
   vw_set_tx_pin(3);
drin habe Zeigt das LCD nichts mehr an. Ohne geht es.

Beim Empfänger kommt auch nichts an.
Ist der Sketch von der ersten Seite+ die Änderungen von Seite 2 nicht vollständig?
Wäre es möglich die beiden fertigen Sketch´s zu Posten?

PS: nutze ein DHT11 habe daher auf " #define DHTTYPE DHT11" gestellt. Denke aber das macht kein unterschied ob 11 oder 22.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 18:04 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2015 18:10 von MeisterQ.)
Beitrag #19
RE: DHT22-Werte via Funk
Ich habe meinen Sketch schon ein wenig erweitert.
Aus dem LCD wurde ein I2C LCD und eine RTC ist hinzugefügt.

Transmittercode:

Code:
#include "DHT.h"
#include <VirtualWire.h>

int h = 0;
int t = 0;

#define DHTPIN 9    
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

int DHTVCC = 6;
int update = 10000;
int LEDpin = 13;

char Sensor1CharMsg[21];

void setup()
{
  
  Serial.begin(9600);
  Serial.println("DHT22 - Test!");

  dht.begin();
  
  pinMode(DHTVCC, OUTPUT);
  pinMode(LEDpin, OUTPUT);
  digitalWrite(DHTVCC, HIGH);

// Virtual Wire setup
vw_setup(2000);
vw_set_tx_pin(8);
  
}

void loop()
{
  float h = dht.readHumidity();     //Luftfeuchte auslesen
  float t = dht.readTemperature();  //Temperatur auslesen
  
   int h_as_int = h;
   int t_as_int = (t * 10);
  
  sprintf (Sensor1CharMsg, "%d,%d,", h_as_int, t_as_int);

  if (isnan(t) || isnan(h))
  {
    Serial.println("DHT22 konnte nicht ausgelesen werden");
    delay(1000);
  }
  else
  {
    Serial.print("Luftfeuchte: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatur: ");
    Serial.print(t);
    Serial.println(" C");

     vw_send((uint8_t *)Sensor1CharMsg, strlen(Sensor1CharMsg));
     vw_wait_tx();

    delay(update);
  }
}

Receivercode:

Code:
#include <Wire.h>
#include <VirtualWire.h>
#include <LiquidCrystal_I2C.h>
#include <DS3232RTC.h>
#include <Time.h>

int h_as_int = 0;
int t_as_int = 0;

LiquidCrystal_I2C lcd(0x27, 20, 4);

char StringReceived[22];

void setup() {
  
  // Setup
  Serial.begin(9600);
  lcd.begin();
  lcd.setCursor(0,0);
  lcd.print("Wetterstation I2C V2");
  lcd.setCursor(0,1);
  lcd.print("Warte auf Wetterinfo");
  
  // VirtualWire Setup
  
    vw_setup(2000);
    vw_set_rx_pin(11);  
    vw_rx_start();      
    
  // RTC Setup
  
    setSyncProvider(RTC.get);   // the function to get the time from the RTC
    if(timeStatus() != timeSet)
        Serial.println("Unable to sync with the RTC");
    else
        Serial.println("RTC has set the system time");      

}

void loop(){
      digitalClockDisplay();
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen))
    {
int i;
        for (i = 0; i < buflen; i++)
{            
          StringReceived[i] = char(buf[i]);
}
     float t;
     int h;
     int t_as_int;
      sscanf(StringReceived, "%d,%d,",&h, &t_as_int); // Converts a string to an array
      t = 0.1 * t_as_int;
        lcd.setCursor(0, 0);
        lcd.print("Feuchte: ");
        lcd.print(h);
        lcd.print(" %");
        lcd.setCursor(13, 0);
        lcd.print("       ");
        lcd.setCursor(13, 1);
        lcd.print("       ");
        lcd.setCursor(0, 1);
        lcd.print("Temp: ");
        lcd.print(t);
        lcd.print(" C");
        Serial.print("Luftfeuchtigkeit: ");
        Serial.print(h);
        Serial.println(" %");
        Serial.print("Temperatur: ");
        Serial.print(t);
        Serial.println(" C");
        Serial.println(StringReceived);    
}
memset( StringReceived, 0, sizeof( StringReceived));
}

void digitalClockDisplay(void)
{
    // digital clock display of the time
    lcd.setCursor(0, 3);
    if (hour() < 10)
    {
        lcd.print("0");
        lcd.print(hour());
    }
    else
    {
        lcd.print(hour());
    }
    lcd.print(":");
    if (minute() < 10)
    {
        lcd.print("0");
        lcd.print(minute());
    }
    else
    {
        lcd.print(minute());
    }
    lcd.print(":");
    if (second() < 10)
    {
        lcd.print("0");
        lcd.print(second());
    }
    else
    {
        lcd.print(second());
    }
    Serial.print(hour());
    printDigits(minute());
    printDigits(second());
    Serial.print(" ");
    Serial.print(day());
    Serial.print(".");
    printMonth(month());
    Serial.print(".");
    Serial.print(year());
    Serial.println();
    delay(1000);
}


void printDigits(int digits)
{
    // utility function for digital clock display: prints preceding colon and leading 0
    Serial.print(':');
    if(digits < 10)
        Serial.print('0');
    Serial.print(digits);
}

void printMonth(int digits)
{
  if(digits < 10) {
  Serial.print("0");
  Serial.print(digits);
  }
}

Das Problem mit dem LCD hatte ich dann auch. War aber allerdings mit diesem Code behoben:

Code:
#include <VirtualWire.h>
#include <LiquidCrystal.h>

int h_as_int = 0;
int t_as_int = 0;

LiquidCrystal lcd(52, 51, 45, 44, 43, 42);

char StringReceived[22];

void setup() {
  Serial.begin(9600);
  lcd.begin(16,2);
  lcd.clear();
  
    vw_setup(2000);
    vw_set_rx_pin(11);  
    
    vw_rx_start();      

}

void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen))
    {
int i;
        for (i = 0; i < buflen; i++)
{            
          StringReceived[i] = char(buf[i]);
}
     float t;
     int h;
     int t_as_int;
      sscanf(StringReceived, "%d,%d,",&h, &t_as_int); // Converts a string to an array
      t = 0.1 * t_as_int;
        lcd.setCursor(0, 0);
        lcd.print("Feuchte: ");
        lcd.print(h);
        lcd.print(" %");
        lcd.setCursor(0, 1);
        lcd.print("Temp: ");
        lcd.print(t);
        lcd.print(" C");
        Serial.print("Luftfeuchtigkeit: ");
        Serial.print(h);
        Serial.println(" %");
        Serial.print("Temperatur: ");
        Serial.print(t);
        Serial.println(" C");
        Serial.println(StringReceived);      
    }

memset( StringReceived, 0, sizeof( StringReceived));
}

Hast du den Empfänger an einen Mega angeschlossen?

PS: Das RWS-371 und das TWS-BS Funkmodul von Watterott sind eingetroffen. Schlagen die fC Bauteile um längen. Mein Sender sendet nun aus 10m entfernung durch 2 Wände ohne Antenne und der Empfänger hat auch keine Antenne mehr.

Die fC-Hardware konnte nichtmal 2m ohne Antenne senden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 21:19
Beitrag #20
RE: DHT22-Werte via Funk
Als Empfänger ein Nano.
Als Sender ein Uno.

Jetzt funktioniert es im Seriell Monitor. Aber das lcd noch nicht.

Empfänger
Code:
#include <VirtualWire.h>
#include <LiquidCrystal.h>

int h_as_int = 0;
int t_as_int = 0;

LiquidCrystal lcd(12, 11, 10, 7, 6, 5, 4);

char StringReceived[22];

void setup() {
   Serial.begin(9600);
   lcd.begin(16,2);
   lcd.clear();
  
     vw_setup(2000);
     vw_set_rx_pin(3);  
      
     vw_rx_start();      

}

void loop(){
     uint8_t buf[VW_MAX_MESSAGE_LEN];
     uint8_t buflen = VW_MAX_MESSAGE_LEN;
      
     if (vw_get_message(buf, &buflen))
     {
int i;
         for (i = 0; i < buflen; i++)
{            
           StringReceived[i] = char(buf[i]);
}
      float t;
      int h;
      int t_as_int;
       sscanf(StringReceived, "%d,%d,",&h, &t_as_int); // Converts a string to an array
       t = 0.1 * t_as_int;
         lcd.setCursor(0, 0);
         lcd.print("Feuchte: ");
         lcd.print(h);
         lcd.print(" %");
         lcd.setCursor(0, 1);
         lcd.print("Temp: ");
         lcd.print(t);
         lcd.print(" C");
         Serial.print("Luftfeuchtigkeit: ");
         Serial.print(h);
         Serial.println(" %");
         Serial.print("Temperatur: ");
         Serial.print(t);
         Serial.println(" C");
         Serial.println(StringReceived);      
     }

memset( StringReceived, 0, sizeof( StringReceived));
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 22:25
Beitrag #21
RE: DHT22-Werte via Funk
Code:
#include <VirtualWire.h>
#include <LiquidCrystal.h>

int h_as_int = 0;
int t_as_int = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

char StringReceived[22];

void setup() {
  Serial.begin(9600);
  lcd.begin(20,4);
  lcd.clear();
  lcd.print("Test");
    vw_setup(2000);
    vw_set_rx_pin(11);  
    
    vw_rx_start();      

}

void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen))
    {
int i;
        for (i = 0; i < buflen; i++)
{            
          StringReceived[i] = char(buf[i]);
}
     float t;
     int h;
     int t_as_int;
      sscanf(StringReceived, "%d,%d,",&h, &t_as_int);
      t = 0.1 * t_as_int;
        lcd.setCursor(0, 0);
        lcd.print("Feuchte: ");
        lcd.print(h);
        lcd.print(" %");
        lcd.setCursor(0, 1);
        lcd.print("Temp: ");
        lcd.print(t);
        lcd.print(" C");
        Serial.print("Luftfeuchtigkeit: ");
        Serial.print(h);
        Serial.println(" %");
        Serial.print("Temperatur: ");
        Serial.print(t);
        Serial.println(" C");
        Serial.println(StringReceived);      
    }

memset( StringReceived, 0, sizeof( StringReceived));
}

Versuch das mal. Bei mir funktioniert es so. Musst nur deine Pins bei LiquidCrystal lcd() einstellen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 22:38
Beitrag #22
RE: DHT22-Werte via Funk
Test zeigt es an. Die Daten jedoch nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 22:46
Beitrag #23
RE: DHT22-Werte via Funk
Welche Funkmodule nutzt du?
Hast du Antennen angelötet?
Was sagt der Serielle Monitor beim Sender?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 22:52 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2015 22:53 von Jetiman.)
Beitrag #24
RE: DHT22-Werte via Funk
Serielle Monitor funktioniert. Überträgt T und H.
Nur wenn "vw_setup(2000);" kommt stellt das lcd sein dienst ein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 463 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 732 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Werte an anderes Programm weiterleiten Typ 2 433 12.03.2016 23:28
Letzter Beitrag: Typ
  digitale Werte trotz Stromunterbrechung nicht verlieren goldfisch 63 4.218 06.01.2016 13:17
Letzter Beitrag: Bitklopfer
  werte vom MPU6050 gy521 bekommen max1798 0 457 18.12.2015 21:11
Letzter Beitrag: max1798
  Arduino werte auslesen Atwist 11 1.316 21.11.2015 20:58
Letzter Beitrag: hotsystems
  gegenseitiges Zuweisen von Pointeradressen und Ihrer "Werte" HaWe 22 1.444 05.11.2015 18:42
Letzter Beitrag: Thorsten Pferdekämper
  Werte aus der SD - Karte zuordnen Gandalf 19 1.905 12.09.2015 12:48
Letzter Beitrag: Gandalf
  Werte in die UTouchCD.h eintragen jgrothe 0 439 17.06.2015 17:23
Letzter Beitrag: jgrothe
  werte von 2 Ultraschallsensoren mit xbee übertragen Darkon 4 1.159 25.05.2015 21:23
Letzter Beitrag: HaWe

Gehe zu:


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