Go Down

Topic: Senden von Temperatur und Luftfeuchtigkeit mit Zigbee (Read 631 times) previous topic - next topic

HotSystems

Wo soll ich das Erdungskabel dranklemmen?
Da ich deinen Lötkolben nicht kenne, kann ich dir da keinen Tipp geben.
Aber statische Entladungen können schon Bauteile zerstören.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Peter-CAD-HST

Moin,

meine Lötstation hat keine geerdete Lötspitze  :smiley-eek:  und mit dieser Lötstation arbeite ich >40 Jahre ohne das sich je ein halbleitendes Gefüge sich in die ewigen Jagdgründe verabschieded hat.

Gruss Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

HotSystems

meine Lötstation hat keine geerdete Lötspitze
Es geht doch überhaupt nicht um deine Lötstation.

Zu dem gibt es Lötstationen, die eine Erdung haben und die sollte dann auch angeschlossen werden.
Nur darum geht es.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

Okay, ich werde das Edungskabel anschließen. Mit welcher Temperatur lötet ihr vorzugsweise?
Ich werde auf jeden Fall noch paar Lötübungen machen. Das will ich lernen.

Peter-CAD-HST

Es geht doch überhaupt nicht um deine Lötstation.

Zu dem gibt es Lötstationen, die eine Erdung haben und die sollte dann auch angeschlossen werden.
Nur darum geht es.

Warum ?  :o 

Löten die dann besser ?
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

HotSystems

#20
Sep 01, 2020, 09:46 am Last Edit: Sep 01, 2020, 10:14 am by HotSystems
Okay, ich werde das Edungskabel anschließen. Mit welcher Temperatur lötet ihr vorzugsweise?
Ich werde auf jeden Fall noch paar Lötübungen machen. Das will ich lernen.
Dann besorge dir Lochrasterplatinen und versuche damit das zu lernen.
Anfangen solltest du mit Pertinaxplatinen, da siehst du sofort, wenn du zu lange gelötet hast. Dann lösen sich die Lötaugen vom Trägermaterial. Erst wenn das gut klappt, solltest du dich an die richtigen Module ran wagen.

Und die Temperatur meines Weller Magnastat beträgt je nach Spitze ca. 310 bzw. 370 Grad.
Damit komme ich seit Jahre gut klar.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

Danke für eure Tipps. Ich habe mich mit dem Löten mehr befasst und einige Übungen gemacht.
Jetzt funktionieren plötzlich meine Totgeglaubten Co2-Sensoren wieder.
Also danke an alle, die mir Hilfe geleistet haben.
Wenn ich so weit bin, dass ich die HC-12 Module gelötet habe, melde ich mich wieder.

HotSystems

Super dass es jetzt funktioniert.

Danke für die Rückmeldung und weiterhin viel Erfolg.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

#23
Sep 16, 2020, 05:57 pm Last Edit: Sep 16, 2020, 05:58 pm by adruinoboy
Hallo,

jetzt ist es soweit. Ich habe meine HC-12 Module gelötet. Das hat echt besser geklappt als erwartet.
Die funktionieren sehr gut und senden und empfangen aus dem seriellen Monitor alles, was ich schreibe.

Jetzt will ich zwei Messwerte senden. Also einmal die Temperatur und die Luftfeuchtigkeit.
Ich hatte das vor einigen Jahren mit HC-05 und HC-06 Modulen ausgeführt und der endgültige Sketch sah so aus:

Code: [Select]


#include <Streaming.h>    //Bibliothek zur BT Verbindung
#include <SoftwareSerial.h>
#include "DHT.h"          //DHT Bibliothek laden

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

float tempaussen = 0;
float feuchteaussen = 0;

#define rxPin 3
#define txPin 4
#define DHTPIN 2
#define DHTTYPE DHT22   //Es handelt sich um den DHT22 Sensor

SoftwareSerial btSerial(rxPin, txPin);
DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit "dht" angesprochen

void setup()
{
  btSerial.begin(9600);
  Serial.begin(9600);
  dht.begin();
}

void loop()
{
      //Auslesen der Temp. und Feuchtigkeit
    tempaussen = dht.readTemperature(); //Temperatur außen wird gemessen und gespeichert
    feuchteaussen = dht.readHumidity(); //Luftfeuchte außen wird gemessen und gespeichert

      //Senden der Messwerte
    btSerial << Temperatur << ',' << tempaussen << ';' << endl;
    btSerial << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;

//Löschen der Messwerte
   tempaussen = 0;     //Der Wert für Temperatur wird genullt
   feuchteaussen = 0;  //Der Wert für Feuchte wird für die nächste Runde genullt
}


Das hat sehr gut funktioniert.
Ich habe den Sketch dann auch für meine HC-12 Module übertragen, aber das hat nicht funktioniert.
Der kann den Befehl << Temperatur ...
nicht ausführen.
Ich schicke mal, wie ich den Sketch angepasst habe, damit ihr mir genauer helfen könnt.

Code: [Select]

#include <SoftwareSerial.h>
#include <SoftwareSerial.h>
#include "DHT.h"          //DHT Bibliothek laden

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

unsigned long BT_timestore;   //Variable Speicher für Systemzeit
float tempaussen = 0;
float feuchteaussen = 0;

#define DHTPIN 2        //DHT22 wird am Pin2 ausgelesen
#define DHTTYPE DHT22   //Es handelt sich um den DHT22 Sensor

SoftwareSerial HC12(10, 11); // HC-12 TX Pin, HC-12 RX Pin
DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit "dht" angesprochen

void setup()
{
 Serial.begin(9600);             // Serial port to computer
 HC12.begin(9600);               // Serial port to HC12
}
void loop()
{
  tempaussen = dht.readTemperature(); //Temperatur außen wird gemessen und gespeichert
  feuchteaussen = dht.readHumidity(); //Luftfeuchte außen wird gemessen und gespeichert

  while (HC12.available())
  {// If HC-12 has data
  Serial.write(HC12.read());      // Send the data to Serial monitor
  //Senden der Messwerte
  HC12.write << Temperatur << ',' << tempaussen << ';' << endl;
  HC12.write << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;
  }
  while (Serial.available())
  {      // If Serial monitor has data
  HC12.write(Serial.read());      // Send that data to HC-12
  }
  delay(1000);
}

HotSystems

#24
Sep 16, 2020, 06:16 pm Last Edit: Sep 16, 2020, 06:35 pm by HotSystems
Wenn du es mit Streaming machen möchtest, musst du auch die Library dazu einbinden.

Was ich allerdings nicht verstehe, du fragst die serielle zum HC12 nach Daten ab und willst dann erst per Streaming senden. Das kommt mir ein wenig konfus vor.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

#25
Sep 16, 2020, 11:16 pm Last Edit: Sep 16, 2020, 11:16 pm by adruinoboy
Hallo HotSystems,

ich hatte vorher vergessen die Bibliothek einzubinden. Dafür hatte ich die "SoftwareSerial" zwei mal reingeschrieben. Das habe ich jetzt geändert. Danke für den Tipp, dass ist natürlich quatsch.
Ich habe damit also diesen Sketch hier:

Code: [Select]

#include <Streaming.h>    //Bibliothek zur BT Verbindung
#include <SoftwareSerial.h>
#include "DHT.h"          //DHT Bibliothek laden

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

unsigned long BT_timestore;   //Variable Speicher für Systemzeit
float tempaussen = 0;
float feuchteaussen = 0;

#define DHTPIN 2        //DHT22 wird am Pin2 ausgelesen
#define DHTTYPE DHT22   //Es handelt sich um den DHT22 Sensor

SoftwareSerial HC12(10, 11); // HC-12 TX Pin, HC-12 RX Pin
DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit "dht" angesprochen

void setup()
{
 Serial.begin(9600);             // Serial port to computer
 HC12.begin(9600);               // Serial port to HC12
}
void loop()
{
  tempaussen = dht.readTemperature(); //Temperatur außen wird gemessen und gespeichert
  feuchteaussen = dht.readHumidity(); //Luftfeuchte außen wird gemessen und gespeichert

  while (HC12.available())
  {// If HC-12 has data
  Serial.write(HC12.read());      // Send the data to Serial monitor
  //Senden der Messwerte
  HC12.write << Temperatur << ',' << tempaussen << ';' << endl;
  HC12.write << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;
  }
  while (Serial.available())
  {      // If Serial monitor has data
  HC12.write(Serial.read());      // Send that data to HC-12
  }
  delay(1000);
}


Damit erhalte ich folgende Fehlermeldung:

exit status 1
no match for 'operator<<' (operand types are '<unresolved overloaded function type>' and 'Comand')

HotSystems

Ok, dann solltest du das mal in der "einfachen" Version machen.
Z.B. mit dieser Anweisung:

Code: [Select]
hc12.print(Deine Daten);
Aber ohne das ganze "drumherum".

Und sieh dir diese Beschreibung an.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Peter-CAD-HST

Moin adruinoboy,
die Fehlermeldung wird durch die Codezeilen
HC12.write << Temperatur << ',' << tempaussen << ';' << endl;
HC2.write << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;
erzeugt.
Für diese einfache Anwendung ist ein Streaming nicht sinnvoll.
Ersetze diese durch
//  HC12.write << Temperatur << ',' << tempaussen << ';' << endl;
//  HC12.write << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;

    HC12.print (Temperatur); // Kommando
    HC12.print (",");        // Abgrenzung
    HC12.print (tempaussen); // Messwert
    HC12.println (";");        // Abgrenzung

    HC12.print (Feuchtigkeit); // Kommando
    HC12.print (",");        // Abgrenzung
    HC12.print (feuchteaussen); // Messwert
    HC12.println (";");        // Abgrenzung
viel Erfolg
Gruss Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

adruinoboy

Für diese einfache Anwendung ist ein Streaming nicht sinnvoll.

Aber wie kann ich das mit dem zweiten Arduino sauber auslesen, damit er genau zwischen Temp. und Luftfeuchte unterscheiden kann.
Nicht, dass ich auf dem zweiten Arduino so etwas auf dem Display ausgebe:

50,7 °C
20,3 %

Weil die Werte vertauscht wurden.

adruinoboy

Ich habe den Sketch jetzt so verändert, wie ihr mir das geraten habt.

Code: [Select]

#include <Streaming.h>    //Bibliothek zur BT Verbindung
#include <SoftwareSerial.h>
#include "DHT.h"          //DHT Bibliothek laden

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

float tempaussen = 0;
float feuchteaussen = 0;

#define DHTPIN 2        //DHT22 wird am Pin2 ausgelesen
#define DHTTYPE DHT22   //Es handelt sich um den DHT22 Sensor

SoftwareSerial HC12(10, 11); // HC-12 TX Pin, HC-12 RX Pin
DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit "dht" angesprochen

void setup()
{
 Serial.begin(9600);             // Serial port to computer
 HC12.begin(9600);               // Serial port to HC12
}
void loop()
{
  tempaussen = dht.readTemperature(); //Temperatur außen wird gemessen und gespeichert
  feuchteaussen = dht.readHumidity(); //Luftfeuchte außen wird gemessen und gespeichert

  while (HC12.available())
  {// If HC-12 has data
  Serial.write(HC12.read());      // Send the data to Serial monitor
  //Senden der Messwerte
    HC12.print (Temperatur); // Kommando
    HC12.print (",");        // Abgrenzung
    HC12.print (tempaussen); // Messwert
    HC12.println (";");        // Abgrenzung

    HC12.print (Feuchtigkeit); // Kommando
    HC12.print (",");        // Abgrenzung
    HC12.print (feuchteaussen); // Messwert
    HC12.println (";");        // Abgrenzung
  }
  while (Serial.available())
  {      // If Serial monitor has data
  HC12.write(Serial.read());      // Send that data to HC-12
  }
  delay(1000);
}


Das funktioniert so schon mal, aber nur wenn ich etwas über den seriellen Monitor schicke.
Dann sendet er ca. 10 mal die Temp. und die Luftfeuchte und wartet bis ich wieder etwas schreibe.
Die Ausgabe sieht so aus:

Code: [Select]

10:20:32.801 -> Hallo
10:20:41.914 -> 1,21.00;
10:20:41.914 -> 2,49.50;
10:20:41.914 -> 1,21.00;
10:20:41.961 -> 2,49.50;
10:20:41.961 -> 1,21.00;
10:20:41.961 -> 2,49.50;
10:20:41.961 -> 1,21.00;
10:20:41.961 -> 2,49.50;
10:20:42.014 -> 1,21.00;
10:20:42.014 -> 2,49.50;
10:20:42.014 -> 1,21.00;
10:20:42.014 -> 2,49.50;
10:20:42.060 -> 1,21.00;
10:20:42.060 -> 2,49.50;
10:20:42.060 -> 1,21.00;
10:20:42.060 -> 2,49.50;
10:20:42.114 -> 1,21.00;
10:20:42.114 -> 2,49.50;
10:20:42.114 -> 1,21.00;
10:20:42.114 -> 2,49.50;
10:20:42.114 -> 1,21.00;
10:20:42.161 -> 2,49.50;
10:20:42.161 -> 1,21.00;
10:20:42.161 -> 2,49.50;
10:20:42.161 -> 1,21.00;
10:20:42.215 -> 2,49.50;
10:20:42.215 -> 1,21.00;
10:20:42.215 -> 2,49.50;
10:20:42.215 -> 1,21.00;
10:20:42.215 -> 2,49.50;



Ich habe nur einmal "Hallo zurück" los geschickt. Dann schickt er den ganzen Text auf einmal.

Übrigens: Der 2. Arduino hat noch meinen ersten Sketch.

Go Up