Mündəricat:

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: 8 Addım (Şəkillərlə)

Video: NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 8 Addım (Şəkillərlə)

Video: NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 8 Addım (Şəkillərlə)
Video: На кладбище каждую ночь выла стая собак. Причина поразила местных жителей! 2024, Iyul
Anonim
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Doğru şəkildə Edildi
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Doğru şəkildə Edildi
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Doğru şəkildə Edildi
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Doğru şəkildə 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ə bunun günəş enerjisindən uzun müddət həqiqətən sağ qala biləcək bir sistemə necə çevrildiyini izah edirəm. Təlimatlarımı izləsəniz və sadalananlarla eyni materiallardan istifadə etsəniz, uzun illər işləyəcək günəş enerjisi ilə işləyən bir hava stansiyası qura bilərsiniz. Əslində nə qədər çalışacağını məhdudlaşdıran yeganə faktor, istifadə etdiyiniz batareyanın ömrüdür.

Addım 1: Hava İstasyonu İstismarı

1, Verici: Periyodik olaraq qapalı qəbuledici qurğuya hava telemetrisi (Temperatur, Rütubət, İstilik İndeksi, Günəş Gücü) göndərən günəş paneli olan açıq yerə quraşdırılmış qutu.

2, Alıcı: Məlumat qəbulu üçün qoşulmuş 433 Mhz RF Alıcısına malik olan Raspberry PI 2 + Arduino Mega -dan hazırlanan daxili qurğu. Quraşdırma zamanı bu qurğunun heç bir yerli LCD ekran funksiyası yoxdur. Qəflətən çalışır. Əsas bir C proqramı, Arduinodan gələn məlumatları serial vasitəsilə almağı, sonra məlumatları bir mətn sənədinə daxil etməyi və digər cihazların sorğu aparması üçün telnet vasitəsilə əldə edilən son məlumatları təmin edir.

Stansiya fotorezistorun oxunması ilə evimdəki işıqları idarə edir (çöldə gündüz və ya gecə olub olmadığını müəyyən edir). Alıcı mənim vəziyyətimdə başsızdır, ancaq bir LCD ekran əlavə etmək üçün layihəni asanlıqla dəyişdirə bilərsiniz. İstasyondan gələn hava məlumatlarını istifadə edən, təhlil edən və göstərən cihazlardan biri də mənim digər layihəmdir: NetBSD Toaster Ironforge.

Addım 2: İlk versiyalar

İlk Versiyalar
İlk Versiyalar
İlk Versiyalar
İlk Versiyalar
İlk Versiyalar
İlk Versiyalar
İlk Versiyalar
İlk Versiyalar

Şəbəkədə bir çox günəş layihəsi var, lakin bir çoxları, xüsusən buludlu, qaranlıq qış aylarında, günəş panelinin doldura biləcəyi sistemin batareyadan daha çox enerji çıxardığı ümumi səhvi edirlər.

Günəş enerjisi ilə işləyən bir sistem hazırladığınızda, vacib olan bütün komponentlərdə GÜÇ İSTİFADƏSİ: mcu, radio ötürücü, gərginlik tənzimləyicisi və s.

Yalnız bir neçə bit hava məlumatlarını toplamaq və daşımaq üçün moruq pi və ya ESP kimi güclü ac wifi cihazı kimi böyük bir kompüterdən istifadə etmək çox çətin olardı, amma bu dərslikdə göstərəcəyim kimi hətta kiçik bir Arduino lövhəsi belədir.

Ən yaxşısı, qurma prosesində həmişə bir sayğac və ya bir ölçü ilə cərəyanı ölçməkdir (əməliyyat zamanı istifadə zamanı kiçik sıçrayışları çox qısa müddətlərdə (milisaniyə) ölçməyə çalışdığınız zaman faydalıdır).

Birinci şəkildə birinci (Arduino Nano Based) stansiyamı və ikinci Arduino Barebone Atmega 328P lövhəsini görə bilərsiniz.

İlk versiya, mükəmməl işləsə də (ətraf mühitin monitorinqi və məlumatların radio vasitəsilə göndərilməsi) ~ 46mA çox yüksək enerji istehlakına malik idi və bir neçə həftə ərzində batareyanı boşaldıb.

Bütün versiyalarda aşağıdakı batareya istifadə olunurdu:

18650 6000mAh Qorunan Li-ion Şarj Edilə bilən Batareya Daxili Qoruma Kartı

Bu ScamFire batareyaları haqqında YENİLƏNİN. Bu olduqca köhnə bir Təlimat olsa da, hələ də bu saxta batareya səbəbindən düzəltmək məcburiyyətində qaldığımı hiss etdim. Göstərilən batareyanı ALMAYIN, digər LION/LIPO batareyaları haqqında öz araşdırmalarınızı aparın, bütün 3.7V batareyalar bu layihə ilə işləyəcək.

Nəhayət, həqiqi tutumunun nə olduğunu görmək üçün ScamFire batareyasını silməyə vaxt tapdım. Buna görə real və "elan edilmiş" tutumlarla birlikdə 2 hesablama aparacağıq.

Hər şeydən əvvəl, bu batareyanın saxta olması və bu barədə iddia etdiklərinin heç bir şey doğru olmadığı, yeni versiyaların daha da pis olması, saxtanı 2 sentlik qoruyucu dövrə buraxaraq kopyaladıqları üçün sıfıra qədər boşalmalarına heç nə mane olmayacaq.

LION/LIPO batareyaları haqqında kiçik bir məqalə:

TLDR:

Bunun mənası, hüceyrənin maksimum gərginliyinin 4.2v olması və "nominal" (orta) gərginliyin 3.7V olmasıdır.

Məsələn, burada 'klassik' 3.7V/4.2V batareya üçün gərginlik profili verilmişdir. Gərginlik maksimum 4.2 -dən başlayır və batareya ömrünün çox hissəsi üçün sürətlə təxminən 3.7V -ə düşür. 3.4V vurduqda batareya ölür və 3.0V -də kəsmə dövrəsi batareyanı ayırır.

Bir saxta yük istifadə edərək ölçmələrim:

Batareya dolduruldu: 4.1V

Kəsmə həddi: 3.4V

Yük simulyasiyası: 0.15A (cihazımın bundan aşağı düşməsində bir az problem var idi.)

Ölçülmüş tutum: 0.77Ah, reklam edilən 6000mAh əvəzinə 800mAh olan pulsuz 0.8 Ah verin!

Bu batareyada qoruyucu dövrə belə olmadığı üçün sərbəst şəkildə aşağı düşə bilərdim, amma 10 dəqiqədən sonra 3.4V -də artıq 3.0V -ə düşür.

Beləliklə, sadə hesablamalarla batareya təmin edir:

Nəzəri

Batareya gərginliyi = 3.7V

Güc = 3.7x6000 = 22000 mWh

Real

Batareya gərginliyi = 3.7VPower = 3.7x800 = 2960 mWh

Versiya: 0.1 ARDUINO NANO BAZLI

LowPower kitabxanasında belə bir Arduino nano ~ 16 mA (yuxu rejimində) -> FAIL.

Nəzəri

Pavg = VxIavg = 5Vx16mA = 80 mW

Batareya ömrü = 22000/80 = 275 saat = təxminən 11 gün

RealPavg = VxIavg = 5Vx16mA = 80 mW

Batareya ömrü = 800/80 = 10 saat

Versiya: 0.2 Atmega 328P Barebone

ATmega328 -in istehlak etdiyi güc, nə etdiyinizdən çox asılıdır. Varsayılan vəziyyətdə oturaraq, 16MHz -də işləyərkən 16mA @ 5V istifadə edə bilər.

ATmega328P aktiv rejimdə olduqda, saniyədə bir neçə milyon təlimatı davamlı olaraq yerinə yetirəcəkdir. Əlavə olaraq, Rəqəmsal Dönüştürücüyə (ADC), Serial Periferik İnterfeysə (SPI), Taymer 0, 1, 2, İki Telli İnterfeys (I2C), USART, Gözətçi Taymeri (WDT) və Qəhvəyi Açıqlama Alqoritminə Bənzər Çevrimiçi Cihazlar (BOD) güc istehlak edir.

Gücə qənaət etmək üçün ATmega328P MCU bir çox yuxu rejimini dəstəkləyir və istifadə olunmayan ətraf qurğular söndürülə bilər. Yuxu rejimi, hansı hissələrin aktiv qaldığı, yuxu müddəti və oyanmaq üçün lazım olan vaxt (oyanma dövrü) ilə fərqlənir. Yuxu rejimi və aktiv periferik qurğular AVR yuxu və güc kitabxanaları ilə və ya daha qısası, əla Güclü kitabxana ilə idarə oluna bilər.

Aşağı Güclü kitabxananın istifadəsi sadədir, lakin çox güclüdür. LowPower.powerDown ifadəsi (SLEEP_8S, ADC_OFF, BOD_OFF); ilk arqumentdən asılı olaraq MCU -nu 16 ms -dən 8 s -ə SLEEP_MODE_PWR_DOWN -ə qoyur. ADC və BOD -u deaktiv edir. Gecə yuxu, bütün çip funksiyalarının növbəti fasiləyə qədər aradan qalxması deməkdir. Bundan əlavə, xarici osilatör dayandırılır. Yalnız INT1 və INT2 -də səviyyə kəsilmələri, pin dəyişikliyi kəsmələri, TWI/I2C ünvan uyğunluğu və ya WDT aktiv olduqda MCU -nu oyada bilər. Beləliklə, tək bir ifadə ilə enerji istehlakını minimuma endirəcəksiniz. Açıqlamanı işlədən 3.3 V Pro Mini -nin güc LEDi və tənzimləyicisi yoxdur (aşağıya baxın) üçün enerji istehlakı 4.5 μA -dır. Bu, WDT-nin 4.2 μA effektivliyi ilə söndürmə yuxusu üçün ATmega328P məlumat cədvəlində qeyd olunanlara çox yaxındır (məlumat səhifəsi mənbələrdə əlaqələndirilmişdir). Buna görə də, əminəm ki, powerDown funksiyası mümkün olan hər şeyi bağlayır. LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); ifadəsi ilə WDT deaktiv ediləcək və bir fasilə tetiklenene qədər oyanmayacaqsınız.

Çılpaq sümük quruluşu ilə çipi çox az miqdarda enerji sərf edərkən 5 dəqiqə yuxu rejiminə keçirə bilərik (ətraf qurğular olmadan 0.04 mA). Ancaq bu, yalnız kristal osilatörlü Atmega 328P çipidir və başqa heç nə yoxdur, bu konfiqurasiyada batareya gərginliyini 3.7V -> 5.0 V arasında artırmaq üçün istifadə olunan gərginlik gücləndiricisi də 0.01 mA istehlak edir.

Sabit bir gərginlik drenajı, yuxu rejimində istehlakı ümumi 1 mA -a qədər artıran fotoşəkil rezistoru idi (buna bütün komponentlər daxildir).

Cihazın həm yuxu, həm də oyanma rejimində dəqiq istehlakını hesablamaq üçün düstur:

Iavg = (Ton*Ion + Tsleep*Yuxu) / (Ton + Tsleep)

İon = 13mA

Bu əsasən RF433 Mhz ötürücüsündən gəlir:

Verici:

İş gərginliyi: maksimum 3V - 12V güc istehlakı 12V İşləmə cərəyanı: maksimum 40mA -dan az və ən az 9m Maresonans rejimi: (SAW) Modulyasiya rejimi: ASKİşləmə tezliyi: Eve 315MHz və ya 433MHz Göndərmə gücü: 25mW (12V -də 315MHz) Tezlik xətası: +150kHz (maksimum) Sürət: 10Kbps -dən az

Yuxu = 1mA

Fotorezistor olmasaydı əhəmiyyətli dərəcədə az olardı.

Trunon vaxtı Ton = 250 mS = 0.25s

Yuxu vaxtı Tsleep = 5 dəq = 300s

Iavg = (Ton*Ion + Tsleep*Yuxu) / (Ton + Tsleep)

Iavg = (0.25s*13mA + 300s*1mA) / (0.25s + 300s)

Iavg = 1.26mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

Nəzəri

Batareya ömrü = 22000mWh/6mW = 3666 saat = təxminən 152 gün

Real

Batareya ömrü = 800mWh/6mW = 133 saat = təxminən 5.5 gün

Bunlar hələ əvvəllər istifadə etdiyim daha yaxşı bir UltraFire seriyası olsa da, günəş paneli və ya aşağı 1mA istehlakı olmadan bu layihənin uzun müddət yaşaya bilməyəcəyini görə bilərsiniz.

Stansiyanı qurmaqdan və tapıntılarınızı və hesablamalarınızı şərhlərə yazmaqdan çekinmeyin və məqaləni yeniləyəcəyəm. Fərqli MCU -lərin nəticələrini və çeviriciləri gücləndirməyi də təqdir edərdim.

Addım 3: Uğurlu Hava İstasyonu qurmaq

Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu Qurulması
Uğurlu Hava İstasyonu qurulması
Uğurlu Hava İstasyonu qurulması

İlk uğurlu versiya olsa da, şəkillərdə bir az uğursuzluq var və stansiyalar artıq yerləşdirildiyi üçün bunları yenidən düzəldə bilmərəm. Şəkildə göstərilən iki gərginlik gücləndiricisi, aero-modelləşdirmə və digər tətbiqlər üçün yazılarkən əldə edilə bilər. Stansiyamı yenidən dizayn edərkən, daha kiçik və daha səmərəli bir gərginlik artırma lövhəsi almağı düşünürdüm, amma ölçüsü kiçik olsa da, bu, daha səmərəli olduğu anlamına gəlmir.

Şəkildəki indikatoru olmayan yeni kiçik modul əslində 3mA (*FAIL*) quruddu, buna görə də köhnə lövhəmlə qaldım:

PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module

Yazı zamanı bu modul hələ də Ebay -da 99 sent üçün mövcuddur, ancaq başqa bir gücləndirici istifadə etmək qərarına gəlsəniz, həmişə gözləmə gücünü yoxlayın. Keyfiyyətli bir gücləndirici ilə, mənimkindən (0.01 mA) çox olmamalıdır, baxmayaraq ki, göyərtədəki kiçik LED-lərin lehimlənməsi lazım idi.

Addım 4: Avadanlıq siyahısı

Avadanlıq siyahısı
Avadanlıq siyahısı
  • 18650 6000mAh Qorunan Li-ion Şarj Edilə bilən Batareya Daxili Qoruyucu Kart
  • Yükləyici ilə Atmega 328P16M 5V
  • Adafruit DC Boarduino (Arduino ilə uyğun) Kit (w/ATmega328) <gələcəkdə yalın sümük layihələri edirsinizsə bu yaxşı bir investisiya olacaq
  • Fotoşəkil Həssas Rezistor Fotoresistor Optorezistor 5mm GL5539
  • 1A 1000V Diod 1N4007 IN4007 DO-41 Düzəldici Diodlar
  • PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA Mini Günəş Paneli Modul Sistemi Epoksi Hüceyrə Şarj Cihazı DIY
  • TP405 5V Mini USB 1A Lityum Batareya Şarj Kartı Şarj Cihazı Modulu
  • Arduino/ARM/MC uzaqdan idarəetmə üçün 433Mhz RF ötürücü və qəbuledici əlaqə dəsti <Kit, həm ötürücü, həm də aşkarlayıcıdan ibarətdir
  • IP65 Açar Qoruyucu Bağlantı Qutusu 150x110x70 mm Açıq Suya Dözümsüz
  • Arduino üçün yeni DHT22 Temperatur və Nisbi Nəmlik Sensor Modulu
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diod
  • Adafruit 16 MHz Seramik Rezonator / Osilator [ADA1873]
  • Alıcı stansiyası üçün Arduino UNO/Mega və s. + Raspberry PI 1/2/3
  • Şəffaf Akril Plastik Qutu (isteğe bağlı)

Bunların hamısını Ebay -da tapa bilərsiniz, heç bir satıcıyı səhifələrinə keçid edərək tanıtmaq istəmirəm və bağlantılar onsuz da gələcəkdə ölü olacaq.

Avadanlıq siyahısı üçün qeydlər:

Atmega -nı birtəhər kəşf etsəniz, daha çoxunu satın alsanız, gərginlik gücləndiricisi və günəş şarj nəzarətçisi üçün də keçərlidir.

Günəş şarj cihazında yalnız günəş enerjisi ilə doldurulduqda açılan 2 qırmızı rəngli LED var (qırmızı-> şarj, mavi-> tam dolu vəziyyətlər). Bunlar da satılmamış ola bilər. Şarj edərkən batareyaya bir az daha çox əlavə suyu verir.

Gördüyünüz kimi siyahımda heç bir batareya sahibi yoxdur. Niyə? Çünki etibarsızdırlar. Batareya tutucusundan çıxdıqda və əlaqəni kəsdiyimizdə saysız -hesabsız hadisələr yaşadım. Xüsusilə quruluşunuz mənim kimi yüksək bir çanaq dirəyinə quraşdırılıbsa, istənilən sərt hava şəraitinə açıqdır. Hətta batareyanı 2 fermuarla tutucuya bağladım və yenə də çıxmağı bacardı. Bunu etməyin, yalnız batareyadan xarici örtüyü çıxarın və telləri batareyanın altına, həddindən artıq yükləmə qoruma dövrəsini ehtiva edərək lehimləyin (qorumanı aşmayın). Batareya tutucusu yalnız batareyanı cihazda saxlamaq üçün istifadə edilə bilər.

TP405 5V Mini USB 1A Lityum Batareya Şarj Kartı: Təəssüf ki, bu lövhədə günəş panelinə tərs cərəyan qorunması daxil deyil, bunun üçün cərəyanın sınmasını dayandırmaq üçün günəş panelinin bir ayağı ilə şarj dövrəsinin arasına yerləşdirilməsi üçün daha 1 dioda ehtiyacınız olacaq. Gecələr günəş panelinə geri qayıtmaq.

Addım 5: Montaj

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

Bu lövhə nisbətən az komponentdən ibarətdir və lövhədəki işarələr olduqca sadədir.

Atmega328P -ni səhv bir şəkildə daxil etmədiyinizə əmin olun (çipi qızdıra və kərpicləndirə bilər, gərginlik gücləndiricisini də məhv edə bilər).

Bu quruluşda çip aşağıya baxır (kiçik U çuxur işarəsi PIN1). Bütün digər komponentlər aydın olmalıdır.

LDR üçün ekranlı kabel (məsələn: CDromdan gələn Audio Kabel yaxşı olacaq) istifadə edin. Bəzi hallarda (bir neçə həftəlik sınaqlar zamanı) radio siqnalının ötürülməsinə müdaxilə etdiyi ortaya çıxdı. Bu, problemi həll etmək çətin olan səhvlərdən biri idi, buna görə də problem yaşamaq istəmirsinizsə, yalnız ekranlı bir kabel istifadə edin, hekayənin sonu.

LED: Qutunun altındakı LED əvvəlcə gedən radio ötürülməsi olduqda yanıb -sönmək üçün əlavə edildi, lakin sonradan onu güc itkisi hesab etdim və açılış prosesində yalnız 3 dəfə yanıb -sönür.

TP: ümumi dövrə üçün cərəyanı ölçmək üçün sınaq nöqtəsidir.

DHT22: Ucuz DHT11 almayın, mənfi temperaturları da ölçə bilən ağ DHT22 almaq üçün 50 qəpik daha xərcləyin.

Addım 6: Kassa Dizaynı

Kassa Dizaynı
Kassa Dizaynı
Kassa Dizaynı
Kassa Dizaynı
Kassa Dizaynı
Kassa Dizaynı

Bir az həddindən artıq olsa da, DHT22 temperatur sensörünü yerində saxlamaq üçün 3D çaplı bir kub (weather_cube) hazırlanmışdır. Küp, IP qutusunun altına yapışdırılır və havanın sensora çatması üçün yalnız 1 deşikdən ibarətdir. Arılara, arılara və digər kiçik milçəklərə qarşı çuxura bir ağ əlavə etdim.

Açıq bir qabda quraşdırdığınız təqdirdə stansiyanı daha çox suya davamlı etmək üçün xarici bir qutu istifadə edilə bilər.

1 faydalı xüsusiyyət üçün fikir: yayda günəşdən kölgə təmin edən qutunun üstünə 1-2 sm məsafədə böyük bir metal tavan plakası əlavə etmək, baxmayaraq ki, bu da faydalı günəş işığımızı paneldən uzaqlaşdıra bilər. Panel və qutunu ayıran bir dizayn hazırlaya bilərsiniz (paneli günəşdə, qutu kölgədə).

Şəkillərdə: 1 ildən sonra iş mühitindən çıxarılan stansiyalardan biri, batareyanın gərginliyi heyrətamiz 3.9V -dir, kubun altına yapışdırdığım tor parçalansa da qutunun heç bir hissəsində su zədəsi yoxdur. İstismar edilməli olan stansiyanın səbəbi, LDR konnektorundakı əlaqə xətasıdır, baxmayaraq ki, tullanan kabel hələ də yerində görünür, lakin əlaqə pozulmuşdur, buna görə də pin bəzən pis LDR analog oxunuşları təmin edir. Təklif: Standart PC keçid kabellərindən istifadə edirsinizsə, bunun qarşısını almaq üçün stansiya mükəmməl işlədikdən sonra hamısını isti yapışdırın.

Addım 7: Proqram təminatı

Proqram təminatı
Proqram təminatı

Proqram kodu üçün 3 xarici kitabxana (LowPower, DHT, VirtualWire) tələb olunacaq. Son vaxtlar bəzilərini asanlıqla onlayn tapmaqda problem yaşadım, buna görə ayrı bir ZIP faylına əlavə etdim. Linux/Windows -dan hansı OS -dən istifadə etməyinizdən asılı olmayaraq Arduino IDE -nin kitabxana qovluğunu tapın və oradan çıxarın.

Yalnız bir qeyd, DHT11 satın almağı məsləhət görməməyimə baxmayaraq, səhv bir DHT sensoru istifadə etsəniz, proqram başlanğıc hissəsinin əvvəlində əbədi olaraq asılacaq (başlanğıcın 3 dəfə yanıb -sönməsini belə görməyəcəksiniz).

Əsas döngə kodu çox sadədir, əvvəlcə ətraf mühitin dəyərlərini (temperatur, istilik indeksi, rütubət, günəş) oxuyur, radio vasitəsilə göndərir, sonra Arduinonu 5 dəqiqə yuxuda saxlamaq üçün aşağı güc kitabxanasından istifadə edir.

Baud sürətinin aşağı salınmasının radio ötürülmələrinin dayanıqlığını artıracağını gördüm. Stansiya çox az miqdarda məlumat göndərir, 300 bps kifayətdir. Həm də unutmayın ki, ötürücü yalnız təqribən işləyir. 4.8V, gələcəkdə 3.3V versiyası bu daha da pis ötürmə keyfiyyətinə səbəb ola bilər (məlumatların divarlar və digər maneələr vasitəsilə göndərilməsi). Raspberry PI 2 -yə qoşulmuş Arduino Mega -dan istifadə edərək, Me -ni PI -dən gücləndirən bir problemlə qarşılaşdım, heç bir ötürmə almadım. Çözüm, Mega -nı ayrı bir xarici 12V -luqdan təmin etmək idi.

Addım 8: Versiya 2 (ESP32 əsaslı)

Versiya 2 (ESP32 əsaslı)
Versiya 2 (ESP32 əsaslı)
Versiya 2 (ESP32 əsaslı)
Versiya 2 (ESP32 əsaslı)
Versiya 2 (ESP32 əsaslı)
Versiya 2 (ESP32 əsaslı)

Qıra biləcək hər şey, köhnə Murphy -dən sitat gətirmək üçün qırılacaq və illər sonra stansiyalar sirli yollarla uğursuz oldu. Biri on minlərə çatan mənasız günəş məlumatları göndərməyə başladı, bu da mümkün deyil: Arduino lövhəsində 6 kanal (Mini və Nanoda 8 kanal, Meqada 16 kanal), rəqəmsal çeviriciyə 10 bitlik analoq var. Bu, 0 ilə 5 volt arasındakı giriş gərginliklərini 0 ilə 1023 arasındakı tam ədədlərə uyğunlaşdıracağı deməkdir. Radionu, LDR -ni əvəz etdikdən və Atmega 328P -ni bir neçə dəfə yenidən proqramlaşdırdıqdan sonra imtina etdim və yeniliyin vaxtı olduğuna qərar verdim. Gəlin ESP32.

İstifadə etdiyim lövhə: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi və Bluetooth Kartı Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Mikro nəzarətçi ESP-32

İşləmə Gərginliyi 3.3V Rəqəmsal G/Ç Pimləri 19 Analog Giriş Pins 6 Saat Sürəti (Maksimum) 240Mhz Flaş 4M bayt Uzunluğu 5mm Eni 2.54mm Çəkisi 4g

Şəkildən fərqli olaraq LOLIN loqosu yoxdur (Çindən saxta). İlk xoş sürprizim, lövhədə yazılan pinoutun Arduino pinout ilə uyğun olması idi! Bütün gün boyu pinouts axtarmalı olduğum bir çox noname lövhələri ilə məşğul olduqdan sonra nəhayət pinoutun düz irəli olduğu bir lövhə etməklə yoruldum!

Ancaq hekayənin qaranlıq tərəfi budur:

Əvvəlcə LDR -ni pin 12 olan A15 -ə bağladım, çünki pinləri bir -birinə yapışdırmaq daha asan idi. Sonra 4095 oxunuş aldım (bu, ESP32 -də AnlogRead ilə əldə edə biləcəyiniz maksimumdur), bu da məni qıcıqlandırdı, çünki stansiyanı yenidən qurmağımın bütün səbəbi köhnədən qırılmış LDR oxunuşları idi (DHT hələ də yaxşı işləyirdi)). Belə çıxır:

Esp 32 iki 12 bitlik ACD qeydini birləşdirir. ADC1, GPIOs 32-39-a bağlı olan 8 kanal, başqa bir pində isə 10 kanal. İş ondadır ki, ESP32 wifi funksiyalarını idarə etmək üçün ADC2 -dən istifadə edir, buna görə də Wifi -dən istifadə edirsinizsə, həmin reyestri istifadə edə bilməzsiniz. ADC sürücü API'si ADC1 (8 kanal, GPIOs 32 - 39) və ADC2 (10 kanal, GPIO 0, 2, 4, 12 - 15 və 25 - 27) ilə dəstəklənir. Bununla birlikdə, ADC2 -nin istifadəsi tətbiq üçün bəzi məhdudiyyətlərə malikdir:

ADC2 Wi-Fi sürücüsü tərəfindən istifadə olunur. Buna görə də tətbiq yalnız Wi-Fi sürücüsü başlamadıqda ADC2 istifadə edə bilər. ADC2 sancaqlarından bəziləri bağlama sancaqları kimi istifadə olunur (GPIO 0, 2, 15), buna görə sərbəst istifadə edilə bilməz. Aşağıdakı rəsmi İnkişaf Kitlərində belədir:

Beləliklə, LDR -ni pin 12 -dən A0 -a bağlamaq, VP hər şeyi həll etdi, amma başa düşmürəm ki, niyə ADC2 sancaqlarını istehsalçılar üçün mövcud sayırlar. Bunu başa düşənə qədər başqa neçə hobbist tonlarla vaxt itirdi? İstifadəyə yararsız sancaqları qırmızı və ya başqa bir şeylə işarələyin və ya təlimatda bu barədə heç danışmayın, belə ki, digər istehsalçılar həqiqətən ehtiyac duyduqları halda onlar haqqında öyrənə bilərlər. ESP32 -nin bütün məqsədi onu WIFI ilə istifadə etməkdir, hamı WIFI ilə istifadə edir.

Bu lövhə üçün Arduino IDE qurmaq üçün yaxşı bir başlanğıc:

Bura kodu daxil etsəm də bir daha gedir:

Bu kod Weemos LOLIN 32 -dən başqa digər ESP32 modelləri üçün tərtib olunmaya bilər!

Quraşdırma parametrləri: -Yükləmə/serial: 115200 istifadə edin -CPU/ram istifadə edin: 240Mhz (Wifi | BT) -Flaş tezliyi istifadə edin: 80 Mhz

Şəbəkədə bir çox ESP32 əsaslı hava stansiyası var, bunlar mənim verb 1 versiyamdan daha sadədir, çünki qurmaq daha asandır, proqramçıya cihazı usb -də qoşmaq və onu proqramlaşdırmaq lazım deyil. dərin yuxu rejimi batareyadan uzun müddət çalışmaq üçün əladır. Yarasa başında bu, qırılma pinlərində lehimdən əvvəl sınaqdan keçirdiyim ilk şey idi, çünki bu layihədə bir çox yeri qeyd etdiyim kimi, ən vacib şey enerji istehlakı və cari (saxta) batareya və kiçik günəş paneli ilə gözləmə rejimindədir. Güc 1-2 mA-dan çox keçə bilməz, əks halda layihə uzun müddət özünü qoruya bilməyəcək.

Dərin yuxu rejiminin reklam edildiyi kimi işləməsi bir daha xoş sürpriz oldu. Dərin yuxu zamanı cərəyan o qədər aşağı idi ki, ucuz multimetrim hətta ölçə bilmirdi (mənim üçün işləyir).

Məlumat göndərərkən cərəyan təxminən 80mA idi (bu, Atmega 328P -in oyandığı və ötürdüyü vaxtdan təxminən 5 dəfə çoxdur), ancaq unutmayın ki, V1 ilə LDR -də yuxu rejimində 1mA güc boşalması var. işıq səviyyəsindən asılı idi və 0,5mA - 1mA) getdi.

Eyni batareyanı istifadə etsəniz, UltraFire batareyasının ləğv edildiyini gözlədiyiniz budur:

Iavg = (Ton*Ion + Tsleep*Yuxu) / (Ton + Tsleep)

Iavg = (2s*80mA + 300s*0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

Nəzəri

Batareya ömrü = 22000mWh/2.5mW = 8800 saat = təxminən 366 gün

Real

Batareya ömrü = 800mWh/2.5mW = 320 saat = təxminən 13 gün

Vaxtı dəqiq olaraq ölçmək üçün bir imkanım yox idi, amma düzəlişlərimlə təxminən 2 saniyəyə çatır.

Günortadan sonra hər şeyi xüsusi kodlaşdırmaqla keçirmək istəmədim, buna görə məlumatların saxlanması üçün nə etdiklərini görmək üçün ESP32 -ə əsaslanan Instructables -da başqa hava stansiyaları axtardım. Təəssüf ki, weathercloud kimi çevik və məhdud saytlardan istifadə etdiklərini fərq etdilər. "Bulud" un pərəstişkarı olmadığımdan və sayt o vaxtdan bəri API -ni dəyişdirdiyinə görə kodları çoxdan qırıldı, çünki düşündüyüm qədər çətin olmadığı üçün xüsusi bir həll etmək üçün 10 dəqiqəmi ayırdım. Gəlin başlayaq!

Hər şeydən əvvəl, bu layihə üçün ayrıca bir elektron kart şəkli yoxdur, çünki hər şeyin 3.3V tükəndiyi fərqlə V1 ilə eyni komponentləri (çirkin çörək taxtası şəkilində lehimləndiyi üçün üzr istəyirəm) istifadə etdiyi üçün. DHT bir çəkmə ilə VCC -yə bağlandı, LDR 10k ilə aşağı çəkildi. Çin saxtası (6500 mAh ultra günəş yanğısı lol: D) kimi 18650 batareyaları ilə görə biləcəyim problem, boşalma əyrisini təxminən 4.1V yeni yaşdan başlayaraq hüceyrə zədələnməsini dayandırmaq üçün kəsmə sxemləri işə düşənə qədər davam etmələridir (şanslı olanlar). Bu, 3.3V giriş olaraq bizim üçün yaxşı bir şey deyil. Bu LOLIN lövhəsində bu layihədə lityum batareya konnektoru və şarj dövrəsi olsa da, köhnə stansiyadan bacardığım şeyi təmir etmək istədim, buna görə də köhnə 18650 ilə bu daxili şarj cihazını istifadə edə bilməzsiniz. Çözüm çox sadə idi: köhnə gərginlik gücləndiricisindən 5V -ə lehimlənmiş bir mikro USB kabelini kəsdim və microUSB -də lövhədə tənzimləyici olduğu üçün voila problemi həll edildi.

Beləliklə, köhnə batareyada 3.7V -> 5V -ə qədər artırılan köhnə və yeni versiya arasındakı fərq 5V -də işləyir -> bütün komponentlər 5V -də işləyir.

Yenisində: batareya 3.7V təmin edir -> 5V -a qədər artırılır -> ESP32 -də təyyarə reg vasitəsilə tənzimlənir -> bütün komponentlər 3.3V -də işləyir.

Proqram baxımından başqa bir DHT kitabxanasına da ehtiyacımız olacaq, Arduino DHT ESP ilə uyğun deyil. Ehtiyacımız DHT ESP adlanır.

Kodumu bu kodun verdiyi DHT nümunəsi əsasında qurmağa başladım. Kodun işi belədir:

1, ətraf mühit məlumatlarını DHT + Günəş məlumatlarından fotoseldən əldə edin

2, statik IP ilə wifi -yə qoşulun

3, məlumatları bir php skriptinə göndərin

4, 10 dəqiqə yuxuya get

Gördüyünüz kimi, oyanma müddətini tamamilə minimuma endirmək üçün kodu səmərəlilik üçün tənzimlədim, çünki köhnə layihə açıldıqdan 5 dəfə çox güc sərf edir. Bunu necə etdim? Hər şeydən əvvəl, hər hansı bir səhv olarsa, getTemperature () funksiyası yalanla dönəcək (bu, 10 dəqiqə yenidən yatmaq deməkdir). DHT sensorunun işə salınmaması və ya wifi bağlantısının olmaması kimi ola bilər. Wifi assosiasiyasını əbədi olaraq sınamağa davam etmək üçün normal olan () döngəsi də silindi, ancaq orada 1 saniyə gecikmə qalmalıdır, əks halda həmişə bağlanmayacaq və bu da AP tipindən, yükdən və s. baş verəcək, 0.5s ilə uyğunsuz davranışlarım var (bəzən bağlana bilmirdi). Bunu etmək üçün daha yaxşı bir yol bilən varsa şərhlərdə yazın. Yalnız DHT məlumatları oxunduqda və wifi bağlantısı qurulduqda, məlumatları veb serverdəki skriptə yerləşdirməyə çalışacaq. Serial.println () kimi hər cür vaxt itkisi funksiyası normal iş rejimində deaktiv edilir. Server olaraq lazımsız bir DNS axtarışının qarşısını almaq üçün IP istifadə edirəm, kodumda həm standart ağ geçidi, həm də dns serveri 0.0.0.0 olaraq təyin edilmişdir.

Öz API -nizi yaratmaq nə qədər çətin olduğunu başa düşmürəm:

sprintf (cavab, "temp =%d & hum =%d & hi =%d & sol =%d", temp, hum, salam, sol);

int httpResponseCode = http. POST (cavab);

Bu kiçik php kodunu hər hansı bir moruq pi -yə qoyursunuz və fanatlar yandırmaq və ya kifayət qədər qaranlıq olarsa işıqları yandırmaq kimi telemetriyaya əsaslanaraq dərhal system () tapşırıqlarını yerinə yetirə bilərsiniz.

Kod haqqında bəzi qeydlər:

WiFi.config (staticIP, ağ geçidi, alt şəbəkə, dns); // Wifi nə qədər axmaq olduqdan sonra olmalı …

WiFi rejimi (WIFI_STA); // Əks halda, istenmeyen bir AP də yaradacaq

Bəli, indi bilirsən. Ayrıca, IP konfiqurasiyalarının sırası platformalar vasitəsilə dəyişə bilər, əvvəlcə ağ geçidi və alt şəbəkə dəyərlərinin dəyişdirildiyi digər nümunələri sınadım. Niyə statik IP təyin etməlisiniz? Şübhəsiz ki, şəbəkənizdə isc dhcpd işləyən bir linux serveri kimi xüsusi bir qutunuz varsa, ESP oyandıqdan və DHCP -dən IP aldıqdan sonra yüz milyon qeyd girişi istəmirsiniz. Adətən marşrutlaşdırıcılar assosiasiyalara daxil olmur ki, görünməsin. Güc qənaətinin qiyməti budur.

V2, keyfiyyətsiz batareya səbəbindən heç vaxt özünü saxlaya bilməmişdi və onu sadəcə bir adapterə taxdım, buna görə də V1 və ya V2 qurmaq istəyirsinizsə, qeyd olunan batareyanı almayın, batareyalarla bağlı öz araşdırmalarınızı aparın (hər hansı bir 18650) Ebay -da 2000mAh -dən çox reklam olunan tutum yüksək ehtimala malik bir fırıldaqdır).

Tövsiyə: