Sadržaj:

NexArdu: Osvjetljenje Pametna kontrola: 5 koraka
NexArdu: Osvjetljenje Pametna kontrola: 5 koraka

Video: NexArdu: Osvjetljenje Pametna kontrola: 5 koraka

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

Update

Ako ste razvili istu funkcionalnost pomoću kućnog pomoćnika. Home Assistant nudi ogroman raspon mogućnosti. Ovde 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 svake druge ili treće sedmice morao prilagođavati tajmere 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čuje uvijek na istom nivou ambijentalnog svjetla, a zatim se isključuje u određeno vrijeme, ovisno o tome jesmo li budni ili ne.

Objective

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

  1. Automatizovana kontrola osvetljenja
  2. Web kontrola

Web kontrola. Interni ili vanjski web server

Interni poslužitelj iskorištava mogućnost Arduino Ethernet štita za pružanje web servera. 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 servera ograničene su memorijom Arduina. Vanjski poslužitelj zahtijeva postavljanje vanjskog PHP web servera. 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 servera su u ovom slučaju ograničene vanjskim web serverom.

Obračun 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 servera)
  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 dugmeta. Drugim riječima, svaki daljinski upravljač ima svoj broj pošiljatelja, a svaki par tipki za uključivanje/isključivanje ima svoj ID dugmeta. Prijemnik mora naučiti te kodove. Neki Nexa dokumenti navode da se prijemnik može upariti sa do šest daljinskih upravljača. Nexa parametri:

  • SenderID: ID daljinskog upravljača
  • ButtonID: broj parova dugmadi (uključeno/isključeno). Počinje brojem 0
  • Grupa: da/ne (poznato i kao tipke "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 ukusa o tome kako postići cilj. Slobodno odaberite onu koja vam odgovara. Evo indeksa:

Korak #1: Krug

Korak 2: Nexardu sa internim web serverom (sa NTP -om)

Korak #3: Nexardu sa vanjskim serverom

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 Data pin na RX (prijemniku) modulu Arduino pin#2 na Data pin na RX (prijemniku) modulu Arduino pin#7 na Data pin na TX (pošiljalac) modulu Arduino pin A0 na LDR

RTC konfiguracija. Potrebno samo na konfiguraciji vanjskog servera. Arduino pin A4 na SDA pin na RTC modulu Arduino pin A5 na SCL pin na RTC modulu

Korak 2: Nexardu sa unutrašnjim web serverom (sa NTP -om)

Biblioteke

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

Wire.hSPI.h - Zahtijeva Ethernet shieldNexaCtrl.h - Kontroler 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ć sadrži i interni web poslužitelj. Treba napomenuti da se modul RTC (sat u realnom 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 namirisati SenderId, pogledajte dolje
  • PIR_id: prvo morate namirisati SenderId, pogledajte dolje
  • LAN IP adresa: postavite IP vašeg 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 za vremensku zonu CET. Prilagodite ovu vrijednost -ako je potrebno -vašoj vremenskoj zoni kako bi se prikazalo tač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 dugme za daljinsko upravljanje koje upravlja Nexa prijemnikom.
  4. Obratite pažnju na "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 ovu istu skicu (Nexa_OK_3_RX.ino) i pročitajte vrijednost na "Serijskom monitoru" kada PIR detektira kretanje.

Korak 3: Nexardu s vanjskim serverom

Biblioteke

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

Wire.hRTClib.h - ovo je biblioteka sa https://github.com/MrAlvin/RTClibSPI.h - Zahtijeva Ethernet shieldNexaCtrl.h - Kontroler Nexa uređajaEthernet.h - Omogućiti i opremiti Ethernet štitRCSwitch.h - Potrebno je 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 nadgledanja

Skica

Skica ispod 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 servera. 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 namirisati SenderId, pogledajte Njuškanje Nexa kodova u prethodnom koraku
  • PIR_id: prvo morate njuškati SenderId, pogledajte Njuškanje Nexa kodova u prethodnom koraku
  • LAN IP adresa: postavite IP vašeg LAN -a na svoj Ethernet Arduino štit. Zadana vrijednost: 192.168.1.99

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

Komplementarna datoteka

Otpremite priloženu datoteku nexardu4.txt na svoj vanjski PHP server i preimenujte je u nexardu4.php

RTC vrijeme je 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

Ponašanje je dobro znati

  1. Kada 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 prikazivanja stanja svjetla (uključeno/isključeno) na webu kada se koristi daljinski upravljač.
  3. Dok je Arduino u budnom stanju, pokušava stalno gasiti svjetla, pa Arduino može uhvatiti UKLJUČENE signale koje šalje remonte kontrola za uključivanje svjetla. Ako se to dogodi, Arduino će pokušati ponovo ugasiti svjetla.
  4. Dok je Arduino aktivan, pokušava stalno upaliti svjetla, pa Arduino može uhvatiti isključene signale koje šalje daljinski upravljač za gašenje svjetla. Ako se to dogodi, Arduino će pokušati ponovo upaliti svjetla.
  5. U uspavanom stanju svjetla se mogu uključiti/isključiti daljinskim upravljačem. Arduino neće reagirati.
  6. U pospanom stanju odbrojavanje PIR -a počet će se resetirati s "time_to_turn_off - PIR_time", pa će se time_to_turn_off produžiti za 20 minuta svaki put kada PIR otkrije pokret. "Otkriven PIR signal!" poruka će se prikazati u web pregledniku kada se to dogodi.
  7. Dok je Arduino u stanju mirovanja, svjetla se mogu uključivati i isključivati putem daljinskog upravljača. Arduino neće reagirati.
  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 ponovo postane aktivna. Zbog toga se sistem može zavarati usmjeravanjem dovoljno jakog svjetla prema svjetlosnom senzoru koji će premašiti prag "minimalne svjetline". Ako se to dogodi, Arduino će se promijeniti u aktivno stanje.
  10. Vrijednost tolerancije je od velike važnosti kako bi se izbjeglo uključivanje i isključivanje sistema oko granične vrijednosti Minimalna svjetlina. Led svjetla, zbog treperenja i velike odzivnosti, mogu biti izvor ponašanja. Povećajte toleranciju 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 biblioteka. Ovo kompromituje količinu slobodne memorije potrebne za hrpu. Primetio sam nestabilno ponašanje u prošlosti kada je sistem bio zaustavljen, posebno nakon veb poziva. Stoga je najveći izazov koji sam imao bio ograničiti njegovu veličinu i korištenje različitih varijabli kako bi sistem bio stabilan.
  2. Kôd koji iskorištava interni server -koji sam koristio kod kuće, sada radi bez problema od februara 2016. godine.
  3. Uložio sam znatne napore u obogaćivanje koda objašnjenjima. Iskoristite ovo za igru s različitim parametrima kao što su broj slanja Nexa koda po nizu, vrijeme NTP sinhronizacije itd.
  4. Kôd ne prikazuje ljetno računanje vremena. Ovo se mora prilagoditi putem web preglednika kada se primjenjuje.

Neke tačke koje treba uzeti u obzir

  1. Dodajte antene u module TX i RX radio frekvencije (RF). Uštedeće vam vreme pri žalbama na dve glavne tačke: otpornost i domet RF signala. Koristim žicu od 50 Ohma dužine 17,28 cm (6,80 inča).
  2. Ovaj uljez može raditi s drugim sistemima kućne automatizacije, poput Proove, na primjer. Jedan od mnogih uslova koje treba ispuniti je da rade na frekvenciji 433,92 MHz.
  3. Velika glavobolja kod Arduina je baviti se bibliotekama koje se 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 istovremenih web klijenata s različitim načinima osvjetljenja stvara stanje "trepćućeg".

Snimak ekrana

Na vrtuljku sa slikama gore, pronaći ćete snimak ekrana 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 dugmeta "pošalji" budući da ono stupa na snagu na svim okvirima za unos, a ne samo na "lagano automatsko upravljanje" kako se moglo pomisliti. Drugim riječima, ako želite promijeniti bilo koju od mogućih vrijednosti, uvijek morate pritisnuti dugme "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 servera.

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

Spoljašnje reference

Nexa sistem (švedski)

Korak 5: Završeno

Gotovo!
Gotovo!

Eto, sve je gotovo i na delu!

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

Preporučuje se: