Mündəricat:

NexArdu: İşıqlandırma Ağıllı İdarəetmə: 5 addım
NexArdu: İşıqlandırma Ağıllı İdarəetmə: 5 addım

Video: NexArdu: İşıqlandırma Ağıllı İdarəetmə: 5 addım

Video: NexArdu: İşıqlandırma Ağıllı İdarəetmə: 5 addım
Video: Séance ordinaire - 5 juillet 2021 2024, Noyabr
Anonim
NexArdu: İşıqlandırma Ağıllı Nəzarət
NexArdu: İşıqlandırma Ağıllı Nəzarət

Yeniləyin

Home Assistant istifadə edərək eyni funksiyanı inkişaf etdirmiş olsanız. Ev köməkçisi geniş imkanlar təqdim edir. İnkişafı burada tapa bilərsiniz.

Ev işıqlandırmasını 433.92MHz (aka 433MHz) simsiz X10 kimi cihazlar vasitəsilə ağıllı bir şəkildə idarə etmək üçün bir eskiz, məsələn. Nexa.

Fon

Dekorativ işıqlandırmaya gəldikdə, hər gün və ya üçüncü həftədə CET -ə görə günəş saatının dəyişməsi səbəbindən işıqları yandıran taymerləri yenidən düzəltməyim məni birtəhər yorurdu. bəzi gecələr digərlərindən daha tez yatırıq. Bu səbəbdən bəzən işıqlar ya "çox gec" ya da "çox erkən" olaraq sönür. Yuxarıda göstərilənlər məni düşünməyə vadar etdi: İstəyirəm ki, dekorativ işıqlandırma həmişə eyni işıq səviyyəsində açılsın və sonra oyaq olmağımızdan asılı olaraq müəyyən bir vaxtda sönsün.

Obyektiv

Bu təlimat, 433.92MHz tezliyində işləyən System Nexa kimi simsiz idarə olunan cihazların imkanlarından istifadə edir. Burada xüsusiyyətlərimizi təqdim etməliyik:

  1. Avtomatik işıqlandırma nəzarəti
  2. Veb nəzarəti

Veb nəzarəti. Daxili vs Xarici Veb Server

Daxili Server, veb server təmin etmək üçün Arduino Ethernet qalxanının imkanlarından istifadə edir. Veb server, Arduino ilə əlaqə qurmaq və yoxlamaq üçün veb müştəri zənglərinə qatılacaq. Bu məhdud funksionallıq ilə birbaşa irəli bir həlldir; Veb server kodunu artırma imkanları Arduino yaddaşı ilə məhdudlaşır. Xarici Server xarici PHP veb serverinin qurulmasını tələb edir. Bu quraşdırma daha mürəkkəbdir və bu dərslik tərəfindən dəstəklənmir, lakin Arduino -nu yoxlamaq və idarə etmək üçün PHP kodu/səhifəsi əsas funksiyalarla təmin edilmişdir. Veb serveri təkmilləşdirmək imkanları, bu vəziyyətdə xarici veb server tərəfindən məhdudlaşdırılır.

Hesab materialları

Bu eskizin verdiyi imkanlardan tam istifadə etmək üçün sizə lazımdır:

  1. Bir Arduino Uno (R3 -də sınaqdan keçirilmişdir)
  2. Arduino Ethernet qalxanı
  3. 433.92MHz -də işləyən Nexa dəsti və ya bənzəri
  4. PIR (Passif InfraRed) sensoru 433.92MHz -də işləyir
  5. 10 kOhms rezistor
  6. Bir LDR
  7. RTC DS3231 (yalnız xarici server versiyası)
  8. 433.92MHz ötürücü: XY-FST
  9. 433.92MHz qəbuledici: MX-JS-05V

Minimum tövsiyə olunur:

  1. Bir Arduino Uno (R3 -də sınaqdan keçirilmişdir)
  2. 433.92MHz -də işləyən Nexa dəsti və ya bənzəri
  3. 10 kOhms rezistor
  4. Bir LDR
  5. 433.92MHz ötürücü: XY-FST

(Ethernet qalxanının buraxılması eskizdə bu təlimat daxilində olmayan dəyişiklikləri tələb edir)

Nexa məntiqi. Qısa bir təsvir

Nexa qəbuledicisi uzaqdan idarəetmə ID və düymə ID -ni öyrənir. Başqa sözlə, hər bir pultun göndərən nömrəsi və hər açma/söndürmə düyməsinin düymə identifikatoru var. Alıcı bu kodları öyrənməlidir. Bəzi Nexa sənədlərində qəbuledicinin altı pultla qoşula biləcəyi bildirilir. Nexa parametrləri:

  • SenderID: uzaqdan idarəetmənin identifikatoru
  • ButtonID: düymə cüt nömrəsi (açma/söndürmə). 0 nömrəsi ilə başlayır
  • Qrup: bəli/yox (aka "Hamısı söndür/aç" düymələri)
  • Komanda: açma/söndürmə

Təlim olunan addımlar. Qeyd

Burada təsvir olunan fərqli addımlar, məqsədə necə çatacağınıza dair iki fərqli ləzzət təqdim etməkdir. Rahatlığınızdan birini seçməkdə çekinmeyin. Budur indeks:

Addım #1: Dövrə

Addım #2: Daxili Veb Server ilə Nexardu (NTP ilə)

Addım #3: Xarici Server ilə Nexardu

Addım #4: Dəyərli məlumatlar

Addım 1: Dövrə…

Dövrə…
Dövrə…

Şəkildə göstərildiyi kimi müxtəlif komponentləri tellə bağlayın.

Arduino pin#8, RX (alıcı) modulundakı məlumat pininə Arduino pin#2, RX (alıcı) modulundakı məlumat pininə, Arduino pin#7, TX (göndərən) modulundakı məlumat pininə, Arduino pin A0 - LDR

RTC konfiqurasiyası. Yalnız Xarici Server konfiqurasiyasında lazımdır. Arduino pin A4 -dən SDA pininə RTC modulu Arduino pin A5 -dən SCL -ə RTC modulu

Addım 2: Daxili Veb Server ilə Nexardu (NTP ilə)

Kitabxanalar

Bu kod bir çox kitabxanadan istifadə edir. Çoxunu Arduino IDE -nin "Kitabxana meneceri" vasitəsi ilə tapmaq olar. Siyahıya alınmış bir kitabxana tapmasanız, zəhmət olmasa google.

Wire.hSPI.h - Ethernet shieldNexaCtrl.h tərəfindən tələb olunur - Nexa cihaz nəzarətçisi Ethernet.h - Ethernet qalxanının işə salınması və xüsusiyyəti üçün NTP müştəri

Eskiz

Aşağıdakı kod, Arduino UNO lövhəsini yalnız Nexa cihazlarını idarə etmək vasitəsi olaraq deyil, həm də Daxili Veb serveri ilə istifadə etmək imkanından istifadə edir. Əlavə etmək lazım olan bir məqam, RTC (Real Time Clock) modulunun NTP (Şəbəkə Zaman Protokolu) vasitəsi ilə avtomatik tənzimlənməsidir.

Kodu Arduinoya yükləməzdən əvvəl aşağıdakıları konfiqurasiya etməyiniz lazım ola bilər:

  • SenderId: əvvəlcə SenderId -i iyləmək lazımdır, aşağıya baxın
  • PIR_id: əvvəlcə SenderId -i iyləmək lazımdır, aşağıya baxın
  • LAN IP ünvanı: Ethernet Arduino qalxanınıza bir LAN təyin edin. Varsayılan dəyər: 192.168.1.99
  • NTP Server: Qəti şəkildə lazım deyil, ancaq yaxınlıqdakı NTP serverləri üçün google -a müraciət etmək yaxşı olar. Varsayılan dəyər: 79.136.86.176
  • Kod CET vaxt qurşağı üçün düzəldilmişdir. Doğru vaxtı (NTP) göstərmək üçün bu dəyəri vaxt zonanıza uyğunlaşdırın.

Nexa kodlarını iyləmək

Bunun üçün dövrədə göstərildiyi kimi ən azından RX komponentini Arduino -ya bağlamalısınız.

Aşağıda Nexa_OK_3_RX.ino eskizini yazın, Nexa cihazları NEYCT-705 və PET-910 ilə uyğun gəlir.

İzləniləcək addımlar bunlardır:

  1. Nexa qəbuledicisini uzaqdan idarəetmə ilə birləşdirin.
  2. Nexa_OK_3_RX.ino'yu Arduinoya yükləyin və "Serial Monitor" u açın.
  3. Nexa qəbuledicisini idarə edən uzaqdan idarəetmə düyməsini basın.
  4. "RemoteID" və "ButtonID" ə diqqət yetirin.
  5. Bu rəqəmləri əvvəlki eskizin dəyişən bəyannaməsində SenderID və ButtonID altında təyin edin.

PIR identifikatorunu oxumaq üçün eyni eskizi (Nexa_OK_3_RX.ino) istifadə edin və PIR hərəkəti algıladıqda "Serial Monitor" dakı dəyəri oxuyun.

Addım 3: Xarici Server ilə Nexardu

Kitabxanalar

Bu kod bir çox kitabxanadan istifadə edir. Əksəriyyəti Arduino IDE -nin "Kitabxana meneceri" vasitəsi ilə tapmaq olar. Listelenen bir kitabxana tapmasanız, google -a müraciət edin.

Wire.hRTClib.h - bu https://github.com/MrAlvin/RTClibSPI.h saytından olan kitabxana - Ethernet shieldNexaCtrl.h tərəfindən tələb olunur - Nexa cihaz nəzarətçisiEthernet.h - Ethernet qalxanının işə salınması və xüsusiyyəti üçünRCSwitch.h - Lazımdır PIRTime.h - RTCTimeAlarms.h üçün tələb olunur - Zaman siqnalizasiyasının idarə edilməsiREST.h - xarici serverair/wdt.h tərəfindən istifadə olunan RESTful API xidmətləri üçün

Eskiz

Aşağıdakı eskiz eyni şeyin başqa bir ləzzətinə malikdir, bu dəfə xarici bir veb serverin verə biləcəyi imkanları gücləndirir. Girişdə qeyd edildiyi kimi, Xarici Server xarici PHP veb serverinin qurulmasını tələb edir. Bu quraşdırma daha mürəkkəbdir və bu dərslik tərəfindən dəstəklənmir, lakin Arduino -nu yoxlamaq və idarə etmək üçün PHP kodu/səhifəsi əsas funksiyalarla təmin edilmişdir.

Kodu Arduinoya yükləməzdən əvvəl aşağıdakıları konfiqurasiya etməyiniz lazım ola bilər:

  • SenderId: əvvəlcə SenderId -i qoxlamalısınız, əvvəlki addımdakı Nexa kodlarının iylənməsinə baxın.
  • PIR_id: əvvəlcə SenderId -i qoxlamalısınız, əvvəlki addımdakı Nexa kodlarının qoxusuna baxın.
  • LAN IP ünvanı: Ethernet Arduino qalxanınıza bir LAN təyin edin. Varsayılan dəyər: 192.168.1.99

Nexa kodunun koklama proseduru üçün 1 -ci addıma baxın.

Tamamlayıcı fayl

Əlavə edilmiş nexardu4.txt faylını xarici PHP serverinizə yükləyin və adını nexardu4.php olaraq dəyişdirin

RTC vaxtı təyin edildi

RTC -də vaxtı/tarixi təyin etmək üçün DS1307RTC kitabxanasını bir araya gətirən SetTime eskizindən istifadə edirəm.

Addım 4: Dəyərli məlumatlar

Dəyərli Məlumatlar
Dəyərli Məlumatlar
Dəyərli Məlumatlar
Dəyərli Məlumatlar

Davranışı bilmək yaxşıdır

  1. Arduino "Yüngül Avtomatik İdarəetmə" altında olduqda, ətrafdakı işıqlandırma və günün vaxtı ilə əlaqədar olaraq dörd fərqli vəziyyətdən keçə bilər:

    1. Oyanaraq: Arduino gecənin gəlməsini gözləyir.
    2. Aktiv: Gecə gəldi və Arduino işıqları yandırdı.
    3. Somnolent: İşıqlar yanır, amma söndürmə vaxtı gəlir. "Time_to_turn_off - PIR_time" da başlayır, yəni time_to_turn_off 22:30 və PIR_time 20 dəqiqəyə təyin olunarsa, Arduino 22: 10 -da yuxululuq vəziyyətinə girəcək.
    4. Yuxuda: Gecə keçir, Arduino işıqları söndürdü və Arduino şəfəqin oyanmasını gözləyir.
  2. Arduino həmişə uzaqdan idarəetmə vasitələri ilə göndərilən siqnalları dinləyir. Bu, uzaqdan idarəetmə istifadə edildikdə İnternetdəki işıqların vəziyyətini (açma/söndürmə) göstərmək imkanı verir.
  3. Arduino oyaq halda işıqları hər zaman söndürməyə çalışır, buna görə də işıqları yandırmaq üçün yenidən idarəetmə vasitəsi ilə göndərilən ON siqnalları Arduino tərəfindən tutula bilər. Bu baş verərsə, Arduino yenidən işıqları söndürməyə çalışacaq.
  4. Arduino aktiv olanda işıqları hər zaman AÇIQ etməyə çalışır, buna görə də işıqları söndürmək üçün uzaqdan idarəetmə vasitəsi ilə göndərilən OFF siqnalları Arduino tərəfindən tutula bilər. Bu baş verərsə, Arduino yenidən işığı yandırmağa çalışacaq.
  5. Yuxusuz vəziyyətdə işıqlar uzaqdan idarəetmə ilə açıla/söndürülə bilər. Arduino heç bir müqavimət göstərməyəcək.
  6. Yorğun vəziyyətdə PIR geri sayımı "time_to_turn_off - PIR_time" dan sıfırlanmağa başlayacaq və buna görə də PIR hər dəfə hərəkəti algıladığında time_to_turn_off 20 dəqiqə uzanacaq. "PIR Siqnalı Algılandı!" bu baş verdikdə veb brauzerində bir mesaj görünəcək.
  7. Arduino yuxuda ikən işıqlar uzaqdan idarəetmə vasitəsi ilə açılıb söndürülə bilər. Arduino heç bir müqavimət göstərməyəcək.
  8. Arduinonun sıfırlanması və ya güc dövrü onu aktiv rejimə gətirəcək. Bu o deməkdir ki, Arduino vaxt_turn_offundan sonra sıfırlanarsa, Arduino işıqları yandıracaq. Bunun qarşısını almaq üçün Arduinonun əl rejiminə keçməsi ("İşıq Avtomatik İdarəetmə" işarəsini qoyun) və "Yüngül Avtomatik İdarəetmə" yə qayıtmaq üçün səhərə qədər gözləməsi lazımdır.
  9. Yuxarıda qeyd edildiyi kimi, Arduino şəfəqin yenidən aktivləşməsini gözləyir. Bu səbəbdən, sistem "minimal parlaqlıq" həddini aşan işıq sensoru üçün kifayət qədər güclü bir işıq yönəldərək aldadıla bilər. Bu baş verərsə, Arduino aktiv vəziyyətə keçməlidir.
  10. Sistemin eşik dəyərinin Minimum Parlaqlıq ətrafında açılmasının və sönməsinin qarşısını almaq üçün Tolerans dəyəri yüksək əhəmiyyətə malikdir. Led işıqlar, titrəmələri və yüksək həssaslıqları səbəbiylə çırpma davranışları mənbəyi ola bilər. Bu problemlə qarşılaşsanız tolerantlıq dəyərini artırın. 7 -dən istifadə edirəm.

Kod haqqında bilmək yaxşıdır

  1. Gördüyünüz kimi, kod çox böyükdür və xeyli sayda kitabxanadan istifadə edir. Bu, yığın üçün lazım olan boş yaddaş miqdarını azaldır. Xüsusilə veb zənglərindən sonra sistemin dayandığı keçmişdə qeyri -sabit davranışlar gördüm. Buna görə də ən böyük problemim, sistemin sabit olması üçün ölçüsünü və müxtəlif dəyişənlərin istifadəsini məhdudlaşdırmaq idi.
  2. Evdə istifadə etdiyim daxili serverdən istifadə edən kod, 2016 -cı ilin fevral ayından bəri problemsiz işləyir.
  3. Kodun izahlarla zənginləşdirilməsi üçün xeyli səy göstərmişəm. Burst başına Nexa kodu göndərmə sayı, NTP sinxronizasiya vaxtı və s.
  4. Kod gündüz işığına malik deyil. Bu tətbiq edildikdə veb brauzer vasitəsilə tənzimlənməlidir.

Nəzərə alınmalı olan bəzi məqamlar

  1. Antenləri TX və RX radio tezliyi (RF) modullarına əlavə edin. İki əsas məqamdan şikayət etməklə vaxtınıza qənaət edəcəksiniz: müqavimət və RF siqnalının diapazonu. 17.28cm (6.80in) uzunluğunda 50Ohms tel istifadə edirəm.
  2. Bu keçilməz, məsələn, Proove kimi digər ev avtomatlaşdırma sistemləri ilə işləyə bilər. Bir çox şərtlərdən biri, 433.92MHz tezlikdə işləməsidir.
  3. Arduino ilə böyük bir baş ağrısı, zaman keçdikcə yenilənə bilən və birdən "köhnə" eskizinizə uyğun gəlməyən kitabxanalarla məşğul olmaqdır; Arduino IDE -ni təkmilləşdirərkən eyni problem yarana bilər. Burda bizim vəziyyətimiz ola biləcəyinə diqqət yetirin -bəli, mənim problemim də.
  4. Fərqli işıq rejimləri olan birdən çox veb müştərisi "yanıb -sönən" bir vəziyyət yaradır.

Ekran görüntüsü

Yuxarıdakı şəkil karuselində, veb brauzeriniz vasitəsilə Arduino -ya zəng etdiyiniz zaman göstərilən veb səhifənin ekran görüntüsünü görürsünüz. Kodun standart IP konfiqurasiyasını nəzərə alsaq, URL https://192.168.1.99 olardı

Təkmilləşdirilə biləcək bir cəhət, "təqdim et" düyməsinin yerləşdirilməsidir, çünki düşündüyünüz kimi yalnız "İşıq Avtomatik İdarəetmə" də deyil, bütün giriş qutularına təsir edir. Başqa sözlə, mümkün olan dəyərlərdən hər hansı birini dəyişdirmək istəyirsinizsə, həmişə "göndər" düyməsini basmalısınız.

Ətraflı/Ətraflı sənədləşmə

Xüsusilə problemlərin aradan qaldırılması və təkmilləşdirilməsi üçün bütün həlli başa düşməyinizə kömək etmək üçün aşağıdakı faylları əlavə etdim.

Arduino_NexaControl_IS.pdf, Daxili Server həllinə dair sənədlər təqdim edir.

Arduino_NexaControl_ES.pdf, Xarici Server həlli ilə bağlı sənədlər təqdim edir.

Xarici istinadlar

Nexa Sistemi (İsveç)

Addım 5: Bitdi

Bitdi!
Bitdi!

Orada hər şeyi bitirdiniz və hərəkətdəsiniz!

Arduino Uno korpusu Thingiverse-də "Arduino Uno Rev3 ilə Ethernet Shield XL kılıfı" şəklində tapıla bilər.

Tövsiyə: