Përmbajtje:

NexArdu: Kontrolli i zgjuar i ndriçimit: 5 hapa
NexArdu: Kontrolli i zgjuar i ndriçimit: 5 hapa

Video: NexArdu: Kontrolli i zgjuar i ndriçimit: 5 hapa

Video: NexArdu: Kontrolli i zgjuar i ndriçimit: 5 hapa
Video: Leap Motion SDK 2024, Korrik
Anonim
NexArdu: Kontrolli i zgjuar i ndriçimit
NexArdu: Kontrolli i zgjuar i ndriçimit

Përditëso

Nëse keni zhvilluar të njëjtin funksionalitet duke përdorur Home Assistant. Home Assistant ofron një gamë të madhe mundësish. Këtu mund të gjeni zhvillimin.

Një skicë për të kontrolluar ndriçimin e shtëpisë në një mënyrë të zgjuar përmes pajisjeve pa tel të ngjashme me X10, 433.92MHz (aka 433MHz), p.sh. Nexa.

Sfondi

Kur bëhet fjalë për ndriçimin dekorativ, ka qenë disi e lodhshme për mua që çdo javë të dytë ose të tretë më duhej të rregulloja kohëmatësit që ndiznin dritat për shkak të zhvendosjes së orës diellore në lidhje me CET. Në të njëjtën kohë, disa netë shkojmë në shtrat më herët se të tjerat. Për shkak të kësaj, ndonjëherë dritat fiken ose "shumë vonë" ose "shumë herët". Sa më sipër më sfidoi të mendoja: Unë dua që ndriçimi dekorativ të ndizet gjithmonë në të njëjtin nivel të dritës së ambientit dhe pastaj të fiket në një kohë të caktuar në varësi të faktit nëse jemi zgjuar apo jo.

Objektiv

Ky udhëzues shfrytëzon mundësitë e pajisjeve pa tela të kontrolluara si System Nexa që funksionojnë në frekuencën 433.92MHz. Këtu ne duhet të veçojmë:

  1. Kontroll automatik i ndriçimit
  2. Kontrolli i uebit

Kontrolli i uebit. Web server i brendshëm vs i jashtëm

Serveri i Brendshëm shfrytëzon mundësinë e mburojës Arduino Ethernet për të siguruar një server në internet. Serveri në internet do të marrë pjesë në thirrjet e klientëve të uebit për të kontrolluar dhe bashkëvepruar me Arduino. Kjo është një zgjidhje e drejtpërdrejtë me funksionalitet të kufizuar; mundësitë e përmirësimit të kodit të serverit në internet janë të kufizuara nga kujtesa e Arduino. Serveri i jashtëm kërkon konfigurimin e një web serveri të jashtëm PHP. Ky konfigurim është më i ndërlikuar dhe nuk mbështetet nga ky tutorial, megjithatë, kodi/faqja PHP për të kontrolluar dhe drejtuar Arduino është e pajisur me funksionalitetin bazë. Mundësitë e rritjes së serverit të uebit, në këtë rast, janë të kufizuara nga serveri i jashtëm i uebit.

Fatura e materialeve

Për të përfituar plotësisht nga mundësitë që jep ky skicë, ju nevojiten:

  1. Një Arduino Uno (testuar në R3)
  2. Një mburojë Arduino Ethernet
  3. Një grup Nexa ose i ngjashëm që funksionon në 433.92MHz
  4. Një sensor PIR (InfraRed Passive) që funksionon në 433.92MHz
  5. Një rezistencë 10KOhms
  6. Një LDR
  7. Një RTC DS3231 (vetëm versioni i serverit të jashtëm)
  8. Një transmetues 433.92MHz: XY-FST
  9. Një marrës 433.92MHz: MX-JS-05V

Minimumi i rekomanduar është:

  1. Një Arduino Uno (testuar në R3)
  2. Një grup Nexa ose i ngjashëm që funksionon në 433.92MHz
  3. Një rezistencë 10KOhms
  4. Një LDR
  5. Një transmetues 433.92MHz: XY-FST

(Mospërfshirja e mburojës Ethernet kërkon modifikime të skicës që nuk jepen në këtë udhëzues)

Logjika Nexa. Një përshkrim i shkurtër

Marrësi Nexa mëson ID -në e telekomandës dhe ID -në e butonit. Me fjalë të tjera, çdo telekomandë ka numrin e tij të dërguesit dhe secila palë butonash ndezje/fikje ka ID -në e saj të butonit. Marrësi duhet t'i mësojë ato kode. Disa dokumente Nexa thonë se një marrës mund të çiftohet me deri në gjashtë telekomandë. Parametrat Nexa:

  • SenderID: ID e telekomandës
  • ButtonID: numri i çiftit të butonave (aktiv/fikur). Fillon me numrin 0
  • Grupi: po/jo (aka butonat "All off/on")
  • Komanda: ndezur/fikur

Hapat e udhëzueshëm. shënim

Hapat e ndryshëm të përshkruar këtu do të ofrojnë dy shije të ndryshme se si të arrihet objektivi. Mos ngurroni të zgjidhni atë që ju pëlqen. Këtu është indeksi:

Hapi #1: Qarku

Hapi #2: Nexardu me serverin e brendshëm të uebit (që përmban NTP)

Hapi #3: Nexardu me server të jashtëm

Hapi #4: Informacion i vlefshëm

Hapi 1: Qarku…

Qarku…
Qarku…

Lidhni përbërësit e ndryshëm siç tregohet në figurë.

Arduino pin#8 në të dhënat pin në modulin RX (marrës) pin pin Arduino#2 në të dhënat pin në modulin RX (marrësi) pin Arduino#7 në kunjin e të dhënave në modulin TX (dërgues) pin Arduino A0 në LDR

Konfigurimi i RTC. Nevojitet vetëm në konfigurimin e serverit të jashtëm. Pin Arduino A4 në SDA pin në modulin RTC Argino A5 në SCL pin në modulin RTC

Hapi 2: Nexardu Me Web Server të Brendshëm (me NTP)

Bibliotekat

Ky kod përdor shumë biblioteka. Shumica e tyre mund të gjenden përmes "Menaxherit të Bibliotekës" të Arduino IDE. Nëse nuk gjeni një bibliotekë të listuar, ju lutemi google.

Wire.hSPI.h - Kërkohet nga mburoja EthernetNexaCtrl.h - kontrolluesi i pajisjes Nexa Ethernet.h - Për të aktivizuar dhe shfaqur mburojën EthernetRCSwitch.h - Kërkohet për PIRTime.h - Kërkohet për RTCTimeAlarms.h - Menaxhimi i alarmit të kohës EthernetUdp.h - Kërkohet për Klienti NTP

Skica

Kodi më poshtë shfrytëzon mundësinë e përdorimit të bordit Arduino UNO jo vetëm si mjet për të kontrolluar pajisjet Nexa, por gjithashtu përmban një server të brendshëm të uebit. Një vërejtje për të shtuar është se moduli RTC (Ora në kohë reale) rregullohet automatikisht përmes NTP (Protokolli i Kohes së Rrjetit).

Para se të ngarkoni kodin në Arduino, mund t'ju duhet të konfiguroni sa vijon:

  • SenderId: ju duhet të nuhasni SenderId së pari, shihni më poshtë
  • PIR_id: ju duhet të nuhasni SenderId së pari, shihni më poshtë
  • Adresa IP e LAN -it: vendosni një IP të LAN -it tuaj në mburojën tuaj Ethernet Arduino. Vlera e paracaktuar: 192.168.1.99
  • Serveri NTP: Jo shumë i nevojshëm, por mund të jetë mirë të kërkoni në Google për serverët NTP në afërsi. Vlera e paracaktuar: 79.136.86.176
  • Kodi është përshtatur për zonën kohore CET. Rregulloni këtë vlerë -nëse është e nevojshme, në zonën tuaj kohore në mënyrë që të shfaqni kohën e duhur (NTP)

Duke nuhatur kodet Nexa

Për këtë ju duhet të lidhni së paku, përbërësin RX në Arduino siç tregohet në qark.

Gjeni më poshtë skicën Nexa_OK_3_RX.ino që, në kohën e shkrimit të saj, është e pajtueshme me pajisjet Nexa NEYCT-705 dhe PET-910.

Hapat që duhen ndjekur janë:

  1. Çiftoni marrësin Nexa me telekomandën.
  2. Ngarkoni Nexa_OK_3_RX.ino në Arduino dhe hapni "Serial Monitor".
  3. Shtypni butonin e telekomandës që kontrollon marrësin Nexa.
  4. Merrni parasysh "RemoteID" dhe "ButtonID".
  5. Vendosni këta numra nën SenderID dhe ButtonID në deklaratën e ndryshueshme të skicës së mëparshme.

Për të lexuar Id -në e PIR -it, thjesht përdorni të njëjtën skicë (Nexa_OK_3_RX.ino) dhe lexoni vlerën në "Serial Monitor" kur PIR zbulon lëvizjen.

Hapi 3: Nexardu Me Server të Jashtëm

Bibliotekat

Ky kod përdor shumë biblioteka. Shumica e pajisjeve mund të gjenden përmes "Menaxherit të Bibliotekës" të Arduino IDE. Nëse nuk gjeni një bibliotekë të listuar, ju lutemi google.

Wire.hRTClib.h - kjo është biblioteka nga https://github.com/MrAlvin/RTClibSPI.h - Kërkohet nga Ethernet shieldNexaCtrl.h - kontrolluesi i pajisjes NexaEthernet.h - Për të aktivizuar dhe shfaqur mburojën EthernetRCSwitch.h - Kërkohet për PIRTime.h - Kërkohet për RTCTimeAlarms.h - Menaxhimi i alarmit të kohësaREST.h - për shërbimet API RESTful të shfrytëzuara nga servrair/wdt.h i jashtëm - Trajtimi i kohëmatësit Watchdog

Skica

Skica më poshtë përmban një shije tjetër të së njëjtës gjë, këtë herë duke fuqizuar mundësitë që mund të japë një server i jashtëm në internet. Siç është përmendur tashmë në hyrje, Serveri i Jashtëm kërkon konfigurimin e një serveri të jashtëm PHP. Ky konfigurim është më i ndërlikuar dhe nuk mbështetet nga ky tutorial, megjithatë, kodi/faqja PHP për të kontrolluar dhe drejtuar Arduino është e pajisur me funksionalitetin bazë.

Para se të ngarkoni kodin në Arduino, mund t'ju duhet të konfiguroni sa vijon:

  • SenderId: ju duhet të nuhasni SenderId së pari, shihni Nuhatja e kodeve Nexa në hapin e mëparshëm
  • PIR_id: ju duhet të nuhasni SenderId së pari, shihni Nuhatja e kodeve Nexa në hapin e mëparshëm
  • Adresa IP e LAN -it: vendosni një IP të LAN -it tuaj në mburojën tuaj Ethernet Arduino. Vlera e paracaktuar: 192.168.1.99

Për procedurën e nuhatjes së kodit Nexa, referojuni Hapit #1.

Dosje plotësuese

Ngarko skedarin e bashkangjitur nexardu4.txt në serverin tënd të jashtëm PHP dhe riemërtoje atë në nexardu4.php

Koha e RTC është caktuar

Për të vendosur kohën/datën në RTC unë përdor skicën SetTime që bashkon bibliotekën DS1307RTC.

Hapi 4: Informacion i vlefshëm

Informacion i vlefshëm
Informacion i vlefshëm
Informacion i vlefshëm
Informacion i vlefshëm

Goodshtë mirë të njohësh sjelljen

  1. Kur Arduino është nën "Kontrollin Automatik të Dritës", ai mund të kalojë nëpër katër gjendje të ndryshme në lidhje me ndriçimin e ambientit dhe kohën e ditës:

    1. Me zgjim: Arduino pret natën që do të vijë.
    2. Aktiv: Ka ardhur nata dhe Arduino ka ndezur dritat.
    3. I përgjumur: Dritat janë ndezur, por koha për t'i fikur po vjen. Fillon në "time_to_turn_off - PIR_time", domethënë, nëse koha për të kthyer_furnizimin është caktuar në 22:30 dhe koha PIR_ është caktuar në 20 minuta, atëherë Arduino do të hyjë në gjendje të përgjumur në 22:10.
    4. Fjetur: Nata kalon, Arduino ka fikur dritat dhe Arduino pret që agimi të bëhet zgjuar.
  2. Arduino është gjithmonë duke dëgjuar sinjalet e dërguara nga telekomandat. Kjo përmban mundësinë për të treguar gjendjen e dritave (ndezur/fikur) në internet kur përdoret telekomandë.
  3. Ndërsa Arduino është zgjuar, ai përpiqet të fikë dritat gjatë gjithë kohës, prandaj, sinjalet ON të dërguara nga një kontroll remonte për të ndezur dritat mund të kapen nga Arduino. Nëse kjo ndodh, Arduino do të përpiqet të fikë dritat përsëri.
  4. Ndërsa Arduino është aktiv përpiqet të ndezë dritat gjatë gjithë kohës, prandaj, sinjalet OFF të dërguara nga një telekomandë për të fikur dritat mund të kapen nga Arduino. Nëse kjo ndodh, Arduino do të përpiqet të ndezë dritat përsëri.
  5. Në gjendje të përgjumur, dritat mund të ndizen/fiken me telekomandë. Arduino nuk do të kundërveprojë.
  6. Në gjendje të përgjumur, numërimi mbrapsht i PIR -it do të fillojë të rifillojë nga "time_to_turn_off - PIR_time" dhe kështu koha_të_turn_off zgjatet me 20 minuta sa herë PIR zbulon lëvizjen. Një "Sinjal PIR u zbulua!" mesazhi do të shfaqet në shfletuesin e internetit kur kjo të ndodhë.
  7. Ndërsa Arduino është në gjumë, dritat mund të ndizen dhe fiken përmes telekomandës. Arduino nuk do të kundërveprojë.
  8. Një cikël rifillimi ose fuqie i Arduino do ta sjellë atë në modalitetin aktiv. Kjo do të thotë që nëse Arduino është rivendosur pas kalimit të kohës, Arduino do të ndezë dritat. Për të shmangur këtë, Arduino duhet të futet në modalitetin manual (shënoni "Kontrolli automatik i dritës") dhe prisni deri në mëngjes për ta kthyer atë në "Kontrolli automatik i dritës".
  9. Siç u përmend më lart, Arduino pret që agimi të aktivizohet përsëri. Për shkak të kësaj, sistemi mund të mashtrohet duke drejtuar një dritë mjaft të fortë drejt sensorit të dritës që do të tejkalojë pragun e "shkëlqimit minimal". Nëse kjo ndodh, atëherë Arduino do të kalojë në gjendje aktive.
  10. Vlera e Tolerancës është e një rëndësie të madhe për të shmangur përplasjen dhe fikjen e sistemit rreth vlerës së pragut Ndriçueshmëria minimale. Dritat LED, për shkak të ndezjes së tyre dhe reagimit të tyre të lartë, mund të jenë një burim i sjelljes së përplasjes. Rritni vlerën e tolerancës nëse e përjetoni këtë problem. Unë përdor vlerën 7.

Shtë mirë të dini për kodin

  1. Siç mund ta vini re, kodi është shumë i madh dhe përdor një sasi të konsiderueshme bibliotekash. Kjo komprometon sasinë e kujtesës së lirë të nevojshme për grumbullin. Unë kam vënë re sjellje të paqëndrueshme në të kaluarën që sistemi është ndalur, veçanërisht pas thirrjeve në internet. Prandaj, sfida më e madhe që kam pasur ka qenë të kufizoj madhësinë e tij dhe përdorimin e variablave të ndryshëm për ta bërë sistemin të qëndrueshëm.
  2. Kodi që shfrytëzon serverin e brendshëm -i përdorur nga unë në shtëpi, ka filluar të funksionojë që nga shkurti 2016 pa probleme.
  3. Kam bërë përpjekje të konsiderueshme për të pasuruar kodin me shpjegime. Përfitoni nga kjo për të luajtur me parametra të ndryshëm si numri i dërgimeve të kodeve Nexa për plasje, koha e sinkronizimit NTP, etj.
  4. Kodi nuk përmban ruajtjen e ditës. Kjo duhet të rregullohet përmes shfletuesit të uebit kur aplikohet.

Disa pika për tu marrë parasysh

  1. Shtoni antenat në modulet e frekuencës së radios TX dhe RX (RF). Kjo do t'ju kursejë kohë duke u ankuar për dy pika kryesore: elasticitetin dhe gamën e sinjalit RF. Unë përdor një tel 50Ohms 17.28cm (6.80in) të gjatë.
  2. Ky i pandreqshëm mund të funksionojë me sisteme të tjera të automatizimit të shtëpisë, si Proove, për shembull. Një nga kushtet e shumta që duhet plotësuar është që ato të funksionojnë në frekuencën 433.92MHz.
  3. Një dhimbje koke e madhe me Arduino është të merresh me bibliotekat që mund të përditësohen me kalimin e kohës dhe papritmas të mos kthehesh në përputhje me skicën tënde "të vjetër"; i njëjti problem mund të lindë kur azhurnoni Arduino IDE tuaj. Kujdes se ky mund të jetë rasti ynë këtu -po, problemi im gjithashtu.
  4. Shumë klientë të njëkohshëm në internet me mënyra të ndryshme të dritës krijojnë një gjendje "vezulluese".

Pamje nga ekrani

Në karuselin e fotografisë më sipër, gjeni një pamje të ekranit të faqes në internet të shfaqur kur telefononi Arduino përmes shfletuesit tuaj të internetit. Duke pasur parasysh konfigurimin e paracaktuar IP të kodit, URL -ja do të ishte

Një aspekt që mund të jetë objekt përmirësimi është pozicionimi i butonit "dorëzo" pasi ai hyn në fuqi në të gjitha kutitë hyrëse dhe jo vetëm në "Kontrollin Automatik të Dritës" siç mund të mendoni. Me fjalë të tjera, nëse dëshironi të ndryshoni ndonjë nga vlerat e mundshme, gjithmonë duhet të shtypni butonin "dorëzo".

Dokumentacion i detajuar/i avancuar

Unë i kam bashkangjitur skedarët e mëposhtëm në mënyrë që ata të mund t'ju ndihmojnë të kuptoni të gjithë zgjidhjen, veçanërisht për zgjidhjen e problemeve dhe përmirësimin.

Arduino_NexaControl_IS.pdf siguron dokumentacion mbi zgjidhjen e Serverit të Brendshëm.

Arduino_NexaControl_ES.pdf siguron dokumentacion mbi zgjidhjen e serverit të jashtëm.

Referencat e jashtme

Nexa System (Suedisht)

Hapi 5: Përfundoi

Përfundoi!
Përfundoi!

Aty i keni të gjitha të përfunduara dhe në veprim!

Rasti Arduino Uno mund të gjendet në Thingiverse si "Arduino Uno Rev3 me kuti Ethernet Shield XL".

Recommended: