Elektroda.de
Elektroda.de
X
This content has been translated flag-pl » flag-de View the original version here.
  • Wi-Fi Wetterstation, Bascom und Arduino
    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.
    Wi-Fi Wetterstation, Bascom und Arduino
    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
    Wi-Fi Wetterstation, Bascom und Arduino

    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
    Wi-Fi Wetterstation, Bascom und Arduino

    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
    Wi-Fi Wetterstation, Bascom und Arduino

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

    Dritte Version
    Wi-Fi Wetterstation, Bascom und Arduino

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

    Wi-Fi Wetterstation, Bascom und Arduino Wi-Fi Wetterstation, Bascom und Arduino Wi-Fi Wetterstation, Bascom und Arduino

    Wi-Fi Wetterstation, Bascom und Arduino Wi-Fi Wetterstation, Bascom und Arduino Wi-Fi Wetterstation, Bascom und Arduino

    Wi-Fi Wetterstation, Bascom und Arduino

    Wi-Fi Wetterstation, Bascom und Arduino

    Cool? DIY-Rangliste
    Hast du ein Problem mit Arduino? Stelle bei uns eine Frage. Besuche unser Arduino-Forum.
    Über den Autor
    pier
    Niveau 24  
    Offline 
    pier hat 2278 Beiträge geschrieben mit der Bewertung 1763, und dabei 39 Mal geholfen. Wohnt in der Stadt Biłgoraj. Er ist seit 2006 bei uns.
  • #2
    fotomh-s
    Niveau 24  
    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 um die Zeichenfolge anzuzeigen, ist ein bisschen übertrieben, und ich denke darüber nach, ein solches OLED-Modul zu bekommen. Darüber hinaus sind zweifarbige (gelb-blau) Versionen zum gleichen Preis erhältlich. Die Preise dieser Module liegen wahrscheinlich bei etwa 4 € oder sogar darunter.
  • #3
    gdL
    Niveau 27  
    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 zu organisieren und auch nach langer Zeit schmerzfrei zum Projekt zurückzukehren.
    Natürlich hast du meine Stimme.
  • #4
    Anonym
    Anonym  
  • #5
    macka2
    Niveau 10  
    Ü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 OLED-Displays für weniger als 3 US-Dollar gekauft. Auf die Zustellung durch unsere Post müsste man natürlich etwas warten, denn in der Regel Zollamt -> Post-> Kunde nimmt den weitesten Weg. Der Weg von China nach Polen dauert oft weniger als der Weiterversand per Post.

    PS. Woher hast du so eine schöne transparente wasserdichte Box? Hast du einen Link oder hast du es vielleicht selbst gemacht?
  • #6
    pier
    Niveau 24  
    macka2 hat geschrieben:
    PS. Woher hast du so eine schöne transparente wasserdichte Box? Hast du einen Link oder hast du es vielleicht selbst gemacht?

    Das Gehäuse der Firma Gainta von TME.
  • #7
    Jacek Rutkowski
    Niveau 27  
    fotomh-s hat geschrieben:
    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 um die Zeichenfolge anzuzeigen, ist ein bisschen übertrieben, und ich denke darüber nach, ein solches OLED-Modul zu bekommen. Darüber hinaus sind zweifarbige (gelb-blau) Versionen zum gleichen Preis erhältlich. Die Preise dieser Module liegen wahrscheinlich bei etwa 4 € oder sogar darunter.

    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, habe ich ein Beispiel für SSD1306 nach I2C-Unterstützung unter BASCOM AVR.
  • #8
    Anonym
    Anonym  
  • #9
    Jacek Rutkowski
    Niveau 27  
    Genau, und zweifarbige Displays haben einfach einen Teil der Anzeige, z.B. gelb, den Rest blau.
  • #10
    krisRaba
    Niveau 31  
    pier hat geschrieben:
    Der einzige Nachteil, der mir aufgefallen ist, ist, dass der Atmega manchmal die SD-Karte nach dem Einschalten des Atmega "nicht sieht".

    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, dass die Karte jedes Mal beim Einschalten des Geräts nicht richtig initialisiert wurde. Es gibt ein Verfahren zur Auswahl der Kommunikationsmethode auf der Karte. Wenn Sie keine separate Steuerung der Stromversorgung haben, können alle Transienten, die auftreten, bevor die MCU hochfährt, durcheinander geraten, und Sie werden nach SPI nicht zurechtkommen. In meinem Fall hat die Leitungspolarisation mit Pull-up-Widerständen geholfen. Seit der Zeit Ruhe :)
  • #11
    kalarepah
    Niveau 9  
    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 ähnliche Station, aber ich hatte vor, den SHT11 zu verwenden, und hier kann ich sehen, dass der BME280 zu einem ähnlichen Preis gekauft werden kann, daher frage ich, welche Nachteile er hat.
  • #12
    skgroup12598
    Niveau 2  
    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 von nur wenigen Metern erforderlich ist. Dieser Sensor ist einfach zu bedienen, wird vorkalibriert geliefert und benötigt keine zusätzlichen Komponenten, sodass Sie im Handumdrehen mit der Messung der relativen Luftfeuchtigkeit, Temperatur, des Luftdrucks und der Höhe beginnen können.

    Temperaturmessung: Der BME280 kann Temperaturen im Bereich von -40 °C bis 85 °C messen. Über den Temperaturbereich von 0 bis 65 °C beträgt die Genauigkeit ±1,0 °C; Außerhalb dieses Bereichs sinkt die Genauigkeit auf ±1,5 °C.

    Messung der Luftfeuchtigkeit: Der BME280 kann die relative Luftfeuchtigkeit über einen Bereich von 0 bis 100 % mit einer Genauigkeit von ±3 % messen.

    Druckmessung: Der BME280 kann Druck zwischen 300 Pa und 1100 hPa mit einer absoluten Genauigkeit von ±1 hPa messen.

    Berechnung der Höhe/Erhöhung: Der BME280 kann den Druck mit einer solchen Genauigkeit messen (geringes Höhenrauschen von 0,25 m), dass er auch als Höhenmesser mit einer Genauigkeit von ±1 Meter verwendet werden kann.

    Hardware-Übersicht: BME280 IC
    Das Herzstück des Moduls ist der digitale Temperatur-, Feuchtigkeits- und Drucksensor der nächsten Generation von Bosch - BME280. Er ist der Nachfolger von Sensoren wie BMP180, BMP085 und BMP183.
    [F]