Bu IoT Projesinde Neyi Elde Edeceksiniz?
Farklı sensörleri programlayarak;
- Sıcaklık ve nemi 1 saniyelik aralıklarla ölçeceksiniz. Bu sayede meteoroloji istasyonunuzun gözünden hiçbir şey kaçmayacaktır.
- Ö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.
- 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.
- 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
- OLED Ekran
- RGB LED'i
- 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.