Mündəricat:

Başqa bir IoT Hava İstasyonu: 8 addım
Başqa bir IoT Hava İstasyonu: 8 addım

Video: Başqa bir IoT Hava İstasyonu: 8 addım

Video: Başqa bir IoT Hava İstasyonu: 8 addım
Video: eMuderris, IOT ödev02, Raspberry Pi ile Iot Hava İstasyonu 2024, Iyul
Anonim
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu
Başqa bir IoT Hava İstasyonu

Aşağıdakılar atam üçün ad günü hədiyyəsi idi; gördüyüm başqa bir Təlimatlandırıcıdan ilhamlanaraq əvvəlcə ona öz-özünə qurulmuş bir dəst kimi sübut olunmasını nəzərdə tutmuşdum. Ancaq onunla birlikdə bu layihə üzərində işləməyə başlayanda hədiyyəyə ilham verən ilkin təlimin köhnəldiyini və digər onlayn dərslərin bir çoxunda izahlarında əhəmiyyətli boşluqlar olduğunu çox tez anladım. Bu səbəbdən inşaatın başlanğıcından etibarən izlənməsi asan olacaq başqa bir IoT Hava İstasyonu yayımlamaq qərarına gəldim.

Əlavə olaraq bu təlimat, sensor oxunuşlarını izləmək və qeyd etmək üçün Blynk, Google Sheets və ya hər ikisini necə istifadə edəcəyinizi göstərir. Üstəlik, Google Cədvəl girişləri birbaşa vərəqə yazılır (üçüncü tərəf xidmətindən keçmədən).

Stevenson Ekranı ilə əlaqədar olaraq, 3D çap edilə bilən bir çox onlayn var. https://www.thingiverse.com/thing:1718334. Bu Təlimat üçün bunun üzərində quracağam.

Stevenson Ekranı "Alət sığınacağı, havanın ətrafda sərbəst dolaşmasına icazə verərkən, xarici mənbələrdən yağıntılara və birbaşa istilik radiasiyasına qarşı meteoroloji cihazların sığınacağı və ya bir yuvasıdır." (Vikipediya).

Hissələri

  • Wemos LolIn - NodeMCU v3 (1.43 USD)
  • BME280 (Temperatur, Təzyiq və Nəmlik Sensoru) (USD 2.40)
  • 6V 1000mA Günəş Paneli (USD 9.96)
  • 5V 1A Mikro USB 18650 Lityum Batareya Şarj Kartı Şarj Cihazı Modulu+Qoruma İkili Fəaliyyət TP4056 (USD 0.99)
  • 4x 1.2V NiMH təkrar doldurulan batareyalar
  • Batareya Tutacağı (4x AA, yan -yana və ucdan uca)
  • Micro USB Kişi konnektoru
  • Kabel bağları
  • 3x Qanadlı Fındıq
  • Qütb və ya süpürgə çubuğu
  • Epoksi və/və ya super yapışqan (baxdıqda silikon daha yaxşı işləyə bilərdi)

Proqram təminatı

  • Blynk Tətbiqi
  • Google Cədvəllər (tarixi məlumatlara giriş əldə etmək istəyirsinizsə)
  • EasyEDA (sxematik rəsm üçün)
  • Arduino IDE

Alətlər

  • Lehimleme dəmir
  • Lehim
  • İstilik Büzülmə Boruları
  • 3D printer
  • Yapışqan Tabancası

Addım 1: 3D Çap - Stevenson Ekran

3D Çap - Stevenson Ekranı
3D Çap - Stevenson Ekranı
3D Çap - Stevenson Screen
3D Çap - Stevenson Screen
3D Çap - Stevenson Ekranı
3D Çap - Stevenson Ekranı

Artıq qeyd edildiyi kimi, faylları https://www.thingiverse.com/thing:1718334 saytından yükləyin və lazım olan bitləri çap edin. Montaj təlimatları da yuxarıdakı linkdədir. Bəzi dəyişikliklər etdim (aşağıda qeydlərə baxın).

Çap olunan hissələr bunlardır:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL yuxarıda əlavə olunur)
  • 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 yuxarıda əlavə olunur)

Montaj qaydası belədir:

  • Delikləri yuvarlayın
  • M3 çubuqlarını yivli yuvalara vidalayın
  • Top_Cover
  • Solid_Plate
  • Middle_Rings
  • Sensor_Grid -də sürüşdürün
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • My_Solar_Cell_Mounts Top_Cover -in üst hissəsinə epoksiyalaşdırılmışdır

Günəş Panelindəki şarj kabelinin şarj cihazına qoşulmasına icazə vermək üçün bərk plitələrdə deliklər qazdım və sonra kabelin nəzarətçidən Sensor_Grid üzərindəki sensora keçməsini təmin etmək üçün.

Tamamlandıqdan sonra, sensor hər 60 dəqiqədə aşağıdakı oxunuşları almaq üçün proqramlaşdırılmışdır:

  • Temperatur
  • Rütubət
  • Təzyiq

Qeydlər

  • Günəş batareyası qurğularını günəş batareyamı tutmaq üçün daha yaxşı uyğunlaşdırdım.
  • Elektronikanı Pole_Mount və Solid_Plate arasına quraşdırdım. Bu, elektronikanın yaxşı qorunmasını təmin etmədi. Bu səbəbdən Solid_Plate -də modifikasiya etdim ki, sonra ətəyi olsun ki, bu boşluğu bağlasın və bununla da elektronikaya daha yaxşı qoruma versin. Yuxarıdakı şəkillərdən bəziləri bu dəyişikliyi etməzdən əvvəl çəkilmişdir.
  • Epoksi günəş panelini tutmadığımdan sonra super yapışqanla yenidən bağladım. Silikon istifadə etmək məcburiyyətində qalacağımı düşünürəm.

Addım 2: Dövrə

Dövrə
Dövrə
Dövrə
Dövrə

Şəkildə göstərildiyi kimi LoLin və BME280-i 3D çaplı meshə montaj edərək sxemdə göstərildiyi kimi dövrə bağlayın.

BME280 -> LiLon

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

LiLon -> LiLon

D0 -> RST (bu, nəzarətçini dərin yuxudan oyatmaq üçün lazımdır, ancaq kod nəzarətçiyə yükləndikdən sonra qoşulmalıdır)

QEYD

Uyğun bir LiLon batareyası almaqda çətinlik çəkdim. Həm də nədənsə VIN vasitəsi ilə güc qazana bilmədim. Buna görə də aşağıdakı kimi güc verdim:

  • TP4056 -dan çıxış Kişi USB konnektoruna qoşuldu, sonra onu gücləndirmək üçün lövhənin USB yuvasına qoşuldu.
  • TP4056-dakı B- və B+, NiMH batareyalarını tutan AA batareya tutucusuna qoşuldu.

Addım 3: IoT - Blynk

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

"Blynk, fərdiləşdirilə bilən mobil tətbiqləri, özəl bulud, qaydalar mühərriki və cihaz idarə etmə analitikləri tablosuna malik bir hardware-agnostik IoT platformasıdır". Əsasən, İnternet vasitəsilə dünyanın hər yerindən uzaqdan idarə olunan sensorları etibarlı şəkildə idarə etməyə və izləməyə imkan verir. Ticarət xidməti olsa da, hər bir hesaba 2000 pulsuz kredit verilir. Kreditlər, fərqli ölçü cihazlarını, ekranları, bildirişləri və s. Abunə qiymətləri bir hobbiçinin büdcəsi xaricində olsa da, pulsuz kreditlər belə bir sadə layihə üçün kifayətdir.

Xidmətdən istifadə etməyə başlamaq üçün əvvəlcə telefonunuza/cihazınıza Blynk Tətbiqini yükləməlisiniz, yaratmalı və hesab yaratmalısınız (və ya mövcud hesabla daxil olmalısınız) və sonra aşağıdakı kimi yeni bir layihə yaratmalısınız:

  • Avadanlığınızı seçin
  • Layihənizə bir ad verin (bu halda "Hava İstasyonu" ndan istifadə etdim.
  • "Yarat" düyməsini basın
  • Bundan sonra e-poçtunuza bir Doğrulama Kodu alacaqsınız.

Lazımi vidjetləri əlavə etməyinizə ehtiyac olmayacaq. 2000 pulsuz kreditimlə aşağıdakıları əlavə etdim:

  • 3 ölçü cihazı
  • 1 Super Qrafik

Göstəricilər və cədvəllər, əlavə edilmiş fotoşəkillərə uyğun olaraq qurulmuşdur, hər birinə kodda sonuncu olaraq istifadə ediləcək öz virtual pin təyin edilmişdir.

Ayarlar edildikdən sonra, tarixin toplanmasına başlamaq üçün sağ üstdəki oyun düyməsinə basıla bilər.

Ətraflı məlumat üçün baxın

docs.blynk.cc/#getting-started.

Addım 4: Kod - Arduino IDE -nin hazırlanması

Bu layihəni tamamlamaq üçün Arduino IDE -yə aşağıdakı kitabxanaların əlavə edilməsi lazımdır:

  • https://github.com/adafruit/Adafruit_BME280_Library (temperatur, təzyiq və rütubət sensoruna ehtiyac)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (bu sizə ESP8266 lövhəsinə giriş imkanı verir)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (Blynk kitabxanası)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (Google Cədvəllərə qoşulmaq üçün HTTPSRedicect lazımdır)

Arduino IDE üçün kitabxanaların quraşdırılmasına dair təlimatlar üçün https://www.arduino.cc/en/guide/libraries saytına daxil olun.

Hardware parametrlərim burada:

  • Lövhə: NodeMCU 1.0 (ESP-12E Modulu)
  • Yükləmə Sürəti: 115200

Əlavə edilmiş kodu aşağıdakı addımlarda istifadə edərkən, aşağıdakıları əlavə etməklə bağlı olaraq həmişə koddakı şərhlərə müraciət edin:

  • Wifi SID
  • Wifi Şifrəsi
  • Blynk icazə açarı
  • Google Script ID
  • Google Vərəq paylaşım açarı

Addım 5: Kod - Blynk

Aşağıdakı sətirdən ibarət bir nümunə tapana qədər BME280 sensorumun işləməsi üçün əsrlər boyu mübarizə apardım.

status = bme.begin (0x76); // İstifadə etdiyim sensorun I2C ünvanı 0x76 -dır

Sensor ünvanını təyin etməyim lazım olduğu görünür. Bunu etdikdən sonra hər şey yaxşı işləyir.

Blynk həqiqətən gözəl bir mobil istifadəçi interfeysinə malikdir, lakin aşağıdakı məhdudiyyətlərə malikdir:

  • Yalnız 2000 pulsuz kredit, daha çox tələb edən layihələr bahalı aylıq abunə tələb edir (öz Blynk serverinizə ev sahibliyi etməsəniz).
  • Öz Blynk serverinizə sahib olmadığınız halda, tarixi məlumatları ixrac edə bilməzsiniz.

Yuxarıda göstərilən səbəblərə görə məlumat toplama prosesimi Google Hesabına necə inteqrasiya edə biləcəyimə baxdım. Bu, növbəti hissədə müzakirə olunur.

Addım 6: Kod - Google Cədvəllər

Kod - Google Cədvəllər
Kod - Google Cədvəllər
Kod - Google Cədvəllər
Kod - Google Cədvəllər
Kod - Google Cədvəllər
Kod - Google Cədvəllər

Tarixi məlumatları daha sonra təhlil edə bilmək üçün oxunuşlarınızı qeyd etmək üçün bir növ verilənlər bazasına yazmalısınız. HTTPSRedirect kitabxanası, məlumatlarımızı Google Hesabına yazaraq bunu etməyə imkan verir.

Bu yanaşmanın əsas məhdudiyyətləri aşağıdakılardır:

  • Gözəl mobil istifadəçi interfeysi yoxdur
  • Google Cədvəli maksimum 400 000 hüceyrəyə sahib ola bilər. Bu layihə üçün bu böyük bir məsələ deyil, çünki bu həddə çatmaq üçün 11 ildən çox vaxt lazımdır.

Google Hesabatı aşağıdakı kimi qurulur.

İki vərəqdən ibarət bir Google Cədvəli yaradın.

Vərəq 1: Məlumat

Məlumat vərəqində 4 sütuna ehtiyac var: Tarix/Saat, Temperatur, Rütubət, Təzyiq (A -dan D -ə qədər sütunlar). Sütunları uyğun şəkildə formatlayın, məsələn. A sütunu "Tarix Saatı" olacaq ki, tarix və saat hüceyrələrdə göstərilsin.

Vərəq 2: Tablosuna

Aşağıdakı kimi düsturları daxil edərək əlavə edilmiş fotoşəkillərə uyğun olaraq İdarə Paneli vərəqi yaradın:

  • B2: = counta (Məlumat! B: B) -1
  • B3: = B1+ZAMAN DƏYƏRİ (BİRLEŞTİR ("00:", Mətn (G7, "0")))
  • B6: = sorğu (Məlumat! A2: D, "A eniş limiti 1 ilə B sırasını seçin")
  • C6: = sorğu (Məlumat! A2: D, "C sifarişini A enmə limiti 1 ilə seçin")
  • D6: = sorğu (Məlumat! A2: D, "D sırasını A enmə limiti 1 ilə seçin")
  • B8: = sorğu (Məlumat! A2: D, "B enmə limiti 1 ilə bir sifariş seçin")
  • C8: = sorğu (Məlumat! A2: D, "C enmə limiti 1 ilə sifariş seçin")
  • D8: = sorğu (Məlumat! A2: D, "D sifariş limiti ilə bir sifariş seçin")
  • B9: = sorğu (Məlumat! A2: D, "B eniş limiti 1 ilə B sırasını seçin")
  • C9: = sorğu (Məlumat! A2: D, "C enmə limiti 1 ilə C sifarişini seçin")
  • D9: = sorğu (Məlumat! A2: D, "D sırasını D azalma limiti ilə 1 seçin")
  • B11: = sorğu (Məlumat! A2: D, "B -nin B artım limiti 1 -ə görə sıfır sırası olmadığı A seçin")
  • C11: = sorğu (Məlumat! A2: D, "C -nin C asc limiti 1 -ə görə sıfır əmri olmadığı A seçin")
  • D11: = sorğu (Məlumat! A2: D, "D -nin D asc limiti 1 ilə sıfır sırası olmadığı A seçin")
  • B12: = sorğu (Məlumat! A2: D, "B -nin B artım limiti 1 -ə görə sıfır sırası olmadığı B seçin")
  • C12: = sorğu (Məlumat! A2: D, "C -nin C artım limiti 1 -ə görə sıfır sırası olmadığı C seçin")
  • D12: = sorğu (Məlumat! A2: D, "D -nin D asc limiti 1 -ə görə sıfır sırası olmadığı D seçin")
  • 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 Cədvəllərdə maksimum 400.000 hüceyrə ola bilər. Bu, hər oxunuşda 4 hüceyrədən istifadə edildiyi üçün nə qədər yer qaldığını və nə vaxt bitəcəyini hesablamaq üçün istifadə olunur.

Bu düsturların təkmilləşdirilməsi mümkün ola bilər. Burada iki şey edirdim, yəni sorğu düsturunu öyrəndim və sonra arxasındakı məntiqi xatırlamağıma kömək edəcək bir formul yazdım.

"Qrafik redaktoru" ekran görüntüsü, temperatur qrafiki üçün əsas quruluşu göstərir. Eyni quruluşdan istifadə edərək yaradılan digər qrafiklər. Qrafiklər arasındakı yeganə fərq, minimum şaquli ox dəyərləri idi (özelleştir sekmesinde tapıldı). Fərdiləşdirmə sekmesinde ayrıca giriş adları, qrafik başlıqları və s.

İndi bir URL çağıraraq məlumatlarımızı yazmağımızı təmin edəcək bir Google Scriptə ehtiyacımız var.

Ssenari yaradılır

Google Cədvəl URL -də "d /" və " / redaktə" arasındakı düyməni qeyd edin. Bu sizin -Google-Sheet-Paylaşım Açarınızdır və aşağıdakı kodda lazım olacaq.

Sonra Alətlər> Ssenari Redaktoruna gedin və kodu əlavə edilmiş GS faylına yapışdıraraq Google Tətbiq Skriptini yaradın. Var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit") yeniləyin; paylaşma açarını əks etdirmək.

İndi Nəşr et> Veb Tətbiqi olaraq Dağıtma bölməsinə gedərək skripti dərc edin.

GScriptID (-Sizin Google-Script-ID-nizi) çıxarmaq üçün Mövcud veb tətbiq URL-ni kopyalayın və ehtiyacınız olduğu yerdə saxlayın. GScriptID, "s /" və " / exec?" Arasındakı sətirdir. "Hər kəs, hətta anonim" in də tətbiqə daxil olmasını təmin edin. Bu proses zamanı sizdən bəzi icazələr verməyiniz tələb olunacaq. Bunları verməyiniz vacibdir.

Qeyd: Kodunuzu dəyişdirdiyiniz zaman "Yeni" Layihə versiyası yaratmalı və dərc etməlisiniz, əks halda yenə də eyni köhnə kodu vuracaqsınız.

İndi skriptə https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12 ünvanına baxaraq test edə bilərsiniz. Bu linki hər dəfə yenilədikdə, Google Cədvəlinə yeni bir giriş əlavə edilməlidir.

Bu yuxarıdakı dərslikdən götürülmüşdür: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Bu təlimat köhnədir və buna görə də növbəti hissədəki əlaqəli Arduino kodu ən son HTTPSRedirect kitabxanalarına uyğun olaraq dəyişdirildi.

Arduino kodu

Əlavə edilmiş koda baxın.

Addım 7: Kod - Blynk və Google Cədvəllər

Hər iki dünyadan da ən yaxşı şəkildə istifadə etmək üçün həm Blynk, həm də Google Sheets üçün kodu birləşdirə bilərsiniz.

Əlavə edilmiş koda baxın.

Addım 8: Son Şərhlər

Son Şərhlər
Son Şərhlər
Son Şərhlər
Son Şərhlər

Yuxarıda göstərilənlərin heç biri mənim fikirlərim deyil, əksinə başqalarının fikir və işləri üzərində qurulmuş bir layihədir. Bir yerə toplamaqdan zövq aldım. əyləncəli və praktik bir layihə üçün müxtəlif texnologiyalardan və vasitələrdən istifadə etmək. Oxuduqlarımı Google Cədvəlində necə saxlamağı öyrənməkdən zövq aldım. Bunun üçün ElectronicsGuy'a (Sujay Phadke) təşəkkür etmək istəyirəm.

Yeniləyin

Bu layihəni bitirdikdən sonra simsiz əlaqə parametrlərimi dəyişdirməli oldum. İndi fərqli bir kompüterdə işləyirdim. Dəyişiklikləri yüklədikdən sonra layihə işləməyi dayandırdı. Bir neçə problemi həll etdikdən sonra dərin yuxu funksiyasının uğursuz olduğu qənaətinə gəldim. Layihəni evə apardım və ora yüklədim (eyni kodu istifadə edərək) və işlədi. Buna görə də əlavə etdiyim kitabxanalarda bir şeyin dəyişdiyi qənaətinə gəldim. Buna görə də hazırda ev kompüterimdə olan kitabxanaları bu hissəyə qoşmuşam; yalnız kimsə bu problemlə qarşılaşarsa.

Tövsiyə: