İçindekiler:
Video: JAWS: Bir Başka Hava Durumu İstasyonu: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
Yazılımımıza ulaşmak için çoğu mevcut kütüphanelerde bulunabilir.
JAWS'ta aşağıdakileri kullanıyorum:
- SPI.h: Arduino'dan 4 kablolu protokol için orijinal kütüphane. TFT kalkanı için kullanılıyor
- 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.
- dht.h: DHT'lerimiz için: bu kütüphane DHT11 (mavi olan) ve DHT22 için kullanılabilir.
- Wire.h: Seri iletişimi kolaylaştırmak için Arduino kütüphanesi. Saat ve SD kart için kullanılır.
- SD.h: SD karttan yazmak ve okumak için yine bir Arduino orijinali.
- 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…
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…
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?
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:
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 8 Adım (Resimlerle)
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 2 farklı lokasyonda 1 yıllık başarılı operasyonun ardından, güneş enerjili meteoroloji istasyonu proje planlarımı paylaşıyor ve gerçekten uzun süre hayatta kalabilen bir sisteme nasıl evrildiğini açıklıyorum. güneş enerjisinden dönemler. Takip ederseniz
Yine Bir Başka Akıllı Hava İstasyonu, Ama: 6 Adım (Resimlerle)
Yine Bir Başka Akıllı Hava Durumu İstasyonu, Ama…: Tamam, her yerde bu türden çok fazla hava durumu istasyonu olduğunu biliyorum, ancak farkı görmek için birkaç dakikanızı ayırın… Düşük güçte 2 e-kağıt ekranı… ama 10 farklı ekranlar! ESP32 tabanlı ivmeölçer ve sıcaklık/nem sensörleri Wifi upd
Başka bir IoT Hava İstasyonu: 8 Adım
Başka bir IoT Hava İstasyonu: Aşağıdaki, babam için bir doğum günü hediyesiydi; Gördüğüm ve başlangıçta kendisine kendi kendine yapılan bir kit olarak kanıtlanması amaçlanan başka bir Eğitilebilir Kitaptan ilham aldı. Ancak onunla bu proje üzerinde çalışmaya başladığımda çok çabuk fark ettim ki ilk t
HTTP Üzerinden XinaBox ve Ubidots Kullanarak Bir Hava Durumu İstasyonu Nasıl Kurulur: 7 Adım
HTTP Üzerinden XinaBox ve Ubidots Kullanarak Bir Hava İstasyonu Nasıl Kurulur: XinaBox xChips (IP01, CW01 ve SW01) kullanarak Ubidots'ta kendi Hava İstasyonunuzu nasıl yapacağınızı öğrenin.ESP8266 Çekirdek ve Wi-Fi modülü (xChip CW01), kullanıcıların XinaBox'ın modüler xChips'inden buluta veri. Bu veriler uzaktan izlenebilir
Bir Başka Hava Durumu İstasyonu (Y.A.W.S.): 18 Adım (Resimlerle)
Yine Başka Bir Hava İstasyonu (Y.A.W.S.): Bu proje benim her zaman popüler olan Hava İstasyonunu ele almam. Benimki bir ESP8266, a.96” OLED ekran ve bir BME280 çevresel sensör dizisi. Hava İstasyonları çok popüler bir proje gibi görünüyor. Benimki diğerlerinden farklı