
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
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
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.








Cool? DIY-Rangliste