Мазмұны:

NexArdu: ақылды басқару: 5 қадам
NexArdu: ақылды басқару: 5 қадам
Anonim
NexArdu: ақылды жарықтандыруды басқару
NexArdu: ақылды жарықтандыруды басқару

Жаңарту

Егер сіз Home Assistant көмегімен дәл осындай функцияны дамытсаңыз. Home Assistant үлкен мүмкіндіктерді ұсынады. Сіз дамуды осы жерден таба аласыз.

Үйдің жарықтандырылуын 433,92 МГц (433 МГц) сымсыз X10 тәрізді құрылғылар арқылы ақылды түрде басқаруға арналған эскиз, мысалы. Nexa.

Фон

Сәндік жарықтандыруға келетін болсақ, мен үшін әр сағат сайын немесе үшінші аптада CET -ке қатысты күн сағаттарының ауысуына байланысты шамдарды қосатын таймерлерді өзгертуге тура келетіні мені шаршатты. кейбір түндерде біз басқаларға қарағанда ерте жатамыз. Осыған байланысты кейде шамдар «тым кеш» немесе «тым ерте» сөнеді. Жоғарыда айтылғандар мені ойлануға шақырды: Мен сәндік жарықтандырудың әрқашан бірдей жарық деңгейінде қосылып тұрғанын қалаймын, содан кейін біз ояу немесе оянбағандығымызға байланысты белгілі бір уақытта сөнгенін қалаймын.

Объективті

Бұл нұсқаулық 433.92 МГц жиілікте жұмыс істейтін System Nexa сияқты сымсыз басқарылатын құрылғылардың мүмкіндіктерін пайдаланады. Мұнда біз мыналарды көрсетуге тиіспіз:

  1. Жарықтандыруды автоматтандырылған басқару
  2. Веб -бақылау

Веб -бақылау. Ішкі және сыртқы веб -сервер

Ішкі сервер веб -серверді қамтамасыз ету үшін Arduino Ethernet қалқанының мүмкіндігін пайдаланады. Веб -сервер Arduino -мен тексеру және өзара әрекеттесу үшін веб -клиенттердің қоңырауларына қатысады. Бұл шектеулі функционалдығы бар тікелей шешім; Веб -сервер кодын жақсарту мүмкіндіктері Arduino жадымен шектеледі. Сыртқы сервер сыртқы PHP веб -серверін орнатуды қажет етеді. Бұл орнату күрделірек және бұл оқулықта қолдау көрсетілмейді, бірақ Arduino -ны тексеруге және басқаруға арналған PHP коды/беті негізгі функционалдылықпен қамтамасыз етілген. Веб -серверді жақсарту мүмкіндіктері бұл жағдайда сыртқы веб -сервермен шектеледі.

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

Бұл эскиздің мүмкіндіктерін толық пайдалану үшін сізге қажет:

  1. Arduino Uno (R3 -те сыналған)
  2. Arduino Ethernet қалқаны
  3. Nexa жиынтығы немесе соған ұқсас 433.92 МГц жиілікте жұмыс істейді
  4. PIR (Passive InfraRed) сенсоры 433,92 МГц жиілікте жұмыс істейді
  5. 10 кОм резистор
  6. LDR
  7. RTC DS3231 (тек сыртқы серверлік нұсқа)
  8. 433.92 МГц таратқыш: XY-FST
  9. 433.92 МГц қабылдағыш: MX-JS-05V

Ұсынылатын минимум:

  1. Arduino Uno (R3 -те сыналған)
  2. Nexa жиынтығы немесе соған ұқсас 433.92 МГц жиілікте жұмыс істейді
  3. 10 кОм резистор
  4. LDR
  5. 433.92 МГц таратқыш: XY-FST

(Ethernet қалқанының болмауы осы нұсқаулықта берілмеген эскизді өзгертуді талап етеді)

Nexa логикасы. Қысқаша сипаттама

Nexa қабылдағышы қашықтан басқару құралының идентификаторы мен түйменің идентификаторын үйренеді. Басқаша айтқанда, әрбір қашықтан басқару пультінің жіберуші нөмірі болады, ал қосу/өшіру түймелерінің әр жұбы өзінің түйме идентификаторына ие. Алушы бұл кодтарды үйренуі керек. Кейбір Nexa құжаттарында ресиверді алты қашықтан басқару пультімен жұптастыруға болатындығы айтылады. Nexa параметрлері:

  • SenderID: қашықтан басқару құралының идентификаторы
  • ButtonID: түйме жұп нөмірі (қосу/өшіру). Ол 0 санынан басталады
  • Топ: иә/жоқ («Барлығын өшіру/қосу» түймелері)
  • Команда: қосу/өшіру

Нұсқауға болатын қадамдар. Ескерту

Мұнда сипатталған әр түрлі қадамдар - бұл мақсатқа жетудің екі түрлі дәмін ұсыну. Өзіңізге ыңғайлы кез келгенін таңдап алыңыз. Міне көрсеткіш:

№1 қадам: тізбек

№2 қадам: Ішкі веб -сервері бар Nexardu (NTP бар)

№3 қадам: Сыртқы сервері бар Nexardu

№4 қадам: құнды ақпарат

1 -қадам: Цикл …

Цикл…
Цикл…

Әр түрлі компоненттерді суретте көрсетілгендей сыммен қосыңыз.

№ 8 Arduino түйрегіші RX (қабылдағыш) модуліндегі деректер түйреуі#2 Arduino түйрегіші RX (қабылдағыш) модуліндегі деректер түйіні №7 Arduino түйрегіші TX (жіберуші) модуліндегі деректер түйіні

RTC конфигурациясы. Сыртқы сервер конфигурациясында ғана қажет. RTC модуліндегі Arduino PIN A4 - SDA түйреуі

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 (Network Time Protocol) арқылы автоматты түрде реттеледі.

Кодты Arduino -ға жүктемес бұрын, келесілерді конфигурациялау қажет болуы мүмкін:

  • SenderId: алдымен SenderId иісін білу керек, төменде қараңыз
  • PIR_id: алдымен SenderId иісін білу керек, төменде қараңыз
  • LAN IP мекенжайы: Ethernet Arduino қалқанына жергілікті желінің IP мекенжайын орнатыңыз. Әдепкі мән: 192.168.1.99
  • NTP сервері: Қажет емес, бірақ жақын жердегі NTP серверлері үшін google -ге кіру жақсы болар еді. Әдепкі мән: 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 идентификаторын оқу үшін дәл осы эскизді пайдаланыңыз (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 - сыртқы serverair/wdt.h қолданатын RESTful API қызметтері үшін - Watchdog таймерін басқару

Эскиз

Төмендегі эскизде сол нәрсенің басқа дәмі бар, бұл жолы сыртқы веб -сервер бере алатын мүмкіндіктерді күшейтеді. Кіріспеде айтылғандай, Сыртқы сервер сыртқы PHP веб -серверін орнатуды талап етеді. Бұл орнату күрделірек және оны оқулық қолдамайды, алайда Arduino -ны тексеруге және басқаруға арналған PHP коды/беті негізгі функционалдылықпен қамтамасыз етілген.

Кодты Arduino -ға жүктемес бұрын, келесілерді конфигурациялау қажет болуы мүмкін:

  • SenderId: алдымен SenderId иісін білу керек, алдыңғы қадамдағы Nexa кодтарын иістендіру бөлімін қараңыз.
  • PIR_id: алдымен SenderId иісін білу керек, алдыңғы қадамдағы Nexa кодтарын иістендіру бөлімін қараңыз.
  • LAN IP мекенжайы: Ethernet Arduino қалқанына жергілікті желінің 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 белсенді болған кезде ол үнемі шамдарды қосуға тырысады, сондықтан қашықтан басқару пульті арқылы сөндіру сигналын Arduino түсіруі мүмкін. Егер бұл орын алса, Arduino жарықты қайта қосуға тырысады.
  5. Ұйқысыз күйде шамдарды қашықтан басқару пультімен қосуға/өшіруге болады. Arduino қарсы болмайды.
  6. Ұйқысыз күйде PIR кері санағы «уақыт_кейін_қайту - PIR_қозғалысынан» қалпына келтіріле бастайды, сондықтан PIR қозғалысты анықтаған сайын уақытты_қайту уақыты 20 минутқа ұзарады. «PIR сигналы анықталды!» Бұл жағдайда веб -шолғышта хабарлама пайда болады.
  7. Arduino ұйықтап тұрған кезде шамдарды қашықтан басқару пульті арқылы қосуға және өшіруге болады. Arduino қарсы болмайды.
  8. Arduino -ны қалпына келтіру немесе қуат циклі оны белсенді режимге әкеледі. Бұл егер Arduino time_turn_off кейін қалпына келтірілген болса, онда Arduino шамдарды қосады. Бұған жол бермеу үшін Arduino -ны қолмен жұмыс режиміне көшіру керек («Жарықты автоматты басқару» белгісін қойыңыз) және оны «Жеңіл автоматты басқару» режиміне қайтару үшін таңға дейін күтіңіз.
  9. Жоғарыда айтылғандай, Ардуино таңның қайтадан белсенді болуын күтеді. Осының арқасында жүйе «ең төменгі жарықтық» шегінен асатын жарық сенсорына жеткілікті күшті жарықты бағыттау арқылы алдануы мүмкін. Егер бұл орын алса, онда Arduino белсенді күйге ауысуы керек.
  10. Толеранттылық мәні жүйенің минималды жарықтық шекті мәнінің айналасында қосылып кетуін болдырмау үшін өте маңызды. Жарықдиодты шамдар, олардың жыпылықтауы мен жоғары жауаптылығына байланысты, қылқалам мінез -құлқының көзі бола алады. Егер сізде бұл проблема болса, төзімділік мәнін арттырыңыз. Мен 7 мәнін қолданамын.

Код туралы білу жақсы

  1. Көріп отырғаныңыздай, код өте үлкен және көптеген кітапханаларды қолданады. Бұл үймеге қажет бос жад көлемін төмендетеді. Мен бұрын веб -қоңыраулардан кейін жүйенің тоқтап қалуымен тұрақсыз мінез -құлықты байқадым. Сондықтан мен алған үлкен қиындық - бұл жүйенің тұрақтылығын қамтамасыз ету үшін оның мөлшерін және әр түрлі айнымалыларды қолдану.
  2. Мен үйде қолданатын ішкі серверді пайдаланатын код 2016 жылдың ақпан айынан бастап жұмыс істейді.
  3. Мен кодты түсіндірулермен байытуға көп күш салдым. Әр түрлі параметрлермен ойнау үшін осы мүмкіндікті пайдаланып, Nexa кодын жіберу саны, NTP синхрондау уақыты және т.
  4. Кодта жазғы уақыт режимі жоқ. Бұл қолданылған кезде веб -шолғыш арқылы реттелуі керек.

Кейбір тармақтарды ескеру қажет

  1. Антенналарды TX және RX радиожиілік (РЖ) модульдеріне қосыңыз. Бұл сізге екі негізгі нүктеге шағымдануға уақытты үнемдейді: РЖ сигналының тұрақтылығы мен диапазоны. Мен ұзындығы 17.28см (6.80ин) 50 Ом сымды қолданамын.
  2. Бұл күрделі, мысалы, Proove сияқты басқа үй автоматтандыру жүйелерімен жұмыс істей алады. Орындалатын көптеген шарттардың бірі - олардың 433,92 МГц жиілікте жұмыс істеуі.
  3. Ардуиноның үлкен бас ауруы - уақыт өте келе жаңартылатын және кенеттен сіздің «ескі» эскизіңізге сәйкес келмейтін кітапханалармен күресу; 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-корпусымен» ретінде табылуы мүмкін.

Ұсынылған: