Mundarija:

NexArdu: yoritishni aqlli boshqarish: 5 qadam
NexArdu: yoritishni aqlli boshqarish: 5 qadam

Video: NexArdu: yoritishni aqlli boshqarish: 5 qadam

Video: NexArdu: yoritishni aqlli boshqarish: 5 qadam
Video: Yigitlarni e’tiborini o’ziga qanday qaratsa bo’ladi? 2024, Iyul
Anonim
NexArdu: yoritishni aqlli boshqarish
NexArdu: yoritishni aqlli boshqarish

Yangilash

Agar siz Home Assistant yordamida bir xil funktsiyalarni ishlab chiqsangiz. Uy yordamchisi katta imkoniyatlarni taklif etadi. Rivojlanishni bu erda topishingiz mumkin.

Uy yoritilishini 433,92 MGts (aka 433 MGts) simsiz X10 ga o'xshash qurilmalar orqali oqilona boshqarish uchun eskiz, masalan. Nexa.

Fon

Dekorativ yoritish haqida gap ketganda, men charchadim, har ikkinchi yoki uchinchi haftada, quyosh soatining CET ga nisbatan o'zgarishi sababli, chiroqlarni yoqadigan taymerlarni o'zgartirishim kerak edi. ba'zi kechalarda biz boshqasidan ko'ra erta yotamiz. Shu sababli, ba'zida chiroqlar "juda kech" yoki "juda erta" o'chadi. Yuqorida aytilganlar meni o'ylashga undadi: men xohlaymanki, dekorativ yorug'lik har doim bir xil yorug'lik darajasida yonib tursin, keyin esa biz hushyor yoki yo'qligimizga qarab ma'lum bir vaqtda o'chib tursin.

Maqsadli

Bu ko'rsatma 433.92MGts chastotada ishlaydigan System Nexa kabi simsiz boshqariladigan qurilmalarning imkoniyatlaridan foydalanadi. Bu erda biz quyidagilarni ko'rsatamiz:

  1. Avtomatik yoritishni boshqarish
  2. Internetni boshqarish

Internetni boshqarish. Ichki va tashqi veb -server

Ichki server veb -serverni ta'minlash uchun Arduino Ethernet qalqoni imkoniyatidan foydalanadi. Veb -server Arduino -ni tekshirish va o'zaro aloqa qilish uchun veb -mijoz qo'ng'iroqlarida qatnashadi. Bu cheklangan funktsional imkoniyatlarga ega to'g'ri echim; veb -server kodini oshirish imkoniyatlari Arduino xotirasi bilan cheklangan, tashqi server tashqi PHP veb -serverini o'rnatishni talab qiladi. Ushbu sozlash ancha murakkab va bu qo'llanmada qo'llab -quvvatlanmaydi, ammo Arduino -ni tekshirish va boshqarish uchun PHP kodi/sahifasi asosiy funksiyalar bilan ta'minlangan. Veb -serverni takomillashtirish imkoniyatlari, bu holda, tashqi veb -server bilan cheklangan.

Hisobot materiallari

Ushbu eskizning imkoniyatlaridan to'liq foydalanish uchun sizga kerak:

  1. Arduino Uno (R3da sinovdan o'tgan)
  2. Arduino Ethernet qalqoni
  3. Nexa to'plami yoki shunga o'xshash 433.92 MGts da ishlaydi
  4. PIR (passiv InfraRed) sensori 433,92 MGts da ishlaydi
  5. 10 kOhm qarshilik
  6. LDR
  7. RTC DS3231 (faqat tashqi server versiyasi)
  8. 433.92 MGts chastotali uzatuvchi: XY-FST
  9. 433.92 MGts chastotali qabul qiluvchi: MX-JS-05V

Tavsiya etilgan minimal miqdor:

  1. Arduino Uno (R3da sinovdan o'tgan)
  2. Nexa to'plami yoki shunga o'xshash 433.92 MGts da ishlaydi
  3. 10 kOhm qarshilik
  4. LDR
  5. 433.92 MGts chastotali uzatuvchi: XY-FST

(Ethernet qalqoni yo'qligi eskizni ushbu yo'riqnomada ko'rsatilmagan holda o'zgartirishni talab qiladi)

Nexa mantiq. Qisqa tavsif

Nexa qabul qiluvchisi masofadan boshqarish pulti va tugma identifikatorini o'rganadi. Boshqacha qilib aytganda, har bir masofadan boshqarish pultining yuboruvchi raqami va har bir juftlik tugmachasining identifikatori bor. Qabul qiluvchilar ushbu kodlarni o'rganishlari kerak. Ba'zi Nexa hujjatlarida qabul qilgichni oltita masofadan boshqarish pulti bilan ulash mumkinligi ko'rsatilgan. Nexa parametrlari:

  • SenderID: masofadan boshqarish pultining identifikatori
  • ButtonID: tugma juftlik raqami (yoqish/o'chirish). 0 raqami bilan boshlanadi
  • Guruh: ha/yo'q ("Hammasini o'chirish/yoqish" tugmasi)
  • Buyruq: yoqish/o'chirish

Ta'riflanadigan qadamlar. Eslatma

Bu erda tasvirlangan turli xil qadamlar maqsadga erishish uchun ikki xil ta'mni taklif qiladi. O'zingizga qulay bo'lganini tanlang. Mana indeks:

1 -qadam: O'chirish

2 -qadam: Ichki veb -server bilan Nexardu (NTP bilan)

3 -qadam: Tashqi server bilan Nexardu

4 -qadam: qimmatli ma'lumotlar

1 -qadam: O'chirish …

O'chirish…
O'chirish…

Rasmda ko'rsatilgandek, turli komponentlarni sim bilan bog'lang.

Arduino pin 8 -sonli RX (qabul qiluvchi) modulidagi ma'lumotlar piniga 2 -raqamli RX (qabul qiluvchi) modulidagi ma'lumotlar piniga 7 -raqamli Arduino piniga TX (jo'natuvchi) modulidagi ma'lumotlar piniga A0 -dan LDR -ga.

RTC konfiguratsiyasi. Faqat tashqi server konfiguratsiyasida kerak. Arduino pin A4 - RTC modulida SDA pin

2 -qadam: Nexardu ichki veb -server bilan (NTP bilan)

Kutubxonalar

Ushbu kod ko'plab kutubxonalardan foydalanadi. Ularning ko'pini Arduino IDE "Kutubxona menejeri" orqali topish mumkin. Agar ro'yxatga olingan kutubxonani topmasangiz, iltimos google.

Wire.hSPI.h - Ethernet shieldNexaCtrl.h tomonidan talab qilinadi - Nexa qurilma boshqaruvchisi Ethernet.h - Ethernet qalqonini yoqish va ishga tushirish uchun NTP mijozi

Eskiz

Quyidagi kod Arduino UNO taxtasidan nafaqat Nexa qurilmalarini boshqarish vositasi sifatida, balki ichki veb -server bilan ham foydalanish imkoniyatidan foydalanadi. Shuni ta'kidlash kerakki, RTC (Real Time Clock) moduli NTP (Tarmoq vaqti protokoli) orqali avtomatik ravishda sozlanadi.

Kodni Arduino -ga yuklamasdan oldin quyidagilarni sozlashingiz kerak bo'ladi.

  • SenderId: avval SenderId -ni hidlashingiz kerak, pastga qarang
  • PIR_id: avval SenderId -ni hidlashingiz kerak, pastga qarang
  • LAN IP -manzili: Ethernet Arduino qalqoniga LAN IP -ni o'rnating. Standart qiymat: 192.168.1.99
  • NTP -server: juda zarur emas, lekin yaqin atrofdagi NTP -serverlar uchun google -dan foydalanish yaxshi bo'lardi. Standart qiymat: 79.136.86.176
  • Kod CET vaqt zonasi uchun sozlangan. To'g'ri vaqtni (NTP) ko'rsatish uchun, agar kerak bo'lsa, bu qiymatni o'z mintaqangizga moslang.

Nexa kodlarini hidlash

Buning uchun siz hech bo'lmaganda RX komponentini Arduino -ga sxemada ko'rsatilganidek ulashingiz kerak.

Quyida Nexa_OK_3_RX.ino eskizini toping, uni yozish paytida Nexa NEYCT-705 va PET-910 qurilmalariga mos keladi.

Quyidagi qadamlar bajarilishi kerak:

  1. Nexa qabul qilgichini masofadan boshqarish pulti bilan ulang.
  2. Nexa_OK_3_RX.ino -ni Arduino -ga yuklang va "Serial monitor" ni oching.
  3. Nexa qabul qilgichni boshqaradigan masofadan boshqarish tugmachasini bosing.
  4. "RemoteID" va "ButtonID" ga e'tibor bering.
  5. Oldingi eskizning o'zgaruvchan deklaratsiyasida bu raqamlarni SenderID va ButtonID ostida o'rnating.

PIR identifikatorini o'qish uchun xuddi shu eskizdan foydalaning (Nexa_OK_3_RX.ino) va PIR harakatni aniqlaganda "Serial monitor" dagi qiymatni o'qing.

3 -qadam: Nexardu tashqi server bilan

Kutubxonalar

Ushbu kod ko'plab kutubxonalardan foydalanadi. Ko'p qismini Arduino IDE "Kutubxona menejeri" orqali topish mumkin. Agar ro'yxatga olingan kutubxonani topmasangiz, iltimos google.

Wire.hRTClib.h - bu kutubxona https://github.com/MrAlvin/RTClibSPI.h - Ethernet shieldNexaCtrl.h tomonidan talab qilinadi - Nexa qurilma boshqaruvchisi Ethernet.h - Ethernet qalqonini yoqish va ishlatish uchun PIRTime.h - RTCTimeAlarms.h uchun zarur - Vaqt signalini boshqarishREST.h - tashqi serverair/wdt.h tomonidan ishlatiladigan RESTful API xizmatlari uchun

Eskiz

Quyidagi eskizda xuddi shu narsaning yana bir ta'mi bor, bu safar tashqi veb -server beradigan imkoniyatlarni kuchaytiradi. Kirish qismida aytib o'tilganidek, Tashqi server tashqi PHP veb -serverini o'rnatishni talab qiladi. Ushbu sozlash ancha murakkab va bu qo'llanmada qo'llab -quvvatlanmaydi, ammo Arduino -ni tekshirish va boshqarish uchun PHP kodi/sahifasi asosiy funksiyalar bilan ta'minlangan.

Kodni Arduino -ga yuklamasdan oldin quyidagilarni sozlashingiz kerak bo'ladi.

  • SenderId: avval SenderId -ni hidlashingiz kerak, oldingi bosqichda Nexa kodlarini hidlashni ko'ring.
  • PIR_id: avval SenderId -ni hidlashingiz kerak, oldingi bosqichda Nexa kodlarini hidlashni ko'ring.
  • LAN IP -manzili: Ethernet Arduino qalqoniga LAN IP -ni o'rnating. Standart qiymat: 192.168.1.99

Nexa kodini hidlash protsedurasi uchun 1 -qadamga qarang.

Qo'shimcha fayl

Qo'shilgan nexardu4.txt faylini tashqi PHP serveringizga yuklang va uning nomini nexardu4.php deb o'zgartiring.

RTC vaqti belgilandi

Vaqtni/sanani RTCda o'rnatish uchun DS1307RTC kutubxonasi bilan birlashtirilgan SetTime eskizidan foydalanaman.

4 -qadam: qimmatli ma'lumotlar

Qimmatli ma'lumotlar
Qimmatli ma'lumotlar
Qimmatli ma'lumotlar
Qimmatli ma'lumotlar

Xulq -atvorni bilish yaxshi

  1. Arduino "Yengil avtomatik boshqaruv" ostida bo'lsa, u atrofdagi yorug'lik va kunning vaqtiga qarab to'rt xil holatga o'tishi mumkin:

    1. Uyg'onib: Arduino tun kelishini kutadi.
    2. Faol: tun keldi va Arduino chiroqlarni yoqdi.
    3. Uyqusiz: chiroqlar yonadi, lekin ularni o'chirish vaqti yaqinlashmoqda. U "time_to_turn_off - PIR_time" da boshlanadi, ya'ni 22_30 da PIR_time 20:30 ga o'rnatilgan bo'lsa, Arduino 22:10 da uyqu holatiga o'tadi.
    4. Uyquda: Kecha o'tadi, Arduino chiroqlarni o'chiradi va Arduino tong otishini kutadi.
  2. Arduino har doim masofadan boshqarish pultlari tomonidan yuborilgan signallarni tinglaydi. Bu masofadan boshqarish pultidan foydalanilganda Internetdagi yorug'lik holatini (yoqish/o'chirish) ko'rsatish imkoniyatiga ega.
  3. Arduino uyg'onib turganda, u doimo chiroqlarni o'chirishga harakat qiladi, shuning uchun chiroqlarni yoqish uchun qayta boshqarish tugmasi orqali yuborilgan ON signallari Arduino tomonidan yozib olinishi mumkin. Agar shunday bo'ladigan bo'lsa, Arduino yana chiroqlarni o'chirishga harakat qiladi.
  4. Arduino faol bo'lsa ham, u har doim chiroqlarni yoqishga harakat qiladi, shuning uchun masofadan boshqarish pulti tomonidan o'chirilgan o'chirish signallari Arduino tomonidan yozib olinishi mumkin. Agar shunday bo'ladigan bo'lsa, Arduino yana chiroqlarni yoqishga harakat qiladi.
  5. Uyqusiz holatda chiroqlarni masofadan boshqarish pulti yordamida yoqish/o'chirish mumkin. Arduino bunga qarshilik qilmaydi.
  6. Uyqusizlik holatida, PIR hisoblagichi "time_to_turn_off - PIR_time" dan tiklana boshlaydi va shuning uchun PIR har safar harakatni aniqlaganida vaqt_to_turn_off 20 daqiqaga uzayadi. "PIR signali aniqlandi!" Bu sodir bo'lganda, xabar veb -brauzerda ko'rsatiladi.
  7. Arduino ishlamay qolganda, chiroqlarni masofadan boshqarish pulti yordamida yoqish va o'chirish mumkin. Arduino bunga qarshilik qilmaydi.
  8. Arduino -ni qayta o'rnatish yoki quvvat aylanishi uni faol rejimga o'tkazadi. Bu shuni anglatadiki, agar Arduino time_turn_offdan keyin qayta tiklangan bo'lsa, Arduino chiroqlarni yoqadi. Bunga yo'l qo'ymaslik uchun Arduino -ni qo'lda rejimga o'tkazish kerak ("Yengil avtomatik boshqaruv" belgisini qo'ying) va uni "Yengil avtomatik boshqaruv" ga qaytarish uchun ertalabgacha kuting.
  9. Yuqorida aytib o'tilganidek, Arduino yana tong otishini kutadi. Shu sababli, "minimal yorug'lik" chegarasidan oshib ketadigan yorug'lik sensori tomon etarlicha kuchli yorug'lik yo'naltirilsa, tizim aldanib qolishi mumkin. Agar shunday bo'lsa, Arduino faol holatga o'tishi kerak.
  10. Bardoshlilik qiymati tizimning minimal yorug'lik chegarasi chegarasida yopilishining oldini olish uchun katta ahamiyatga ega. Led chiroqlar, ularning miltillashi va yuqori sezuvchanligi tufayli, xatti -harakatlarning manbai bo'lishi mumkin. Agar siz bu muammoga duch kelsangiz, bardoshlik qiymatini oshiring. Men 7 qiymatidan foydalanaman.

Kod haqida bilish yaxshi

  1. Ko'rib turganingizdek, kod juda katta va juda ko'p kutubxonalardan foydalanadi. Bu yig'ma uchun zarur bo'lgan bo'sh xotira miqdorini buzadi. Men o'tmishda, ayniqsa, veb -qo'ng'iroqlardan so'ng, tizim to'xtab qolganda, beqaror xatti -harakatlarni payqadim. Shuning uchun men oldimga qo'yilgan eng katta qiyinchilik - bu tizimning barqarorligini ta'minlash uchun uning hajmini va turli xil o'zgaruvchilardan foydalanishni cheklash.
  2. Men uyda ishlatgan ichki serverdan foydalanadigan kod 2016 yil fevral oyidan buyon muammosiz ishlaydi.
  3. Men kodni tushuntirishlar bilan boyitishga ko'p harakat qildim. Nexa kodini yuborish soni, NTP sinxronlash vaqti va boshqalar kabi turli xil parametrlar bilan o'ynash uchun bundan foydalaning.
  4. Kodda yozgi vaqt rejimi mavjud emas. Agar kerak bo'lsa, bu veb -brauzer orqali sozlanishi kerak.

Ko'rib chiqish kerak bo'lgan ba'zi fikrlar

  1. Antennalarni TX va RX radiochastota (RF) modullariga qo'shing. Bu sizga ikkita asosiy nuqta haqida shikoyat qilish vaqtini tejaydi: chastotali signalning chidamliligi va diapazoni. Men uzunligi 17,28 sm (6,80 dyuym) bo'lgan 50 Ohm simdan foydalanaman.
  2. Bu, masalan, Proove kabi boshqa uy avtomatlashtirish tizimlari bilan ishlashi mumkin. Ko'p shartlardan biri bu 433.92 MGts chastotada ishlashidir.
  3. Vaqti -vaqti bilan yangilanib turadigan kutilmaganda kutilmaganda "eski" eskizga mos kelmaydigan kutubxonalar bilan shug'ullanish - Arduino bilan katta bosh og'rig'i; xuddi shu muammo Arduino IDE -ni yangilashda paydo bo'lishi mumkin. E'tibor bering, bu bizning vaziyatimiz bo'lishi mumkin -ha, mening muammom ham.
  4. Har xil yorug'lik rejimiga ega bo'lgan bir vaqtning o'zida bir nechta veb -mijozlar "miltillovchi" holatni yaratadi.

Skrinshot

Yuqoridagi rasm karuselida siz veb -brauzer orqali Arduino -ga qo'ng'iroq qilganingizda ko'rsatiladigan veb -sahifaning skrinshotini topasiz. Kodning standart IP konfiguratsiyasini hisobga olgan holda, URL https://192.168.1.99 bo'ladi

Yaxshilanishi mumkin bo'lgan jihatlardan biri bu "yuborish" tugmachasining joylashuvi, chunki u hamma o'ylash mumkin bo'lgan "Yengil avtomatik boshqaruv" da emas, balki barcha kirish qutilarida kuchga kiradi. Boshqacha qilib aytganda, agar mumkin bo'lgan qiymatlardan birini o'zgartirmoqchi bo'lsangiz, har doim "yuborish" tugmasini bosish kerak.

Batafsil/kengaytirilgan hujjatlar

Men quyidagi fayllarni biriktirdim, shunda ular sizga muammoni hal qilish va takomillashtirish uchun butun echimni tushunishga yordam beradi.

Arduino_NexaControl_IS.pdf Ichki server yechimi bo'yicha hujjatlarni taqdim etadi.

Arduino_NexaControl_ES.pdf Tashqi server yechimi bo'yicha hujjatlarni taqdim etadi.

Tashqi havolalar

Nexa tizimi (shved)

5 -qadam: Bajarildi

Bajarildi!
Bajarildi!

U erda siz hamma narsani tugatdingiz va harakatdasiz!

Arduino Uno korpusini Thingiverse-da "Arduino Uno Rev3 Ethernet Shield XL-korpusi bilan" topish mumkin.

Tavsiya: