İçindekiler:

JAWS: Bir Başka Hava Durumu İstasyonu: 6 Adım
JAWS: Bir Başka Hava Durumu İstasyonu: 6 Adım

Video: JAWS: Bir Başka Hava Durumu İstasyonu: 6 Adım

Video: JAWS: Bir Başka Hava Durumu İstasyonu: 6 Adım
Video: Katil köpek Balığı Filmi korku Gerilim | Türkçe Dublaj İzle 2024, Temmuz
Anonim
JAWS: Eşyalarımızı Hazırlamak
JAWS: Eşyalarımızı Hazırlamak
JAWS: Eşyalarımızı Hazırlamak
JAWS: Eşyalarımızı Hazırlamak
JAWS: Eşyalarımızı Hazırlamak
JAWS: Eşyalarımızı Hazırlamak

Böyle bir JAWS yapmak oldukça basittir.

Algılayıcılarınızı alıp panolara atıyorsunuz ve sensörlerle birlikte gelen kitaplıkları kullanmaya başlıyorsunuz.

Programın kurulumu ile başlayalım.

Hollandaca konuştuğum için (anadili) tüm veriler ve kullandığım değişkenlerin çoğu Hollandaca. Yani şimdi başka bir dil öğrenme şansınız var…

JAWS'tan ne istiyoruz?

Kolay: Bize gerçek zamanı, tarihi, efemerisleri (güneş doğuş, gün batımı, günün uzunluğu ve astronomik öğlen) gösteren bir ekran izlemek istiyoruz.

Bunun yanında iç ve dış sıcaklığı, bağıl nemi ve çiğlenme noktasını ve hava basıncını görmek güzel olurdu.

İşleri kolaylaştırmak için sıcaklık için santigrat ve basınç için hPa (=mBar) kullanıyorum. Yani hiç kimse Fahrenhayt'tan veya kare kare başına pound'dan geri hesaplamak zorunda değil…

Şu anda sadece bu veriler mevcut…

Gelecekte, Hava hızı, rüzgar yönü ve yağış ekleyeceğim.

Buradaki fikir, bir dış hava kulübem olacak ve tüm veriler 2,4 GHz üzerinden iç üniteye gönderilecek.

Adım 3: JAWS: Yazılım

JAWS: Yazılım
JAWS: Yazılım

Yazılımımıza ulaşmak için çoğu mevcut kütüphanelerde bulunabilir.

JAWS'ta aşağıdakileri kullanıyorum:

  1. SPI.h: Arduino'dan 4 kablolu protokol için orijinal kütüphane. TFT kalkanı için kullanılıyor
  2. Adafruit_GFX.h ve MCUfriend_kbv.h: her ikisi de grafikler ve ekran için kullanılır. Bunlar, TFT ekranında metin yazmayı, çizgiler ve kutular çizmeyi çok kolaylaştırır.
  3. dht.h: DHT'lerimiz için: bu kütüphane DHT11 (mavi olan) ve DHT22 için kullanılabilir.
  4. Wire.h: Seri iletişimi kolaylaştırmak için Arduino kütüphanesi. Saat ve SD kart için kullanılır.
  5. SD.h: SD karttan yazmak ve okumak için yine bir Arduino orijinali.
  6. TimeLord.h: Bunu zaman tutmak, herhangi bir coğrafi konumdan güneşin batışını veya güneşin doğuşunu hesaplamak için kullanıyorum. Ayrıca saati DST (yaz veya kış saati) için ayarlar.

Saatle başlayalım.

Bir saati okurken, saat modülünün içindeki farklı kayıtlardan aldığınız değişkenlere ihtiyacınız vardır. Onları sayılardan daha fazlası yaptığımızda aşağıdaki satırları kullanabiliriz:

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

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

n

TimeLord ile bunu benim yerim için veri olarak alıyoruz: (Lokeren, Belçika)

Zaman Lordu Lokeren; Lokeren. Position (51.096, 3.99); boylam ve enlem

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

Lokeren. DstRules(3, 4, 10, 4, 60); 3. aydan, 4. haftadan 10. aya, 4. haftadan DST, +60 dakika

int jaar= yıl +2000;

bayt sunRise= {0, 0, 12, aygün, ay, yıl}; 00 saatten itibaren her gün hesaplamaya başlayın

byte sunSet={0, 0, 12, aygün, ay, yıl}; Yukarıdaki ile aynı

bayt maan={0, 0, 12, aygün, ay, yıl}; Yukarıdaki ile aynı

yüzer faz;

Buradan hesaplamalar yapılır.

faz = Lokeren. MoonPhase(maan);

Lokeren. SunRise(sunRise);

Lokeren. SunSet(sunSet);

Lokeren. DST(gündoğumu);

Lokeren. DST(gün batımı);

int ZonOpUur=gündoğumu[tl_hour];

int ZonOpMin = sunRise[tl_dakika];

int ZonOnUur = sunSet[tl_hour];

int ZonOnMin = sunSet[tl_dakika];

Bu, TimeLord'da işlerin nasıl hesaplandığının örneğidir. Bu kütüphane ile gün batımı ve gün doğumunun (oldukça) doğru zamanlarını alırsınız.

Sonunda, tüm programı bu Eğitilebilir Dosya ile koyacağım. Oldukça düz.

Adım 4: Daha Fazla Yazılım…

Daha Fazla Yazılım…
Daha Fazla Yazılım…
Daha Fazla Yazılım…
Daha Fazla Yazılım…

Yazılım hakkında daha fazla bilgi…

Yazılımda üç büyük parçamız var.

1) Farklı sensörlerimizden bazı ham veriler alıyoruz: saatimiz, DHT'ler ve BMP180. Bu bizim girdimiz.

2) Verileri (1 ve 0)'a mantıklı bir şeye çevirmemiz gerekiyor. Bunun için kütüphanelerimizi ve değişkenlerimizi kullanıyoruz.

3) Verilerimizi okumak ve saklamak istiyoruz. Çıktımız bu. Anında kullanım için LCD-TFT'miz var, daha sonra kullanmak için SD kartımızda kayıtlı verilerimiz var.

Döngümüzde(), bir sürü "GOTO" alıyoruz: farklı kitaplıklara atlıyoruz. Verilerimizi sensörlerden birinden alıyoruz, verileri alıyoruz ve (çoğunlukla) kayan bir veri değişkeninde saklıyoruz. Değişken isimlerimizi akıllıca seçiyoruz, x veya y ile değil, "tempOutside" veya "basınç" gibi isimlerle veya bunun gibi şeylerle. Onları daha okunaklı hale getirmek için. Tamam, bu değişken kullanımında biraz daha ağır ve daha fazla bellek tüketiyor.

İşin püf noktası burada: Değişkenlerimizi ekranda görünür hale getirirken, sadece onları doğru konuma yerleştiriyoruz.

Burada kullanılan iki kitaplık, Adafruit_GFX.h ve MCUfriend_kbv.h, renkleri, yazı tiplerini ve çizgi çizme becerisini kullanmak için güzel bir çalışma grubuna sahiptir. İlk önce bu kütüphanelerle 12864- ekran kullandım, daha sonra tft-ekranında değiştirdim. Tek yapmam gereken kutular, dikdörtgenler ve çizgiler yerleştirmek ve verilerin doğru yerde çıktığından emin olmaktı. Bunun için setCursor ve tft. Write komutlarını kullanabilirsiniz. Kolay yapar. Renkler değişken olarak da ayarlanabilir, bu kütüphanelerde nasıl seçileceğine dair birçok örnek var.

SD karta yazmak için bazı basit numaralara da ihtiyacımız var.

Örneğin, saatten verilerimizi ayrı saat, dakika ve saniye olarak okuruz. Sıcaklıklar, iç ve dış mekan arasında ayrım yapmak için DHT.temperature ve DHTT.temperature'dır.

Onları SD karta koymak istediğimizde bir string kullanıyoruz: her döngüye boş bir string olarak başlıyoruz:

değişkendizi=""; Sonra tüm verilerimizle doldurabiliriz:

değişkendizi = değişkendizi + saat+":" + dakika +":" + saniye. Bu, dizeyi 12:00:00 gibi verir.

Bunu bir TXT dosyası olarak yazdığımız için (Arduino.cc'deki SD.h'ye bakın), sonraki değişkenler için bir sekme ekliyoruz, bu yüzden onu Excel'e aktarmak daha kolay.

Böylece şu noktaya geliyoruz: değişkendizi = değişkendizi +" \t " + DHT.temperature + " \t" + DHTT. Temperature.

Ve bunun gibi.

Adım 5: Bazı Ekran Görüntüleri…

Bazı Ekran Görüntüleri…
Bazı Ekran Görüntüleri…
Bazı Ekran Görüntüleri…
Bazı Ekran Görüntüleri…
Bazı Ekran Görüntüleri…
Bazı Ekran Görüntüleri…

Veri kümelerimizi "aşırı yüklemediğimizden" emin olmak için her 10 dakikada bir veri yazdım. Bize günde 144 giriş veriyor. Fena değil bence.

Ve elbette, bu verileri işlemeye devam edebilirsiniz: ortalamalar yapabilirsiniz, maksimum ve minimumları arayabilirsiniz, geçmiş yıllarla karşılaştırabilirsiniz…

Met ofisleri genellikle sıcaklıklar için gündüz ve gece ortalamalarını alır: gündüz saat 8'de başlar ve akşam 8'e kadar sürer.

Rüzgar, basınç ve yağış için gece yarısından gece yarısına kadar ortalamalar alınır.

Adım 6: Bitti mi?

Bitti mi?
Bitti mi?
Bitti mi?
Bitti mi?

Pek değil… Söylediğim gibi, nihayet rüzgar hızı ve rüzgar yönü sensörünü JAWS'ın geri kalanıyla birlikte çalıştırmak istiyorum.

Yaptığım küçük yapı yaklaşık 4m yüksekliğinde duruyor. Meteorolog 10m yükseklikten rüzgar hızı alıyor. Benim için biraz fazla yüksek…

Umarım bunu okumaktan zevk almışsındır!

Adafruit-GFX burada açıklanmıştır:

MCUFRIEND_kbv.h burada bulunabilir:

BMP 120 hakkında daha fazla bilgi (BMP085 ile aynı):

DHT22 hakkında:

Önerilen: