Satura rādītājs:

NexArdu: apgaismojuma viedā vadība: 5 soļi
NexArdu: apgaismojuma viedā vadība: 5 soļi

Video: NexArdu: apgaismojuma viedā vadība: 5 soļi

Video: NexArdu: apgaismojuma viedā vadība: 5 soļi
Video: BlitzWolf BW-IS22 - Сигнализация, wi-fi + GSM, Tuya Smart, интеграция и управление в Home Assistant 2024, Novembris
Anonim
NexArdu: apgaismojuma viedā vadība
NexArdu: apgaismojuma viedā vadība

Atjaunināt

Ja esat izstrādājis tādu pašu funkcionalitāti, izmantojot mājas palīgu. Mājas palīgs piedāvā milzīgu iespēju klāstu. Attīstību varat atrast šeit.

Skice, lai viedā veidā kontrolētu mājas apgaismojumu, izmantojot 433.92MHz (aka 433MHz) bezvadu X10 līdzīgas ierīces, piem. Nexa.

Fons

Runājot par dekoratīvo apgaismojumu, man kaut kā ir bijis nogurdinoši, ka katru otro vai trešo nedēļu man bija jāpielāgo taimeri, kas ieslēdz gaismas, jo saules stunda ir mainījusies attiecībā uz CET. Tajā pašā laikā dažas naktis mēs ejam gulēt agrāk nekā citas. Tāpēc dažreiz gaismas izslēdzas vai nu "par vēlu", vai "par agru". Iepriekš minētais mani izaicināja domāt: es vēlos, lai dekoratīvais apgaismojums vienmēr ieslēgtos tādā pašā apkārtējās gaismas līmenī un pēc tam izslēgtos noteiktā laikā atkarībā no tā, vai esam nomodā vai nē.

Mērķis

Šī pamācība izmanto bezvadu vadāmo ierīču, piemēram, System Nexa, iespējas, kas darbojas ar 433,92 MHz frekvenci. Šeit mums ir jāparāda:

  1. Automatizēta apgaismojuma vadība
  2. Tīmekļa vadība

Tīmekļa vadība. Iekšējais vs ārējais tīmekļa serveris

Iekšējais serveris izmanto Arduino Ethernet vairoga iespēju, lai nodrošinātu tīmekļa serveri. Tīmekļa serveris apmeklēs tīmekļa klientu zvanus, lai pārbaudītu un mijiedarbotos ar Arduino. Šis ir vienkāršs risinājums ar ierobežotu funkcionalitāti; tīmekļa servera koda uzlabošanas iespējas ierobežo Arduino atmiņa. Ārējam serverim ir jāizveido ārējs PHP tīmekļa serveris. Šī iestatīšana ir sarežģītāka, un šī apmācība to neatbalsta, tomēr PHP kods/lapa, lai pārbaudītu un vadītu Arduino, ir nodrošināta ar pamata funkcionalitāti. Tīmekļa servera uzlabošanas iespējas šajā gadījumā ierobežo ārējais tīmekļa serveris.

Materiālu rēķins

Lai pilnībā izmantotu šīs skices sniegtās iespējas, jums ir nepieciešams:

  1. Arduino Uno (pārbaudīts ar R3)
  2. Arduino Ethernet vairogs
  3. Nexa komplekts vai līdzīgs, kas darbojas ar 433,92 MHz
  4. PIR (pasīvais infrasarkanais) sensors, kas darbojas ar 433,92 MHz
  5. 10KOhm rezistors
  6. LDR
  7. RTC DS3231 (tikai ārējā servera versijai)
  8. 433,92 MHz raidītājs: XY-FST
  9. 433,92 MHz uztvērējs: MX-JS-05V

Minimālais ieteicamais ir:

  1. Arduino Uno (pārbaudīts ar R3)
  2. Nexa komplekts vai līdzīgs, kas darbojas ar 433,92 MHz
  3. 10KOhm rezistors
  4. LDR
  5. 433,92 MHz raidītājs: XY-FST

(Lai izlaistu Ethernet vairogu, ir jāmaina skice, kas nav iekļauta šajā instrukcijā)

Nexa loģika. Īss apraksts

Nexa uztvērējs uzzina tālvadības pults un pogas ID. Citiem vārdiem sakot, katram tālvadības pultij ir savs sūtītāja numurs, un katram ieslēgšanas/izslēgšanas pogu pārim ir savas pogas ID. Uztvērējam ir jāapgūst šie kodi. Dažos Nexa dokumentos norādīts, ka uztvērēju var savienot pārī ar sešām tālvadības pultīm. Nexa parametri:

  • Sūtītāja ID: tālvadības pults ID
  • ButtonID: pogu pāra numurs (ieslēgts/izslēgts). Tas sākas ar skaitli 0
  • Grupa: jā/nē (arī pogas "Visas izslēgtas/ieslēgtas")
  • Komanda: ieslēgta/izslēgta

Pamācāmi soļi. Piezīme

Šeit aprakstītie dažādie soļi ir piedāvāt divas dažādas garšas, kā sasniegt mērķi. Jūtieties brīvi izvēlēties sev ērtāko. Šeit ir indekss:

1. solis: ķēde

2. solis: Nexardu ar iekšējo tīmekļa serveri (ar NTP)

3. solis: Nexardu ar ārējo serveri

4. solis: Vērtīga informācija

1. darbība: ķēde…

Circuit…
Circuit…

Pievienojiet dažādus komponentus, kā parādīts attēlā.

Arduino pin#8 to Data pin on RX (uztvērējs) modulis Arduino pin#2 to Data pin on RX (uztvērējs) modulis Arduino pin#7 to Data pin on TX (sender) modulis Arduino pin A0 to LDR

RTC konfigurācija. Nepieciešams tikai ārējā servera konfigurācijā. Arduino tapa no A4 līdz SDA tapai RTC modulī Arduino tapa A5 līdz SCL tapa RTC modulī

2. darbība. Nexardu ar iekšējo tīmekļa serveri (ar NTP)

Bibliotēkas

Šis kods izmanto daudzas bibliotēkas. Lielāko daļu no tiem var atrast, izmantojot Arduino IDE "Bibliotēkas pārvaldnieku". Ja jums nevajadzētu atrast sarakstā iekļauto bibliotēku, lūdzu, google.

Wire.hSPI.h - pieprasa Ethernet vairogsNexaCtrl.h - Nexa ierīces kontrolieris Ethernet.h - Lai iespējotu un parādītu Ethernet vairoguRCSwitch.h - Nepieciešams PIRTime.h - Nepieciešams RTCTimeAlarms.h - Laika trauksmes pārvaldībaEthernetUdp.h - Nepieciešams NTP klients

Skice

Tālāk esošajā kodā tiek izmantota iespēja izmantot Arduino UNO plati ne tikai kā līdzekli Nexa ierīču vadīšanai, bet tajā ir arī iekšējais tīmekļa serveris. Jāpiebilst, ka RTC (reālā laika pulksteņa) modulis tiek automātiski noregulēts, izmantojot NTP (tīkla laika protokols).

Pirms koda augšupielādes Arduino jums, iespējams, būs jākonfigurē:

  • SenderId: vispirms ir jānosmidzina SenderId, skatīt zemāk
  • PIR_id: vispirms jums ir jānosmidzina SenderId, skatīt zemāk
  • LAN IP adrese: iestatiet sava LAN IP uz Ethernet Arduino vairogu. Noklusējuma vērtība: 192.168.1.99
  • NTP serveris: nav absolūti nepieciešams, taču varētu būt noderīgi meklēt Google tuvumā esošos NTP serverus. Noklusējuma vērtība: 79.136.86.176
  • Kods ir pielāgots CET laika joslai. Ja nepieciešams, pielāgojiet šo vērtību savai laika joslai, lai parādītu pareizo laiku (NTP)

Nexa kodu šņaukšana

Lai to izdarītu, jums vismaz jāpievieno RX komponents Arduino, kā parādīts shēmā.

Zemāk atrodiet Nexa_OK_3_RX.ino skici, kas tās rakstīšanas laikā ir saderīga ar Nexa ierīcēm NEYCT-705 un PET-910.

Sekojamie soļi ir šādi:

  1. Savienojiet pārī Nexa uztvērēju ar tālvadības pulti.
  2. Ielādējiet Nexa_OK_3_RX.ino uz Arduino un atveriet "Sērijas monitoru".
  3. Nospiediet tālvadības pults pogu, kas vada Nexa uztvērēju.
  4. Ņemiet vērā “RemoteID” un “ButtonID”.
  5. Iepriekšējās skices mainīgajā deklarācijā iestatiet šos skaitļus zem SenderID un ButtonID.

Lai nolasītu PIR identifikatoru, izmantojiet šo pašu skici (Nexa_OK_3_RX.ino) un izlasiet vērtību sērijas monitorā, kad PIR nosaka kustību.

3. darbība. Nexardu ar ārēju serveri

Bibliotēkas

Šis kods izmanto daudzas bibliotēkas. Lielāko daļu var atrast, izmantojot Arduino IDE "Bibliotēkas pārvaldnieku". Ja jūs neatrodat sarakstā iekļauto bibliotēku, lūdzu, google.

Wire.hRTClib.h - šī ir bibliotēka no vietnes https://github.com/MrAlvin/RTClibSPI.h - Nepieciešams Ethernet shieldNexaCtrl.h - Nexa ierīces kontrolierisEthernet.h - Lai iespējotu un parādītu Ethernet vairogu PIRTime.h - nepieciešams RTCTimeAlarms.h - Laika trauksmes pārvaldība REST.h - RESTful API pakalpojumiem, ko izmanto ārējais serverair/wdt.h - Watchdog taimera apstrāde

Skice

Tālāk redzamajā skicē ir viena un tā pati lieta, šoreiz dodot iespēju ārējā tīmekļa servera sniegtās iespējas. Kā jau minēts ievadā, ārējam serverim ir jāiestata ārējs PHP tīmekļa serveris. Šī iestatīšana ir sarežģītāka, un šī apmācība to neatbalsta, tomēr PHP kods/lapa, lai pārbaudītu un vadītu Arduino, ir nodrošināta ar pamata funkcionalitāti.

Pirms koda augšupielādes Arduino, jums, iespējams, būs jākonfigurē:

  • SenderId: vispirms ir jānosmidzina SenderId; skatiet Nexa kodu šņaukšana iepriekšējā solī
  • PIR_id: vispirms ir jānoskata SenderId, skatiet sadaļu Nexa kodu šņaukšana iepriekšējā solī
  • LAN IP adrese: iestatiet sava LAN IP uz Ethernet Arduino vairogu. Noklusējuma vērtība: 192.168.1.99

Par Nexa koda šņaukšanas procedūru, lūdzu, skatiet 1. darbību.

Papildu fails

Augšupielādējiet pievienoto failu nexardu4.txt ārējā PHP serverī un pārdēvējiet to par nexardu4.php

Iestatīts RTC laiks

Lai iestatītu laiku/datumu RTC, es izmantoju skici SetTime, kas apvienota ar bibliotēku DS1307RTC.

4. solis: Vērtīga informācija

Vērtīga informācija
Vērtīga informācija
Vērtīga informācija
Vērtīga informācija

Labi zināt uzvedību

  1. Kad Arduino ir ieslēgta gaismas automātiskā vadība, tas var iet caur četriem dažādiem stāvokļiem atkarībā no apkārtējā apgaismojuma un diennakts laika:

    1. Modri: Arduino gaida nakti.
    2. Aktīvs: nakts ir pienākusi, un Arduino ir ieslēdzis gaismas.
    3. Miegains: gaismas ir ieslēgtas, bet ir pienācis laiks tās izslēgt. Tas sākas no "time_to_turn_off - PIR_time", tas ir, ja time_to_turn_off ir iestatīts uz 22:30 un PIR_time ir iestatīts uz 20 minūtēm, tad Arduino nonāks miegainā stāvoklī 22:10.
    4. Miega režīms: nakts paiet, Arduino ir izslēdzis gaismas un Arduino gaida, kad rītausma kļūs nomodā.
  2. Arduino vienmēr klausās signālus, ko sūta tālvadības pults. Tas ietver iespēju parādīt gaismu stāvokli (ieslēgts/izslēgts) tīmeklī, kad tiek izmantota tālvadības pults.
  3. Kamēr Arduino ir nomodā, tas visu laiku mēģina izslēgt apgaismojumu, tāpēc Arduino var uztvert ieslēgšanas signālus, ko nosūta remonta vadība, lai ieslēgtu gaismas. Ja tas notiks, Arduino mēģinās atkal izslēgt gaismas.
  4. Kamēr Arduino ir aktīvs, tas visu laiku mēģina ieslēgt gaismas, tāpēc Arduino var uztvert izslēgšanas signālus, ko tālvadības pults sūta, lai izslēgtu gaismas. Ja tas notiks, Arduino mēģinās atkal ieslēgt gaismas.
  5. Miegainā stāvoklī gaismas var ieslēgt/izslēgt ar tālvadības pulti. Arduino nestrādās pretī.
  6. Mierīgā stāvoklī PIR atpakaļskaitīšanas laiks tiks atiestatīts no "time_to_turn_off - PIR_time", un tādējādi time_to_turn_off pagarinās par 20 minūtēm katru reizi, kad PIR nosaka kustību. Tika konstatēts "PIR signāls!" ziņojums tiks parādīts tīmekļa pārlūkprogrammā, kad tas notiks.
  7. Kamēr Arduino ir neaktīvs, gaismas var ieslēgt un izslēgt, izmantojot tālvadības pulti. Arduino nestrādās pretī.
  8. Arduino atiestatīšanas vai barošanas cikls to novedīs aktīvajā režīmā. Tas nozīmē, ka, ja Arduino ir atiestatīts pēc time_turn_off, Arduino ieslēgs gaismas. Lai no tā izvairītos, Arduino ir jāpārvieto manuālā režīmā (atzīmējiet izvēles rūtiņu "Gaismas automātiskā vadība") un pagaidiet līdz rītam, lai to atjaunotu "Gaismas automātiskā vadība".
  9. Kā jau minēts, Arduino gaida, kad rītausma atkal aktivizēsies. Šī iemesla dēļ sistēmu var apmānīt, novirzot pietiekami spēcīgu gaismu pret gaismas sensoru, kas pārsniegs "minimālā spožuma" slieksni. Ja tas notiks, Arduino ir jāpāriet aktīvā stāvoklī.
  10. Pielaides vērtībai ir liela nozīme, lai izvairītos no sistēmas ieslēgšanās un izslēgšanās ap sliekšņa vērtību Minimālais spilgtums. Led gaismas, ņemot vērā to mirgošanu un augsto reaģētspēju, var būt kratīšanas uzvedības avots. Palieliniet pielaides vērtību, ja rodas šī problēma. Es izmantoju vērtību 7.

Labi zināt par kodu

  1. Kā redzat, kods ir ļoti liels un izmanto ievērojamu daudzumu bibliotēku. Tas samazina kaudzei nepieciešamo brīvās atmiņas apjomu. Iepriekš esmu novērojis nestabilu uzvedību, kad sistēma tika apturēta, īpaši pēc tīmekļa zvaniem. Tāpēc lielākais izaicinājums man ir bijis ierobežot tā lielumu un dažādu mainīgo izmantošanu, lai padarītu sistēmu stabilu.
  2. Kods, kas izmanto iekšējo serveri, ko izmantoju mājās, tagad darbojas bez problēmām kopš 2016. gada februāra.
  3. Esmu ieguldījis ievērojamas pūles, lai bagātinātu kodu ar paskaidrojumiem. Izmantojiet šo iespēju, lai spēlētu ar dažādiem parametriem, piemēram, Nexa koda sūtījumu skaitu vienā sērijā, NTP sinhronizācijas laiku utt.
  4. Kodam nav vasaras laika. Tas ir jāpielāgo, izmantojot tīmekļa pārlūkprogrammu, kad tas tiek piemērots.

Daži punkti, kas jāņem vērā

  1. Pievienojiet antenas TX un RX radiofrekvences (RF) moduļiem. Tas ietaupīs jūsu laiku, sūdzoties par diviem galvenajiem punktiem: elastību un RF signāla diapazonu. Es izmantoju 50 omu vadu, kura garums ir 17,28 cm (6,80 collas).
  2. Šis neaizsargājamais var darboties, piemēram, arī ar citām mājas automatizācijas sistēmām, piemēram, Proove. Viens no daudzajiem nosacījumiem, kas jāizpilda, ir nodrošināt to darbību 433,92 MHz frekvencē.
  3. Lielas galvassāpes ar Arduino ir tikt galā ar bibliotēkām, kuras laika gaitā var tikt atjauninātas un pēkšņi vairs nebūs saderīgas ar jūsu “veco” skici; tā pati problēma var rasties, jauninot savu Arduino IDE. Sargieties, ka tas varētu būt mūsu gadījums -jā, arī mana problēma.
  4. Vairāki vienlaicīgi tīmekļa klienti ar dažādiem gaismas režīmiem rada mirgojošu stāvokli.

Ekrānuzņēmums

Iepriekš redzamajā attēlu karuselī atrodat tīmekļa lapas ekrānuzņēmumu, kas tiek parādīts, zvanot Arduino, izmantojot tīmekļa pārlūkprogrammu. Ņemot vērā koda noklusējuma IP konfigurāciju, URL būtu

Viens no aspektiem, ko varētu uzlabot, ir pogas "iesniegt" pozicionēšana, jo tā stājas spēkā visās ievades lodziņos, nevis tikai "gaismas automātiskajā vadībā", kā varētu domāt. Citiem vārdiem sakot, ja vēlaties mainīt kādu no iespējamām vērtībām, jums vienmēr ir jānospiež poga "iesniegt".

Detalizēta/uzlabota dokumentācija

Esmu pievienojis šādus failus, lai tie varētu palīdzēt jums izprast visu risinājumu, īpaši problēmu novēršanai un uzlabošanai.

Arduino_NexaControl_IS.pdf nodrošina dokumentāciju par iekšējā servera risinājumu.

Arduino_NexaControl_ES.pdf nodrošina dokumentāciju par ārējā servera risinājumu.

Ārējās atsauces

Nexa sistēma (zviedru)

5. solis: pabeigts

Pabeigts!
Pabeigts!

Tur jums viss ir pabeigts un darbojas!

Arduino Uno korpusu Thingiverse var atrast kā "Arduino Uno Rev3 ar Ethernet Shield XL-korpusu".

Ieteicams: