Mündəricat:
- 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 5: Bitdi
Video: NexArdu: İşıqlandırma Ağıllı İdarəetmə: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
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:
- Avtomatik işıqlandırma nəzarəti
- 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:
- Bir Arduino Uno (R3 -də sınaqdan keçirilmişdir)
- Arduino Ethernet qalxanı
- 433.92MHz -də işləyən Nexa dəsti və ya bənzəri
- PIR (Passif InfraRed) sensoru 433.92MHz -də işləyir
- 10 kOhms rezistor
- Bir LDR
- RTC DS3231 (yalnız xarici server versiyası)
- 433.92MHz ötürücü: XY-FST
- 433.92MHz qəbuledici: MX-JS-05V
Minimum tövsiyə olunur:
- Bir Arduino Uno (R3 -də sınaqdan keçirilmişdir)
- 433.92MHz -də işləyən Nexa dəsti və ya bənzəri
- 10 kOhms rezistor
- Bir LDR
- 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ə…
Şə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:
- Nexa qəbuledicisini uzaqdan idarəetmə ilə birləşdirin.
- Nexa_OK_3_RX.ino'yu Arduinoya yükləyin və "Serial Monitor" u açın.
- Nexa qəbuledicisini idarə edən uzaqdan idarəetmə düyməsini basın.
- "RemoteID" və "ButtonID" ə diqqət yetirin.
- 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
Davranışı bilmək yaxşıdır
-
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:
- Oyanaraq: Arduino gecənin gəlməsini gözləyir.
- Aktiv: Gecə gəldi və Arduino işıqları yandırdı.
- 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.
- Yuxuda: Gecə keçir, Arduino işıqları söndürdü və Arduino şəfəqin oyanmasını gözləyir.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- Evdə istifadə etdiyim daxili serverdən istifadə edən kod, 2016 -cı ilin fevral ayından bəri problemsiz işləyir.
- 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.
- 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
- 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.
- 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.
- 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ə.
- 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
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ə:
Ağıllı Masa LED İşığı - Ağıllı İşıqlandırma W/ Arduino - Neopixels İş Sahəsi: 10 Adım (Şəkillərlə birlikdə)
Ağıllı Masa LED İşığı | Ağıllı İşıqlandırma W/ Arduino | Neopixels Çalışma Alanı: İndi günlərimiz evdə çox vaxt keçirir, virtual olaraq oxuyuruq və işləyirik, buna görə də xüsusi və ağıllı işıqlandırma sistemi olan Arduino və Ws2812b LEDləri ilə iş sahəmizi daha da genişləndirməyək. Masa üstü LED işığı
IlluMOONation - Ağıllı İşıqlandırma Modeli: 7 addım
IlluMOONation - Ağıllı İşıqlandırma Modeli: Heç vaxt gecə səmasına baxıb heç bir ulduzu görə bilməmisinizmi? Dünyada milyonlarla uşaq süni işığın artması və geniş istifadəsi səbəbindən yaşadıqları Süd Yolu ilə heç vaxt qarşılaşmayacaq. gecələr bu yoxdur
Ağıllı Piyada Yolu İşıqlandırma Sistemi- Team Sailor Moon: 12 Addım
Ağıllı Piyada Yolu İşıqlandırma Sistemi- Komanda Sailor Moon: Salam! Bu Grace Rhee, Srijesh Konakanchi və Juan Landi və birlikdə Team Sailor Moonuq! Bu gün sizə öz evinizdə həyata keçirə biləcəyiniz iki hissəli DIY layihəsi təqdim edəcəyik. Son ağıllı keçid işıqlandırma sistemimizə ul
Dar Bant IoT: Ağıllı İşıqlandırma və Ölçmə daha yaxşı və daha sağlam bir ekosistemə yol açır: 3 addım
Dar Bant IoT: Ağıllı İşıqlandırma və Ölçmə daha yaxşı və daha sağlam bir ekosistemə yol açır: Avtomatika demək olar ki, hər sektorda öz yerini tapmışdır. İstehsaldan başlayaraq səhiyyəyə, nəqliyyata və təchizat zəncirinə qədər avtomatlaşdırma günün işığını gördü. Şübhəsiz ki, bunların hamısı cazibədardır, amma görünən biri var
R Pi -Uzaqdan İdarəetmə PA və İşıqlandırma Sistemi: 4 Addım (Şəkillərlə)
R Pi -Uzaqdan İdarəetmə PA və İşıqlandırma Sistemi: Bu, bir veb brauzerdən uzaqdan PI -də səsli elanlar vermək və işıqları yandırmaq və söndürmək üçün sadə bir layihədir. Buna görə sizə lazım olan budur: 1) Apache və PhP ilə əvvəlcədən quraşdırılmış Raspberry Pi. Ətrafımda yatan köhnə Pi v1 istifadə etdim. Hesab edirəm ki