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
14.07.2015, 11:24 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2015 11:50 von MeisterQ.)
Beitrag #1
DHT22-Werte via Funk
Hallo zusammen,

hab mich jetzt extra für diesen Thread hier im Forum registriert, weil ich irgendwie ratlos bin, und im Internet einfach nichts mehr gefunden habe.

Mein Projekt, wie oben in der Topic beschrieben, soll die Messwerte des DHT22 am Arduino via RF mit Virtual Wire (433Mhz) an einen anderen Arduino in meinem Büro senden und per LCD ausgeben.

Noch benutze ich für das Projekt einen Uno wo der DHT22 angeschlossen ist, und einen Mega (ja hatte nix besseres zur Hand Big Grin) der die Daten empfangen soll.

Aktuell ist am Uno der DHT22, und ein 16/02 (ohne I2C) LCD angeschlossen.

Lokal ist das Auslesen und Ausgeben ja auch nicht das Problem.
Auch 1 oder 0 mit Virtual Wire senden ist kein Problem.

Aber die 2 Messwerte in den Variablen h für humidity und t für temperature senden, und beim anderen empfangen UND auslesen ist irgendwie ein hinderniss. Viele der Tutorials im Netz helfen mir irgendwie nicht weiter.

Der Sendercode lautet wie folgt:

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

int h = 0;
int t = 0;

#define DHTPIN 9    
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

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

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

char Sensor1CharMsg[21];

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

  dht.begin();
  
  pinMode(DHTVCC, OUTPUT);
  pinMode(LCD, OUTPUT);
  pinMode(LEDpin, OUTPUT);
  digitalWrite(DHTVCC, HIGH);
  digitalWrite(LCD, HIGH);
  
  vw_setup(2000);
  vw_set_tx_pin(8);



}

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

  if (isnan(t) || isnan(h))
  {
    lcd.clear();
    Serial.println("DHT22 konnte nicht ausgelesen werden");
    lcd.print("Auslesen");
    lcd.setCursor(0, 1);
    lcd.print("fehlgeschlagen");
    delay(1000);
    lcd.clear();
  }
  else
  {
    lcd.setCursor(0, 0);
    lcd.print("Feuchte: ");
    lcd.print(h);
    lcd.print(" %\t");
    lcd.setCursor(0, 1);
    lcd.print("Temp: ");
    lcd.print(t);
    lcd.print(" C");
    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);
  }
}

Alle Virtualwire funktionen habe ich einfach anhand der tutorials in den Sketch eingefügt. Wenn man die rausnimmt, funktioniert der Sketch einwandfrei.

Den Recieversketch habe ich aus einem Tutorial aus dem Netz und habe ihn ein wenig angepasst.

Code:
/*.............................................................
Sending Multiple Variables Using VirtualWire. Receiver
Author: Rodrigo Mompo Redoli
For controlrobotics.rodrigomompo.com
..............................................................*/
#include <VirtualWire.h>

// Sensors
int h;
int t;


char StringReceived[22];



void setup() {
  Serial.begin(9600);
    // VirtualWire
    // Initialise the IO and ISR
    // Required for DR3100

    // Bits per sec
    vw_setup(2000);
    vw_set_rx_pin(11);  
    
    // Start the receiver PLL running
    vw_rx_start();      

} // END void setup

void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
//Taking the data from the control base
    if (vw_get_message(buf, &buflen))
    {
int i;
        // Message with a good checksum received, dump it.
        for (i = 0; i < buflen; i++)
{            
          // Fill Sensor1CharMsg Char array with corresponding
          // chars from buffer.  
          StringReceived[i] = char(buf[i]);
}

      sscanf(StringReceived, "%d,%d,",&h, &t); // Converts a string to an array
        
        // Turn off light to and await next message
        Serial.print(h);
        Serial.println(t);
        
    }

memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived
}

Es wird nichts übermittelt, und auch nichts empfangen.
Bin Ratlos.
Gibt es evtl eine andere Lib die das ganze erleichtert?
mit RC-Switch komme ich gut klar. Aber die Funksteckdosen ansteuern ist ja eine ganz andere sache und hat damit nix zu tun.

Im vorraus schonmal sorry wegen dem unübersichtlichen Sketch. Ich passe immer erst am ende alles an.

Falls es schon zig Threads zu dem Thema gibt und ich sie nicht gefunden habe, dann SorryBlush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 11:43
Beitrag #2
RE: DHT22-Werte via Funk
Der Uno sendet und der Mega empfängt?
Im Sende Sketch hast du aber folgendes stehen...
Code:
vw_set_tx_pin(18);

Der Uno hat keinen Pin 18, schau mal nach wo du was angeschlossen hast.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 11:55
Beitrag #3
RE: DHT22-Werte via Funk
(14.07.2015 11:43)Scherheinz schrieb:  Der Uno sendet und der Mega empfängt?
Im Sende Sketch hast du aber folgendes stehen...
Code:
vw_set_tx_pin(18);

Der Uno hat keinen Pin 18, schau mal nach wo du was angeschlossen hast.

Gruß


Sorry, original war im Sketch der Senderpin 12, und habe ihn zu 8 geändert und dabei wohl die 1 vergessen weg zu machen.

Nun gibt mir der Serielle Monitor beim Empfänger folgende Werte aus

Code:
1310716973
2621416976
2621416982
1310716979
2621416974
2621416978
2621416980
-1310716974
016974
016982


Scheinen mir selbst für eine Konstante Luftfeuchte und Temperatur mehr Merkwürdige Zahlen zu sein.

Der Empfänger und Sender stehen nur ca. 15cm von einander entfernt und haben beide eine Antenne angelötet.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 13:26
Beitrag #4
RE: DHT22-Werte via Funk
poste mal bitte den sketch vom empfänger

gruss

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 14:11
Beitrag #5
RE: DHT22-Werte via Funk
Der untere der beiden Codes im 1. Post ist der empfängersketch
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 16:39
Beitrag #6
RE: DHT22-Werte via Funk
Zeig mal deinen Schaltplan her. Und welche Funkmodule verwendest du denn?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 17:44
Beitrag #7
RE: DHT22-Werte via Funk
Nehmt es mir bitte nicht übel, aber da ich Ausgebildete Elektrofachkraft bin, halte ich es nicht für nötig, für solche simplen Stromkreise einen Schaltplan anzufertigen. Wie gesagt, die Funktionen der Schaltung sind alle einwandfrei.

Ich benutze folgende Bauteile:

DHT22/AM2302 SE08002. Feuchtigkeits/Temperatursensor

MX-FS-03V & MX-05 Sender und Empfänger

Und ein 16/2 LCD

Der Datapin des Transmitters ist an Digital 8 des sendenden Unos angeschlossen.

Der Datenpin des Recievers ist an Pin 11 des empfangenden Megas angeschlossen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 18:05
Beitrag #8
RE: DHT22-Werte via Funk
Hi,
mach mal ein Serial.println(StringReceived) in den Empfängersketch.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
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 476 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 743 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Werte an anderes Programm weiterleiten Typ 2 438 12.03.2016 23:28
Letzter Beitrag: Typ
  digitale Werte trotz Stromunterbrechung nicht verlieren goldfisch 63 4.243 06.01.2016 13:17
Letzter Beitrag: Bitklopfer
  werte vom MPU6050 gy521 bekommen max1798 0 463 18.12.2015 21:11
Letzter Beitrag: max1798
  Arduino werte auslesen Atwist 11 1.328 21.11.2015 20:58
Letzter Beitrag: hotsystems
  gegenseitiges Zuweisen von Pointeradressen und Ihrer "Werte" HaWe 22 1.449 05.11.2015 18:42
Letzter Beitrag: Thorsten Pferdekämper
  Werte aus der SD - Karte zuordnen Gandalf 19 1.916 12.09.2015 12:48
Letzter Beitrag: Gandalf
  Werte in die UTouchCD.h eintragen jgrothe 0 440 17.06.2015 17:23
Letzter Beitrag: jgrothe
  werte von 2 Ultraschallsensoren mit xbee übertragen Darkon 4 1.176 25.05.2015 21:23
Letzter Beitrag: HaWe

Gehe zu:


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