Forum: Mikrocontroller und Digitale Elektronik Giesomat 16 Sensoren


von Dirk M. (hulda)


Lesenswert?

Hallo
ich tue mich beim programmieren noch etwas schwer.
Ich möchte mit einem Arduino Uno einen 16 Channel Multiplexer (74HC4067) 
ansteuern.
An diesen 16 Giesomat Sensoren hängen.
Kann mir jemand sagen was ich beim auslesen des Multiplexers falsch 
mache?
1
#include <EEPROM.h>
2
3
4
const int MultiplexPinA = 8;
5
const int MultiplexPinB = 9;
6
const int MultiplexPinC = 10;
7
const int MultiplexPinD = 11;
8
const int OutputPin1 = 13;
9
const int OutputPin2 = 12;
10
11
byte GeneralRunmode; // 0 = CLI Terminalmode, 1 = Serial Monitormode
12
byte Reserved;  //Reserved. Maybe for transmit time, .....
13
String TerminalModeCommand;
14
String TerminalModeValue;
15
byte ConsoleMenue;
16
17
byte CurrSensor; //Counter for the loop
18
unsigned int FreqSensor[15]; //Actual read in frequencies of sensors
19
20
unsigned int RunmodeOutput1;
21
unsigned int UsedSensorForOutput1;
22
unsigned int SetpointOutput1On;
23
unsigned int SetpointOutput1Off;
24
unsigned int MinOnTimeOutput1;
25
unsigned int MinOffTimeOutput1;
26
unsigned int MinOnTimeOutput1Actual;
27
unsigned int MinOffTimeOutput1Actual;
28
29
unsigned int RunmodeOutput2;
30
unsigned int UsedSensorForOutput2;
31
unsigned int SetpointOutput2On;
32
unsigned int SetpointOutput2Off;
33
unsigned int MinOnTimeOutput2;
34
unsigned int MinOffTimeOutput2;
35
unsigned int MinOnTimeOutput2Actual;
36
unsigned int MinOffTimeOutput2Actual;
37
38
unsigned long MillisNow;
39
unsigned long MillisLast;
40
41
void setup() {
42
  Serial.begin(9600);
43
  Serial.setTimeout(100);
44
  pinMode(MultiplexPinA, OUTPUT);
45
  pinMode(MultiplexPinB, OUTPUT);
46
  pinMode(MultiplexPinC, OUTPUT);
47
  pinMode(MultiplexPinD, OUTPUT);
48
  pinMode(OutputPin1, OUTPUT);
49
  pinMode(OutputPin2, OUTPUT);
50
  TCCR1A = 0; //Reset timer 1
51
  ReadSettings();
52
}
53
54
void loop() {
55
  MillisNow = millis();
56
  if (MillisNow - MillisLast >= 1000) { //One second elapsed. Read the sensors,.......
57
    for (CurrSensor = 0; CurrSensor < 16; CurrSensor++) {
58
      //Serial.print(CurrSensor);
59
      SelectSensor(CurrSensor);
60
      CountFrequency();
61
      AssignToSensor(CurrSensor);
62
      if (GeneralRunmode == 0) { //Send to PC in CLI Terminalmode
63
        SendSensorFreqOverUart(CurrSensor);
64
      }
65
    }
66
    CheckLockTimes();
67
    CheckOutputs();
68
    if (GeneralRunmode == 0) { //Send to PC in CLI Terminalmode
69
      SendOutputStatesOverUart();
70
    }
71
    MillisLast = MillisNow;
72
  }
73
  if (Serial.available() > 0) { //Read in command and value from PC
74
    TerminalModeCommand = Serial.readStringUntil(';');
75
    Serial.read();
76
    TerminalModeValue = Serial.readStringUntil(';');
77
    Serial.read();
78
    if (GeneralRunmode == 0) {
79
      ParseTerminalMode();
80
    }
81
    if (GeneralRunmode == 1) {
82
      ParseConsoleMode();
83
    }
84
85
  }
86
}

Sensor Read:
1
void SelectSensor(byte SensorToSelect) {
2
  SensorToSelect--;
3
  digitalWrite(MultiplexPinA, (bitRead(SensorToSelect, 0)));
4
  digitalWrite(MultiplexPinB, (bitRead(SensorToSelect, 1)));
5
  digitalWrite(MultiplexPinC, (bitRead(SensorToSelect, 2)));
6
  digitalWrite(MultiplexPinD, (bitRead(SensorToSelect, 3)));
7
}
8
9
void CountFrequency() {
10
  TCNT1 = 0; //Reset Counter
11
  delay(10);            //Delay for stable channel selection
12
  bitSet(TCCR1B, CS12); //Select counter clock
13
  bitSet(TCCR1B, CS11); //Count on rising edge
14
  delay(50);            //Count for 50mS
15
  TCCR1B = 0;           //Stop counting
16
}
17
18
void AssignToSensor(int SelectedSensor) {
19
  FreqSensor[SelectedSensor - 1] = TCNT1 / 5; //Counts per 10mS
20
}

Vielen Dank
Dirk

von Stefan F. (Gast)


Lesenswert?

> FreqSensor[SelectedSensor - 1]

Sagt mir, dass SelectedSensor die Werte 1..16 haben soll.
Aber du zählst in deiner for-Schleife von 0 bis 15.

Wenn du bessere Hilfe haben willst, solltest du beschrieben, was du 
beobachtet hast und was du stattdessen erwartet hast. Ein paar serielle 
Log-Meldungen könnten dabei helfen herauszufinden was da passiert.

von Jörg R. (solar77)


Lesenswert?

Dirk M. schrieb:
> Ich möchte mit einem Arduino Uno einen 16 Channel Multiplexer (74HC4067)
> ansteuern.

Der komplette Schaltplan gehört auch in den Thread.


Dirk M. schrieb:
> Kann mir jemand sagen was ich beim auslesen des Multiplexers falsch
> mache?

Welches Ergebnis bekommst Du denn?

von Stefan F. (Gast)


Lesenswert?

Was genau soll der Timer eigentlich zählen und wo ist der Code, der ihn 
entsprechend initialisiert?

von Stefan F. (Gast)


Lesenswert?

Warum hat dein Array FreqSensor[15] nur 15 Elemente, wenn du doch 16 
Werte speichern willst?

von Watdenwas (Gast)


Lesenswert?

Was ist ein Giesomat?

von Dirk M. (hulda)


Angehängte Dateien:

Lesenswert?

Hallo,
ich dachte das das so richtig ist, von 0 zu zählen
Habe ich geändert das ich von 1 -16 zähle

1
const int MultiplexPinA = 8;
2
const int MultiplexPinB = 9;
3
const int MultiplexPinC = 10;
4
const int MultiplexPinD = 11;
5
const int OutputPin1 = 13;
6
const int OutputPin2 = 12;
7
8
byte GeneralRunmode; // 0 = CLI Terminalmode, 1 = Serial Monitormode
9
byte Reserved;  //Reserved. Maybe for transmit time, .....
10
String TerminalModeCommand;
11
String TerminalModeValue;
12
byte ConsoleMenue;
13
14
byte CurrSensor; //Counter for the loop
15
unsigned int FreqSensor[16]; //Actual read in frequencies of sensors
16
17
unsigned int RunmodeOutput1;
18
unsigned int UsedSensorForOutput1;
19
unsigned int SetpointOutput1On;
20
unsigned int SetpointOutput1Off;
21
unsigned int MinOnTimeOutput1;
22
unsigned int MinOffTimeOutput1;
23
unsigned int MinOnTimeOutput1Actual;
24
unsigned int MinOffTimeOutput1Actual;
25
26
unsigned int RunmodeOutput2;
27
unsigned int UsedSensorForOutput2;
28
unsigned int SetpointOutput2On;
29
unsigned int SetpointOutput2Off;
30
unsigned int MinOnTimeOutput2;
31
unsigned int MinOffTimeOutput2;
32
unsigned int MinOnTimeOutput2Actual;
33
unsigned int MinOffTimeOutput2Actual;
34
35
unsigned long MillisNow;
36
unsigned long MillisLast;
37
38
void setup() {
39
  Serial.begin(9600);
40
  Serial.setTimeout(100);
41
  pinMode(MultiplexPinA, OUTPUT);
42
  pinMode(MultiplexPinB, OUTPUT);
43
  pinMode(MultiplexPinC, OUTPUT);
44
  pinMode(MultiplexPinD, OUTPUT);
45
  pinMode(OutputPin1, OUTPUT);
46
  pinMode(OutputPin2, OUTPUT);
47
  TCCR1A = 0; //Reset timer 1
48
  ReadSettings();
49
}
50
51
void loop() {
52
  MillisNow = millis();
53
  if (MillisNow - MillisLast >= 1000) { //One second elapsed. Read the sensors,.......
54
    for (CurrSensor = 1; CurrSensor < 16; CurrSensor++) {
55
      Serial.print(CurrSensor);
56
57
//Ausgabe:10;20;30;40;50;60;70;80;90;100;110;120;130;140;150;0;0;
58
59
      SelectSensor(CurrSensor);
60
      CountFrequency();
61
      AssignToSensor(CurrSensor);
62
      if (GeneralRunmode == 0) { //Send to PC in CLI Terminalmode
63
        SendSensorFreqOverUart(CurrSensor);
64
      }
65
    }
66
    CheckLockTimes();
67
    CheckOutputs();
68
    if (GeneralRunmode == 0) { //Send to PC in CLI Terminalmode
69
      SendOutputStatesOverUart();
70
    }
71
    MillisLast = MillisNow;
72
  }
73
  if (Serial.available() > 0) { //Read in command and value from PC
74
    TerminalModeCommand = Serial.readStringUntil(';');
75
    Serial.read();
76
    TerminalModeValue = Serial.readStringUntil(';');
77
    Serial.read();
78
    if (GeneralRunmode == 0) {
79
      ParseTerminalMode();
80
    }
81
    if (GeneralRunmode == 1) {
82
      ParseConsoleMode();
83
    }
84
85
  }
86
}
erwartet habe ich einen Wert vom Sensor. Irgendeine Zahl.

Hier noch der Schaltplan:

von Johannes S. (Gast)


Lesenswert?

Schaltplan ist ja wohl übertrieben, das ist ein halbfertiges Gemälde von 
Modulen.
Ein analog Mux an analog Sensoren, aber gelesen wird eine Periodendauer? 
Das passt zum originalen Giesso-mat von D. Weiser (der auch mehr 
schlecht als recht funktioniert), aber im Bild sind andere Komponenten. 
Und vom Mux ist der Signalausgang nicht verdrahtet. Zum Test wäre ja 
erstmal das Gedöns ohne den Mux sinnvoll, ob das mit einem Sensor 
überhaupt funktioniert.
Und mit den angegebenen Versorgungsspannungen wird das zur 
Selbstzerstörung wenn man die 12 V über den Mux auf den ESP schaltet.
Dann schon lieber das nachbauen bzw. erweitern:
https://www.mikrocontroller.net/articles/Giess-o-mat

von Peter D. (peda)


Lesenswert?

Dirk M. schrieb:
> Hier noch der Schaltplan:

Du solltest Dich vielleicht erstmal für eine CPU entscheiden.
Arduino Uno != NodeMCU

von Weasel P. (philipp_s576)


Lesenswert?

Gehört zwar nicht voll zum Topic aber:

Der Sensor den du da hast ist Mist.
Entweder die Kontakte oxidieren dir Weg und vergiften die Erde darum.
Oder die Platine saugt sich mit der Zeit mit Feuchtigkeit voll und 
springt auf.

Besorg dir einen Induktiven Sensor und vergies die Platin.

von Axel R. (axlr)


Lesenswert?

Wo hast Du den Code/"Sketch" denn her?

von Sebastian W. (wangnick)


Lesenswert?

Hallo Dirk,

Dirk M. schrieb:
> Kann mir jemand sagen was ich beim auslesen des Multiplexers falsch
> mache?

Datenblatt 74HC4067: "Inputs include clampdiodes. This enables the use 
of current limiting resistors to interface inputs to voltages in excess 
of VCC." Wie gross sind bei dir diese Strombegrenzer?

LG, Sebastian

von Stefan F. (Gast)


Lesenswert?

Dirk M. schrieb:
> Habe ich geändert das ich von 1 -16 zähle

Nein, jetzt zählst du von 1 bis 15:
1
for (CurrSensor = 1; CurrSensor < 16; CurrSensor++)

Aber deine Funktion SelectSensor benötigt Werte von 0-15:
1
void SelectSensor(byte SensorToSelect) {
2
  SensorToSelect--;
3
  digitalWrite(MultiplexPinA, (bitRead(SensorToSelect, 0)));
4
  digitalWrite(MultiplexPinB, (bitRead(SensorToSelect, 1)));
5
  digitalWrite(MultiplexPinC, (bitRead(SensorToSelect, 2)));
6
  digitalWrite(MultiplexPinD, (bitRead(SensorToSelect, 3)));
7
}

Und dein Zugriff auf das Array benötigt Werte von 1-16:
1
void AssignToSensor(int SelectedSensor) {
2
  FreqSensor[SelectedSensor - 1] = TCNT1 / 5; //Counts per 10mS
3
}

Du musst dich schon auf eine Zählweise festlegen und das konsequent 
durch ziehen.

> erwartet habe ich einen Wert vom Sensor

Bitte lerne, das Fehlerbild und deine Erwartung präziser zu beschrieben. 
Mit so einem Einzeiler kann niemand etwas anfangen.

Zeichne einen ordentlichen Schaltplan, nicht dieses halbe Fritzing Bild. 
Schaltpläne sehen ganz anders aus. Gebe genau an, welche Bauteile du 
verwendet hast. Messe alle relevanten Spannungen und trage im Schaltplan 
ein, wo genau du was gemessen hast.

Falls du Sensoren mit digitalen Ausgängen verwendet hast (wovon ich 
ausgehe, weil dein Programm das so will), überprüfe die Signale mit 
einem geeigneten Gerät (Logic Analyzer oder Oszilloskop). Denn ohne 
korrekte Signal kann das Programm keine sinnvolle Ausgabe erzeugen.

Dein Quelltext kann so never-ever auf einem NodeMCU Board funktionieren. 
Das compiliert nicht einmal.

von Kettler (Gast)


Lesenswert?

Weasel P. schrieb:
> Gehört zwar nicht voll zum Topic aber:
> Der Sensor den du da hast ist Mist.
> Entweder die Kontakte oxidieren dir Weg und vergiften die Erde darum.
> Oder die Platine saugt sich mit der Zeit mit Feuchtigkeit voll und
> springt auf.
> Besorg dir einen Induktiven Sensor und vergies die Platin.

Das kann ich nicht bestätigen.
Der Giesomat funltioniert einwandfrei.
Der funktioniert kapazitiv und nicht Leitwert basierend !

https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/Internet_der_Dinge_WS2015/SmartPlant#Messmethode_2:_Kapazitiv

von Stefan F. (Gast)


Lesenswert?

Korrektur
> Aber deine Funktion SelectSensor benötigt Werte von 0-15:

Ich habe mich verguckt, diese Funktion benötigt Werte von 1-16 da den 
Wert am Anfang dekrementiert.

von Sebastian W. (wangnick)


Lesenswert?

Stefan ⛄ F. schrieb:
> Aber deine Funktion SelectSensor benötigt Werte von 0-15:

Hab ich auch erst gedacht, bis ich über SensorToSelect-- gestolpert bin. 
Aber  von 0-15 zu zählen macht es in der Tat überall einfacher ...

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

Kettler schrieb:
> Der Giesomat funltioniert einwandfrei.
> Der funktioniert kapazitiv und nicht Leitwert basierend !
> 
https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/Internet_der_Dinge_WS2015/SmartPlant#Messmethode_2:_Kapazitiv

Bei mir haben die Giesomaten nicht reproduzierbar gearbeitet. Eine in 
Vlies gebettete Sonde aufzuheizen und dann die Abkühlzeit zu messen 
(Gardena 1188-20) funktioniert bei mir in Garten zuverlässiger. Diese 
Methode fehlt übrigens auf der verlinkten Seite ...

LG, Sebastian

von Kettler (Gast)


Lesenswert?

Sebastian W. schrieb:
> Kettler schrieb:
>
>> Der Giesomat funltioniert einwandfrei.
>> Der funktioniert kapazitiv und nicht Leitwert basierend !
>>
> 
https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/Internet_der_Dinge_WS2015/SmartPlant#Messmethode_2:_Kapazitiv
>
> Bei mir haben die Giesomaten nicht reproduzierbar gearbeitet. Eine in
> Vlies gebettete Sonde aufzuheizen und dann die Abkühlzeit zu messen
> (Gardena 1188-20) funktioniert bei mir in Garten zuverlässiger. Diese
> Methode fehlt übrigens auf der verlinkten Seite ...
> LG, Sebastian

Bei mir schon. Dürfen halt nicht einwachsen. Das ist die kalorische 
Messmethode.
Habe ich damals für schlecht empfunden.
Auch sehr Erdreichabhängig.

von Dirk M. (hulda)


Lesenswert?

Hallo an Alle.
vielen Dank für die Infos.
Ich sehe ein das ich das nicht hinbekomme.
Ich kaufe einfach die fertigen Giesomatteile von Ramser und fertig.

Gruß

von Jörg R. (solar77)


Lesenswert?

Dirk M. schrieb:
> Ich sehe ein das ich das nicht hinbekomme.

Ich sehe nur dass Du schnell aufgibst. Nach nur 3 Beiträgen, inkl. dem 
Eröffnungsthread, ist schon Schluss?🤔

Ich verstehe nicht weshalb Du nicht auf die Kommentare eingehst, vor 
allem auf die von Stefan. Ich verstehe auch nicht weshalb Du keinen 
vernünftigen Schaltplan postest. Das Bildchen von oben ist ja wohl gar 
nichts. Ich gehe davon aus aus dass du neben Fehlern in der SW auch 
Fehler in der Schaltung hast.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Dirk M. schrieb:
> ich dachte das das so richtig ist, von 0 zu zählen

Ist es auch. Trotzdem muss dein Array 16 Elemente besitzen und nicht 15.

von Dirk M. (hulda)


Angehängte Dateien:

Lesenswert?

Jörg R. schrieb:

>
> Ich sehe nur dass Du schnell aufgibst. Nach nur 3 Beiträgen, inkl. dem
> Eröffnungsthread, ist schon Schluss?🤔
>
> Ich verstehe nicht weshalb Du nicht auf die Kommentare eingehst, vor
> allem auf die von Stefan. Ich verstehe auch nicht weshalb Du keinen
> vernünftigen Schaltplan postest. Das Bildchen von oben ist ja wohl gar
> nichts. Ich gehe davon aus aus dass du neben Fehlern in der SW auch
> Fehler in der Schaltung hast.

So ich versuche es noch mal.
Es stimmt es müssen erst einmal die Fehler in der Schaltung raus.
Ich beschreibe einmal was ich tun will.
NodeMCU als MC.
16 originale Giesomat Sensoren sollen 16 Relais ansteuern.
Als Versorgungsspannung habe ich 24 Volt zur Verfügung.
Jetzt die erste Frage:
Was ist am Schaltplan falsch?

von Jörg R. (solar77)


Lesenswert?

Dirk M. schrieb:
> So ich versuche es noch mal.

Nein, vom Schaltplan her ist es der erste Versuch.


Dirk M. schrieb:
> Was ist am Schaltplan falsch?

Man weiß gar nicht wo man anfangen soll🤔

- der Plan ist unvollständig
- es fehlen Abblockkondensatoren
- es fehlen Kondensatoren an den Spannungsreglern
- die Beschriftungen sind quasi nicht lesbar
- zufiel Fläche für die wenigen Bauteile
- die Verbindungsführung ist katastrophal
- usw. usw.

Siehe Dir mal allein die Beschaltung des oberen Reglers an. Vin geht 
einige ICs, aber wo kommt Vin her?

von Peter D. (peda)


Lesenswert?

Dirk M. schrieb:
> Was ist am Schaltplan falsch?

Man darf sich Bilder vor dem Absenden auch mal selber anschauen ob sie 
überhaupt lesbar sind.
Große Pläne als PDF, dann kann sie sich jeder selber skalieren.


Dirk M. schrieb:
> NodeMCU als MC.

Kenn ich nicht, da bin ich raus. Ich programmiere MCs immer bare metal 
ohne OS-Gerümpel.
Sowas wichtiges immer im Titel angeben, erspart viel unnützes Lesen und 
macht es für die interessant, die sich damit auskennen.

von Stefan F. (Gast)


Lesenswert?

Dirk M. schrieb:
> NodeMCU als MC.

Das ist schon wieder sehr unpräzise. Es gibt zahlreiche total 
unterschiedliche Board, die sich irgendwas mit NodeMCU im namen haben.

> 16 originale Giesomat Sensoren

Es gibt analoge und digitale. Verweise auf das konkrete 
Produkt-Datenblatt.

> Was ist am Schaltplan falsch?

Die Beschriftung des Dings links oben, vom NodeMCU Board und den zwei 
Dings rechts oben sind nicht lesbar.

Um die Spannungsregler herum fehlen die nötigen Abblock-Kondensatoren.

An den anderen ICs fehlen ebenfalls Abblock-Kondensatoren.

Die Eingänge der unteren beiden Spannungsregler sind mit dem GND 
Anschluss des oberen verbunden anstatt mit der Stromversorgung.

Der GND Anschluss des oberen Spannungsregler ist nicht mit GND von der 
Stromversorgung verbunden.

Löse dich von Fritzing! Damit kann man genau so schlecht arbeiten, wie 
mit Sandkasten-Spielzeug beim Häuserbau.

von Rainer S. (enevile) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Löse dich von Fritzing! Damit kann man genau so schlecht arbeiten, wie
> mit Sandkasten-Spielzeug beim Häuserbau.

KiCad wäre ein gutes kostenloses Programm. Die Mehrzahl ist hier 
vertreten.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
>> 16 originale Giesomat Sensoren
>
> Es gibt analoge und digitale. Verweise auf das konkrete
> Produkt-Datenblatt.

Der Giessomat Sensor ist soweit ich weiss zwar kein eingetragener 
Markenname, aber wenn vom 'Original' die Rede ist, sollte klar sein das 
es um den Sensor von D. Weiser bzw. den von Ramser Elektronik 
vertriebenen geht.
Also kapazitive Messung die als Ausgang eine variable Frequenz hat und 
zur Feuchtigkeit proportional sein soll. Da wurde schon viel drüber 
geschrieben und meine Erfahrung war das es nicht ordentlich 
funktioniert: steigender Feuchtigkeitswert wird erkannt, aber langsam 
fallender nur schlecht. Aber das soll jeder für sich rausfinden wenn er 
es nicht glaubt.

Bei uns im Betrieb ist der Besitz und das Inverkehrbringen von 
Isolierband verboten. Weil es zum Pfusch verleitet, und genauso würde 
ich das Fritzing einordnen. Zum dokumentieren von Breadboard Aufbauten 
sieht es ja nett aus, aber ein 'fotorealistischer' Schaltplan macht das 
Erkennen von Stromkreisen schwer. Die Zeit, damit etwas zu malen, 
investiert man besser in das Lernen von Eagle oder KiCad.

Für ein planmässiges Vorgehen empfiehlt sich auch erstmal das Ganze mit 
einem Kanal zu Testen, dann auf mehrere Kanäle erweitern. Einen Kanal 
kann man gut auf dem Breadboard testen, 2-3 mit Multiplexer zum Test 
auch noch. Dann wenigstens auf Lochraster löten, oder besser noch eine 
Platine entwerfen, da werden sie hier auch geholfen.

Software: Wenn es ein ESP Modul als Controller sein soll, dann muss die 
Software auch dazu passen. Für einen Einsteiger ist die Vielfalt der 
Arduinos vermutlich schon wieder verwirrend: angefangen hat es mit 
Boards mit Atmels AVR, und dazu passt der eingangs gezeigte Code. Die 
Grundfunktionen der Arduino Software aus 'Processing' wurde dann von 
Drittherstellern auf weitere Prozessoren portiert, auch die ESP. Die 
Hardware ist aber anders und z.B. die hardwarenahe Programmierung der 
Timer muss dann auch zum ESP passen. Der gezeigte Code sollte beim 
Kompilieren für ESP Module Fehlermeldungen bringen. Also für den ersten 
Test auch eine passende Frequenzmessung mit ESP suchen.

von Stefan F. (Gast)


Lesenswert?

Rainer S. schrieb:
> KiCad wäre ein gutes kostenloses Programm. Die Mehrzahl ist hier
> vertreten.

Selbst Stift und Papier sind besser geeignet.

von Schlaumaier (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Dirk M. schrieb:
>> NodeMCU als MC.
>
> Das ist schon wieder sehr unpräzise. Es gibt zahlreiche total
> unterschiedliche Board, die sich irgendwas mit NodeMCU im namen haben.

Ich wette der TO hat ein ESP-8266-NodeMCU. Was jedenfalls auf den 
Schaltplan so aussieht.  Also das Teil was ein Wlan hat, und eine 
USB-Schnittstelle. Bekommt man ab. 3 Euro in China.

Dann hat er ein Arduino-Code genommen und wundert sich das da was herum 
zickt.

Der ESP ist zwar ungefähr das selbe wie ein Arduino. Aber da gibt es 
eine Menge feine Unterschiede. Viele NICHT ALLE Libs laufen nicht, bzw. 
müssen angepasst werden etc.

Ich kann nur hoffen das er wenigstens in der IDE die passenden 
Einstellungen für die ESP gemacht hat, bzw. sich die passenden Treiber 
nachgeladen hat.

von Schlaumaier (Gast)


Lesenswert?

Nachtrag:

Wenn er kein Wlan braucht und etwas mehr Platz hat, sollte er sich ein 
2560 kaufen, und die Leitungen alle direkt anklemmen. Dann muss er sich 
auch nicht mit den Multiplexer herum schlagen. :)

von Stefan F. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Der ESP(8266) ist zwar ungefähr das selbe wie ein Arduino

Der Satz ist so Aussagekräftig wie:
Der HDi16 Motor ist ungefähr das Selbe wie ein Citroen.

von Schlaumaier (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Schlaumaier schrieb:
>> Der ESP(8266) ist zwar ungefähr das selbe wie ein Arduino
>
> Der Satz ist genau so Aussagekräftig wie: Der HDI-16 Motor ist ungefähr
> das selbe wie ein Citroen.

NAja, irgendwie hast du Recht. ;)

Man kann halt beide mit der Arduino-IDE programmieren. Der Code ist in 
der selben Syntax. Etc.  Technisch ist das alles etwas anders. Weshalb 
auch meine Aussage das gewisse Libs angepasst werden müssen.

Das Problem was ich schon hatte was, ein Freund diese Feinheiten mal 
klar zu machen, weil er dachte das wäre alles das selbe.

von Dirk M. (hulda)


Lesenswert?

Stefan ⛄ F. schrieb:
> KiCad

Ja wird gemacht:)

von Dirk M. (hulda)


Lesenswert?

Schlaumaier schrieb:
> Wenn er kein Wlan braucht und etwas mehr Platz hat, sollte er sich ein
> 2560 kaufen, und die Leitungen alle direkt anklemmen. Dann muss er sich
> auch nicht mit den Multiplexer herum schlagen. :)

Ja ist ne gute Idee...aber WLAN oder LAN wäre für später sho besser.
Was kannst Du da empfehlen?
So etwas?
Ethernet Shield für Arduino Uno / Mega 2560

: Bearbeitet durch User
von Dirk M. (hulda)


Lesenswert?

Johannes S. schrieb:
> Der Giessomat Sensor ist soweit ich weiss zwar kein eingetragener
> Markenname, aber wenn vom 'Original' die Rede ist, sollte klar sein das
> es um den Sensor von D. Weiser bzw. den von Ramser Elektronik
> vertriebenen geht.
> Also kapazitive Messung die als Ausgang eine variable Frequenz hat und
> zur Feuchtigkeit proportional sein soll. Da wurde schon viel drüber
> geschrieben und meine Erfahrung war das es nicht ordentlich
> funktioniert: steigender Feuchtigkeitswert wird erkannt, aber langsam
> fallender nur schlecht. Aber das soll jeder für sich rausfinden wenn er
> es nicht glaubt.

aber was gibt es dann für alternativen?

von Johannes S. (Gast)


Lesenswert?

Da fragst du den richtigen, die Labertasche Schlaumeier aka Puki aka 
noch ganz viele Nicks hier.
Für die Messung der Frequenzen im zig kHz Bereich wird der Input Capture 
benutzt, und wieviele hat ein Mega256 oder ESP8266/32 davon?
Der Multiplexer war schon die richtige Lösung, sowohl für die AVR als 
auch für die ESP.

Für WLAN ist ein ESP schon das zur Zeit günstigste. Und es gibt auch 
schon reichlich fertige Lösungen mit Giessomat Sensor und ESP.

Wenn es besser funktionieren soll, dann kann ich den Xaomi Flower Care 
empfehlen, der funkt mit Bluetooth, die Batterie hält einige Monate und 
es gibt Software um die Sensordaten einzusammeln (siehe z.B. Raspberry 
Forum).

von Stefan F. (Gast)


Lesenswert?

Dirk M. schrieb:
> aber was gibt es dann für alternativen?

Leute mit grünem Daumen spüren vermutlich, wie stark die Erde Wärme vom 
"Daumen" ableitet. Vielleicht ist das ein guter Ansatz.

Das hier könnte aufschlussreich sein: 
https://opus.hs-offenburg.de/frontdoor/deliver/index/docId/2804/file/Bachelorthesis_SebastianMoehringer.pdf

von Schlaumaier (Gast)


Lesenswert?

Dirk M. schrieb:
> Ethernet Shield für Arduino Uno / Mega 2560

Wäre eine Lösung falls du Kabel brauchst.

Ansonsten lese mal den Blog hier. 
https://www.mikrocontroller-elektronik.de/nodemcu-esp8266-tutorial-wlan-board-arduino-ide/

Da ist das prima erklärt.

Relativ weit unter kannst du lesen was ich meine mit "Kleinen 
Unterschieden" in der IDE-Einstellung. ;)

Mit den ESP-Teilen kannst du ein Arduino auch nachrüsten. Und da der 
MEGA 2560 auch mehr Speicherplatz hat, wäre damit alles einfacher. 
Einzige Nachteil : der 2560 kostet in China ca. 8-12 Euro. In DE ca. 14 
Euro.

https://www.christians-shop.de/Boards  <- habe ich selbst schon bei 
(allerdings über Ebay) bestellt.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Leute mit grünem Daumen spüren vermutlich, wie stark die Erde Wärme vom
> "Daumen" ableitet.

und wenn man mal ein paar Tage wegfahren will (auch wenn uns die 
Regierung jetzt komplett einsperren will)?
Auch wenn ich jetzt keine gute Erfahrung mit den Sensoren gemacht habe, 
es ist zumindest ein gutes Einsteigerprojekt zum Lernen.

von Stefan F. (Gast)


Lesenswert?

Johannes S. schrieb:
> und wenn man mal ein paar Tage wegfahren will (auch wenn uns die
> Regierung jetzt komplett einsperren will)?

Du hast nicht verstanden, worauf ich hinaus wollte.

Mein Vorschlag ist, einen PTC in die Erde zu stecken zu zu erwärmen. 
Dann Strom abschalten und messen wie schnell er sich wieder abkühlt.

Die Profis benutzen Tensiometer. Da wird gemessen, wie stark Boden und 
Pflanze an einem mit Wasser gefüllten Keramik-Zylinder saugen.

von Dirk M. (hulda)


Lesenswert?

Ich fasse mal zusammen.
Am einfachsten und am besten für den Einstieg ist
Arduino Mega 2560 +
arduino mega 2560 ethernet shield
Giesomatsensoren von Ramser Vertrieb.

ist das richtig so?

von Schlaumaier (Gast)


Lesenswert?

Ich habe mir diese Sensoren aus China bestellt.

https://www.ebay.de/itm/401794432896?hash=item5d8cd07f80:g:HdgAAOSwjPJdEIB~

Bin mal gespannt wie lange die überleben. In diversen Blocks steht man 
darf sich nicht hetzen. Habe ich aber eh nicht vor. Alle 4 Std. eine 
Abfrage sollte locker reichen.

von Johannes S. (Gast)


Lesenswert?

ich kenne die vielen Diskussionen hier, hatte ja selbe eine mit einem 
Selbstbausensor eröffnet.
Die Kalorimetrische Methode ist schwierig zu kalibrieren, vor allem wenn 
Sensoren auch draußen funktionieren sollen. Tensiometer wurden auch 
immer wieder als Referenz genannt, sind nur etwas aufwändiger zu bauen.
Funk ist gut weil besserer WAF, aber dann nicht mit den stromhungrigen 
WLAN Funkern. Die Xiaomi mit BT kommen mit einer Knopfzelle aus, da 
beschränkt sich das selbermachen nur auf kaufen und Auswertung basteln. 
Und evtl. automatische Bewässerung ohne die Bude zu fluten :)

von Johannes S. (Gast)


Lesenswert?

Bei solchen Schlaumeier Tipps bin ich raus.

Diese China Sensoren werden nicht ohne Grund im 10er Pack verkauft...

von DerdaWieda (Gast)


Lesenswert?

Schlaumaier schrieb:
> Ich habe mir diese Sensoren aus China bestellt.
>
> Ebay-Artikel Nr. 401794432896
>
> Bin mal gespannt wie lange die überleben. In diversen Blocks steht man
> darf sich nicht hetzen. Habe ich aber eh nicht vor. Alle 4 Std. eine
> Abfrage sollte locker reichen.

Das sind die größten Rotzsensoren!
Die gammeln weg, wie sonst noch was.
Ausserdem geben sie noch Metallionen ab!

Nimm den Giesomat Sensor und gut ists.

von Schlaumaier (Gast)


Lesenswert?

DerdaWieda schrieb:
> Das sind die größten Rotzsensoren!
> Die gammeln weg, wie sonst noch was.

Danke für den Tipp.

Dann weiß ich ja wo ich suchen muss, wenn es Probleme gibt. Verbauen 
werde ich sie trotzdem. Ich schmeiß doch nix weg was neu bei mir herum 
liegt. Die wären längst eingebaut wenn die Wetterfrösche nix von Schnee 
erzählt hätten. Und ich darf keine Temperaturen keiner 5 ° habe, sonst 
ist mein Basilikum TOT.

Kommen eh nur in ein Blumenkasten. Und da tausche ich eh 1 x im Jahr die 
Erde komplett aus. Dann kann ich sie mir ja ansehen, bzw. dann die von 
dir empfohlenen kaufen.

von Kettler (Gast)


Lesenswert?

Johannes S. schrieb:
> Die Kalorimetrische Methode ist schwierig zu kalibrieren, vor allem wenn
> Sensoren auch draußen funktionieren sollen.

Und brauchen viel Strom fürs heizen!

von Stefan F. (Gast)


Lesenswert?

Dirk M. schrieb:
> Am einfachsten und am besten für den Einstieg ist
> Arduino Mega 2560 + arduino mega 2560 ethernet shield

Das kommt ganz auf deine Ziele und Vorkenntnisse an. Obwohl ich schon 
einiges mit AVR Mikrocontrollern und embedded Web Anwendungen gemacht 
habe, wäre für mich ein Raspberry Pi mit eintsprechendem I/O-Hat bei 
weitem einfacher.

Aus sportlichem Ehrgeiz heraus würde ich aber wahrscheinlich eins meiner 
ESP-8266 Module aus der Bastelkiste holen und einen I/O Expander dazu 
kaufen. Irgendwas serielles mit SPI oder I²C.

Wenn es Ethernet sein muss, würde ich (auch wieder aus sportlichem 
Ehrgeiz heraus) ein CrumbX1-Net Modul verwenden, davon habe ich nämlich 
auch noch 2-3 herum liegen. Für irgendwas müssen die ja gut sein :-)

von Peter D. (peda)


Lesenswert?

Schlaumaier schrieb:
> Ebay-Artikel Nr. 401794432896

Sehr schön. Am besten gefällt mir die ausführliche Beschreibung und der 
exzellente Schaltplan.
Wie kann man nur solchen Mist kaufen. Bei ner Katze im Sack gibt es mehr 
Informationen dazu.

von Etwas (Gast)


Lesenswert?

Kettler schrieb:
> Johannes S. schrieb:
>
>> Die Kalorimetrische Methode ist schwierig zu kalibrieren, vor allem wenn
>> Sensoren auch draußen funktionieren sollen.
>
> Und brauchen viel Strom fürs heizen!

Was ist viel Strom?
Welche Grössenordnung reden wir da?

von Schlaumaier (Gast)


Lesenswert?

Peter D. schrieb:
> Wie kann man nur solchen Mist kaufen. Bei ner Katze im Sack gibt es mehr
> Informationen dazu.

In den man wie bei mir üblich bei den China-Zeug sich VOR den Kauf 
informiert. Besonders wie ich das Anzusteuern habe. Also wo bekomme ich 
Libs (wenn nötig) her. Wie frage ich das ab. Was brauch ich ein 
Hühnerfutter dazu, etc. etc.

Ich habe schon wunderschöne Displays bei Ebay aus China gesehen für ganz 
kleines Geld aber keine Datenblätter, Anschlusspläne etc. Ergo NICHT 
gekauft.

https://funduino.de/nr-16-feuchtigkeitssensor

http://fraunerd.de/feuchtigkeit-messen-mit-arduino/

<- das ist zwei der Seiten die ich VORHER gelesen habe.

Die einzige Info die ich nirgends gelesen habe ist, das die wie genannt 
sehr schnell "verrotten". Und ich so wie die Aussage war realtiv schnell 
neue brauche. Geplant war der Einsatz von 6. 10 habe ich also auch etwas 
Ersatz. ;) Was ich bei China-Sachen grundsätzlich habe.

von Axel R. (axlr)


Lesenswert?

Schlaumaier schrieb:
> Also wo bekomme ich
> Libs (wenn nötig) her.

Was bedeutet das?

von Frutu (Gast)


Lesenswert?

Schlaumaier schrieb:
> Die einzige Info die ich nirgends gelesen habe ist, das die wie genannt
> sehr schnell "verrotten".

Braucht man nicht zu erwähnen, weil es das Fachwissen hergibt.
Nennt sich Elektrolyse.

Ansonsten muss man sich einlesen:
https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/Internet_der_Dinge_WS2015/SmartPlant#Messmethode_1:_Resistiv


Der Giesomat Sensor scheint aber gebräuchlich zu sein:
https://sgerber.de/2014/08/kapazitiver-feuchtigkeitssensor-fuer-blumenerde/
https://thomas-geers.de/gewaechshaus.html
http://fam-haugk.de/giessautomat-fuer-pflanzen

von Stefan F. (Gast)


Lesenswert?

Frutu schrieb:
> Braucht man nicht zu erwähnen, weil es das Fachwissen hergibt.
> Nennt sich Elektrolyse.

Un wenn es nicht die Elektrolyse ist, dann lagern sich Salze an, die das 
Ding bald komplett isolieren.

von Stefan F. (Gast)


Lesenswert?

Frutu schrieb:
> Der Giesomat Sensor scheint aber gebräuchlich zu sein

Unter Elektronikern die ihre Elektronik Projekte anpreisen.

Aber was sagen die Anwender dazu, die solche Anlagen gekauft haben? Das 
wäre doch mal viel spannender!

von Schlaumaier (Gast)


Lesenswert?

Axel R. schrieb:
> Schlaumaier schrieb:
>> Also wo bekomme ich
>> Libs (wenn nötig) her.
>
> Was bedeutet das?

Das bedeutet das viele Bauteile/Kompnenten meist über Libarys 
angesteuert werden, und man sehr vieles aber nicht alles auf Github 
findet. Vor allen dann wenn man nicht weiß wo man suchen muss.

Also sehe ich mir an wie andere Leute so was ansteuern.

von Sabi7 (Gast)


Lesenswert?

DAS ist das Forum wie man es kennt.
Frage: Wie mache ich das mit Produkt X?
Antwort: Bei Produkt Y, bla bla bla

Das ist schon alles wieder Offtopic, was ihr Quatscht.

von Dirk M. (hulda)


Lesenswert?

Sabi7 schrieb:
> DAS ist das Forum wie man es kennt.
> Frage: Wie mache ich das mit Produkt X?
> Antwort: Bei Produkt Y, bla bla bla
>
> Das ist schon alles wieder Offtopic, was ihr Quatscht.

Dirk M. schrieb:
> Ich fasse mal zusammen.
> Am einfachsten und am besten für den Einstieg ist
> Arduino Mega 2560 +
> arduino mega 2560 ethernet shield
> Giesomatsensoren von Ramser Vertrieb.
>
> ist das richtig so?

von Peter D. (peda)


Lesenswert?

Schlaumaier schrieb:
> http://fraunerd.de/feuchtigkeit-messen-mit-arduino/

Na klar, sowas kann ja nur eine Frau entwickelt haben. Ich schließe mich 
da den Amazon-Bewertungen an: Geschenkt ist noch zu teuer.

Die kapazitive Methode scheint dagegen ganz brauchbar, allerdings nicht 
mit dem 74HC14.
Ich hab da gute Erfahrungen mit dem ATtiny25 gemacht. Mit dem ADC kann 
der sehr gut kleine Kapazitäten messen. VCC und Temperatur haben kaum 
Einfluß.

von Hinterlader (Gast)


Angehängte Dateien:

Lesenswert?

"Ich habe ja 10 zu Hause" -> Bald nicht mehr.

von Schlaumaier (Gast)


Lesenswert?

Hinterlader schrieb:
> "Ich habe ja 10 zu Hause" -> Bald nicht mehr.

hihi.  Naja, neu zum wegwerfen sind sie wie gesagt zu schade. Aber 
feiner Titel für das Bild hihi

von JoHu (Gast)


Lesenswert?

Frutu schrieb:
> Der Giesomat Sensor scheint aber gebräuchlich zu sein:
> https://sgerber.de/2014/08/kapazitiver-feuchtigkeitssensor-fuer-blumenerde/
> https://thomas-geers.de/gewaechshaus.html
> http://fam-haugk.de/giessautomat-fuer-pflanzen

Wo habt ihr die Giesomat Sensoren her?
Reichelt und Amazon kennen die Dinger nicht :-/

von Forist (Gast)


Lesenswert?

JoHu schrieb:
> Wo habt ihr die Giesomat Sensoren her?

Schon mal mit der richtigen Schreibweise versucht?

Giess-o-mat

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.