Мазмуну:

NexArdu: Illumination Smart Control: 5 кадам
NexArdu: Illumination Smart Control: 5 кадам

Video: NexArdu: Illumination Smart Control: 5 кадам

Video: NexArdu: Illumination Smart Control: 5 кадам
Video: Séance ordinaire - 5 juillet 2021 2024, Июль
Anonim
NexArdu: Жарыктандыруу Smart Control
NexArdu: Жарыктандыруу Smart Control

Жаңыртуу

Эгерде ушул эле функцияны Home Assistant аркылуу иштеп чыксаңыз. Home Assistant көптөгөн мүмкүнчүлүктөрдү сунуштайт. Сиз бул жерден өнүгүүнү таба аласыз.

433.92MHz (aka 433MHz) зымсыз X10 сыяктуу түзмөктөр аркылуу үйдүн жарыгын акылдуу түрдө көзөмөлдөө үчүн эскиз, мис. Nexa.

Фон

Декоративдик жарыктандырууга келгенде, мен үчүн чарчап турган нерсе, ар бир экинчи же үчүнчү жумада мен CETке карата күндүн сааты өзгөргөндүктөн, чырактарды күйгүзгөн таймерлерди кайра тууралашым керек болчу. кээ бир түндөрү биз башкага караганда эрте уктайбыз. Ушундан улам кээде жарыктар "өтө кеч" же "өтө эрте" өчөт. Жогоруда айтылгандар мени ойлонууга чакырды: Мен декоративдик жарыктандыруунун дайыма бирдей деңгээлдеги жарыктын күйүп туруусун, андан кийин биз ойгонуп жатканыбызга же жоктугубузга жараша белгилүү бир убакта өчүшүн каалайм.

Максат

Бул көрсөтмө 433.92MHz жыштыгында иштеген System Nexa сыяктуу зымсыз башкарылуучу түзүлүштөрдүн мүмкүнчүлүктөрүн колдонот. Бул жерде биз өзгөчөлөнүшүбүз керек:

  1. Автоматташтырылган жарыктандырууну башкаруу
  2. Желе көзөмөлү

Желе көзөмөлү. Ички vs тышкы веб -сервер

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

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

Бул эскиздин мүмкүнчүлүктөрүн толук пайдалануу үчүн сизге керек:

  1. An Arduino Uno (R3 боюнча сыналган)
  2. An Arduino Ethernet калканы
  3. Nexa топтому же ушуга окшош 433.92МГцте иштейт
  4. PIR (Passive InfraRed) сенсору 433.92МГцте иштейт
  5. 10KOhms каршылыгы
  6. LDR
  7. RTC DS3231 (тышкы сервер версиясы үчүн гана)
  8. А 433.92MHz өткөргүч: XY-FST
  9. А 433.92MHz алуучу: MX-JS-05V

Минималдуу сунуш кылынат:

  1. An Arduino Uno (R3 боюнча сыналган)
  2. Nexa топтому же ушуга окшош 433.92МГцте иштейт
  3. 10KOhms каршылыгы
  4. LDR
  5. А 433.92MHz өткөргүч: XY-FST

(Ethernet калканынын жоктугу эскиздин бул көрсөтмөсүндө каралбаган өзгөртүүлөрдү талап кылат)

Nexa логикасы. Кыскача сүрөттөмө

Nexa ресивери алыстан башкаруунун идентификаторун жана баскычтын идентификаторун үйрөнөт. Башкача айтканда, ар бир пульттун жөнөтүүчү номери жана күйгүзүү/өчүрүү баскычтарынын ар бир түгөйүнүн идентификатору бар. Алуучу бул коддорду үйрөнүшү керек. Кээ бир Nexa документтеринде ресиверди алты пультка чейин жупташтырууга болот деп айтылат. Nexa параметрлери:

  • SenderID: алыстан башкаруунун идентификатору
  • ButtonID: баскыч-жуп номери (күйгүзүү/өчүрүү). 0 саны менен башталат
  • Топ: ооба/жок ("Бардыгын өчүрүү/күйгүзүү" баскычтары)
  • Буйрук: күйгүзүү/өчүрүү

Инструктивдүү кадамдар. Эскертүү

Бул жерде сүрөттөлгөн ар кандай кадамдар - бул максатка кантип жетүү боюнча эки башка даам сунуштоо. Өзүңүзгө ыңгайлуусун тандап алыңыз. Бул жерде индекс:

Step #1: райондук

2 -кадам: Ички веб -сервер менен Nexardu (NTP менен)

3 -кадам: Тышкы сервер менен Nexardu

4 -кадам: Баалуу маалымат

1 -кадам: Район…

Район…
Район…

Сүрөттө көрсөтүлгөндөй ар түрдүү компоненттерди зым менен жабыңыз.

Arduino pin#8 RX (кабыл алуучу) модулундагы маалымат түйүнүнө

RTC конфигурациясы. Тышкы сервердин конфигурациясында гана керектелет. Arduino пин A4 RTC модулундагы SDA пинине Arduino пин A5 SCL төөнөгүчүнө RTC модулунда

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 дареги: LANңыздын IP дарегин Ethernet Arduino калканчына коюңуз. Демейки мааниси: 192.168.1.99
  • NTP Server: Кереги жок, бирок жакын жердеги NTP серверлери үчүн google үчүн жакшы болмок. Демейки мааниси: 79.136.86.176
  • Код CET убакыт алкагы үчүн туураланган. Туура убакытты (NTP) көрсөтүү үчүн, керек болсо, бул маанини өзүңүздүн убакыт алкагыңызга тууралаңыз.

Nexa коддорун жыттап жатат

Бул үчүн сиз жок дегенде RX компонентин чынжырда көрсөтүлгөндөй Arduinoго туташтырышыңыз керек.

Төмөндө Nexa_OK_3_RX.ino эскизин табыңыз, аны жазуу учурунда Nexa түзмөктөрү NEYCT-705 жана PET-910 менен шайкеш келет.

Кадамдар төмөнкүдөй:

  1. Nexa ресиверин алыстан башкаруу пульту менен жупташтырыңыз.
  2. Arduinoго Nexa_OK_3_RX.ino жүктөп, "Сериялык мониторду" ачыңыз.
  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 shieldRCSwitch.h иштетүү жана өзгөчөлөштүрүү үчүн - Керектүү PIRTime.h - RTCTimeAlarms.h үчүн талап кылынат - Убакытты ойготууну башкаруу

Эскиз

Төмөндөгү эскизде ошол эле нерсенин дагы бир даамы бар, бул жолу тышкы веб -сервер бере турган мүмкүнчүлүктөрдү күчөтөт. Киришүүдө айтылгандай, Тышкы сервер тышкы PHP веб -серверин орнотууну талап кылат. Бул орнотуу татаалыраак жана бул окуу куралы тарабынан колдоого алынбайт, бирок 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ге коюу үчүн DS1307RTC китепканасы чогулган SetTime эскизин колдоном.

4 -кадам: Баалуу маалымат

Баалуу маалымат
Баалуу маалымат
Баалуу маалымат
Баалуу маалымат

Жүрүм -турумун билүү жакшы

  1. Ардуино "Жарык Автоматтуу Башкаруу" астында турганда, айланадагы жарыктандырууга жана күндүн убактысына карата төрт башка абалдан өтүшү мүмкүн:

    1. Ойгонуп: Ардуино түндүн келишин күтөт.
    2. Активдүү: Түн келип, Ардуино жарыкты күйгүздү.
    3. Somnolent: Чырактар күйүк, бирок аларды өчүрүү убактысы жакындап келе жатат. Ал "time_to_turn_off - PIR_time" менен башталат, башкача айтканда, эгер_туруу_жабылуу убактысы 22:30 жана PIR_time 20 мүнөткө коюлса, анда Arduino 22: 10до уйку абалына кирет.
    4. Уйкусуз: Түн өтөт, Ардуино жарыкты өчүрдү жана Ардуино таңдын ойгонушун күтөт.
  2. Arduino ар дайым алыстан башкаруу сигналдары менен угуп турат. Бул алыстан башкаруу колдонулганда интернетте жарыктардын абалын (күйгүзүү/өчүрүү) көрсөтүү мүмкүнчүлүгүн камтыйт.
  3. Arduino сергек турганда, ал ар дайым жарыкты өчүрүп салууга аракет кылат, андыктан жарыктарды күйгүзүү үчүн кайра көзөмөлдөөчү тарабынан жөнөтүлгөн ON сигналдарын Arduino басып алышы мүмкүн. Мындай боло турган болсо, Arduino кайра жарыкты өчүрүүгө аракет кылат.
  4. Arduino активдүү болуп турганда, ал ар дайым чырактарды күйгүзүүгө аракет кылат, алыстан башкаруу менен жиберилген ӨЧҮРҮҮ сигналдары жарыкты өчүрүү үчүн Arduino тарабынан жазылып калышы мүмкүн. Мындай боло турган болсо, Arduino жарыкты кайра күйгүзүүгө аракет кылат.
  5. Уйкусуз абалда жарыкты алыстан башкаруу пульту менен күйгүзүп/өчүрсө болот. Arduino каршы болбойт.
  6. Уйкусуз абалда PIR артка санагы "time_to_turn_off - PIR_time" баштапкы абалга келтириле баштайт, андыктан PIR кыймылды аныктаган сайын time_to_turn_off 20 мүнөткө узарат. "PIR сигналы аныкталды!" Бул болгондо веб браузерде билдирүү көрсөтүлөт.
  7. Arduino уктап жатканда, жарыктарды алыстан башкаруу пульту аркылуу күйгүзүп жана өчүрсө болот. Arduino каршы болбойт.
  8. Ардуинонун баштапкы абалга келтирилиши же кубаттуулугу аны активдүү режимге алып келет. Демек, эгер Arduino time_turn_off кийин кайра коюлган болсо, анда Arduino жарыкты күйгүзөт. Мунун алдын алуу үчүн Arduino кол режимине киргизилиши керек ("Жарык автоматтык башкаруу" дегенди белгилеңиз) жана аны "Жарык автоматтык башкаруу" режимине кайтаруу үчүн таңга чейин күтө туруу керек.
  9. Жогоруда айтылгандай, Ардуино таңдын кайрадан активдешүүсүн күтөт. Ушундан улам, система "эң аз жаркыроо" босогосун ашып кете турган жарык сенсоруна жетишерлик күчтүү жарыкты багыттоо аркылуу алданып калышы мүмкүн. Эгер мындай боло турган болсо, анда Ардуино активдүү абалга өтүшү керек.
  10. Толеранттуулуктун мааниси, системанын босого маанинин Минималдуу Жарыктыктын айланасында өчүп калуусун алдын алуу үчүн чоң мааниге ээ. Светодиоддук лампалар, алардын жылтылдагандыгы жана жогорку реактивдүүлүгү менен, жүрүм -турумдун булагы болушу мүмкүн. Эгер бул көйгөйгө туш болсоңуз, толеранттуулуктун маанисин жогорулатыңыз. Мен 7 маанисин колдоном.

Код жөнүндө билүү жакшы

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

Кээ бир пункттарды эске алуу керек

  1. Антенналарды TX жана RX радио жыштыгынын (RF) модулдарына кошуңуз. Бул эки негизги пунктка даттануу менен убактыңызды үнөмдөйт: RF сигналынын ийкемдүүлүгү жана диапазону. Мен узундугу 17.28см (6.80ин) 50Ohms зымын колдоном.
  2. Бул ийкемдүү, мисалы, Proove сыяктуу башка үй автоматташтыруу системалары менен иштеши мүмкүн. Көптөгөн шарттардын бири - 433.92MHz жыштыгында иштөө.
  3. Ардуино менен болгон чоң баш оору - бул убакыттын өтүшү менен жаңыртылып, күтүлбөгөн жерден "эски" эскизиңизге туура келбеген китепканалар менен күрөшүү; ушул эле көйгөй Arduino IDEңизди жаңыртууда көтөрүлүшү мүмкүн. Бул жерде биздин ишибиз болушу мүмкүн экенин байкаңыз -ооба, менин көйгөйүм да.
  4. Ар кандай жарык режимдери бар бир эле убакта бир нече веб -кардарлар "жарк" этүүчү абалды жаратат.

Скриншот

Жогорудагы сүрөттүн каруселинде сиз Arduino аркылуу веб -браузериңиз аркылуу чалганда көрсөтүлгөн веб -баракчанын скриншотун таба аласыз. Коддун демейки IP конфигурациясын эске алганда, URL https://192.168.1.99 болмок

Жакшыртылышы мүмкүн болгон бир жагдай - бул "тапшыруу" баскычынын жайгашуусу, анткени ал ойлогондой "Жарык автоматтык башкарууда" гана эмес, бардык киргизүү кутуларында күчүнө кирет. Башкача айтканда, мүмкүн болгон баалуулуктардын бирин өзгөрткүңүз келсе, дайыма "тапшыруу" баскычын басууңуз керек.

Деталдуу/Өркүндөтүлгөн документтер

Мен төмөнкү файлдарды тиркеп койдум, алар бүтүндөй чечүүнү түшүнүүгө жардам берет, өзгөчө көйгөйлөрдү чечүү жана жакшыртуу үчүн.

Arduino_NexaControl_IS.pdf Ички Server чечими боюнча документтерди камсыз кылат.

Arduino_NexaControl_ES.pdf тышкы сервер чечими боюнча документтерди камсыздайт.

Тышкы шилтемелер

Nexa системасы (шведче)

5 -кадам: Бүттү

Бүттү!
Бүттү!

Ал жерде сиз баарын бүтүрдүңүз жана аракетте!

Arduino Uno корпусун Thingiverseден "Arduino Uno Rev3 менен Ethernet Shield XL-корпусу" деп тапса болот.

Сунушталууда: