Բովանդակություն:

NexArdu. Լուսավորման խելացի կառավարում `5 քայլ
NexArdu. Լուսավորման խելացի կառավարում `5 քայլ

Video: NexArdu. Լուսավորման խելացի կառավարում `5 քայլ

Video: NexArdu. Լուսավորման խելացի կառավարում `5 քայլ
Video: Séance ordinaire - 5 juillet 2021 2024, Նոյեմբեր
Anonim
NexArdu. Լուսավորման խելացի հսկողություն
NexArdu. Լուսավորման խելացի հսկողություն

Թարմացնել

Եթե մշակել եք նույն գործառույթը ՝ օգտագործելով Home Assistant- ը: Տնային օգնականն առաջարկում է հսկայական հնարավորություններ: Theարգացմանը կարող եք ծանոթանալ այստեղ:

Տնային լուսավորությունը խելացի կերպով վերահսկելու էսքիզ 433.92 ՄՀց (հայտնի է 433 ՄՀց) անլար X10 նման սարքերի միջոցով, օրինակ. Նեքսա

Նախապատմություն

Ինչ վերաբերում է դեկորատիվ լուսավորությանը, ինձ ինչ -որ կերպ հոգնեցուցիչ էր, որ ամեն երկրորդ կամ երրորդ շաբաթվա ընթացքում ես ստիպված էի կարգավորել ժամաչափերը, որոնք միացնում են լույսերը ՝ արևի ժամի փոփոխության պատճառով CET- ի նկատմամբ: Միևնույն ժամանակ, որոշ գիշեր մենք քնում ենք մյուսներից շուտ: Դրա պատճառով երբեմն լույսերը անջատվում են կամ «շատ ուշ», կամ «շատ շուտ»: Վերը նշվածը ինձ ստիպեց մտածել. Ես ուզում եմ, որ դեկորատիվ լուսավորությունը միանա միշտ շրջապատի նույն մակարդակի վրա, այնուհետև անջատվի որոշակի ժամանակ `կախված արթուն լինելուց, թե ոչ:

Օբյեկտիվ

Այս հրահանգը օգտագործում է անլար վերահսկվող սարքերի հնարավորությունները, ինչպիսիք են System Nexa- ն, որոնք աշխատում են 433.92 ՄՀց հաճախականությամբ: Այստեղ մենք պետք է առանձնացնենք.

  1. Ավտոմատացված լուսավորության հսկողություն
  2. Վեբ հսկողություն

Վեբ հսկողություն: Ներքին և արտաքին վեբ սերվեր

Ներքին սերվերը օգտագործում է Arduino Ethernet վահանի վեբ սերվեր տրամադրելու հնարավորությունը: Վեբ սերվերը կհաճախի վեբ հաճախորդների զանգերին ՝ Arduino- ն ստուգելու և փոխազդելու համար: Սա ուղիղ լուծում է ՝ սահմանափակ ֆունկցիոնալությամբ. վեբ սերվերի կոդը ընդլայնելու հնարավորությունները սահմանափակվում են Arduino- ի հիշողությամբ: Արտաքին սերվերը պահանջում է արտաքին PHP վեբ սերվերի տեղադրում: Այս կարգավորումը ավելի բարդ է և չի աջակցվում այս ձեռնարկում, սակայն Arduino- ն ստուգելու և ուղղորդելու PHP կոդը/էջը ապահովված է հիմնական գործառույթներով: Վեբ սերվերի ընդլայնման հնարավորությունները, այս դեպքում, սահմանափակվում են արտաքին վեբ սերվերով:

Ապրանքների հաշիվը

Այս ուրվագծի ընձեռած հնարավորություններից լիարժեք օգտվելու համար ձեզ հարկավոր է.

  1. Arduino Uno (փորձարկված R3- ի վրա)
  2. Arduino Ethernet վահան
  3. Nexa հավաքածու կամ նմանատիպ գործող 433.92 ՄՀց հաճախականությամբ
  4. 433.92 ՄՀց հաճախականությամբ աշխատող PIR (Passive InfraRed) սենսոր
  5. 10KOhms դիմադրություն
  6. LDR
  7. A RTC DS3231 (միայն արտաքին սերվերի տարբերակ)
  8. 433.92 ՄՀց հաղորդիչ ՝ XY-FST
  9. 433.92 ՄՀց ընդունիչ ՝ MX-JS-05V

Նվազագույնը խորհուրդ է տրվում.

  1. Arduino Uno (փորձարկվել է R3- ի վրա)
  2. Nexa հավաքածու կամ նմանատիպ գործող 433.92 ՄՀց հաճախականությամբ
  3. 10KOhms դիմադրություն
  4. LDR
  5. 433.92 ՄՀց հաղորդիչ ՝ XY-FST

(Ethernet վահանի բացթողումը պահանջում է էսքիզների փոփոխություններ, որոնք նախատեսված չեն այս հրահանգի շրջանակներում)

Nexa Logic- ը: Հակիրճ նկարագրություն

Nexa ստացողը սովորում է հեռակառավարման վահանակի ID- ն և կոճակի ID- ն: Այլ կերպ ասած, յուրաքանչյուր հեռակառավարիչ ունի իր ուղարկողի համարը, և միացման/անջատման յուրաքանչյուր զույգ ունի իր կոճակի ID- ն: Ստացողը պետք է սովորի այդ կոդերը: Nexa- ի որոշ փաստաթղթերում նշվում է, որ ընդունիչը կարող է զուգակցվել մինչև վեց հեռակառավարման վահանակի հետ: Nexa պարամետրերը.

  • SenderID: Հեռակառավարման վահանակի ID
  • ButtonID: կոճակի զույգի համարը (միացված/անջատված): Այն սկսվում է 0 թվից
  • Խումբ ՝ այո/ոչ (հայտնի է նաև «Բոլոր անջատված/միացված» կոճակներով)
  • Հրաման ՝ միացված/անջատված

Ուսուցողական քայլեր: Նշում

Այստեղ նկարագրված տարբեր քայլերը պետք է առաջարկեն երկու տարբեր համային հատկանիշներ, թե ինչպես հասնել նպատակին: Ազատորեն ընտրեք ձեր հարմարության դեպքում: Ահա ինդեքսը.

Քայլ #1: Շղթան

Քայլ #2. Nexardu ներքին վեբ սերվերի հետ (NTP- ով ներառված)

Քայլ #3. Nexardu արտաքին սերվերի հետ

Քայլ #4: Արժեքավոր տեղեկատվություն

Քայլ 1: Շղթան…

Շրջանը…
Շրջանը…

Լարացրեք տարբեր բաղադրիչները, ինչպես ցույց է տրված նկարում:

Arduino pin#8 -ից տվյալների քորոց RX (ստացողի) մոդուլում Arduino pin#2 -ից տվյալների քորոց RX (ընդունիչ) մոդուլին Arduino pin#7 -ից TIN (ուղարկողի) մոդուլի Data pin- ին Arduino pin A0 to LDR

RTC կազմաձևում: Պահանջվում է միայն արտաքին սերվերի կազմաձևման վրա: Arduino pin A4 to SDA pin to RTC մոդուլ Arduino pin A5 to SCL pin on RTC module

Քայլ 2. Nexardu ներքին վեբ սերվերով (NTP- ով ներառված)

Գրադարաններ

Այս ծածկագիրը օգտագործում է բազմաթիվ գրադարաններ: Դրանցից շատերը կարելի է գտնել Arduino IDE- ի «Գրադարանի մենեջերի» միջոցով: Եթե չգտաք ցուցակագրված գրադարան, խնդրում ենք google- ում:

Wire.hSPI.h - Պահանջվում է Ethernet վահանի կողմից NexaCtrl.h - Nexa սարքի վերահսկիչ Ethernet.h - Ethernet վահանը միացնելու և ցուցադրելու համար RCSwitch.h - Պահանջվում է PIRTime.h - Պահանջվում է RTCTimeAlarms.h - alarmամանակի ահազանգի կառավարման համար EthernetUdp.h - Պահանջվում է NTP հաճախորդ

Էսքիզը

Ստորև բերված կոդը օգտագործում է Arduino UNO տախտակի օգտագործման հնարավորությունը ոչ միայն որպես Nexa սարքերը կառավարելու միջոց, այլ նաև Ներքին վեբ սերվեր: Ավելացնելու նկատառումն այն է, որ RTC (Իրական ժամանակի ժամացույց) մոդուլը ինքնաբերաբար ճշգրտվում է NTP (Timeանցի ժամանակի արձանագրություն) միջոցով:

Նախքան կոդը Arduino- ում վերբեռնելը, ձեզ կարող է անհրաժեշտ լինել կարգավորել հետևյալը.

  • SenderId. Նախ պետք է հոտոտել SenderId- ը, տես ստորև
  • PIR_id. Նախ պետք է հոտոտել SenderId- ը, տես ստորև
  • LAN IP հասցե. Ձեր LAN- ի IP- ն սահմանեք ձեր Ethernet Arduino վահանի վրա: Կանխադրված արժեքը `192.168.1.99
  • NTP սերվեր. Խիստ անհրաժեշտ չէ, բայց կարող է լավ լինել Google- ի մոտակայքում գտնվող NTP սերվերների համար: Կանխադրված արժեքը `79.136.86.176
  • Կոդը ճշգրտված է CET ժամային գոտու համար: Անհրաժեշտության դեպքում հարմարեցրեք այս արժեքը ձեր ժամային գոտում `ճիշտ ժամանակը (NTP) ցուցադրելու համար

Հոտոտելով 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 - alarmամանակի ահազանգի կառավարման համար AREST.h - արտաքին սերվերի կողմից օգտագործվող RESTful API ծառայությունների համար/wdt.h - Watchdog timer բեռնաթափում

Էսքիզը

Ստորև ներկայացված ուրվագիծը պարունակում է նույն բանի մեկ այլ համ, այս անգամ հզորացնելով այն հնարավորությունները, որոնք կարող է տալ արտաքին վեբ սերվերը: Ինչպես արդեն նշվեց ներածության մեջ, Արտաքին սերվերը պահանջում է արտաքին PHP վեբ սերվերի տեղադրում: Այս կարգավորումը ավելի բարդ է և չի աջակցվում այս ձեռնարկում, սակայն Arduino- ն ստուգելու և ուղղորդելու PHP կոդը/էջը ապահովված է հիմնական գործառույթներով:

Նախքան կոդը Arduino- ում վերբեռնելը, ձեզ կարող է անհրաժեշտ լինել կարգավորել հետևյալը.

  • SenderId. Նախ պետք է հոտոտել SenderId- ը, տեսեք նախորդ քայլին Nexa կոդերի հոտ քաշելը:
  • PIR_id. Նախ պետք է հոտոտել SenderId- ը, տեսեք նախորդ քայլին Nexa կոդերի հոտ քաշելը
  • LAN IP հասցե. Ձեր LAN- ի IP- ն սահմանեք ձեր Ethernet Arduino վահանի վրա: Կանխադրված արժեքը `192.168.1.99

Nexa ծածկագիրը հոտոտելու ընթացակարգի համար խնդրում ենք անդրադառնալ Քայլ 1 -ին:

Լրացուցիչ ֆայլ

Վերբեռնեք կցված nexardu4.txt ֆայլը ձեր արտաքին PHP սերվերին և անվանափոխեք այն nexardu4.php

RTC ժամանակը սահմանված է

RTC- ում ժամանակը/ամսաթիվը սահմանելու համար ես օգտագործում եմ SetTime էսքիզը, որը միավորում է DS1307RTC գրադարանը:

Քայլ 4: Արժեքավոր տեղեկատվություն

Արժեքավոր տեղեկություններ
Արժեքավոր տեղեկություններ
Արժեքավոր տեղեկություններ
Արժեքավոր տեղեկություններ

Լավ է իմանալ պահվածքը

  1. Երբ Arduino- ն գտնվում է «Լույսի ավտոմատ կառավարման» ներքո, այն կարող է անցնել չորս տարբեր վիճակների `կապված շրջակա լուսավորության և օրվա ժամի հետ.

    1. Արթունին սպասում է, որ գիշերը գա:
    2. Ակտիվ. Գիշերը եկել է, և Արդուինոն միացրել է լույսերը:
    3. Հանգիստ. Լույսերը միացված են, բայց գալիս է դրանք անջատելու ժամանակը: Այն սկսվում է «time_to_turn_off - PIR_time», այսինքն, եթե time_to_turn_off- ը սահմանվել է 22:30, իսկ PIR_ ժամանակը ՝ 20 րոպե, ապա Arduino- ն քնած վիճակի մեջ կմտնի 22:10:
    4. Քնած. Գիշերն անցնում է, Արդուինոն անջատել է լույսերը, և Արդուինոն սպասում է լուսաբացին արթնանալուն:
  2. Arduino- ն միշտ լսում է հեռակառավարման վահանակներով ուղարկվող ազդանշանները: Սա առանձնացնում է ցանցում լույսերի վիճակը (միացված/անջատված) ցուցադրելու հնարավորությունը, երբ օգտագործվում է հեռակառավարման վահանակը:
  3. Մինչ Arduino- ն արթուն է, այն փորձում է անընդհատ անջատել լույսերը, հետևաբար, լույսերը միացնելու համար հեռակառավարման վահանակի կողմից ուղարկված ON ազդանշանները կարող են գրանցվել Arduino- ի կողմից: Եթե դա տեղի ունենա, Arduino- ն կփորձի կրկին անջատել լույսերը:
  4. Մինչ Arduino- ն ակտիվ է, այն փորձում է մշտապես միացնել լույսերը, հետևաբար, անջատիչ ազդանշանները, որոնք ուղարկվում են հեռակառավարման վահանակը ՝ լույսերն անջատելու համար, կարող է գրավել Arduino- ն: Եթե դա տեղի ունենա, Arduino- ն կփորձի կրկին միացնել լույսերը:
  5. Քնած վիճակում լույսերը կարելի է միացնել/անջատել հեռակառավարմամբ: Արդուինոն չի հակազդելու:
  6. Քնած վիճակում PIR- ի հետհաշվարկը կսկսվի վերսկսվել «ժամանակից_վերադարձի- PIR_ ժամանակ» -ից, ուստի ամեն անգամ, երբ PIR- ը շարժում է հայտնաբերում, ժամանակը_վերադարձման_կընդլայնվի: «PIR ազդանշանը հայտնաբերվեց»: հաղորդագրությունը կցուցադրվի վեբ դիտարկիչում, երբ դա տեղի ունենա:
  7. Մինչ Arduino- ն քնած է, լույսերը կարելի է միացնել և անջատել հեռակառավարման վահանակի միջոցով: Արդուինոն չի հակազդելու:
  8. Arduino- ի վերագործարկումը կամ հզորության ցիկլը այն կբերի ակտիվ ռեժիմի: Սա նշանակում է, որ եթե Arduino- ն վերակայվել է time_turn_off- ից հետո, ապա Arduino- ն կմիացնի լույսերը: Դրանից խուսափելու համար Arduino- ն պետք է մտցվի ձեռքի ռեժիմ (նշեք «Light Automatic Control») և սպասեք մինչև առավոտ, որպեսզի այն վերադառնաք «Light Automatic Control»:
  9. Ինչպես արդեն նշվեց, Արդուինոն սպասում է լուսաբացին, որ նորից ակտիվանա: Դրա պատճառով համակարգը կարող է խաբվել ՝ բավականաչափ ուժեղ լույս ուղղելով դեպի լուսային սենսորը, որը պետք է գերազանցի «նվազագույն լուսավորության» շեմը: Եթե դա տեղի ունենա, ապա Arduino- ն պետք է անցնի ակտիվ վիճակի:
  10. Հանդուրժողականության արժեքը մեծ նշանակություն ունի `խուսափելու համար համակարգի նվազում և անջատում շեմային նվազագույն լուսավորության արժեքի շուրջ: Առաջնորդվող լույսերը, իրենց թարթման և բարձր արձագանքման շնորհիվ, կարող են ծակող վարքի աղբյուր լինել: Բարձրացրեք հանդուրժողականության արժեքը, եթե հանդիպեք այս խնդրին: Ես օգտագործում եմ 7 արժեքը:

Լավ է իմանալ ծածկագրի մասին

  1. Ինչպես կարող եք նկատել, ծածկագիրը շատ մեծ է և օգտագործում է զգալի քանակությամբ գրադարաններ: Սա վտանգում է կույտի համար անհրաժեշտ ազատ հիշողության ծավալը: Նախկինում ես նկատել եմ անկայուն պահվածք, երբ համակարգը կանգ է առնում, հատկապես վեբ զանգերից հետո: Հետևաբար, ամենամեծ մարտահրավերը, որը ես ունեցել եմ, եղել է դրա չափը և տարբեր փոփոխականների օգտագործումը `համակարգը կայուն դարձնելու համար:
  2. Ներքին սերվերը շահագործող ծածկագիրը, որն օգտագործվում է իմ կողմից տանը, այժմ գործում է 2016 թվականի փետրվարից ՝ առանց խնդիրների:
  3. Ես զգալի ջանքեր եմ գործադրել ծածկագիրը բացատրություններով հարստացնելու համար: Օգտվեք դրանից ՝ տարբեր պարամետրերով խաղալու համար, ինչպիսիք են Nexa կոդերի քանակը մեկ պայթյունի համար, NTP համաժամացման ժամանակը և այլն:
  4. Կոդը չի պարունակում ցերեկային ժամացույց: Երբ այն կիրառվում է, այն պետք է ճշգրտվի վեբ դիտարկիչի միջոցով:

Որոշ կետեր, որոնք պետք է հաշվի առնել

  1. Անթենները ավելացրեք TX և RX ռադիոհաճախականության (ՌԴ) մոդուլներին: Դա կխնայի ձեր ժամանակը ՝ բողոքելով երկու հիմնական կետի ՝ ճկունության և ՌԴ ազդանշանի տիրույթի մասին: Ես օգտագործում եմ 50 Օմ երկարությամբ 17,28 սմ (6,80 դյույմ) մետաղալար:
  2. Այս անխափան աշխատանքը կարող է աշխատել, օրինակ, Proove- ի նման տան ավտոմատացման այլ համակարգերի հետ: Կատարելու բազմաթիվ պայմաններից մեկն այն է, որ դրանք աշխատեն 433.92 ՄՀց հաճախականությամբ:
  3. Arduino- ի հետ մեծ գլխացավ է գրադարանների հետ գործ ունենալը, որոնք ժամանակի ընթացքում կարող են թարմացվել և հանկարծ հետ չմնալ համատեղելի ձեր «հին» ուրվագծի հետ: նույն խնդիրը կարող է առաջանալ ձեր Arduino IDE- ի արդիականացման ժամանակ: Ewգուշացեք, որ սա կարող է լինել մեր դեպքում այստեղ -այո, իմ խնդիրը նույնպես:
  4. Լույսի տարբեր ռեժիմներով միաժամանակ մի քանի վեբ հաճախորդներ ստեղծում են «թարթող» վիճակ:

Սքրինշոթ

Վերևում պատկերված կարուսելում դուք գտնում եք վեբ էջի սքրինշոթ, որը ցուցադրվում է Arduino- ին ձեր վեբ դիտարկիչով զանգահարելիս: Հաշվի առնելով ծածկագրի կանխադրված IP կոնֆիգուրացիան, URL- ը կլինի

Մեկ ասպեկտը, որը կարող է բարելավման առարկա լինել, «ներկայացնել» կոճակի տեղադրումն է, քանի որ այն ուժի մեջ է մտնում բոլոր մուտքային տուփերի վրա և ոչ միայն «Լույսի ավտոմատ կառավարման» վրա, ինչպես կարելի էր մտածել: Այլ կերպ ասած, եթե ցանկանում եք փոխել հնարավոր արժեքներից որևէ մեկը, միշտ պետք է սեղմել «ներկայացնել» կոճակը:

Մանրամասն/Ընդլայնված փաստաթղթեր

Ես կցել եմ հետևյալ ֆայլերը, որպեսզի դրանք կարողանան օգնել ձեզ հասկանալ ամբողջ լուծումը ՝ հատուկ անսարքությունների վերացման և կատարելագործման համար:

Arduino_NexaControl_IS.pdf- ը տրամադրում է ներքին սերվերի լուծման վերաբերյալ փաստաթղթեր:

Arduino_NexaControl_ES.pdf- ը տրամադրում է արտաքին սերվերի լուծման վերաբերյալ փաստաթղթեր:

Արտաքին հղումներ

Nexa System (շվեդերեն)

Քայլ 5: Ավարտվեց:

Ավարտվեց
Ավարտվեց

Այնտեղ դուք ամեն ինչ ավարտված և գործողության մեջ եք:

Arduino Uno պատյանը կարելի է գտնել Thingiverse- ում որպես «Arduino Uno Rev3 ՝ Ethernet Shield XL պատյանով»:

Խորհուրդ ենք տալիս: