Başka bir IoT Hava İstasyonu: 8 Adım
Başka bir IoT Hava İstasyonu: 8 Adım
Anonim
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu
Başka bir IoT Hava İstasyonu

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ı. Bununla birlikte, onunla bu proje üzerinde çalışmaya başladığımda, hediyeye ilham veren ilk öğreticinin güncel olmadığını ve diğer çevrimiçi eğitimlerin çoğunun açıklamalarında önemli boşluklar olduğunu çok çabuk fark ettim. Bu nedenle, baştan sona takip etmesi kolay olacağını umduğum başka bir IoT Hava İstasyonu yayınlamaya karar verdim.

Ayrıca bu talimat, sensör okumalarını izlemek ve kaydetmek için Blynk, Google E-Tablolar veya her ikisini nasıl kullanacağınızı gösterir. Ayrıca, Google E-Tablolar girişleri doğrudan sayfaya yazılır (3. taraf hizmeti aracılığıyla gitmek zorunda kalmadan).

Stevenson Ekranı ile ilgili olarak, 3D olarak basılabilen birçok çevrimiçi mevcuttur; https://www.thingiverse.com/thing:1718334. Bu Eğitilebilirlik için bunun üzerine inşa edeceğim.

Bir Stevenson Ekranı, "enstrüman sığınağı, havanın etraflarında serbestçe dolaşmasına izin verirken, yağış ve dış kaynaklardan gelen doğrudan ısı radyasyonuna karşı meteorolojik araçlar için bir sığınak veya bir muhafazadır." (Vikipedi).

Parçalar

  • Wemos LolIn - NodeMCU v3 (1,43 USD)
  • BME280 (Sıcaklık, Basınç ve Nem sensörü) (2,40 USD)
  • 6V 1000mA Güneş Paneli (USD 9.96)
  • 5V 1A Mikro USB 18650 Lityum Pil Şarj Kartı Şarj Modülü + Koruma Çift Fonksiyonlu TP4056 (USD 0.99)
  • 4x 1.2V NiMH şarj edilebilir piller
  • Pil Tutucu (4x AA, yan yana ve uçtan uca)
  • Mikro USB Erkek konektör fişi
  • Kablo bağları
  • 3x Kanatlı Fındık
  • Direk veya süpürge sopası
  • Epoksi ve/veya süper yapıştırıcı (önceden bakıldığında silikon daha iyi çalışabilirdi)

Yazılım

  • Blynk Uygulaması
  • Google E-Tablolar (geçmiş verilere erişmek istiyorsanız)
  • EasyEDA (şematik çizim için)
  • Arduino IDE'si

Aletler

  • Havya
  • Lehim
  • Isıyla Daralan Makaron
  • 3 boyutlu yazıcı
  • Tutkal tabancası

Adım 1: 3D Baskı - Stevenson Ekranı

3D Baskı - Stevenson Ekranı
3D Baskı - Stevenson Ekranı
3D Baskı - Stevenson Ekranı
3D Baskı - Stevenson Ekranı
3D Baskı - Stevenson Ekranı
3D Baskı - Stevenson Ekranı

Daha önce de belirtildiği gibi, dosyaları https://www.thingiverse.com/thing:1718334 adresinden indirin ve gerekli bitleri yazdırın. Montaj talimatları da yukarıdaki linkte bulunmaktadır. Bazı değişiklikler yaptım (aşağıdaki notlara bakın).

Basılan parçalar şunlardır:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL yukarıda ekli)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL yukarıda eklenmiştir)

Montaj sırası şöyledir:

  • Delikleri geçir
  • M3 çubuklarını dişli yuvalara vidalayın
  • Kapak
  • Solid_Plate
  • Orta_Yüzükler
  • Sensor_Grid'de kaydırın
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Kutup Dağı
  • My_Solar_Cell_Mounts, Top_Cover'ın üstüne epoksi ile kaplanmıştır

Güneş Panelinden gelen şarj kablosunun şarj cihazına bağlanmasına ve ardından kablonun kontrolörden Sensor_Grid üzerindeki sensöre geçmesine izin vermek için Katı plakalara delikler açtım.

Tamamlandığında, sensör her 60 dakikada bir aşağıdaki okumaları alacak şekilde programlandı:

  • Sıcaklık
  • Nem
  • Baskı yapmak

Notlar

  • Güneş pilini tutmak için daha uygun olacak şekilde güneş pili bağlantılarını özelleştirdim.
  • Elektroniği Pole_Mount ve Solid_Plate arasına kurdum. Bu, elektronikler için iyi bir koruma sağlamıyor gibi görünmüyordu. Bu nedenle Solid_Plate'i, daha sonra boşluğu kapatacak ve böylece elektronikler için daha iyi koruma sağlayacak bir eteğe sahip olacak şekilde değiştirdim. Yukarıdaki fotoğrafların bazıları bu değişikliği yapmadan önce çekildi.
  • Epoksim, daha sonra süper yapıştırıcı ile yeniden bağladığım güneş panelini tutmadan indi. Sanırım silikon kullanmak zorunda kalacağım.

Adım 2: Devre

Devre
Devre
Devre
Devre

Devreyi şemada gösterildiği gibi bağlayın, LoLin ve BME280'i fotoğrafta gösterildiği gibi 3D baskılı ağ üzerine monte edin.

BME280 -> LiLon

  • VCC -> 3.3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (denetleyiciyi derin uyku modundan uyandırmak için gereklidir, ancak yalnızca kod denetleyiciye yüklendikten sonra bağlanmalıdır)

NOT

Uygun bir LiLon pil bulmakta zorlandım. Ayrıca bir nedenden dolayı VIN üzerinden güç sağlama konusunda başarılı olamadım. Bu nedenle aşağıdaki şekilde güç verdim:

  • TP4056'dan gelen çıkış, daha sonra güç sağlamak için kartın USB soketine takılan Erkek USB konektörüne bağlandı.
  • TP4056 üzerindeki B- ve B+, NiMH pilleri tutan AA pil tutucusuna bağlandı.

3. Adım: IoT - Blynk

IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk

"Blynk, özelleştirilebilir mobil uygulamalara, özel buluta, kural motoruna ve cihaz yönetimi analitik panosuna sahip donanımdan bağımsız bir IoT platformudur". Temel olarak, İnternet üzerinden dünyanın herhangi bir yerinden uzak sensörleri güvenli bir şekilde yönetmenizi ve izlemenizi sağlar. Ticari bir hizmet olmakla birlikte, her hesap 2000 ücretsiz kredi ile birlikte gelir. Krediler, sensörünüz veya sensörlerinizle farklı göstergeler, ekranlar, bildirimler vb. ilişkilendirmenizi sağlar. Abonelik fiyatları bir hobicinin bütçesinin dışında olsa da, ücretsiz krediler bunun gibi basit bir proje için yeterlidir.

Hizmeti kullanmaya başlamak için önce Blynk Uygulamasını telefonunuza/cihazınıza indirmeniz, oluşturmanız ve hesap oluşturmanız (veya mevcut hesapla oturum açmanız) ve ardından aşağıdaki gibi yeni bir proje oluşturmanız gerekir:

  • Donanımınızı seçin
  • Projenize bir isim verin (bu durumda "Weather Station" kullandım.
  • "Oluştur" u tıklayın
  • Daha sonra size e-posta ile bir Yetkilendirme Kodu gönderilir.

Gerekli widget'ları eklemeniz gerekmeyecek. 2000 ücretsiz kredimle aşağıdakileri ekledim:

  • 3 Gösterge
  • 1 Süper Grafik

Göstergeler ve çizelgeler, ekteki fotoğraflara göre kuruldu ve her birine kodda daha sonra kullanılacak olan kendi sanal pini atandı.

Ayarlar yapıldıktan sonra, tarih toplamaya başlamak için sağ üstteki oynat düğmesine basılabilir.

Daha fazla bilgi için bakınız

docs.blynk.cc/#getting-started.

Adım 4: Kod - Arduino IDE'nin Hazırlanması

Bu projeyi tamamlamak için Arduino IDE'ye aşağıdaki kitaplıkların eklenmesi gerekecektir:

  • https://github.com/adafruit/Adafruit_BME280_Library (sıcaklık, basınç ve nem sensörü ihtiyacı)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (bu, ESP8266 panosuna erişmenizi sağlar)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (Blynk kitaplığı)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (Google E-Tablolar'a bağlanmak için HTTPSRedicect gereklidir)

Arduino IDE için kitaplık yükleme talimatları için https://www.arduino.cc/en/guide/libraries adresini ziyaret edin.

Donanım ayarlarım aşağıdaki gibi:

  • Anakart: NodeMCU 1.0 (ESP-12E Modülü)
  • Yükleme Hızı: 115200

Ekli kodu aşağıdaki adımlarda kullanırken, lütfen aşağıdakileri eklemekle ilgili olarak her zaman koddaki açıklamalara bakın:

  • Wi-Fi SID'si
  • Kablosuz ağ parolası
  • Blynk yetkilendirme anahtarı
  • Google Komut Dosyası Kimliği
  • Google E-Tablo paylaşım anahtarı

Adım 5: Kod - Blynk

Aşağıdaki satırı içeren bir örnek bulana kadar BME280 sensörümün çalışması için uzun yıllar mücadele ettim.

durum = bme.begin(0x76); //Kullandığım sensörün I2C adresi 0x76

Görünüşe göre sensör adresini ayarlamam gerekiyor. Bunu yaptıktan sonra her şey yolunda gitti.

Blynk'in gerçekten güzel bir mobil kullanıcı arayüzü var, ancak aşağıdaki sınırlamalara sahip:

  • Yalnızca 2000 ücretsiz kredi, bundan fazlasını gerektiren projeler pahalı bir aylık abonelik gerektirir (kendi Blynk sunucunuzu barındırıp bakımını yapmadığınız sürece).
  • Kendi Blynk sunucunuzu barındırmadığınız sürece geçmiş verileri dışa aktaramazsınız.

Yukarıdaki nedenlerle, veri toplama sürecimi bir Google E-Tablosuna nasıl entegre edebileceğime baktım. Bu bir sonraki bölümde ele alınmıştır.

6. Adım: Kod - Google E-Tablolar

Kod - Google E-Tablolar
Kod - Google E-Tablolar
Kod - Google E-Tablolar
Kod - Google E-Tablolar
Kod - Google E-Tablolar
Kod - Google E-Tablolar

Daha sonraki bir tarihte geçmiş verileri analiz edebilmeniz için okumalarınızı kaydetmek için, bunları bir çeşit veritabanına yazmanız gerekir. HTTPSRedirect kitaplığı, verilerimizi bir Google E-Tablosuna yazarak bunu yapmamızı sağlar.

Bu yaklaşımla ilgili ana sınırlamalar aşağıdaki gibidir:

  • Güzel bir mobil kullanıcı arayüzü yok
  • Bir Google E-Tablosu en fazla 400.000 hücreye sahip olabilir. Bu proje için bu büyük bir sorun değil çünkü bu sınıra ulaşılması 11 yıldan biraz fazla zaman alacak.

Google E-Tablosu aşağıdaki gibi ayarlanır.

İki sayfadan oluşan bir Google Sayfası oluşturun.

Sayfa 1: Veri

Veri sayfası 4 sütuna ihtiyaç duyar, yani Tarih/Saat, Sıcaklık, Nem, Basınç (A'dan D'ye sütunlar). Sütunları uygun şekilde biçimlendirin, ör. A sütunu "Tarih Saat" olacak, böylece tarih ve saat hücrelerde gösterilecektir.

2. Sayfa: Pano

Aşağıdaki formülleri girerek, ekteki fotoğraflara göre Dashboard sayfasını oluşturun:

  • B2: =say(Veri!B:B)-1
  • B3: =B1+ZAMANDEĞERİ(BİRİŞLE("00:", Metin(G7, "0")))
  • B6: =sorgu(Veri!A2:D, "B sırasını A desc limit 1'e göre seçin")
  • C6: =sorgu(Veri!A2:D, "C sırasını A desc limit 1'e göre seçin")
  • D6: =sorgu(Veri!A2:D, "D sırasını A desc limit 1'e göre seçin")
  • B8: =sorgu(Veri!A2:D, "B desc limit 1'e göre A siparişini seçin")
  • C8: =sorgu(Veri!A2:D, "C desc limit 1'e göre bir sipariş seçin")
  • D8: =sorgu(Veri!A2:D, "D desc limit 1'e göre bir sipariş seçin")
  • B9: =sorgu(Veri!A2:D, "B sırasını B desc limit 1'e göre seçin")
  • C9: =sorgu(Veri!A2:D, "C desc limit 1'e göre C sırasını seçin")
  • D9: =sorgu(Veri!A2:D, "D desc limit 1'e göre D sırasını seçin")
  • B11: =sorgu(Veri!A2:D, "B'nin, B artan limit 1'e göre boş sıra olmadığı durumlarda A'yı seçin")
  • C11: =sorgu(Veri!A2:D, "C'nin C artan limit 1'e göre boş sıra olmadığı durumlarda A'yı seçin")
  • D11: =sorgu(Veri!A2:D, "D'nin, D artan limit 1'e göre boş sıra olmadığı durumlarda A'yı seçin")
  • B12: =query(Veri!A2:D, "B'yi seçin, burada B, B artan limit 1'e göre boş sıra değil")
  • C12: =query(Veri!A2:D, "C'yi seçin, burada C, C artan limit 1'e göre boş sıra değil")
  • D12: =sorgu(Veri!A2:D, "D'yi seçin, burada D, D artan limit 1'e göre boş sıra değil")
  • G3: =4+B2*4+29+17
  • G4: =(G2-G3)/G2
  • G6: =G2/4 G8: =G7*G6
  • G9: =(G8/60)/24
  • G10: =G9/365
  • G11: =(((((G2-G3)/4)*G7)/60)/24/365)

Google E-Tablolar en fazla 400.000 hücreye sahip olabilir. Bu, her okumanın 4 hücre kullanması gerçeğiyle birlikte, ne kadar alan kaldığını ve ne zaman biteceğini hesaplamak için kullanılır.

Bu formülleri geliştirmek mümkün olabilir. Burada iki şey yapıyordum, yani sorgu formülünü öğreniyordum ve ardından arkasındaki mantığı hatırlamama yardımcı olacak şekilde bir formül yazıyordum.

"Grafik Düzenleyici" ekran görüntüsü, Sıcaklık grafiğinin temel kurulumunu gösterir. Aynı kurulum kullanılarak oluşturulan diğer grafikler. Grafikler arasındaki tek fark, minimum dikey eksen değerleriydi (özelleştirme sekmesinde bulunur). Özelleştirme sekmesinde ayrıca erişim adları, grafik başlıkları vb. gibi diğer ayarlar da bulunur.

Artık bir URL'yi arayarak verilerimizi yazmamızı sağlayacak bir Google Komut Dosyasına ihtiyacımız var.

Komut dosyasını oluşturma

Google E-Tablo URL'sinde, " d/ " ve " /edit " arasındaki anahtarı not edin. Bu, sizin-Google-E-Tablo-Paylaşım-Anahtarınızdır ve aşağıdaki kodda gerekli olacaktır.

Ardından Araçlar > Komut Dosyası Düzenleyici'ye gidin ve Google Uygulama Komut Dosyasını oluşturun, kodu ekteki GS dosyasına yapıştırın. var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); dosyasını güncelleyin. paylaşım anahtarınızı yansıtmak için.

Şimdi Yayınla > Web Uygulaması Olarak Dağıt'a giderek komut dosyasını yayınlayın.

Geçerli web uygulaması URL'sini kopyalayın ve GScriptID'yi (-Your-Google-Script-ID-) çıkarmak için ihtiyaç duyacağınız için bir yere kaydedin. GScriptID, " s/ " ve " /exec?" arasındaki dizedir. "Herkes, hatta anonim" ifadesinin uygulamaya erişimi olduğundan emin olun. Bu işlem sırasında sizden bazı izinler vermeniz istenecektir. Bunları vermeniz önemlidir.

Not: Kodunuzu her değiştirdiğinizde, “Yeni” bir Proje sürümü oluşturmanız ve bunu yayınlamanız gerekir, aksi takdirde yine aynı eski koda basarsınız.

Artık https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12 adresine göz atarak komut dosyasını test edebilirsiniz. Bu bağlantıyı her yenilediğinizde, Google E-Tablosuna yeni bir giriş eklenmelidir.

Yukarıdakiler, şu eğiticiden alınmıştır: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Ancak bu öğretici güncel değil ve bu nedenle bir sonraki bölümdeki ilgili Arduino kodu, en son HTTPSRedirect kitaplıklarını barındıracak şekilde değiştirildi.

Arduino Kodu

Ekli koda bakın.

7. Adım: Kod - Blynk ve Google E-Tablolar

Her iki dünyadan da en iyi şekilde yararlanmak için hem Blynk hem de Google E-Tablolar kodunu birleştirebilirsiniz.

Ekli koda bakın.

8. Adım: Son Yorumlar

Son Yorumlar
Son Yorumlar
Son Yorumlar
Son Yorumlar

Yukarıdakilerin hiçbiri benim fikirlerim değil, daha ziyade bu başkalarının fikirleri ve çalışmaları üzerine kurulmuş bir proje. Hepsini tek bir yerde toplamaktan zevk aldım. eğlenceli ve pratik bir proje için farklı teknolojiler ve araçlar kullanmak. Okumalarımı bir Google E-Tablosunda nasıl saklayacağımı öğrenmekten özellikle keyif aldım. Bunun için ElectronicsGuy'a (Sujay Phadke) teşekkür etmek istiyorum.

Güncelleme

Bu projeyi tamamladıktan sonra kablosuz ayarlarımı değiştirmem gerekiyordu. Şimdi farklı bir bilgisayarda çalışıyordum. Değişiklikleri yükledikten sonra proje çalışmayı durdurdu. Bazı sorun giderme işlemlerinden sonra derin uyku işlevinin başarısız olduğu sonucuna vardım. Projeyi eve götürdüm ve oraya yükledim (aynı kodu kullanarak) ve işe yaradı. Bu nedenle, eklediğim kütüphanelerde bir şeylerin değişmiş olması gerektiği sonucuna vardım. Bu nedenle şu anda ev bilgisayarımda bulunan kütüphaneleri bu bölüme ekledim; sadece başka birinin bu sorunla karşılaşması durumunda.

Önerilen: