İçeriğe Geç

DIY Meteoroloji İstasyonu Projesi

01 Dec 2023
DIY Weather Station Project
Picobricks'in Raspberry Pi kitini kullanan Kendin Yap Hava İstasyonu Projesinde katılımcılar, kendi hava istasyonunu inşa etmek için heyecan verici bir yolculuğa çıkıyor. Bu uygulamalı proje, sıcaklık, nem ve atmosferik basınç gibi çevresel verileri toplamak ve analiz etmek için Raspberry Pi ve Picobricks'in gücünden yararlanıyor. Proje sadece elektronik bileşenler ve sensörler hakkında pratik bir anlayış sağlamakla kalmıyor, aynı zamanda veri toplama ve analizin temellerini de tanıtıyor.

Bu IoT Projesinde Neyi Elde Edeceksiniz?

Farklı sensörleri programlayarak;

  1. Sıcaklık ve nemi 1 saniyelik aralıklarla ölçeceksiniz. Bu sayede meteoroloji istasyonunuzun gözünden hiçbir şey kaçmayacaktır.
  2. Ölçülen değerler anında Thinspeak ortamına aktarılacaktır. Thinspeak'te kendi grafiklerinizi ve haritalarınızı oluşturabileceksiniz. Tıpkı bir meteorolog gibi.
  3. Hava sıcaklığı 25 santigrat derecenin üzerine çıktığında, RGB LED'i 10 ila 25 derece arasında sarı, 10 derece ve altında mavi renkte kırmızı yanacaktır.
  4. Sıcaklık 4 derecenin altına düştüğünde ekranınızda "Buzlanma tehlikesi var" uyarısı alacaksınız. OLED ekran. Ayrıca cihazınızdan bir uyarı sesi duyacaksınız. zil modülü. Bu sayede olası don felaketlerini önceden tespit edebileceksiniz.

Bileşenler

  1. OLED Ekran
  2. RGB LED'i
  3. Sıcaklık ve Nem Sensörü

Bağlantı şeması

Adım Adım Kendi Meteoroloji İstasyonunuzu Oluşturun

 

Aşama 1

ThingSpeak, internet üzerinden veri toplamak, depolamak ve analiz etmek için kullanılan bir platformdur. Özellikle IoT (Nesnelerin İnterneti) cihazlarının ürettiği verileri depolamak ve analiz etmek için kullanılır.

Kodumuzu yazmadan önce Thingspeak ortamına giriş yapmamız gerekiyor. Zaman Bölgesi bölümünü doğru kaydetmenizi öneririm çünkü grafiksel olarak sakladığımız zaman bilgisinin daha sonra göndereceğimiz verilerle uyumlu olmasını sağlamak önemlidir.

Kayıt olduktan sonra üst kısımdaki Kanallar menüsünden Kanallarım seçeneği seçildiğinde aşağıdaki gibi bir menü karşınıza çıkar.

Bu menüye geldiğinizde Yeni Kanal sekmesine tıklıyoruz ve karşınıza çıkan aşağıdaki gibi menü ile yeni bir kanal açmaya hazırız.

  

Name tag, verilerinize vereceğiniz isimdir. İsterseniz Açıklama etiketine projeniz için bir açıklama girebilirsiniz.

Bu proje için Alan 1 ve Alan 2 etiketlerini kullanacağız. Alan 1 etiketini sıcaklık, Alan 2 etiketini ise nem olarak adlandıracağız. Bu alanlar sensörümüzden aldığımız sıcaklık ve nem ölçümlerini gösterecektir.

Bu projede başka etiketler kullanmanıza gerek yoktur.

Kanalı Kaydet'e tıkladığınızda düğme aşağıda kanalımız oluşturulacaktır.

İşte kanalımız. Kanalımızı PicoBricks'e bağlamak için API Anahtarları sekmesine girin.

Adım 2

Kodu yazalım.

İnternete bağlanmak için ağ kütüphanesini, Thingspeak'e veri göndermek için ise urequest kütüphanesini kullanacağız.


# Bir web tarayıcısını kullanarak bir LED'i kontrol edin ve bir Düğmeyi okuyun
ithalat zamanı
ithalat ağı
makine içe aktarma Pininden, PWM, ADC
picobricks'ten SSD1306_I2C,WS2812, DHT11,NEC_16, IR_RX'i içe aktarın
utime içe aktarma uykusundan
kullanım süresini içe aktar
üreteçleri içe aktar

THINGSPEAK_WRITE_API_KEY = 'OKY41ZGPRUTFKRW5'
HTTP_HEADERS = {'İçerik Türü': 'application/json'}

sesli uyarı = PWM(Pin(20))

GENİŞLİK = 128
YÜKSEKLİK = 64
sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
oled = SSD1306_I2C(GENİŞLİK, YÜKSEKLİK, i2c)

ws = WS2812(6, parlaklık=0,4)
ws.pixels_fill((0 ,0 ,0 ))
ws.pixels_show()

pico_temp=DHT11(Pin(11, Pin.IN, Pin.PULL_UP))
current_time=utime.time()
utime.sleep(1)

ssid = "dsmart_1811"
şifre = "SeVgI11036706012018"

wlan = ağ.WLAN(ağ.STA_IF)
wlan.active(Doğru)
wlan.connect(ssid, şifre)

oled.text("Güç Açık",30,0)
oled.text("Bekleniyor ",20, 30)
oled.text("Bağlantı",23, 40)
oled.show()
zaman.uyku(2)
oled.fill(0)


# Bağlanmayı bekleyin veya başarısız olun
maksimum_bekleme = 10
max_wait > 0 iken:
    wlan.status() < 0 veya wlan.status() >= 3 ise:
        kırmak
    maksimum_bekleme -= 1
    print('bağlantı bekleniyor...')
    zaman.uyku(1)
    
# Bağlantı hatasını yönet
eğer wlan.status() != 3:
    RuntimeError'ı yükselt('ağ bağlantısı başarısız oldu')
başka:
    print('Bağlandı')
    
sıcaklık=0
nem=0
   
Doğruyken:
    oled.fill(0)
    
    if(utime.time() - current_time > 2):
        current_time = utime.time()
        denemek:
            pico_temp.measure()
        hariç:
            print("ölçüm başarısız oldu, kısa süre sonra tekrar deneyeceğim")
            
    oled.fill(0)#clear OLED
    oled.show()
    
    
    sıcaklık=pico_temp.temperature
    nem=pico_temp.humidity
    
    oled.text("Sıcaklık: ",15,0)#print "Sıcaklık: " OLED üzerinde x=15 y=10 konumunda
    oled.text(str(int(sıcaklık))),55,0)
    oled.text("Hımm: ", 15,10)
    oled.text(str(int(nem))),55,10)
    oled.show()#OLED'de göster
    utime.sleep(0.5)#yarım saniye bekle
        
    dht_readings = {'alan1':sıcaklık, 'alan2':nem}
    request = urequests.post( 'http://api.thingspeak.com/update?api_key=' + THINGSPEAK_WRITE_API_KEY, json = dht_readings, başlıklar = HTTP_HEADERS )
    request.close()
    yazdır(dht_readings)
    
    if(sıcaklık >= 25):
        ws.pixels_fill((255, 0, 0))
        ws.pixels_show()
    elif(sıcaklık > 10 ve sıcaklık < 25):
        ws.pixels_fill((255, 255, 0))
        ws.pixels_show()
    elif(sıcaklık <= 10):
        ws.pixels_fill((0, 0, 255))
        ws.pixels_show()
        
    eğer (sıcaklık < 4):
        oled.text("Buzlanma tehlikesi var")
        aralıktaki i için((3)):
            buzzer.duty_u16(2000)
            buzzer.freq(831)
            zaman.uyku(0,25)
    
    buzzer.duty_u16(0)
    zaman.uyku(0,25)

3. Adım: Kodu Açıklayın

 

İnternete bağlanmak için ağ kütüphanesini, Thingspeak'e veri göndermek için ise urequest kütüphanesini kullanacağız.

Yukarıda bahsettiğim API Key'i THINGSPEAK_WRITE_API_KEY değerine atadık. buzer, OLED ve DHT11 için randevular alınıyor. "ssid" değerine internet adını, "password" değerine ise internet şifresini atadık. Bunun kodlarını yazıyoruz
İnternete bağlanmak için.

İnternete bağlanmasını bekliyoruz ve varsa hatalara karşı önlem alıyoruz.

Döngüye girmeden önce sıcaklık ve nem için 0 değeri atadık. Döngü içerisinde sıcaklık ve nem ölçümleri alınır ve ekrana yazdırılır.
İşte kilit kısım:

Bu kodlar sayesinde Thinspeak'e veri gönderebiliyoruz. Thinspeak'te oluşturduğumuz “dht_readings” değerini field1 ve field2 şeklinde bir sözlük değerine atadık. Atadığımız “urequest.post” komutunun içine sırasıyla veri göndermek istediğimiz internet adresini, varsa o adresin API Key’ini, göndereceğimiz verileri ve internet atamalarını ve internet atamalarını yazıyoruz. Verileri “urequest.post” komutu ile internete gönderiyoruz.

Son olarak istediğimiz aralıklara göre ne yapmalarını istiyorsak sıcaklık değerlerini atamaktayız.

 

Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment