Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » eigene Wetterstation über WLAN » Themenansicht

Autor Thread - Seiten: -1-
000
16.06.2021, 06:08 Uhr
wpwsaw

Avatar von wpwsaw

Guten Morgen

hier eine kurze Beschreibung, die eigentliche Frage(n) kommt(en) weiter unten!

damit ich noch ein Projekt mehr habe, will ich meine seit 2 Jahren defekte Wetterstation WS3600 durch einen Eigenbau ersetzen. Angelehnt an Rene sein Wettermodul, was ich auch toll finde und auch nachbauen möchte, habe ich mir Gedanken über die Hardwarekomunenten gemacht.

Alles Über WLAN ist für mich die beste Variante, da ich durch die Repeater eine gute Ausleuchtung auf meinem Grundstück habe um mehrere Sensoren (Temperatur und Luftfeuchte) zu verteilen. Als Kernstück habe ich einen "ESP32 Matrix Core" mit WLAN, Flashspeicher und LiPo Anschluss. Als Regensensor habe ich einen alten mit Wippe und Reed-Kontakt. Mein alter Windsensor hat noch einen Elektronikdefekt ermittelt aber die Windrichtung über eine Codescheibe mit vier (Stück/Bit) Lichtsensoren. Die Windgeschwindigkeit wird mit Impulsen über einen Magneten mit einer Spule ermittelt. Hier werde ich versuchen die Elektronik zu reparieren und das mir bekannte serielle Telegramm mit Inhalt der Windrichtung und Windgeschwindigkeit zu nutzen.

Temperatur, Luftfeuchte und Luftdruck realisiere ich mit einem BME280. Weitere Sensoren für Temperatur und Luftfeuchte werden mit einem DHT22 und zur WLAN Übertragung mit einem ESP01 realisiert. Das wäre meine Hardware. Bis auf den Windsensor funktioniert die Hardware schon recht gut, das bedeutet, eine aktuelle Messwerterfassung klappt.

die Erfassung und Speicherung der Daten muss ich mir noch überlegen.

Jetzt eine erste Frage:

Die Wlan Module laufen als Webserver und stellen in einer Schleife die aktuellen Daten als HTML Webseite bereit, die ich dann mit einem Client abrufen kann.

Da ich aber die Module mit Batterien betreiben möchte/will und die Stromaufnahme pro Modul mit WLAN bis zu ca. 200mA beträgt, kann man die Laufzeit der Batterie in Stunden messen.

Alle Module haben eine Deep Sleep Funktion, die auch gut funktioniert. Am ESP32 wecke ich das Modul mit dem internen Timer und mit einem Impuls vom Regensensor auf. Beim ESP01 mit dem Timer.

Jetzt gestaltet sich aber die Abfrage des Clients aber zeitkritisch und problematisch. Und hier die eigentliche Frage da ich mit Webserver und Webclient nicht wirklich Erfahrung habe:

Kann sich der Webserver die IP Adressen merken und wenn der Webserver augewacht ist selbständig an die Clients ohne Abfrage der Clients die Webseite auf den Clients aktualisieren?

Alle anderen Fragen kommen danach.

Danke schon einmal für das Lesen ;-))

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
16.06.2021, 08:08 Uhr
Heiko_P



Guten Morgen,

für meine Wetterstation nutze ich den Blynk-Server als zentralen "Zwischenspeicher" für die Messwerte. Man kann dazu den öffentlich erreichbaren Server nehmen oder selbst einen aufsetzen, die Anleitungen dazu gibts unter www.blynk.io. Die Sensoren arbeiten ebenfalls mit dem Deep-Sleep, sie werden über den Timer aktiviert, senden ihre Daten an den Server und gehen danach wieder schlafen. Das Auslesen der Daten vom Server und die Anzeige macht ein anderer ESP, man kann auch die Handy-App dazu nutzen.

Gruß
Heiko
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
16.06.2021, 08:13 Uhr
wpwsaw

Avatar von wpwsaw

Guten Morgen Heiko,

das werde ich mir mal ansehen,

Vielen Dank

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
16.06.2021, 15:05 Uhr
ambrosius



Hallo Wolf-Peter,

in der letzten Ausgabe der 'MAKE' waren zu diesem Problem zwei Artikel. Bei Bedarf lege ich Dir die Zeitschrift auf den Scanner.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
16.06.2021, 16:12 Uhr
wpwsaw

Avatar von wpwsaw

Hallo Holger,

ja gerne,

ich habe aber auch in der Zwischenzeit etwas sehr Interessante gefunden, wo sogar mein Windsensor passen würde

https://fipsok.de/Esp32-Webserver/Esp32

dann werde ich mal da ein bisschen herum schrauben )

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
16.06.2021, 19:36 Uhr
wpwsaw

Avatar von wpwsaw

...jetzt habe ich versucht meinen Windsensor ein zu binden, die Arduinobibliothek ist für den LaCrosse Sensor TX23 ich habe einen TX12. Beider erfassen ddie Windrichtung und Stärke gleich. Sie senden auch ein serielles Telegramm. Ich habe meinen Sensor TX12 getestet und der sendet und man kann im Telegramm die änderungen von Windrichtung und Windgeschwindigkeit gut erkennen. Nur kommt im Programm nichts richtiges bei raus. Ich habe zwar heite schon ein paar PIN Verwechslungen am ESP32 gehabt, zumal Unterschiede zwischen den einzelnen Versionen vorhanden sind, Aber ich glaube das richtige PIN ein getragen zu haben.

eventuell gibt es ja Unterschiede im Protokoll zwischen dem TX12 und TX23.

Jetzt meine 2. Frage: Hat damit schon jemand experimentiert und kennt sich mit diesem Protokoll aus? Gibt es Unterschiede zw. TX12 und TX23

Hier das Datenprotokoll vom TX12




Gruß
wpw


P.S. hier wäre die Bibliothek vom TX23

https://github.com/egzumer/Arduino-LaCrosse-TX23-Library
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 16.06.2021 um 19:40 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
16.06.2021, 21:42 Uhr
wpwsaw

Avatar von wpwsaw

Guten Abend,

da ich mich jetzt mit der Variante von

https://fipsok.de/Esp32-Webserver/Esp32

nutzen möchte, hat sich meine erste Frage erst einmal erledigt.

zur 2. Frage, ich habe selber noch einmal die TX23 Bibliothek angesehen und habe festgestellt, dass sie so nicht für meinen TX12 geeignet ist, weil bei meinem Sensor sofort nach Spannungsfreigabe über eine Steuerleitung der Windsensor ständig ein Protokoll in bestimmten Zeitabständen sendet.

Laut der Bibliothek des TX23 die etwas moderner ist, wird auf der Empfangsleitung ein LOW bit gelegt und löst damit die Sendung des Protokolls aus. Außerm ist das Protokoll etwas kürzer.


also müßte ich, wenn ich bloss könnte die Bibliothek anpassen :-((

na dann Gute Nacht......

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
16.06.2021, 22:59 Uhr
wpwsaw

Avatar von wpwsaw

...ich kann einen Teil der Bibliothek nutzen und muss den Beginn nur ändern und die Anzahl der gesamtzahl der Bits.

wie kann ich am besten z.B. die Kennung des Protokolls 11100100 mit "pulseIn(_pin,LOW);" erkennen und ab dem 9. Bit auswerten? Bitlänge 1,2 ms


vielleicht hat ja jemand so etwas schon gemacht und kann meinen Kopf entlasten.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
17.06.2021, 20:20 Uhr
wpwsaw

Avatar von wpwsaw

hier mal der Zwischenstand




...jetz versuche ich die Windsensordaten einzulesen und einzubinden...

...die Schönheit kommt zum Schluss
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 17.06.2021 um 20:20 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
17.06.2021, 21:32 Uhr
ambrosius



Nur mal aus Interesse: was stellt der 'Hitzeindex' dar?
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
17.06.2021, 22:12 Uhr
Bert




Zitat:
wpwsaw schrieb
wie kann ich am besten z.B. die Kennung des Protokolls 11100100 mit "pulseIn(_pin,LOW);" erkennen und ab dem 9. Bit auswerten? Bitlänge 1,2 ms



Die Protokollbeschreibung hast Du von hier, oder?!?:
http://www.wetter-bassersdorf.ch/pdf/WS3600_Datencodierung_V1_0.pdf

Wenn ich mir die Beschreibung zu pulseIn anschaue, dann ich das eher für Einzelpulse gedacht: https://www.arduino.cc/reference/de/language/functions/advanced-io/pulsein/

Das kann man nehmen, um die zwei Nullen im Startpuls (2,44 ms) zu finden. Andererseits kannst Du auch einfach auf die steigende Flanke warten:

Quellcode:

while( Eingang() == '0') {};


Danach würde ich mit einem Timer eine halbe Bitzeit (610 µs) warten und das erste Bit einlesen.
Nach dem ersten Bit wird der Timer auf die volle Bitzeit (1,22 ms) eingestellt und die eigentlichen Bits eingesammelt.
Problematisch wird es nur, wenn die Zeiten nicht genau genug eingehalten werden können.

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
18.06.2021, 07:44 Uhr
wpwsaw

Avatar von wpwsaw

moin, moin

ich habe heute morgen noch etwas passendes gefunden

http://forum.abacom-online.de/phpBB3/viewtopic.php?t=3968

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
18.06.2021, 19:38 Uhr
wpwsaw

Avatar von wpwsaw

Hallo Ambrosius, Hallo Bert,

ich sehe gerade, das meine Antwort von Gestern an Euch garnicht da ist. Ist schon wieder komisch...

also Hitzeindex... keine Ahnung, steht auch nicht all zu verständliches im Internet. Ist wohl so etwas wie gefühlte >Temperatur für Hitze...

und Bert, Ja und..

ich nutze den Befehl pulseIn(PIN, LOW); oder "HIGH" klappt gut

Habe das Arduino Programm an meinen ESP32 angepasst und siehe da, erst einmal landen die Rohdaten im Monitor :-) leider nicht stabil, kann aber auch am Windsensor liegen.

Will jetzt mal die Bibliothek so anpassen wie in dem Arduinoprogramm.

gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
20.06.2021, 20:52 Uhr
wpwsaw

Avatar von wpwsaw

nabend,

mal eine Frage an die Experten mit Arduino IDE

beim U880 git es einen BIT Rotationsbefehl. Bei A-IDE habe ich zwar einen Verschiebe Befehl gefunden aber keine Rotation.

hat jemand ein kleine Unterprogramm, welches ich irgend wo einbinden kann um die Bits einer 8,16 und 32 bit Variablen Bitweise zu rotieren

Grund

LSB Bit ist links und MSB ist rechts ich benötige es umgekehrt

vielen Dank

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
22.06.2021, 21:48 Uhr
mwd



Man kann Assembler Befehle mittels asm(...); verwenden. Für die Rotation gibt es ROR und ROL, die beide durch das Carry-Flag rotieren.

Grüße,
Matthias.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
22.06.2021, 21:56 Uhr
schlaub_01



Man kann sich da auch unter C kleine Makros schreiben:

#define ROR(S,i) (((S)>>(i)) | ((S)<<(8-(i))))
#define ROL(S,i) (((S)<<(i)) | ((S)>>(8-(i))))

Für breitere Datenbreiten einfach die 8 durch 16 oder 32 ersetzen...

Viele Grüße,
Sven.

Dieser Beitrag wurde am 22.06.2021 um 21:57 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
24.06.2021, 09:42 Uhr
wpwsaw

Avatar von wpwsaw

Hallo Mathias, Hallo Sven,

vielen Dank, werde ich mal ausprobieren. Leider bekomme ich von diesem Beitrag mal wieder keine Benachrichtigungen bezüglich neuer Beiträge.....


im Moment lese ich das Telegramm von LSB nach MSB bitweise aus und füge die Bits durch den Bit Set Befehl von rechts nach links in die Variable ein, negiere die Variable Bitweise und blende die nicht benötigten Bits aus...

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

// *** Dataword [0..3] = WIND Richtung (LSB zu erst)
for (int i=0; i <= 3; i++){
delayMicroseconds(bit_ms); //warten auf nächstes bit
stat = digitalRead(senspin);
if (stat)
{
bitSet(dataword,i);
}
else
{
bitClear(dataword,i);
}
Ndataword = ~dataword; //Datenwort negieren
Ndataword = Ndataword & B00001111; //obere 4 bit ausblenden

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


funktioniert wirklich gut, Also erst einmal Windsensor Thema erledigt.

Eingebunden im Hauptprogramm ist es auch schon, aber die optische Anzeige auf dem Webserver klappt noch nicht.

Gruß und Danke

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 24.06.2021 um 09:44 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
26.06.2021, 11:59 Uhr
Bert



Hallo wpw!

Du könntest beim Einlesen auch gleich andersrum arbeiten (sowohl von der Bitrichtung, als auch von der Polarität):

+++++++++++++++++++++++++++++++++++++++++++++++++++++++
// *** Dataword [0..3] = WIND Richtung (LSB zu erst)
dataword = 0; // Initialisieren
for (int i=0; i <= 3; i++){
delayMicroseconds(bit_ms); //warten auf nächstes Bit
stat = digitalRead(senspin);
if (stat)
{
bitClear(dataword, 3-i);
}
else
{
bitSet(dataword, 3-i);
}
}
Ndataword = dataword;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek