Inhaltsverzeichnis:

JAWS: Nur eine weitere Wetterstation - Gunook
JAWS: Nur eine weitere Wetterstation - Gunook

Video: JAWS: Nur eine weitere Wetterstation - Gunook

Video: JAWS: Nur eine weitere Wetterstation - Gunook
Video: 都市情感电视剧《请叫我机长大人》01: 重男轻女家庭的女机长为躲避家庭的矛盾,意外邂逅被母亲控制人生的男医生,两人相识相爱,共同面对生活难题(佟丽娅、佟大为、檀健次、郑合惠子) 2024, November
Anonim
JAWS: Wir bereiten unsere Sachen vor
JAWS: Wir bereiten unsere Sachen vor
JAWS: Wir bereiten unsere Sachen vor
JAWS: Wir bereiten unsere Sachen vor
JAWS: Wir bereiten unsere Sachen vor
JAWS: Wir bereiten unsere Sachen vor

Es ist ganz einfach, einen solchen JAWS zu machen.

Sie bekommen Ihre Sensoren, werfen sie auf Boards zusammen und beginnen, die Bibliotheken zu verwenden, die mit den Sensoren geliefert werden.

Beginnen wir mit der Einrichtung des Programms.

Da ich Niederländisch spreche (Muttersprachler), sind alle Daten und viele der Variablen, die ich verwende, auf Niederländisch. Jetzt haben Sie also die Chance, eine andere Sprache zu lernen…

Was wollen wir von JAWS?

Ganz einfach: Wir möchten einen Bildschirm sehen, der uns die aktuelle Uhrzeit, das Datum, die Ephemeriden (Sonne auf, Sonnenuntergang, Länge des Tages und den astronomischen Mittag) anzeigt.

Außerdem wäre es schön, die Innen- und Außentemperatur, die relative Luftfeuchtigkeit und den Taupunkt sowie den Luftdruck zu sehen.

Zur Vereinfachung verwende ich Celsius für die Temperatur und hPa (= mBar) für den Druck. Niemand muss also von Fahrenheit oder Pfund pro Quadratzoll zurückrechnen…

Zur Zeit sind nur diese Daten verfügbar…

In Zukunft werde ich Luftgeschwindigkeit, Windrichtung und Niederschlag hinzufügen.

Die Idee ist, dass ich eine Wetterhütte im Freien habe und alle Daten über 2,4 GHz an die Inneneinheit gesendet werden.

Schritt 3: JAWS: Software

JAWS: Software
JAWS: Software

Um zu unserer Software zu gelangen, können die meisten mit vorhandenen Bibliotheken gefunden werden.

In JAWS verwende ich die folgenden:

  1. SPI.h: Die Originalbibliothek von Arduino für das 4-Draht-Protokoll. Hier wird es für den TFT-Schild verwendet
  2. Adafruit_GFX.h und MCUfriend_kbv.h: beide für die Grafik und den Bildschirm verwendet. Diese machen es sehr einfach, Texte auf dem TFT-Bildschirm zu schreiben, Linien und Kästchen zu zeichnen.
  3. dht.h: für unsere DHTs: Diese Bibliothek kann für DHT11 (das blaue) und DHT22 verwendet werden.
  4. Wire.h: die Arduino-Bibliothek zur einfachen seriellen Kommunikation. Es wird für die Uhr und die SD-Karte verwendet.
  5. SD.h: Wieder ein Arduino-Original, um von der SD-Karte zu schreiben und zu lesen.
  6. TimeLord.h: Dieses hier verwende ich, um die Zeit zu messen, den Sonnenuntergang oder den Sonnenaufgang von jeder geografischen Position aus zu berechnen. Es stellt auch die Uhr für DST (Sommer- oder Winterzeit) ein.

Beginnen wir mit der Uhr.

Zum Auslesen einer Uhr benötigen Sie die Variablen, die Sie aus den verschiedenen Registern innerhalb des Uhrenmoduls erhalten. Wenn wir sie zu mehr als nur Zahlen machen, können wir die folgenden Zeilen verwenden:

const int DS1307 = 0x68;const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char* Monate = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 ", "12"};

n

Mit TimeLord erhalten wir dies als Daten für meine Stelle: (Lokeren, Belgien)

ZeitLord Lokeren; Einrichtung Lokeren. Position (51.096, 3.99); Längen-und Breitengrad

Lokeren. TimeZone(+1*60); GMT +1 = +1 x 60 Minuten

Lokeren. DstRules(3, 4, 10, 4, 60); DST vom 3. Monat, 4. Woche bis 10. Monat, 4. Woche, +60 Minuten

int jaar= Jahr +2000;

Byte sunRise= {0, 0, 12, Monatstag, Monat, Jahr}; Beginnen Sie mit der Berechnung jeden Tag ab 00 Stunden

Byte sunSet={0, 0, 12, monthday, month, year}; das gleiche wie oben

Byte maan={0, 0, 12, Monatstag, Monat, Jahr}; das gleiche wie oben

Schwimmphase;

Von hier aus werden die Berechnungen durchgeführt.

Phase = Lokeren. MoonPhase(maan);

Lokeren. SunRise(sunRise);

Lokeren. SunSet(sunSet);

Lokeren. DST(Sonnenaufgang);

Lokeren. DST(Sonnenuntergang);

int ZonOpUur=sunRise[tl_hour];

int ZonOpMin = sunRise[tl_minute];

int ZonOnUur = sunSet[tl_hour];

int ZonOnMin = sunSet[tl_minute];

Dies ist das Beispiel dafür, wie Dinge in TimeLord berechnet werden. Mit dieser Bibliothek erhalten Sie (ziemlich) genaue Zeiten von Sonnenuntergang und Sonnenaufgang.

Am Ende werde ich das gesamte Programm mit diesem Instructable setzen. Es ist ziemlich direkt.

Schritt 4: Mehr Software…

Mehr Software…
Mehr Software…
Mehr Software…
Mehr Software…

Mehr zur Software…

Wir haben drei große Teile in der Software.

1) Wir erhalten einige Rohdaten von unseren verschiedenen Sensoren: von unserer Uhr, DHTs und BMP180. Das ist unser Input.

2) Wir müssen die Daten in (1 und 0) in etwas Sinnvolles übersetzen. Dazu verwenden wir unsere Bibliotheken und Variablen.

3) Wir möchten unsere Daten auslesen und speichern. Das ist unser Output. Für den sofortigen Einsatz haben wir unser LCD-TFT, für den späteren Einsatz haben wir unsere gespeicherten Daten auf unserer SD-Karte.

In unserer loop() bekommen wir viele "GOTOs": Wir springen zu den verschiedenen Bibliotheken. Wir beziehen unsere Daten von einem der Sensoren, holen die Daten ab und speichern sie (meist) in einer schwebenden Datenvariable. Wir wählen unsere Variablennamen mit Bedacht, nicht mit x oder y, sondern mit Namen wie "tempOutside" oder "pressure" oder so. Um sie lesbarer zu machen. OK, das macht es etwas schwerer für die Verwendung von Variablen und verbraucht mehr Speicher.

Hier kommt der Trick: Wenn Sie unsere Variablen auf dem Bildschirm sichtbar machen, platzieren Sie sie einfach an der richtigen Position.

Die beiden hier verwendeten Bibliotheken, Adafruit_GFX.h und MCUfriend_kbv.h, haben ein schönes Arbeitsset, um Farben, Schriftarten und die Möglichkeit zum Zeichnen von Linien zu verwenden. Zuerst habe ich mit diesen Bibliotheken einen 12864-Bildschirm verwendet, später habe ich das im tft-Bildschirm geändert. Alles, was ich tun musste, war, Kästchen, Rechtecke und Linien zu platzieren und sicherzustellen, dass die Daten an der richtigen Stelle ausgegeben wurden. Dazu können Sie setCursor und tft. Write als Befehl verwenden. Immer sachte. Farben können auch als Variablen gesetzt werden, es gibt viele Beispiele in diesen Bibliotheken, wie man sie wählt.

Zum Beschreiben der SD-Karte benötigen wir auch einige einfache Tricks.

Zum Beispiel lesen wir unsere Daten von der Uhr als separate Stunden, Minuten und Sekunden aus. Die Temperaturen sind DHT.temperature und DHTT.temperature, um zwischen Innen- und Außenbereich zu unterscheiden.

Wenn wir sie auf die SD-Karte legen wollen, verwenden wir einen String: Wir starten jede Schleife als leerer String:

Variablenstring=""; Dann können wir es mit all unseren Daten füllen:

variablestring = variablestring + Stunden+":" + Minuten +":" + Sekunden. Dies ergibt die Zeichenfolge wie 12:00:00.

Da wir es als TXT-Datei schreiben (siehe SD.h auf Arduino.cc), fügen wir für die nächsten Variablen eine Registerkarte hinzu, damit es einfacher in Excel importiert werden kann.

So kommen wir zu: variablestring = variablestring +" \t " + DHT.temperature + " \t" + DHTT. Temperature.

Und so weiter.

Schritt 5: Einige Screenshots…

Einige Screenshots…
Einige Screenshots…
Einige Screenshots…
Einige Screenshots…
Einige Screenshots…
Einige Screenshots…

Um sicherzustellen, dass wir unsere Datensätze nicht "überladen", habe ich nur alle 10 Minuten Daten geschrieben. Wir geben uns 144 Einträge pro Tag. Nicht schlecht, denke ich.

Und natürlich können Sie diese Daten weiterverarbeiten: Sie können Durchschnittswerte bilden, nach Maxima und Minima suchen, Sie können mit vergangenen Jahren vergleichen…

Met-Büros erstellen normalerweise Durchschnittswerte für Tag und Nacht für die Temperaturen: Der Tag beginnt um 8:00 Uhr und dauert bis 20:00 Uhr.

Für Wind, Druck und Niederschlag werden die Mittelwerte von Mitternacht bis Mitternacht genommen.

Schritt 6: Fertig?

Fertig?
Fertig?
Fertig?
Fertig?

Nicht wirklich… Wie gesagt, ich möchte endlich den Windgeschwindigkeits- und Windrichtungssensor mit dem Rest der JAWS arbeiten lassen.

Die kleine Konstruktion, die ich gemacht habe, steht etwa 4 m hoch. Meteorologen erhalten Windgeschwindigkeit aus 10m Höhe. Für mich etwas zu hoch…

Ich hoffe, es hat Ihnen Spaß gemacht, dies zu lesen!

Adafruit-GFX wird hier erklärt:

MCUFRIEND_kbv.h ist hier zu finden:

Mehr über BMP 120 (wie BMP085):

Über DHT22:

Empfohlen: