logo elektroda
logo elektroda
X
logo elektroda

Wi-Fi Wetterstation, Bascom und Arduino

pier 

Hallo
Ich stelle die Wetterstation vor, an der ich seit einiger Zeit arbeite.
Der Beginn der Arbeit ist auch mein Beginn des Spiels mit Arduino.
Es begann mit einem vorgefertigten Projekt einer winzigen Station mit einem OLED-Display.

Damals war das Hochladen des Programms auf ESP8266 eine Meisterleistung für mich. Später fing ich an zu kombinieren, dies und das zu verbessern, andere Software auszuprobieren. Auf Basis dieser Station wurde ein Datenempfänger aus dem Netzwerk erstellt.

Der nächste Schritt war die Herstellung eines externen Wettersensors.
Es wurden drei Versionen erstellt.

Erste Version


Kompletter Mißerfolg. Das System wurde von einer Batterie Li-Ion über einen Wandler buck-boost 3,3 V gespeist. Geladen wird der Akku mit der TP4056 Schaltung aus einer 2W Solarzelle. Die Schaltung wurde auch nicht zyklisch in den Schlafmodus versetzt, was zu einer kontinuierlichen Stromaufnahme von 80 mA führte. Die Ergebnisse konnten auf dem Display und durch Verbinden mit dem Gerät auf der Browserseite abgelesen werden. Eine solche Anordnung hatte keine Daseinsberechtigung.

Zweite Version


Fast alles wurde in dieser Version verbessert. ESP8266 bekam alle 30 Minuten zyklisches Aufwachen aus dem "Deepsleep"-Zustand, den Konverter habe ich zugunsten LDO-Stabilisator aufgegeben, die Messergebnisse werden an den BLYNK- und Thingspeak-Server gesendet, die Ablesemöglichkeit auf dem OLED-Display bleibt unverändert. Ich habe auch eine Batteriespannungsanzeige hinzugefügt.
Jetzt verbraucht die Schaltung jede halbe Stunde für ein paar Sekunden 80 mA, die restliche Zeit etwa 2 mA, weil das Display permanent an ist.

Der Schaltplan


Der Schaltplan zeigt noch HTU21d und BMP280 in der endgültigen Version geändert zu BME280.

Dritte Version


In dieser Version wurde nur der Sensor verbessert und verändert. In früheren Versionen befand sich der Sensor im Inneren des Gehäuses, jetzt befindet er sich in einer Schutzhülle. HTU21d und BMP280 wurden durch einen BME280-Sensor ersetzt.
Die Schutzhülle besteht traditionell aus Blumentopf Untersetzer, die mit M3 Edelstahl Gewindestangen verschraubt sind.
Daten von einem solchen Sensor können auf vier Arten ausgelesen werden: direkt auf dem Display, mit einem Smartphone über die Blynk-Anwendung, auf unserem Thingspeak-Kanal und an der Wetterstation selbst.

Programm der Endversion:
Code: C / C++
Melde dich an, um den Code zu sehen


Sobald ich das Messteil hatte, war es die Station selbst daran.
Ich hatte lange Zeit ein 3,5 'Display auf dem SSD2119-Treiber. Ich habe es gekauft, weil es ein Betriebsverfahren in Bascom dafür gibt, und es lag ungefähr zwei Jahre in der Schublade. Jetzt würde ich ein ganz anderes LCD verwenden, da dieses langsam ist und viele I/0-Pins benötigt.
Das Ganze wird von atmega128 auf einer Platine gesteuert. Ich weiß nicht einmal, wofür diese Platine war, ich habe sie gekauft. Da das Display nur 3,3 V Stromversorgung verträgt und atmega mit dieser Spannung versorgt wird, ist es auch stark übertaktet, 16 Mhz bei 3,3 V. Ich weiß, es ist eine Übertreibung, aber bevor die ganze Station erstellt wurde, habe ich das Ganze lange getestet und es ist nichts Schlimmes passiert.
Die Sensoren HTU21d, BH1750 und RTC DS3231 sind über I2C mit dem atmega verbunden.
Standardmäßig liest atmega Daten von ihnen und sendet sie an das Display. Der Lichtsensor wird benötigt, um die Intensität der Hintergrundbeleuchtung automatisch zu ändern - atmega steuert den PWM-Konverter auf der Anzeigeplatine. Auf das Synchronisieren der Uhrzeit mit dem Server habe ich verzichtet, da man die Winter-/Sommerzeit im Programm noch selbst umstellen muss, der DS3231 bietet ohnehin sehr viel Genauigkeit. Über Serial-A erhält der Controller auch Daten vom ESP.
Der drahtlose Teil wird von ESP8266 mit dem Programm in Arduino behandelt. ESP verbindet sich mit dem Wi-Fi-Netzwerk, liest Wettervorhersagen für den aktuellen Tag und zwei Tage im Voraus vom Weatherunderground-Server sowie das Alter des Mondes, die neuesten Werte von meinem Thingspeak-Kanal und die Uhrzeit vom NTP-Server. Wie ich bereits geschrieben habe, nutzt er seine Zeit nicht. Dann formatiert es diese Daten und sendet sie jede Minute seriell. Der atmega empfängt diese Daten und stellt sie auf dem Display dar.
Das fertige Programm ist weitestgehend aus dem Netz. Ich habe es aus wahrscheinlich vier verschiedenen zusammengeklebt und Sendedaten über Serial-A hinzugefügt.
Bitmaps mit Symbolen für Wetter und Mondphasen werden auf der SD-Karte gespeichert.
Die Phase des Mondes wird aus seinem Alter berechnet. Atmega macht das natürlich.

Nun, ich weiß, es könnte einfacher sein. ESP allein hätte alles getan, aber ich wollte die Teile verwenden, die ich hatte. Andererseits glaube ich nicht, dass ich ein 3,5-Zoll-Display gesehen habe, das mit ESP funktionieren würde, und ich weiß nicht, ob es an Pins mangeln würde.

5 V Stromversorgung. Stromverbrauch bei maximaler Helligkeit der Hintergrundbeleuchtung von 480 mA.
Das Gehäuse besteht aus Laminat, seine einzelnen Elemente wurden in Eagle gestaltet und wie gewöhnliche Leiterplatten hergestellt. Einzelne Elemente wurden durch Löten verbunden. Der hintere Teil wird mit Schrauben befestigt. Ich muss es nur mit etwas Lack besprühen, damit das Kupfer nicht oxidiert, aber jetzt habe ich nicht die Voraussetzungen dafür.

Wenn Sie Programme kommentieren, insbesondere in Bascom, berücksichtigen Sie bitte, dass ich nie eine Programmiersprache gelernt habe und sie so geschrieben ist, wie sie ist. Das für ESP ist einfacher, also weniger von mir durcheinander gebracht.

Quellen des Programms für atmega befinden sich im Anhang.

Programm für ESP8266:
Code: C / C++
Melde dich an, um den Code zu sehen


Die Station ist seit mehreren Wochen in Betrieb und friert nicht ein. Der einzige Nachteil, der mir aufgefallen ist, ist, dass der Atmega manchmal die SD-Karte nach dem Einschalten des Atmega "nicht sieht". Dies wird durch eine Meldung auf dem Display angezeigt. Ein Reset oder Neustart des Netzteils hilft. Das hängt wahrscheinlich mit dem Übertakten zusammen.
Ich weiß, dass der Sensor selbst schon in der DIY-Abteilung vorgestellt wurde, aber damals war er ein Einzelgerät und jetzt ist er Teil der gesamten Wetterstation geworden.

Wenn ich etwas vergessen habe, schreiben Sie, fragen Sie nach.
Und etwas fürs Auge.









Über den Autor
pier
pier hat 2400 Beiträge geschrieben mit der Bewertung 1861 , und dabei 40 Mal geholfen. Wohnt in der Stadt Biłgoraj. Er ist seit 2006 bei uns.

Kommentare

Kommentar hinzufügen
fotomh-s 14 Nov 2017 20:37

Gibt es auch Prozeduren oder Bibliotheken für diese OLEDs oder einen verfügbaren Code in Bascom? Ich frage, weil sie als Grafikdisplays ziemlich billig sind, aber eigene Prozeduren zu schreiben, nur... [Mehr erfahren]

gdL 14 Nov 2017 21:19

Grüße an den Meteo-Fan auf Elektroda. Ein sehr schönes Design. Planen Sie die Weiterentwicklung? Was den Code betrifft, versuche ich seit einiger Zeit, Klassen zu verwenden. Es hilft mir, alles logisch... [Mehr erfahren]

Anonymous 14 Nov 2017 23:11

Ich habe in C geschrieben, basierend auf dem Code auf Arduino (C++). Es ist einfach, auf Bascom umzuschreiben, es gibt nicht viel davon. Wenn sie interessiert sind, kann ich teilen. Übrigens ist der... [Mehr erfahren]

macka2 15 Nov 2017 10:13

Üblicherweise kaufe ich die meisten kleinen Sensoren, Bildschirme etc. direkt bei einem Chinesen bei eBay. Kürzlich habe ich zusammen etwa 4 € für die Sensoren BH1750 und BME280 bezahlt und kleine... [Mehr erfahren]

pier 15 Nov 2017 11:04

Das Gehäuse der Firma Gainta von TME. [Mehr erfahren]

Jacek Rutkowski 15 Nov 2017 23:20

Die Zweifarbigkeit besteht darin, dass die Oberseite, etwa 16 Zeilen, gelb und der Rest blau usw. ist. Ich habe OLED mit SSD1306 noch nicht gesehen, um die Farben zu ändern. Wenn Sie interessiert sind,... [Mehr erfahren]

Anonymous 16 Nov 2017 01:50

Soweit ich mich erinnere, kann SSD1306 maximal 128 x 64 Monopixel verarbeiten. [Mehr erfahren]

Jacek Rutkowski 16 Nov 2017 06:54

Genau, und zweifarbige Displays haben einfach einen Teil der Anzeige, z.B. gelb, den Rest blau. [Mehr erfahren]

krisRaba 17 Nov 2017 21:23

Sie haben den Schaltplan der Station nicht angegeben, daher ist es unmöglich zu überprüfen, ob Sie Widerstände haben, die einzelne Leitungen auf der SD-Karte polarisieren. Früher hatte ich das Problem,... [Mehr erfahren]

kalarepah 28 Nov 2017 13:43

Kann der Sensor BME280 als Modul im Außenbereich eingesetzt werden? Wird es nicht zu schnell zerstört? Ist die Genauigkeit und Haltbarkeit eines solchen Sensors ähnlich wie bei SHT11? Ich baue eine... [Mehr erfahren]

skgroup12598 06 Dez 2022 08:09

Der BME280 von Bosch ist ein Präzisionssensor, der in einer Vielzahl von Anwendungen eingesetzt wird, von der Wetterüberwachung über Spielsteuerungen bis hin zur Höhenmessung, bei denen eine Genauigkeit... [Mehr erfahren]