Sadržaj:

NexArdu: Pametna kontrola osvjetljenja: 5 koraka
NexArdu: Pametna kontrola osvjetljenja: 5 koraka

Video: NexArdu: Pametna kontrola osvjetljenja: 5 koraka

Video: NexArdu: Pametna kontrola osvjetljenja: 5 koraka
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Srpanj
Anonim
NexArdu: Pametna kontrola osvjetljenja
NexArdu: Pametna kontrola osvjetljenja

ažuriranje

Ako ste razvili istu funkcionalnost pomoću kućnog pomoćnika. Home Assistant nudi ogroman raspon mogućnosti. Ovdje možete pronaći razvoj.

Skica za pametno upravljanje kućnim osvjetljenjem putem 433,92 MHz (poznatih i kao 433 MHz) bežičnih uređaja sličnih X10, npr. Nexa.

Pozadina

Što se tiče ukrasnog osvjetljenja, nekako me zamaralo to što sam svaki drugi ili treći tjedan morao prilagođavati mjerače vremena koji pale svjetla zbog pomicanja solarnog sata u odnosu na CET. Istovremeno, neke noći idemo na spavanje ranije od drugih. Zbog toga se ponekad svjetla isključuju ili "prekasno" ili "prerano". Gore navedeno izazvalo me je razmišljanje: želim da se ukrasno osvjetljenje uključi uvijek na istoj razini ambijentalnog svjetla, a zatim isključi u određeno vrijeme, ovisno o tome jesmo li budni ili ne.

Cilj

Ova instrukcija koristi mogućnosti bežično upravljanih uređaja poput System Nexa koji rade na frekvenciji 433,92 MHz. Ovdje ćemo istaknuti:

  1. Automatizirana kontrola osvjetljenja
  2. Web kontrola

Web kontrola. Interni ili vanjski web poslužitelj

Unutarnji poslužitelj iskorištava mogućnost Arduino Ethernet štita za pružanje web poslužitelja. Web poslužitelj će prisustvovati pozivima web klijenata radi provjere i interakcije s Arduinom. Ovo je jednostavno rješenje s ograničenom funkcionalnošću; mogućnosti poboljšanja koda web poslužitelja ograničene su memorijom Arduina. Vanjski poslužitelj zahtijeva postavljanje vanjskog PHP web poslužitelja. Ovo postavljanje je složenije i ne podržava ga ovaj vodič, međutim, PHP kod/stranica za provjeru i upravljanje Arduinom ima osnovne funkcije. Mogućnosti poboljšanja web poslužitelja u ovom su slučaju ograničene vanjskim web poslužiteljem.

Predmet materijala

Da biste u potpunosti iskoristili mogućnosti koje ova skica daje, potrebno vam je:

  1. Arduino Uno (testirano na R3)
  2. Arduino Ethernet štit
  3. Nexa set ili slično koji radi na 433,92 MHz
  4. PIR (pasivni infracrveni) senzor koji radi na 433,92 MHz
  5. Otpornik od 10KOhms
  6. LDR
  7. RTC DS3231 (samo verzija vanjskog poslužitelja)
  8. Odašiljač od 433,92 MHz: XY-FST
  9. Prijemnik od 433,92 MHz: MX-JS-05V

Minimalni preporučeni iznos je:

  1. Arduino Uno (testirano na R3)
  2. Nexa set ili slično koji radi na 433,92 MHz
  3. Otpornik od 10KOhms
  4. LDR
  5. Odašiljač od 433,92 MHz: XY-FST

(Izostavljanje Ethernet štita zahtijeva izmjene skice koje nisu navedene u ovom uputstvu)

Nexa logika. Kratak opis

Nexa prijemnik uči ID daljinskog upravljača i ID gumba. Drugim riječima, svaki daljinski upravljač ima svoj broj pošiljatelja, a svaki par gumba za uključivanje/isključivanje ima svoj ID gumba. Primatelj mora naučiti te kodove. Neki Nexa dokumenti navode da se prijemnik može upariti s do šest daljinskih upravljača. Nexa parametri:

  • SenderID: ID daljinskog upravljača
  • ButtonID: broj parova gumba (uključeno/isključeno). Počinje brojem 0
  • Grupa: da/ne (zvani i gumbi "Sve isključeno/uključeno")
  • Naredba: uključeno/isključeno

Koraci koji se mogu uputiti. Bilješka

Različiti koraci koji su ovdje opisani nude dva različita okusa o tome kako postići cilj. Slobodno odaberite onu koja vam odgovara. Evo indeksa:

Korak #1: Krug

Korak #2: Nexardu s unutarnjim web poslužiteljem (s NTP -om)

Korak #3: Nexardu s vanjskim poslužiteljem

Korak #4: Vrijedne informacije

Korak 1: Krug…

Krug…
Krug…

Ožičite različite komponente kao što je prikazano na slici.

Arduino pin#8 na podatkovni pin na modulu RX (prijemnik) Arduino pin#2 na podatkovni pin na modulu RX (prijemnik) Arduino pin#7 na podatkovni pin na modulu TX (pošiljatelj) Arduino pin A0 u LDR

RTC konfiguracija. Potrebno samo na konfiguraciji vanjskog poslužitelja. Arduino pin A4 na SDA pin na RTC modulu Arduino pin A5 na SCL pin na RTC modulu

Korak 2: Nexardu s unutarnjim web poslužiteljem (s NTP -om)

Knjižnice

Ovaj kôd koristi mnoge knjižnice. Većina ih se može pronaći putem "Upravitelja knjižnice" Arduino IDE -a. Ako ne biste pronašli navedenu biblioteku, molimo google.

Wire.hSPI.h - Zahtijeva Ethernet shieldNexaCtrl.h - Upravljač Nexa uređaja Ethernet.h - Za omogućavanje i značajku Ethernet štitaRCSwitch.h - Potrebno za PIRTime.h - Potrebno za RTCTimeAlarms.h - Upravljanje vremenskim alarmomEthernetUdp.h - Potrebno za NTP klijent

Skica

Donji kôd iskorištava mogućnost korištenja Arduino UNO ploče ne samo kao sredstvo za upravljanje Nexa uređajima, već također sadrži i internetski poslužitelj. Treba napomenuti da se modul RTC (sat u stvarnom vremenu) automatski prilagođava putem NTP -a (mrežnog vremenskog protokola).

Prije nego što učitate kôd na Arduino, možda ćete morati konfigurirati sljedeće:

  • SenderId: prvo morate njušiti SenderId, pogledajte dolje
  • PIR_id: prvo morate njušiti SenderId, pogledajte dolje
  • LAN IP adresa: postavite IP svog LAN -a na svoj Ethernet Arduino štit. Zadana vrijednost: 192.168.1.99
  • NTP poslužitelj: Nije strogo potrebno, ali moglo bi biti dobro potražiti Google za NTP poslužitelje u vašoj blizini. Zadana vrijednost: 79.136.86.176
  • Kôd je prilagođen vremenskoj zoni CET. Prilagodite ovu vrijednost -ako je potrebno -vašoj vremenskoj zoni kako bi se prikazalo točno vrijeme (NTP)

Njuškanje Nexa kodova

Za to morate spojiti -barem, RX komponentu na Arduino kako je prikazano u krugu.

U nastavku pronađite skicu Nexa_OK_3_RX.ino koja je u vrijeme pisanja kompatibilna s Nexa uređajima NEYCT-705 i PET-910.

Koraci koje treba slijediti su:

  1. Uparite Nexa prijemnik s daljinskim upravljačem.
  2. Učitajte Nexa_OK_3_RX.ino na Arduino i otvorite "Serijski monitor".
  3. Pritisnite gumb za daljinsko upravljanje koji upravlja Nexa prijemnikom.
  4. Zabilježite "RemoteID" i "ButtonID".
  5. Postavite ove brojeve pod SenderID i ButtonID na deklaraciji varijable prethodne skice.

Da biste pročitali ID PIR -a, samo upotrijebite istu skicu (Nexa_OK_3_RX.ino) i pročitajte vrijednost na "Serijskom monitoru" kada PIR detektira kretanje.

Korak 3: Nexardu s vanjskim poslužiteljem

Knjižnice

Ovaj kôd koristi mnoge knjižnice. Većina se može pronaći putem "Upravitelja knjižnice" Arduino IDE -a. Ako ne pronađete navedenu biblioteku, molimo google.

Wire.hRTClib.h - ovo je knjižnica sa https://github.com/MrAlvin/RTClibSPI.h - zahtijeva Ethernet shieldNexaCtrl.h - kontroler Nexa uređajaEthernet.h - za omogućavanje i značajku Ethernet štitaRCSwitch.h - potrebno za PIRTime.h - Potrebno za RTCTimeAlarms.h - Upravljanje vremenskim alarmomREST.h - za RESTful API usluge koje koristi vanjski serverair/wdt.h - Rukovanje mjeračem vremena

Skica

Skica u nastavku prikazuje još jedan okus iste stvari, ovaj put osnažujući mogućnosti koje vanjski web poslužitelj može pružiti. Kao što je već spomenuto u uvodu, Vanjski poslužitelj zahtijeva postavljanje vanjskog PHP web poslužitelja. Ovo postavljanje je složenije i ne podržava ga ovaj vodič, međutim, PHP kod/stranica za provjeru i upravljanje Arduinom ima osnovne funkcije.

Prije nego što učitate kôd na Arduino, možda ćete morati konfigurirati sljedeće:

  • SenderId: prvo morate njuškati SenderId, pogledajte Njuškanje Nexa kodova u prethodnom koraku
  • PIR_id: prvo morate njušiti SenderId, pogledajte Njuškanje Nexa kodova u prethodnom koraku
  • LAN IP adresa: postavite IP svog LAN -a na svoj Ethernet Arduino štit. Zadana vrijednost: 192.168.1.99

Za postupak njuškanja Nexa koda, pogledajte korak 1.

Dopunska datoteka

Prenesite priloženu datoteku nexardu4.txt na svoj vanjski PHP poslužitelj i preimenujte je u nexardu4.php

RTC vrijeme postavljeno

Za postavljanje vremena/datuma na RTC -u koristim skicu SetTime koja dolazi zajedno s bibliotekom DS1307RTC.

Korak 4: Vrijedne informacije

Vrijedne informacije
Vrijedne informacije
Vrijedne informacije
Vrijedne informacije

Dobro je poznavati ponašanje

  1. Kad je Arduino pod "Light Automatic Control", može proći kroz četiri različita stanja u odnosu na ambijentalno osvjetljenje i doba dana:

    1. Budno: Arduino čeka da dođe noć.
    2. Aktivno: Došla je noć i Arduino je uključio svjetla.
    3. Somnolent: Svjetla su UKLJUČENA, ali dolazi vrijeme da ih isključite. Počinje u "time_to_turn_off - PIR_time", odnosno, ako je time_to_turn_off postavljeno na 22:30, a PIR_time na 20 minuta, tada će Arduino ući u pospano stanje u 22:10.
    4. Neaktivan: Noć prolazi, Arduino je isključio svjetla i Arduino čeka da zora postane budna.
  2. Arduino uvijek sluša signale koje šalju daljinski upravljači. Ovo sadrži mogućnost prikaza stanja svjetla (uključeno/isključeno) na webu kada se koristi daljinski upravljač.
  3. Dok je Arduino u budnom stanju, on pokušava cijelo vrijeme gasiti svjetla, pa bi Arduino mogao uhvatiti UKLJUČENE signale koje šalje remonte kontrola za uključivanje svjetla. Ako se to dogodi, Arduino će ponovno pokušati ugasiti svjetla.
  4. Dok je Arduino aktivan, on pokušava stalno paliti svjetla, pa Arduino može uhvatiti isključene signale koje šalje daljinski upravljač za gašenje svjetla. Ako se to dogodi, Arduino će ponovno pokušati upaliti svjetla.
  5. U uspavanom stanju svjetla se mogu uključiti/isključiti daljinskim upravljačem. Arduino se neće suprotstaviti.
  6. U uspavanom stanju odbrojavanje PIR -a počet će se vraćati s "time_to_turn_off - PIR_time", pa će se time_to_turn_off produžiti za 20 minuta svaki put kada PIR detektira kretanje. "Otkriven PIR signal!" poruka će se prikazati u web pregledniku kada se to dogodi.
  7. Dok je Arduino u stanju mirovanja, svjetla se mogu paliti i gasiti putem daljinskog upravljača. Arduino se neće suprotstaviti.
  8. Ponovno postavljanje ili ciklus napajanja Arduina dovest će ga u aktivni način rada. To znači da ako je Arduino resetiran nakon time_turn_off onda će Arduino uključiti svjetla. Da biste to izbjegli, Arduino morate prebaciti u ručni način rada (označite "Light Automatic Control") i pričekajte do jutra da biste ga vratili na "Light Automatic Control".
  9. Kao što je već spomenuto, Arduino čeka da zora ponovno postane aktivna. Zbog toga se sustav može zavarati usmjeravanjem dovoljno jakog svjetla prema svjetlosnom senzoru koji će premašiti prag "minimalne svjetline". Ako se to dogodi, Arduino će prijeći u aktivno stanje.
  10. Vrijednost tolerancije je od velike važnosti kako bi se izbjeglo uključivanje i isključivanje sustava oko granične vrijednosti Minimalna svjetlina. Led svjetla, zbog treperenja i velike odzivnosti, mogu biti izvor ponašanja. Povećajte vrijednost tolerancije ako naiđete na ovaj problem. Koristim vrijednost 7.

Dobro je znati o kodu

  1. Kao što možete primijetiti, kôd je vrlo velik i koristi znatnu količinu knjižnica. To kompromitira količinu slobodne memorije potrebne za hrpu. U prošlosti sam primijetio nestabilno ponašanje koje je dovelo do zaustavljanja sustava, posebno nakon web poziva. Stoga je najveći izazov koji sam imao bio ograničiti njegovu veličinu i korištenje različitih varijabli kako bi sustav postao stabilan.
  2. Kôd koji iskorištava unutarnji poslužitelj -koji sam koristio kod kuće, sada radi bez problema od veljače 2016. godine.
  3. Uložio sam znatne napore u obogaćivanje koda objašnjenjima. Iskoristite ovo za igru s različitim parametrima, poput broja slanja Nexa koda po nizu, vremena sinkronizacije NTP -a itd.
  4. Kôd ne prikazuje ljetno računanje vremena. To je potrebno prilagoditi putem web preglednika kada se primjenjuje.

Neke točke koje treba uzeti u obzir

  1. Dodajte antene u module TX i RX radiofrekvencije (RF). Uštedjet će vam vrijeme pri žalbama na dvije glavne točke: otpornost i raspon RF signala. Koristim žicu od 50 Ohma duljine 17,28 cm (6,80 inča).
  2. Ovaj nenametljivi može raditi s drugim sustavima kućne automatizacije, poput Proove, na primjer. Jedan od mnogih uvjeta koje treba ispuniti je da rade na frekvenciji od 433,92 MHz.
  3. Velika glavobolja s Arduinom je baviti se knjižnicama koje se s vremenom mogu ažurirati i odjednom više neće biti kompatibilne s vašom "starom" skicom; isti problem može nastati prilikom nadogradnje vašeg Arduino IDE -a. Pazite da bi ovo mogao biti naš slučaj ovdje -da, i moj problem.
  4. Više istodobnih web klijenata s različitim načinima osvjetljenja stvara stanje "treptanja".

Snimka zaslona

U vrtuljku sa slikama gore, pronaći ćete snimak zaslona web stranice prikazane kada pozovete Arduino putem vašeg web preglednika. S obzirom na zadanu IP konfiguraciju koda, URL bi bio

Jedan aspekt koji bi mogao biti predmet poboljšanja je pozicioniranje gumba "pošalji" jer stupa na snagu na svim okvirima za unos, a ne samo na "lagano automatsko upravljanje" kako bi se moglo pomisliti. Drugim riječima, ako želite promijeniti bilo koju od mogućih vrijednosti, uvijek morate pritisnuti gumb "pošalji".

Detaljna/napredna dokumentacija

Priložio sam sljedeće datoteke kako bi vam mogle pomoći da razumijete cijelo rješenje, posebno za rješavanje problema i poboljšanje.

Arduino_NexaControl_IS.pdf pruža dokumentaciju o rješenju internog poslužitelja.

Arduino_NexaControl_ES.pdf pruža dokumentaciju o rješenju za vanjski poslužitelj.

Vanjske reference

Sustav Nexa (švedski)

Korak 5: Završeno

Završeno!
Završeno!

Eto, sve je gotovo i na djelu!

Arduino Uno kućište se može pronaći u Thingiverseu kao "Arduino Uno Rev3 s XL-kućištem za Ethernet Shield".

Preporučeni: