Mündəricat:
- Addım 1: Dizayn Təfərrüatları
- Addım 2: Sensorlar
- Addım 3: Sensor stansiyaları
- Addım 4: ESP-01 Sensor Stansiyası
- Addım 5: ESP 12E Serial WIFI Kit Sensor Stansiyası
- Addım 6: D1 Mini Sensor Stansiyaları
- Addım 7: Gateway və Web Server
- Addım 8: Proqram təminatı
- Addım 9: Nəticələr
Video: Bir ESP-İndi Ev Hava İstasyonu: 9 Adım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Uzun müddətdir bir ev hava stansiyasına sahib olmaq istəyirdim və ailədəki hər kəsin temperatur və rütubəti asanlıqla yoxlaya biləcəyi bir stansiya. Xarici şərtləri izləməkdən əlavə, evdəki xüsusi otaqları və qaraj atelyemizi də izləmək istədim. Evdən havanı çıxarmaq və ya nəmləndiricini işə salmaq üçün yaxşı vaxt olanda bizə xəbər verərdi (qışda burada çox yağış yağar). Yaratdığım hər kəsin kompüterindən və ya telefonundan yoxlaya biləcəyi yerli bir veb serverə hesabat verən ESP-Now əsaslı bir sensor sistemidir. Telefonu daha da asanlaşdırmaq üçün sadə bir Android tətbiqi olaraq yazdım.
Addım 1: Dizayn Təfərrüatları
Fərqli yerlərdə yerləşdirə biləcəyim müxtəlif məlumat stansiyalarına sahib olmaq və məlumatları saxlayacaq bir ana stansiyaya (və ya mərkəzə) hesabat vermələrini istəyirdim. Müxtəlif fikirləri sınadıqdan sonra, cihazlar arasında sürətli ünsiyyət qurmağa imkan verdiyi üçün Espressif-in ESP-Now protokolundan istifadə etmək qərarına gəldim. ESP-Now haqqında bir az oxuya bilərsiniz və bu GitHub repo mənim ilhamımın böyük bir hissəsi idi.
Birinci şəkil sistemin sxemini göstərir. Hər bir sensor, ölçülərini sabit telli serial bağlantısı ilə əsas serverə ötürən bir ağ geçidi cihazına bildirir. Bunun səbəbi, ESP-Now protokolunun WIFI bağlantısı ilə eyni vaxtda aktiv ola bilməməsidir. Bir istifadəçinin veb səhifəyə daxil olması üçün WIFI-nin hər zaman aktiv olması lazımdır və bu da eyni cihazda ESP-Now ünsiyyətini istifadə etməyi qeyri-mümkün edir. Şlüz cihazı Espressif əsaslı bir cihaz olmalı olsa da (ESP-Now qabiliyyətinə malik), əsas server veb səhifəsini işlədə bilən hər hansı bir cihaz ola bilər.
Bəzi sensor stansiyaların batareyaları (və ya günəş enerjisi ilə işləyən batareyalar) bitər, digərləri isə sadəcə elektrik enerjisinə sahib olardı. Ancaq hamının mümkün qədər az enerji istifadə etməsini istədim və ESP8266 və ESP32 cihazlarında mövcud olan "dərin yuxu" xüsusiyyətinin son dərəcə faydalı olduğu yer budur. Sensor stansiyaları vaxtaşırı oyanır, ölçülər götürür və ağ geçidi cihazına göndərir və əvvəlcədən proqramlaşdırılmış müddət ərzində yuxuya gedir. Hər 5 dəqiqədə təxminən 300 ms olan oyanma müddəti (mənim vəziyyətimdə) enerji istehlakını əhəmiyyətli dərəcədə azaldır.
Addım 2: Sensorlar
Ətraf mühitin parametrlərini ölçmək üçün müxtəlif sensorlar var. Sürətli ölçmələrə imkan verdiyindən və əlimdə olan hər hansı bir cihazda işləyəcəyi üçün yalnız I2C rabitə qabiliyyətli sensorlar ilə qalmağa qərar verdim. Birbaşa IC-lərlə işləmək əvəzinə, dizaynlarımı asanlaşdırmaq üçün eyni pin çıxışı olan modullardan istifadə etməyə hazır olduqlarını axtardım. Yalnız temperatur və rütubəti ölçmək istəyimlə başladım və buna görə də SI7021 əsaslı bir modul seçdim. Daha sonra təzyiqi ölçə biləcək bir sensor istədim və BME280 əsaslı sensor modullarını sınamağa qərar verdim. Bəzi yerlərdə hətta işıq səviyyələrini izləmək istədim və BH1750 modulu ayrı bir sensor modulu olaraq bunun üçün ideal idi. Sensor modullarımı ebaydan aldım və aldığım modullar bunlardır:
- BME280 (GY-BMP/E280), temperaturu, rütubəti və təzyiqi ölçür
- SI7021 (GY-21), temperatur və rütubəti ölçür
- BH1750 (GY-302), işığı ölçür
GY-BMP/E280 PCB modullarının iki üslubu var. Hər ikisi də 1 -dən 4 -ə qədər sancaqlar üçün eyni pini paylaşırlar. Bir modulda CSB və SDO kimi iki əlavə sancaq var. Bu iki pin modulun 4 pinli versiyasına əvvəlcədən bağlanmışdır. SDO pininin səviyyəsi I2C ünvanını təyin edir (Toprak = 0x76, VCC = 0x77). I2C interfeysini seçmək üçün CSB pimi VCC -yə qoşulmalıdır. 4 pinli modulu üstün tuturam, çünki məqsədimə uyğun olaraq istifadəyə hazırdır.
Ümumiyyətlə, bu modulların istifadəsi çox rahatdır, çünki onlar artıq rabitə xətləri üçün çəkilmiş rezistorlara malikdir və hamısı 3.3V-də işləyir, buna görə də ESP8266 əsaslı lövhələrlə uyğun gəlir. Qeyd edək ki, bu sensor IC -lərdəki sancaqlar ümumiyyətlə 5V -ə dözmür, buna görə də onları Arduino Uno kimi bir şeylə birbaşa əlaqələndirmək onları həmişəlik zədələyə bilər.
Addım 3: Sensor stansiyaları
Qeyd edildiyi kimi, sensor stansiyalarının hamısı ESP-Now rabitə protokolundan istifadə edən Espressif cihazları olacaq. Əvvəlki proyektlərdən və təcrübələrdən ilkin testlərimi aparmaq və onları son dizayna daxil etmək üçün bir neçə fərqli cihazım var idi. Əlimdə aşağıdakı cihazlar var idi:
- iki ESP-01 modulu
- iki Wemos D1 mini inkişaf lövhəsi
- bir Lolin ESP8266 inkişaf lövhəsi
- bir ESP12E seriyalı WIFI dəsti lövhəsi
- bir GOOUUU ESP32 lövhəsi (38 pinli inkişaf kartı)
Wemos D1 R2 inkişaf etdirmə lövhəm də var idi, amma dərin yuxudan oyanmasına imkan verməyən və qapı yolu qurğusu kimi çöküb düzgün yenidən başlamayacaq problemləri vardı. Daha sonra təmir etdim və Qaraj Qapısı açma layihəsinin bir hissəsi oldu. "Dərin yuxunun" işləməsi üçün ESP8266 -nın RST pininin GPIO16 pininə bağlanması lazımdır, beləliklə yuxu taymeri cihazı oyada bilər. İdeal olaraq, bu əlaqə Schottky diodu (GPIO16-dan katod) ilə edilməlidir ki, proqramlaşdırma zamanı USB-TLL bağlantısı vasitəsi ilə əl ilə sıfırlama hələ də işləsin. Bununla birlikdə, aşağı dəyərli (300 iş Ohm) bir rezistor və ya hətta birbaşa tel bağlantısı hələ də uğurlu ola bilər.
ESP-01 modulları GPIO16 pininə asanlıqla daxil olmağa imkan vermir və birbaşa IC-yə lehim edilməlidir. Bu sadə bir iş deyil və bunu hər kəsə məsləhət görməzdim. ESP12E seriyalı WIFI dəsti lövhəsi bir az yenilik idi və məqsədim üçün faydalı olması üçün bir neçə dəyişiklik tələb olundu. İstifadə etmək üçün ən asan lövhələr Wemos D1 mini tipli lövhələr və Lolin lövhələri idi. ESP32 cihazları, dərin yuxunun işləməsi üçün heç bir dəyişiklik tələb etmir. Andreas Spiessin bu mövzuda gözəl bir təlimatı var.
Addım 4: ESP-01 Sensor Stansiyası
Bütün sensor stansiyalarında, toplaya biləcək toz miqdarını azaltmaq üçün sensor modulları şaquli olaraq quraşdırılmışdır. Hamısı korpusda deyil və mən onları korpuslara quraşdıra bilmərəm. Bunun səbəbi, cihazların istiləşə bilməsi və kifayət qədər havalandırılmadıqda temperatur və rütubət göstəricilərinə təsir etməsidir.
ESP-01 lövhələri çox yığcamdır və işləmək üçün bir neçə rəqəmsal IO pininə malikdir, lakin I2C interfeysi üçün kifayətdir. Lövhələr "dərin yuxu" nun işləməsinə icazə vermək üçün çətin bir dəyişiklik tələb edir. Göstərilən fotoda, künc pinindən (GPIO16) başlıqdakı RST pininə qədər bir tel lehimlənmişdir. İstifadə etdiyim tel 0.1 mm diametrli izolyasiya edilmiş "təmir" telidir. İzolyasiya örtüyü qızdırıldıqda əriyir, buna görə də PCB -lərdəki izləri və s. Təmir etmək üçün lehimlənə bilər və telin digər komponentlərlə təmasda olduğu şort yaratmaqdan narahat olmayın. Ölçüsü işləməyi çətinləşdirir və mən bu teli (həvəskar/damğa toplayanların tərzi) mikroskop altında yerinə lehimlədim. Sağ tərəfdəki başlığın 0,1 "(2,54 mm) pin aralığına malik olduğunu unutmayın. Burada Schottky diodunun quraşdırılması heç də asan olmayacaq, buna görə də yalnız teli sınamaq qərarına gəldim və hər iki cihaz da artıq işləyir heç bir problem olmadan bir ay.
Modullar yaratdığım iki prototip lövhəsinə quraşdırılıb. Biri (#1), I2C modullarının quraşdırılmasına və sınaqdan keçirilməsinə imkan verən bir proqramçı lövhəsidir, digər (#2) isə I2C cihazları üçün inkişaf/test lövhəsidir. İlk lövhədə, cihazı birbaşa USB divar adapterindən gücləndirmək üçün köhnə bir USB kişi konnektoru və kiçik bir PCB ilə birlikdə lehimlədim. Digər bölmədə vintli terminal başlığına uyğun olaraq dəyişdirilmiş və bir divar adapteri ilə işləyən adi bir DC yuvası var.
Şematik, necə bağlı olduqlarını və proqramçının necə işlədiyini göstərir. Başqa ESP-01 modullarım yoxdur, ona görə də proqramçıya heç bir ehtiyacım olmadı. Gələcəkdə onlar üçün bir PCB hazırlayacağam. Bu lövhələrin hər ikisində SI7021 sensor modulu quraşdırılıb, çünki o yerlərdə təzyiq ölçülməsi ilə o qədər də maraqlanmırdım.
Addım 5: ESP 12E Serial WIFI Kit Sensor Stansiyası
ESP12E Serial WIFI Kit lövhəsi, bu cihazla nə edilə biləcəyini göstərmək üçün olduğu kimi inkişaf üçün də nəzərdə tutulmamışdır. ESP8266 proqramlaşdırma haqqında bir az öyrənmək üçün çoxdan aldım və nəhayət yeni bir istifadə etməyə qərar verdim. Nümayişlər üçün quraşdırılmış bütün LED -ləri sildim və istifadə etdiyim modullara uyğun bir USB proqramlaşdırma başlığı və I2C başlığı əlavə etdim. Analoq giriş pininə bağlı bir CdS foto rezistoru vardı və onu orda qoymağa qərar verdim. Bu xüsusi bölmə qaraj atelyemizi izləyəcəkdi və fotoşəkil sensoru işıqların təsadüfən yandırılıb-açılmadığını mənə bildirmək üçün kifayət idi. İşıq ölçülməsi üçün oxunuşları mənə bir faiz çıxışı vermək üçün normallaşdırdım və gecə "5" dən yuxarı olan hər şey işıqların açıq qaldığını və ya evin bir qapısının düzgün bağlanmadığını ifadə etdi. RST və GPIO16 sancaqları PCB -də aydın şəkildə etiketlənir və onları birləşdirən Schottky diodu PCB -nin alt hissəsinə quraşdırılmışdır. Bir USB divar şarj cihazına birbaşa qoşulmuş bir USB seriyalı lövhə ilə təchiz edilmişdir. Bu USB seriyalı lövhələrin əlavə xüsusiyyətlərinə sahibəm və hazırda buna ehtiyacım yoxdur.
Bu lövhə üçün bir sxem yaratmadım və ümumiyyətlə bu məqsədlə istifadə etmək üçün satın almağı məsləhət görmürəm. Wemos D1 Mini lövhələri daha uyğundur və bundan sonra müzakirə olunacaq. Baxmayaraq ki, bunlardan biriniz varsa və bəzi məsləhətlərə ehtiyacınız varsa, kömək etməkdən məmnun olaram.
Addım 6: D1 Mini Sensor Stansiyaları
Wemos D1 Mini tipli ESP8266 inkişaf etdirmə lövhələri istifadə etməyi üstün tutdum və bunu təkrar etməli olsaydım, bunları istifadə edərdim. Çox sayda əlçatan IO pinləri var, Arduino IDE vasitəsilə birbaşa proqramlaşdırıla bilər və hələ də olduqca yığcamdır. Bu lövhələrdə D0 pin GPIO16 -dır və bir Schottky diodunu birləşdirmək olduqca asandır. Şematik, bu lövhələri necə bağladığımı göstərir və hər ikisi də BME2808 sensor modulundan istifadə edir.
İki lövhədən biri xarici havanı izləmək üçün istifadə olunur və günəş enerjisi batareyasından işləyir. 165mm x 135mm (6V, 3.5W) günəş paneli TP4056 Li-ion batareya şarj moduluna qoşulur (Günəş enerjisi ilə işləyən Batareya Sensor Stansiyasının Quraşdırma Şemasına baxın). Bu xüsusi şarj modulu (03962A), batareyada (paketdə) yoxdursa lazım olan bir batareya qoruyucu dövrə malikdir. Li-ion batareya, köhnə bir dizüstü batareya paketindən təkrar istifadə edildi və hələ də D1 Mini lövhəsini işə salmaq üçün kifayət qədər şarj saxlaya bilər, xüsusən də dərin yuxu rejimindədir. Lövhə elementlərdən bir qədər etibarlı şəkildə qorunması üçün plastik bir qəfəsə yerləşdirildi. Bununla birlikdə, içərinin xarici temperatur və rütubətə məruz qalması üçün qarşı tərəfdən 25 mm diametrli iki delik açılmış və (içəridən) qara mənzərə parça ilə örtülmüşdür. Parça nəmin nüfuz etməsi üçün nəzərdə tutulmuşdur və buna görə rütubəti ölçmək olar. Kassanın bir ucunda kiçik bir çuxur qazılmış və şəffaf plastik pəncərə quraşdırılmışdır. BH1750 işıq sensoru modulunun yerləşdiyi yer budur. Bütün qurğu açıq havada, işıq sensoru açıq yerə baxaraq kölgədə (birbaşa günəş işığı deyil) yerləşdirilir. Buradakı yağışlı/buludlu qış havamızda təxminən 4 həftədir ki, günəş enerjisi ilə işləyən batareyadan işləyir.
Addım 7: Gateway və Web Server
ESP-Now Gateway cihazı üçün Lolin NodeMCU V3 (ESP8266) lövhəsi, Web Server üçün isə ESP32 (GOOUUU lövhəsi) istifadə edilmişdir. Demək olar ki, hər hansı bir ESP8266 və ya hətta ESP32 lövhəsi ağ geçidi cihazı kimi xidmət edə bilərdi, bu, əlimdəki bütün digər lövhələri istifadə etdikdən sonra "qaldığım" lövhə idi.
ESP32 lövhəsini istifadə etdim, çünki məlumatları toplamaq, sıralamaq, anbarda saxlamaq və veb serverini işə salmaq üçün bir az daha çox hesablama gücünə malik bir lövhəyə ehtiyacım var. Gələcəkdə öz sensoru və yerli (OLED) ekrana sahib ola bilər. Saxlama üçün xüsusi bir adapter ilə bir SD kart istifadə edildi. Ümumi bir microSD -dən SD kart adapterinə istifadə etdim və 7 pinli (0.1 pitch) başlığı örtülmüş kontaktlara lehimlədim. Əlaqələr qurmaq üçün bu GitHub -un tövsiyələrinə əməl etdim.
Prototip qurma qurğusunda (Dupont telləri ilə) bir sensor modulu yoxdur, amma hazırladığım son PCB həm kiçik, həm də kiçik bir OLED ekrana imkan verir. Bu PCB -ni necə hazırladığım haqqında ətraflı məlumat başqa bir Təlimatın bir hissəsidir.
Addım 8: Proqram təminatı
ESP8266 (ESP-NOW) Cihazları
Bütün cihazlar üçün proqram Arduino IDE (v1.87) istifadə edərək yazılmışdır. Hər bir sensor stansiyası əsasən eyni kodu işləyir. Yalnız I2C ünsiyyətində hansı pinlərin istifadə edildiyinə və hansı sensor moduluna bağlandığına görə fərqlənirlər. Ən əsası, eyni sensora malik olmalarından asılı olmayaraq eyni ölçü məlumat paketini ESP-Now Gateway stansiyasına göndərirlər. Bunun mənası odur ki, bəzi sensor stansiyalarında real dəyərləri təmin edəcək sensorlar yoxdursa təzyiq və işıq səviyyəsi ölçmələri üçün saxta dəyərlər dolduracaqlar. Hər stansiya və keçid üçün kod Anthony Elderin bu GitHubdakı nümunələrindən uyğunlaşdırılmışdır.
Şəbəkə cihaz kodu, ESP8266 -da yalnız bir tam işləyən hardware UART olduğuna görə veb server ilə əlaqə qurmaq üçün SoftwareSerialdan istifadə edirdi. 9600 maksimum baud sürətində çalışmaq olduqca etibarlı görünür və bu nisbətən kiçik məlumat paketlərini göndərmək üçün kifayətdir. Şlüz cihazı da xüsusi bir MAC ünvanı ilə proqramlaşdırılmışdır. Bunun səbəbi, dəyişdirilməyə ehtiyacı olduğu təqdirdə, sensor stansiyalarının hamısının yeni alıcı MAC ünvanı ilə yenidən proqramlaşdırılmasına ehtiyac yoxdur.
ESP32 (Veb Server)
Hər bir sensor stansiyası məlumat paketini veb serverə göndərən ağ geçidi cihazına göndərir. Məlumat paketi ilə yanaşı, hər bir stansiyanı müəyyən etmək üçün sensor stansiyasının MAC ünvanı da göndərilir. Veb serverdə hər bir sensörün yerini təyin etmək və məlumatları buna görə sıralamaq üçün "axtarış" cədvəli var. Ölçmələr arasındakı vaxt intervalı 5 dəqiqəyə əlavə olaraq təsadüfi bir faktor olaraq təyin edildi ki, sensorlar qapı yolu cihazına göndərilərkən bir -biri ilə "toqquşmur".
Ev WIFI yönlendiricisi, WIFI -yə qoşulduqda veb serverə sabit bir IP ünvanı ayırmaq üçün qurulmuşdu. Mənim üçün 192.168.1.111 idi. İstənilən brauzerdə bu ünvanı yazmaq, istifadəçi ev şəbəkəsinin WIFI diapazonunda olduğu müddətdə hava stansiyası veb serverinə qoşulacaq. İstifadəçi veb səhifəsinə qoşulduqda, veb server ölçülər cədvəli ilə cavab verir və hər sensorun son ölçmə vaxtını ehtiva edir. Beləliklə, bir sensor stansiyası cavab vermirsə, oxu 5-6 dəqiqədən çox olarsa bunu cədvəldən görmək olar.
Məlumatlar SD kartdakı fərdi mətn sənədlərində saxlanılır və veb səhifədən də yüklənə bilər. Məlumat hazırlamaq üçün Excel və ya hər hansı digər tətbiqə idxal edilə bilər
Android Tətbiqi
Smartfonda yerli hava məlumatlarına baxmağı asanlaşdırmaq üçün Android Studio istifadə edərək nisbətən Android Tətbiqi yaratdım. GitHub səhifəmdə burada mövcuddur. Veb səhifəsini serverdən yükləmək və məhdud funksionallıq kimi web baxış sinifindən istifadə edir. Məlumat fayllarını yükləyə bilməz və onsuz da telefonumdakılara ehtiyacım yox idi.
Addım 9: Nəticələr
Nəhayət, ev hava stansiyamdan bəzi nəticələr. Məlumat bir noutbuka endirildi və Matlab -da quruldu. Matlab skriptlərimi əlavə etdim və siz də onları GNU Octave -də işlədə bilərsiniz. Xarici sensor təxminən 4 həftədir ki, günəş batareyası ilə işləyir və ilin bu vaxtında nadir hallarda günəş olur. İndiyə qədər hər şey yaxşı işləyir və ailədəki hər kəs məndən soruşmaqdansa, özləri havaya baxa bilərlər!
Tövsiyə:
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 8 Addım (Şəkillərlə)
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 2 fərqli yerdə 1 illik uğurlu əməliyyatdan sonra günəş enerjisi ilə işləyən hava stansiyası layihə planlarımı paylaşıram və uzun müddət ərzində həqiqətən də sağ qala biləcək bir sistemə necə çevrildiyini izah edirəm. günəş enerjisindən dövrlər. Təqib etsəniz
DIY Hava İstasyonu və WiFi Sensor Stansiyası: 7 Adım (Şəkillərlə birlikdə)
DIY Hava İstasyonu və WiFi Sensor Stansiyası: Bu layihədə sizə WiFi sensor stansiyası ilə birlikdə bir hava stansiyası necə yaradılacağını göstərəcəyəm. Sensor stansiyası yerli temperatur və rütubət məlumatlarını ölçür və WiFi vasitəsilə hava stansiyasına göndərir. Hava stansiyası daha sonra t
ESP32 Günəş Hava İstasyonu: 4 Adım (Şəkillərlə birlikdə)
ESP32 Günəş Hava İstasyonu: İlk IoT layihəm üçün bir Hava İstasyonu qurmaq və məlumatları data.sparkfun.com ünvanına göndərmək istədim. Kiçik bir düzəliş, hesabımı Sparkfunda açmağa qərar verdiyim zaman daha çox əlaqəni qəbul etmədilər, buna görə də başqa bir IoT məlumat toplayıcısı seçin
Qrafik Hava İstasyonu: 7 Adım (Şəkillərlə birlikdə)
Qrafik Hava İstasyonu: Həmişə qrafik hava stansiyasına sahib olmaq istəyirsiniz? Və dəqiq sensorlar ilə? Bəlkə də bu layihə sizin üçün bir şeydir. Bu hava stansiyası ilə havanın "nə etdiyini" görə bilərsiniz. Məsələn, temperatur yüksələ və ya düşə bilər. N -dən
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): 5 Addım (Şəkillərlə)
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): Acurite 5 -i 1 hava stansiyasından alanda evdən kənarda olduğum zaman havanı yoxlamaq istəyirdim. Evə gəlib qurduqda ya ekranı kompüterə bağlamalı olduğumu, ya da ağıllı mərkəzini almalı olduğumu başa düşdüm