Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » ESP32 mit SD-Karten-shield als Wetterstation » Themenansicht

Autor Thread - Seiten: -1-
000
21.06.2024, 21:07 Uhr
wpwsaw
Default Group and Edit


moin, moin,

da hier ja doch einige Leute sich mit anderer Elektronik speziell auch mit ESP32 und C-Prog beschäftigen möchte ich hier mein Projekt mal anbringen um einige Fragen stellen zu können.


ich hatte vor zwei Jahren damit angefangen meine alten Wetterstationsteile meiner defekten WS3600 (TX11-Regenmesser; TX13-Temp und Feuchtigkeit; TX12 Wind/Windrichtung) aufzuarbeiten und einneues Kernstück (ESP32-Himalaya) hinzu zu fügen. Erst einmal alles auf einem Steckbrett.

In diesem Jahr lag mir der Kram im Wege, beste Lösung - fertig stellen. Also habe ich die Programmierung in der Arduini-IDE noch einmal neu gestaltet (aus vielen im Internet gefundenen Teilprogrammen zusammen gestellt) mit diesem Ergebnis

http://93.217.59.133/WetterWPW.html (nur temporär)

in den letzten Tagen habe ich dann dem neuen Kern das alte Wettergehäuse (TX13) spendiert. Sie hängt nun probeweise an meinem Fenster, da ich noch auf meine aktive USB-Verlängerung und einem Wetterschutzkasten für das Steckernetzteil warte.





wie ihr oben im Link sehen konntet läuft die Software, aaaaber es fehlt etwas.

Zur Erklärung:
der ESP32 läuft als WLAN Webserver. In den Teilprogrammen werden alle Sensoren ausgelesen und in Variablen gespeichert. Diese werden im Hauptprogramm zusammen gefasst und an die Website übergeben.

Als 1.
ich möchte, dass die Daten auf der SD-Karte in einer Datei (Tagesdatum als Dateiname) gespeichert werden und alle 10 minuten ein neuer Datensatz in die Datei eingefügt wird.(als Text

und 2.
das ich die Daten von der SD-Karte wieder auslesen kann entweder über die Webseite als Downloadfunktion oder mit einem kleinen Programm über die USB-Verbindung

also ohne die SD Karte aus dem Slot ziehen zu müssen.

Ich möchte dann die Dateien in Excel weiter bearbeiten

ich habe schon eine Experimente (Schreiben/Lesen) mit der SD Karte gemacht, das würde ich auch noch hinbekommen. Aber ein Herunterladen der Dateien von der SD Karte und danach das Löschen der Dateien, da fehlt mir die Paraxis im Umgang mit dieser Programmiersprache.

Es werden garantiert Profis unter euch sein die mich etwas unterstützen könnten

Danke schon im Voraus

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 22.06.2024 um 15:57 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
22.06.2024, 13:57 Uhr
Ordoban



Zu 1. brauchst du:
- einen Timer, der alle 10min auslöst: Beispiel in https://github.com/espressif/esp-idf/tree/master/examples/system/esp_timer/
- Zugriff auf die SD-Karte als Dateisystem: Beispiel in https://github.com/espressif/esp-idf/tree/master/examples/storage/sd_card/sdmmc/
In dem Beispiel wird eine Datei neu erzeugt: fopen(path, "w");. Um an eine bestehende Datei Daten anzuhängen wird stattdessen fopen(path, "a"); benutzt.

Zu 2. Ein Webserver beim ESP besteht aus Handlern (=Modul-artige Unterprogramme), für jede URL oder Transfertyp einer. Du müsstest in deinen bestehenden Webserver einen neuen Handler für den Download einfügen.
In https://github.com/espressif/esp-idf/tree/master/examples/protocols/http_server/file_serving/main/file_server.c ist ein gutes Beispiel wie das aussehen könnte (Zeile 212+ static esp_err_t download_get_handler(httpd_req_t *req))
Edit:
Das Beispiel enthält auch einen Handler zum löschen von Dateien. (Zeile 407+ static esp_err_t delete_post_handler(httpd_req_t *req))
Es benutzt einen Teil der URL als Dateinamen. Da du vermutlich immer den selben Dateinamen verwendest, kann dein Handler deutlich kürzer werden.
--
Gruß
Stefan

Dieser Beitrag wurde am 22.06.2024 um 14:29 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
22.06.2024, 14:35 Uhr
wpwsaw
Default Group and Edit


Hallo Stefan,

vielen Dank,

werde ich mal einzeln testen und dann versuchen bei mir einzubauen

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
22.06.2024, 16:13 Uhr
wpwsaw
Default Group and Edit


...so, Bauseitig habe ich jetzt bis auf ein paar fehlenden V4A Schrauben alles fertig. Dazu musste ich mal wieder in den Katakomben meines Hauses herumkriechen



diese Kabelansammlungen ziehen sich links und rechts in den Dachschrägen über die Länge des ganzen Hauses entlang ;-)

aber es hat sich aus meiner Sicht gelohnt.





jetzt kann ich das SD-Kartenproblem angehen

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 22.06.2024 um 16:13 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
25.06.2024, 09:57 Uhr
JoergR



Das ESP32-IDF bietet auch die Möglichkeit, Daten dauerhaft im Flash zu speichern, Thema: NVS (Non-volatile storage). Ich könnte mir vorstellen, dass es entsprechende Funktionen auch in der Arduino-Welt gibt.
Wenn man vom Flash eine 1MB-Partition abzweigt, sollten sich Wetterdaten von einigen Monaten speichern lassen, die einen Stromausfall und sogar das Flashen einer neuen Firmware überstehen. Alles Nötige hat Dein NodeMCU onboard und Du umgehst Kontaktprobleme am SD-IF, die bei nicht idealen Umgebungsbedingungen in der Wetterstation auftreten werden.

Gruß
Jörg
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
25.06.2024, 10:29 Uhr
wpwsaw
Default Group and Edit


guten Morgen und danke für deine Antwort

darüber hatte ich auch schon einmal nachgedacht. Ich bin nur nicht so gut in C++ und im Umgang mit dem ESP32.

Es ist ein ESP32 Himalaya Matrix-Core. Das C++ Programm ist jetzt schon 1 MB.

Mein ESP hat 4MB Flash und ich habe schon 1,26MF für den Filemanager abgezweigt.

Leider habe ich noch 2 andere Problemchen

1. der Regensensor arbeitet mit einem RED Kontakt und löst bei jedem Schalten einen Interrupt im ESP aus. Leider kommt es mehr oder weniger vor, dass er ohne Regen auch impulse zählt.
2. Mein P3 steht auf der Hebebühne und das vordere Differenzial liegt auf der Werkbank ;-(

aber ich bin ab und zu am Testen von neuen Ideen für meine Wetterstation

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
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

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