Агуулгын хүснэгт:

NexArdu: Гэрэлтүүлгийн ухаалаг хяналт: 5 алхам
NexArdu: Гэрэлтүүлгийн ухаалаг хяналт: 5 алхам

Видео: NexArdu: Гэрэлтүүлгийн ухаалаг хяналт: 5 алхам

Видео: NexArdu: Гэрэлтүүлгийн ухаалаг хяналт: 5 алхам
Видео: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Долдугаар сарын
Anonim
NexArdu: Гэрэлтүүлгийн ухаалаг хяналт
NexArdu: Гэрэлтүүлгийн ухаалаг хяналт

Шинэчлэх

Хэрэв та Home Assistant -ийг ашиглан ижил функцийг боловсруулсан бол. Гэрийн туслах нь асар их боломжийг санал болгодог. Та хөгжүүлэлтийг эндээс олж болно.

Гэрийн гэрэлтүүлгийг ухаалаг байдлаар 433.92MHz (433MHz гэж нэрлэдэг) утасгүй X10 төхөөрөмжөөр удирдах схем. Nexa.

Арын дэвсгэр

Гоёл чимэглэлийн гэрэлтүүлгийн тухайд нарны цагийг ЦЭЦ -тэй харьцуулж өөрчилснөөр хоёр, гурав дахь долоо хоног тутамд гэрлээ асаах цагийг дахин тохируулах шаардлагатай болдог нь намайг ямар нэгэн байдлаар ядраасан юм. Зарим шөнө бид нөгөөгөөсөө эрт унтдаг. Үүнээс болж заримдаа гэрэл "хэтэрхий оройтсон" эсвэл "хэт эрт" унтраасан байдаг. Дээр дурдсан зүйлс намайг бодоход уриалав: Би гоёл чимэглэлийн гэрэлтүүлгийг орчны гэрлийн ижил түвшинд үргэлж асааж, дараа нь бид сэрүүн байгаа эсэхээс хамааран тодорхой хугацаанд унтраахыг хүсч байна.

Зорилго

Энэхүү зааварчилгаа нь 433.92MHz давтамж дээр ажилладаг System Nexa гэх мэт утасгүй удирдлагатай төхөөрөмжүүдийн боломжийг ашигладаг. Энд бид дараахь зүйлийг онцлох болно.

  1. Автомат гэрэлтүүлгийн хяналт
  2. Вэб хяналт

Вэб хяналт. Дотоод ба гадаад вэб сервер

Дотоод сервер нь Arduino Ethernet бамбай ашиглан вэб сервер өгөх боломжийг ашигладаг. Вэб сервер нь Arduino -ийг шалгаж, харилцахын тулд вэб клиентийн дуудлагад оролцох болно. Энэ бол хязгаарлагдмал ажиллагаатай шууд шийдэл юм; Вэб серверийн кодыг сайжруулах боломж нь Arduino -ийн санах ойгоор хязгаарлагддаг бөгөөд гадаад сервер нь гадаад PHP вэб серверийг тохируулахыг шаарддаг. Энэхүү тохиргоо нь илүү төвөгтэй бөгөөд энэ гарын авлагад дэмжигдээгүй боловч Arduino -г шалгах, удирдах PHP код/хуудас нь үндсэн функцээр хангагдсан болно. Вэб серверийг сайжруулах боломж нь энэ тохиолдолд гадаад вэб серверээр хязгаарлагддаг.

Билл материал

Энэхүү ноорогны боломжийг бүрэн ашиглахын тулд танд дараахь зүйлс хэрэгтэй болно.

  1. Arduino Uno (R3 дээр туршсан)
  2. Arduino Ethernet бамбай
  3. Nexa багц эсвэл үүнтэй төстэй 433.92MHz давтамжтай ажилладаг
  4. PIR (Passive InfraRed) мэдрэгч нь 433.92MHz давтамжтай ажилладаг
  5. 10KOhms эсэргүүцэл
  6. LDR
  7. RTC DS3231 (зөвхөн гадаад серверийн хувилбар)
  8. 433.92MHz давтамжтай XY-FST
  9. 433.92MHz хүлээн авагч: MX-JS-05V

Санал болгож буй хамгийн бага хэмжээ нь:

  1. Arduino Uno (R3 дээр туршсан)
  2. Nexa багц эсвэл үүнтэй төстэй 433.92MHz давтамжтай ажилладаг
  3. 10KOhms эсэргүүцэл
  4. LDR
  5. 433.92MHz давтамжтай XY-FST

(Ethernet бамбайг орхигдуулсан тохиолдолд энэ зааварт заагаагүй ноорог өөрчлөлт оруулах шаардлагатай болно)

Nexa логик. Товч тайлбар

Nexa хүлээн авагч нь алсын удирдлагын ID болон товчлуурын ID -г сурдаг. Өөрөөр хэлбэл, алсын удирдлага бүр өөрийн илгээгчийн дугаартай, хос асаах/унтраах товчлуур бүр өөрийн товчлуурын ID -тай байдаг. Хүлээн авагч эдгээр кодыг сурах ёстой. Зарим Nexa баримт бичигт хүлээн авагчийг 6 хүртэлх алсын удирдлагатай хослуулах боломжтой гэж заасан байдаг. Nexa параметрүүд:

  • SenderID: алсын удирдлагын ID
  • ButtonID: товчлуурын хос дугаар (асаах/унтраах). Энэ нь 0 дугаараас эхэлдэг
  • Бүлэг: тийм/үгүй ("Бүгдийг унтраах/асаах" товчлуурууд)
  • Тушаал: асаах/унтраах

Зааварлах алхамууд. Тэмдэглэл

Энд тайлбарласан өөр өөр алхамууд нь зорилгодоо хүрэх хоёр өөр амтыг санал болгох явдал юм. Та өөрт тохирсон нэгийг нь сонгохдоо чөлөөтэй байгаарай. Энд индекс байна:

Алхам #1: хэлхээ

Алхам #2: Дотоод вэб сервертэй Nexardu (NTP -тэй)

Алхам #3: Гадаад сервертэй Nexardu

Алхам #4: Үнэ цэнэтэй мэдээлэл

Алхам 1: Хэлхээ…

Хэлхээ…
Хэлхээ…

Зураг дээр үзүүлсэн шиг янз бүрийн бүрэлдэхүүн хэсгүүдийг утсаар холбоно.

Arduino pin#8 -ийг RX (хүлээн авагч) модуль дээрх өгөгдлийн зүү рүү Arduino зүү#2 -оос RX (хүлээн авагч) модульд өгөгдлийн зүү хийх

RTC тохиргоо. Зөвхөн гадаад серверийн тохиргоонд хэрэгтэй. RTC модуль дээрх Arduino pin A4 -аас SDA зүү, RTC модуль дээрх Arduino зүү A5 -аас SCL зүү

Алхам 2: Дотоод вэб сервертэй Nexardu (NTP -тэй)

Номын сангууд

Энэ код нь маш олон номын санг ашигладаг. Тэдгээрийн ихэнхийг Arduino IDE -ийн "Номын сангийн менежер" -ээс олж болно. Хэрэв та жагсаасан номын сан олохгүй бол google -ээс авна уу.

Wire.hSPI.h - Ethernet shieldNexaCtrl.h шаардлагатай - Nexa төхөөрөмжийн хянагч Ethernet.h - Ethernet бамбайг идэвхжүүлэх, онцлог болгох NTP үйлчлүүлэгч

Ноорог

Доорх код нь Arduino UNO самбарыг зөвхөн Nexa төхөөрөмжийг удирдах хэрэгсэл болгон ашиглах боломжийг ашиглахаас гадна дотоод вэб сервертэй болно. Тэмдэглэх зүйл бол RTC (Real Time Clock) модулийг NTP (Сүлжээний цагийн протокол) -оор автоматаар тохируулдаг.

Кодыг Arduino -д байршуулахаасаа өмнө дараахь зүйлийг тохируулах шаардлагатай байж магадгүй юм.

  • SenderId: Та эхлээд SenderId -ийг үнэрлэх хэрэгтэй, доороос үзнэ үү
  • PIR_id: та эхлээд SenderId -ийг үнэрлэх хэрэгтэй, доороос үзнэ үү
  • LAN IP хаяг: LAN -ийнхээ IP хаягийг Ethernet Arduino бамбай руу тохируулна уу. Анхдагч утга: 192.168.1.99
  • NTP сервер: Шаардлагатай биш боловч ойролцоох NTP серверүүдийг google -ээр ашиглах нь зүйтэй болов уу. Анхдагч утга: 79.136.86.176
  • Кодыг CET цагийн бүсэд тохируулсан болно. Цагийг зөв харуулахын тулд шаардлагатай бол энэ утгыг өөрийн цагийн бүсэд тохируулна уу.

Nexa кодыг үнэрлэж байна

Үүнийг хийхийн тулд RX бүрэлдэхүүн хэсгийг хэлхээнд үзүүлсэн шиг Arduino руу залгах хэрэгтэй.

Nexa_OK_3_RX.ino ноорогыг бичихдээ Nexa төхөөрөмжүүд NEYCT-705 ба PET-910-тэй нийцтэй байгааг олж мэдээрэй.

Дагаж мөрдөх алхмууд нь:

  1. Nexa хүлээн авагчийг алсын удирдлагатай хослуул.
  2. Nexa_OK_3_RX.ino -ийг Arduino дээр ачаалж, "Цуваа дэлгэц" -ийг нээнэ үү.
  3. Nexa хүлээн авагчийг удирддаг алсын удирдлагын товчийг дарна уу.
  4. "RemoteID" ба "ButtonID" -ийг анхаарч үзээрэй.
  5. Эдгээр тоонуудыг өмнөх зургийн хувьсагчийн мэдүүлэгт SenderID болон ButtonID хэсэгт тохируулна уу.

PIR -ийн Id -г уншихын тулд яг ийм ноорог (Nexa_OK_3_RX.ino) ашиглаад PIR хөдөлгөөнийг илрүүлэх үед "Цуваа дэлгэц" дээрх утгыг уншаарай.

Алхам 3: Гадаад сервертэй Nexardu

Номын сангууд

Энэ код нь маш олон номын санг ашигладаг. Ихэнхийг Arduino IDE -ийн "Номын сангийн менежер" -ээс олж болно. Хэрэв та жагсаасан номын сан олохгүй бол google -ээс авна уу.

Wire.hRTClib.h - энэ бол https://github.com/MrAlvin/RTClibSPI.h дээрх номын сан юм - Ethernet shieldNexaCtrl.h шаардлагатай - Nexa төхөөрөмжийн хянагчEthernet.h - Ethernet бамбайг идэвхжүүлэх, ашиглахын тулдRCSwitch.h - Шаардлагатай PIRTime.h - RTCTimeAlarms.h - Цаг дохиоллын менежмент aREST.h - гадаад сервер/wdt.h ашигладаг RESTful API үйлчилгээнүүдэд шаардлагатай

Ноорог

Доорх ноорог нь ижил зүйлийн өөр нэг амтыг харуулсан бөгөөд энэ удаад гадны вэб серверийн өгөх боломжийг хүчирхэгжүүлэв. Танилцуулгад дурдсанчлан Гадаад сервер нь гадаад PHP вэб серверийг тохируулахыг шаарддаг. Энэхүү тохиргоо нь илүү төвөгтэй бөгөөд энэ гарын авлагад дэмжигдээгүй боловч Arduino -г шалгах, удирдах PHP код/хуудас нь үндсэн функцээр хангагдсан болно.

Кодыг Arduino -д байршуулахаасаа өмнө дараахь зүйлийг тохируулах шаардлагатай байж магадгүй юм.

  • SenderId: та эхлээд SenderId -ийг үнэрлэх хэрэгтэй, өмнөх алхам дээрх Nexa кодыг үнэрлэхийг үзнэ үү.
  • PIR_id: та эхлээд SenderId -ийг үнэрлэх хэрэгтэй, өмнөх алхам дээрх Nexa кодыг үнэрлэхийг үзнэ үү.
  • LAN IP хаяг: Ethernet Arduino бамбай дээрээ LAN -ийн IP хаягийг тохируулна уу. Анхдагч утга: 192.168.1.99

Nexa код үнэрлэх процедурыг 1 -р алхамаас үзнэ үү.

Нэмэлт файл

Хавсаргасан nexardu4.txt файлыг гадаад PHP серверт байршуулж, нэрийг нь nexardu4.php болгон өөрчилнө үү.

RTC цагийг тохируулсан

RTC дээр цаг/огноог тохируулахын тулд DS1307RTC номын сангийн цуглуулга болох SetTime тоймыг ашигладаг.

Алхам 4: Үнэ цэнэтэй мэдээлэл

Үнэ цэнэтэй мэдээлэл
Үнэ цэнэтэй мэдээлэл
Үнэ цэнэтэй мэдээлэл
Үнэ цэнэтэй мэдээлэл

Зан төлөвийг мэдэх нь сайн хэрэг

  1. Arduino нь "Хөнгөн автомат удирдлага" дор байх үед хүрээлэн буй орчны гэрэлтүүлэг, өдрийн цагтай холбоотой дөрвөн өөр төлөвт шилжиж болно.

    1. Сэрүүн: Ардуино шөнө ирэхийг хүлээж байна.
    2. Идэвхтэй: Шөнө болж, Ардуино гэрлээ асаав.
    3. Нойрмоглох: Гэрэл асаалттай байгаа боловч унтраах цаг ойртож байна. Энэ нь "time_to_turn_off - PIR_time" -аас эхэлнэ, өөрөөр хэлбэл,_хэрэглэх хугацааг 22:30, PIR_ -ийг 20 минут гэж тохируулсан бол Arduino 22:10 цагт нойрмоглох байдалд орно.
    4. Унтсан: Шөнө өнгөрөхөд Ардуино гэрлээ унтрааж, үүр цайхыг сэрэхийг Ардуино хүлээж байна.
  2. Arduino нь алсын удирдлагаас илгээсэн дохиог үргэлж сонсдог. Энэ нь алсын удирдлага ашиглах үед вэб дээрх гэрлийн төлөвийг (асаах/унтраах) харуулах боломжийг олгодог.
  3. Arduino сэрүүн байхдаа гэрлээ байнга унтраахыг хичээдэг тул гэрлийг асаахын тулд дахин хянах товчоор илгээсэн ON дохиог Arduino барьж авах боломжтой. Хэрэв ийм зүйл тохиолдвол Arduino дахин гэрлээ унтраахыг оролдох болно.
  4. Arduino идэвхтэй байхад гэрлээ байнга асаахыг хичээдэг тул гэрлийг унтраахын тулд алсын удирдлагаас илгээсэн OFF дохиог Arduino барьж болно. Хэрэв ийм зүйл тохиолдвол Arduino гэрлээ дахин асаахыг оролдох болно.
  5. Нойргүй байдалд байгаа тохиолдолд гэрлийг алсын удирдлагаар асаах/унтраах боломжтой. Arduino үүнийг эсэргүүцэхгүй.
  6. Нойрмог байдалд байгаа тохиолдолд PIR тоолуурыг "time_to_turn_off - PIR_time" -аас анхны байдалд нь оруулж эхлэх бөгөөд ингэснээр PIR хөдөлгөөнийг илрүүлэх бүрд цаг хугацааны эргэлт 20 минутаар уртасдаг. "PIR дохиог илрүүллээ!" Энэ тохиолдолд вэб хөтөч дээр зурвас гарч ирнэ.
  7. Arduino унтаж байх үед гэрлийг алсын удирдлагаар асааж, унтрааж болно. Arduino үүнийг эсэргүүцэхгүй.
  8. Arduino -г дахин тохируулах эсвэл асаах цикл нь түүнийг идэвхтэй горимд оруулах болно. Энэ нь хэрэв Arduino -г time_turn_off -ийн дараа дахин тохируулсан бол Arduino гэрлээ асаах болно гэсэн үг юм. Үүнээс зайлсхийхийн тулд Arduino -г гарын авлагын горимд оруулах шаардлагатай ("Хөнгөн автомат удирдлага" -г сонгоно уу), "Хөнгөн автомат удирдлага" руу буцаахын тулд өглөө болтол хүлээнэ үү.
  9. Дээр дурдсанчлан Ардуино үүр цайхыг дахин идэвхжихийг хүлээж байна. Үүний улмаас систем нь "хамгийн бага гэрэлтэх" босгыг давах гэрлийн мэдрэгч рүү хангалттай хүчтэй гэрэл чиглүүлснээр хууртагдах болно. Хэрэв ийм зүйл тохиолдвол Ардуино идэвхтэй төлөвт шилжих ёстой.
  10. Хяналтын утга нь хамгийн бага гэрэлтүүлгийн босго утгыг тойрч, унтрахаас зайлсхийхэд чухал ач холбогдолтой юм. Гэрлийн чийдэн нь анивчдаг, өндөр хариу үйлдэл үзүүлдэг тул хийсэх зан үйлийн эх үүсвэр болдог. Хэрэв танд ийм асуудал тулгарвал хүлцлийн утгыг нэмэгдүүлээрэй. Би 7 утгыг ашигладаг.

Кодын талаар мэдэхэд таатай байна

  1. Таны харж байгаагаар код нь маш том бөгөөд ихээхэн хэмжээний номын санг ашигладаг. Энэ нь овоолго хийхэд шаардлагатай чөлөөт санах ойн хэмжээг бууруулдаг. Би өнгөрсөн хугацаанд систем, ялангуяа вэб дуудлагын дараа зогссон тогтворгүй зан авирыг анзаарсан. Тиймээс надад тулгарсан хамгийн том бэрхшээл бол системийг тогтвортой байлгахын тулд түүний хэмжээ, олон янзын хувьсагчийн хэрэглээг хязгаарлах явдал байсан.
  2. Миний гэртээ ашигладаг дотоод серверийг ашигладаг код 2016 оны 2 -р сараас хойш асуудалгүй ажиллаж байна.
  3. Би кодыг тайлбараар баяжуулахын тулд ихээхэн хүчин чармайлт гаргасан. Үүний давуу талыг ашиглан янз бүрийн параметрээр тоглох, Nexa код дамжуулах тоо, NTP синхрончлох хугацаа гэх мэт.
  4. Код нь зуны цагийг заадаггүй. Үүнийг вэб хөтөч ашиглан тохируулах шаардлагатай болно.

Зарим зүйлийг анхаарч үзэх хэрэгтэй

  1. Антенныг TX ба RX радио давтамж (RF) модульд нэмнэ үү. Энэ нь уян хатан чанар, RF дохионы хүрээ гэсэн хоёр үндсэн зүйлийн талаар гомдол гаргахад цаг хэмнэх болно. Би 17.28см (6.80ин) урттай 50Ohms утас ашигладаг.
  2. Энэхүү дамжуулагч нь Proove шиг бусад гэрийн автоматжуулалтын системтэй ажиллах боломжтой. Гүйцэтгэх олон нөхцлийн нэг бол тэдгээрийг 433.92MHz давтамжтай ажиллуулах явдал юм.
  3. Arduino -ийн толгойны том өвчин бол цаг хугацааны явцад шинэчлэгдэж, гэнэт "хуучин" ноорогтойгоо нийцэхгүй байгаа номын сантай харьцах явдал юм. Arduino IDE -ийг шинэчлэх үед ижил асуудал гарч ирж магадгүй юм. Энэ бол бидний асуудал байж магадгүй гэдгийг анхаарна уу, тийм ээ, миний асуудал.
  4. Өөр өөр гэрлийн горимтой олон тооны нэгэн зэрэг вэб клиентүүд нь "анивчих" төлөвийг бий болгодог.

Дэлгэцийн агшин

Дээрх зургийн тойруулгаас та вэб хөтөчөөр дамжуулан Arduino руу залгахдаа вэб хуудасны дэлгэцийн агшинг олох болно. Кодын анхдагч IP тохиргоог өгсөн тохиолдолд URL нь https://192.168.1.99 байх болно

Сайжруулж болох нэг тал бол "илгээх" товчлуурын байршил юм, учир нь энэ нь зөвхөн "Хөнгөн автомат удирдлага" дээр биш бүх оролтын хайрцагт хүчин төгөлдөр болно. Өөрөөр хэлбэл, хэрэв та боломжит утгуудын аль нэгийг өөрчлөхийг хүсч байвал "илгээх" товчийг дарах хэрэгтэй.

Нарийвчилсан/Нарийвчилсан баримт бичиг

Алдааг олж засварлах, сайжруулахын тулд бүхэл бүтэн шийдлийг ойлгоход туслахын тулд би дараах файлуудыг хавсаргасан болно.

Arduino_NexaControl_IS.pdf нь Дотоод серверийн шийдлийн талаархи баримт бичгийг өгдөг.

Arduino_NexaControl_ES.pdf нь гадаад серверийн шийдлийн талаархи баримт бичгийг өгдөг.

Гадаад лавлагаа

Nexa систем (Швед)

Алхам 5: Дууссан

Дууссан!
Дууссан!

Тэнд та бүх зүйлийг дуусгаж, ажиллуулж байна!

Arduino Uno-ийн хэргийг Thingiverse-д "Arduino Uno Rev3 Ethernet Shield XL-хайрцагтай" хэлбэрээр олж болно.

Зөвлөмж болгож буй: