Tartalomjegyzék:

NexArdu: Világítás intelligens vezérlés: 5 lépés
NexArdu: Világítás intelligens vezérlés: 5 lépés

Videó: NexArdu: Világítás intelligens vezérlés: 5 lépés

Videó: NexArdu: Világítás intelligens vezérlés: 5 lépés
Videó: Séance ordinaire - 5 juillet 2021 2024, November
Anonim
NexArdu: Megvilágítás intelligens vezérlés
NexArdu: Megvilágítás intelligens vezérlés

Frissítés

Ha ugyanazt a funkciót fejlesztette ki a Home Assistant segítségével. A Home Assistant hatalmas lehetőségeket kínál. A fejlesztést itt találja.

Vázlat az otthoni megvilágítás intelligens vezérléséhez 433,92 MHz (más néven 433 MHz) vezeték nélküli X10-szerű eszközökön keresztül, pl. Nexa.

Háttér

Ami a dekoratív megvilágítást illeti, valahogy fárasztó volt számomra, hogy minden második vagy harmadik héten újra kellett állítanom az időzítőket, amelyek bekapcsolják a lámpákat, mivel a napóra a CET -hez képest eltolódott. Ugyanakkor néhány este hamarabb megyünk aludni, mint máskor. Emiatt a lámpák néha "túl későn" vagy "túl korán" kapcsolnak ki. A fentiek elgondolkodtattak: azt akarom, hogy a dekoratív megvilágítás mindig ugyanolyan szintű környezeti fényben kapcsoljon be, majd bizonyos időben kikapcsoljon attól függően, hogy ébren vagyunk -e vagy sem.

Célkitűzés

Ez az oktatható kihasználja a 433,92 MHz -es frekvencián működő vezeték nélküli eszközök, például a System Nexa lehetőségeit. Itt szeretnénk bemutatni:

  1. Automatizált világításvezérlés
  2. Webes vezérlés

Webes vezérlés. Belső és külső webszerver

A belső szerver kihasználja az Arduino Ethernet pajzs lehetőségét, hogy webszervert biztosítson. A webszerver részt vesz a webes ügyfélhívásokon, hogy ellenőrizze és lépjen kapcsolatba az Arduino -val. Ez egy egyszerű megoldás korlátozott funkcionalitással; a webszerver kódjavításának lehetőségeit korlátozza az Arduino memóriája. A külső szerverhez külső PHP webszervert kell beállítani. Ez a beállítás bonyolultabb, és ezt az oktatóanyag nem támogatja, azonban az Arduino ellenőrzésére és irányítására szolgáló PHP kód/oldal alapvető funkciókkal rendelkezik. A webszerver fejlesztésének lehetőségeit ebben az esetben a külső webszerver korlátozza.

Darabjegyzékben

Ahhoz, hogy teljes mértékben kihasználhassa a vázlat adta lehetőségeket, szüksége van:

  1. Egy Arduino Uno (R3 -on tesztelve)
  2. Arduino Ethernet pajzs
  3. 433,92 MHz -en működő Nexa készlet vagy hasonló
  4. PIR (passzív infravörös) érzékelő, amely 433,92 MHz -en működik
  5. 10Kohmos ellenállás
  6. Egy LDR
  7. RTC DS3231 (csak külső szerver verzió)
  8. 433,92 MHz-es adó: XY-FST
  9. 433,92 MHz-es vevő: MX-JS-05V

A minimálisan ajánlott:

  1. Egy Arduino Uno (R3 -on tesztelve)
  2. 433,92 MHz -en működő Nexa készlet vagy hasonló
  3. 10Kohmos ellenállás
  4. Egy LDR
  5. 433,92 MHz-es adó: XY-FST

(Az Ethernet -pajzs kihagyása a vázlat módosítását igényli, amely nem szerepel az utasításban)

A Nexa logika. Rövid leírás

A Nexa vevő megtanulja a távirányító és a gomb azonosítóját. Más szóval, minden távirányítónak megvan a feladó száma, és minden ki/be kapcsológombnak megvan a gomb azonosítója. A vevőnek meg kell tanulnia ezeket a kódokat. Egyes Nexa dokumentumok azt írják, hogy a vevőkészülék legfeljebb hat távirányítóval párosítható. A Nexa paraméterei:

  • SenderID: A távirányító azonosítója
  • ButtonID: gombpár szám (be/ki). 0 -val kezdődik
  • Csoport: igen/nem (más néven "Minden ki/be" gomb)
  • Parancs: be/ki

Utasítható lépések. jegyzet

Az itt leírt különböző lépések két különböző ízt kínálnak a cél eléréséhez. Nyugodtan válassza ki az Önnek megfelelőt. Itt az index:

1. lépés: Az áramkör

2. lépés: Nexardu belső webszerverrel (NTP -vel)

3. lépés: Nexardu külső szerverrel

4. lépés: Értékes információ

Lépés: Az áramkör…

Az áramkör…
Az áramkör…

Csatlakoztassa a különféle alkatrészeket a képen látható módon.

Arduino pin#8 to Data pin on RX (vevő) modul Arduino pin#2 to Data pin on RX (vevő) modul Arduino pin#7 to Data pin on TX (sender) modul Arduino pin A0 to LDR

RTC konfiguráció. Csak külső kiszolgálókonfiguráció esetén szükséges. Arduino pin A4 - SDA pin az RTC modulon Arduino pin A5 - SCL pin az RTC modulon

2. lépés: Nexardu belső webszerverrel (NTP -vel)

A Könyvtárak

Ez a kód sok könyvtárat használ. Legtöbbjük megtalálható az Arduino IDE "Könyvtárkezelőjén" keresztül. Ha nem talál egy felsorolt könyvtárat, kérjük, google -oljon.

Wire.hSPI.h - Ethernet pajzs megköveteliNexaCtrl.h - Nexa eszközvezérlő Ethernet.h - Az Ethernet pajzs engedélyezése és megjelenítése NTP kliens

A vázlat

Az alábbi kód kihasználja az Arduino UNO kártya használatának lehetőségét nemcsak a Nexa eszközök vezérlésére, hanem belső webszervert is tartalmaz. Egy megjegyzés, hogy az RTC (Real Time Clock) modul automatikusan beállítódik az NTP (Network Time Protocol) segítségével.

Mielőtt feltöltené a kódot az Arduino -ba, előfordulhat, hogy konfigurálnia kell a következőket:

  • SenderId: először be kell szippantania a SenderId -t, lásd alább
  • PIR_id: először be kell szagolnia a SenderId -t, lásd alább
  • LAN IP -cím: állítsa be a LAN IP -címét az Ethernet Arduino pajzsra. Alapértelmezett érték: 192.168.1.99
  • NTP -kiszolgáló: Nem feltétlenül szükséges, de jó lehet a Google -on keresni a közelben lévő NTP -kiszolgálókat. Alapértelmezett érték: 79.136.86.176
  • A kód a CET időzónához van igazítva. Állítsa be ezt az értéket -ha szükséges, az időzónájához a helyes idő (NTP) megjelenítéséhez

A Nexa kódok szippantása

Ehhez legalább az RX komponenst az Arduino -hoz kell csatlakoztatni, amint az az áramkörön látható.

Az alábbiakban megtalálja a Nexa_OK_3_RX.ino vázlatot, amely írásakor kompatibilis a Nexa NEYCT-705 és PET-910 készülékekkel.

A követendő lépések a következők:

  1. Párosítsa a Nexa vevőt a távirányítóval.
  2. Töltse fel a Nexa_OK_3_RX.ino -t az Arduino -ra, és nyissa meg a "Soros monitort".
  3. Nyomja meg a Nexa vevőt vezérlő távirányító gombot.
  4. Vegye figyelembe a "RemoteID" és a "ButtonID" beállításokat.
  5. Állítsa be ezeket a számokat a SenderID és ButtonID alatt az előző vázlat változó deklarációjában.

A PIR azonosítójának olvasásához használja ugyanazt a vázlatot (Nexa_OK_3_RX.ino), és olvassa el az értéket a "Soros monitoron", amikor a PIR mozgást észlel.

3. lépés: Nexardu külső szerverrel

A Könyvtárak

Ez a kód sok könyvtárat használ. A legtöbb megtalálható az Arduino IDE "Könyvtárkezelőjén" keresztül. Ha nem talál egy felsorolt könyvtárat, kérjük, google -oljon.

Wire.hRTClib.h - ez a https://github.com/MrAlvin/RTClibSPI.h könyvtár - Ezt az Ethernet -pajzs írja előNexaCtrl.h - Nexa -eszközvezérlő PIRTime.h - Az RTCTimeAlarms.h számára szükséges - Időriasztás kezelése REST.h - a RESTful API szolgáltatásokhoz, amelyeket külső serverair/wdt.h használ - Watchdog időzítő kezelése

A vázlat

Az alábbi vázlat ugyanazon dolog egy másik ízét mutatja be, ezúttal a külső webszerver adta lehetőségeket. Amint a bevezetőben már említettük, a Külső szerver külső PHP webszerver beállítását igényli. Ez a beállítás bonyolultabb, és ezt az oktatóanyag nem támogatja, azonban az Arduino ellenőrzésére és irányítására szolgáló PHP kód/oldal alapvető funkciókkal rendelkezik.

Mielőtt feltöltené a kódot az Arduino -ba, előfordulhat, hogy konfigurálnia kell a következőket:

  • SenderId: először be kell szippantania a SenderId -t, lásd: Nexa kódok szippantása az előző lépésben
  • PIR_id: először be kell szagolnia a SenderId -t, lásd: Nexa kódok szippantása az előző lépésben
  • LAN IP -cím: állítsa be a LAN IP -címét az Ethernet Arduino pajzsra. Alapértelmezett érték: 192.168.1.99

A Nexa kódszippantási eljárást lásd az 1. lépésben.

Kiegészítő fájl

Töltse fel a mellékelt nexardu4.txt fájlt a külső PHP szerverre, és nevezze át a nexardu4.php fájlra

RTC idő beállítása

Az idő/dátum beállításához az RTC -n a SetTime vázlatot használom, amely a DS1307RTC könyvtárat tartalmazza.

4. lépés: Értékes információ

Értékes információ
Értékes információ
Értékes információ
Értékes információ

Jó tudni a viselkedést

  1. Ha az Arduino "Light Automatic Control" alatt van, négy különböző állapoton lehet keresztülmenni a környezeti megvilágítás és a napszak függvényében:

    1. Ébren: Arduino várja az éjszakát.
    2. Aktív: Eljött az éjszaka, és Arduino bekapcsolta a lámpákat.
    3. Somnolent: A lámpák világítanak, de eljött az idő, hogy lekapcsolják őket. A "time_to_turn_off - PIR_time" időponttól indul, vagyis ha a time_to_turn_off 22:30 -ra van állítva, és a PIR_time 20 percre van állítva, akkor az Arduino 22:10 -kor álmos állapotba kerül.
    4. Szunnyadó: Az éjszaka elmúlik, Arduino kikapcsolta a villanyt, és Arduino várja, hogy a hajnal ébren legyen.
  2. Az Arduino mindig hallgatja a távirányítók által küldött jeleket. Ez lehetővé teszi a világítás (be/ki) állapotának megjelenítését a weben, amikor távirányítót használ.
  3. Amíg az Arduino ébren van, folyamatosan megpróbálja lekapcsolni a lámpákat, ezért az Arduino rögzítheti a javításvezérlő által a világítás bekapcsolására küldött BE jeleket. Ha ez megtörténik, az Arduino újra megpróbálja lekapcsolni a villanyt.
  4. Amíg az Arduino aktív, folyamatosan megpróbálja bekapcsolni a lámpákat, ezért az Arduino rögzítheti a távirányító által a világítás kikapcsolására küldött KI jeleket. Ha ez megtörténik, az Arduino megpróbálja újra felkapcsolni a lámpákat.
  5. Alvó állapotban a lámpák távirányítóval kapcsolhatók be/ki. Az Arduino nem fog ellensúlyozni.
  6. Alvó állapotban a PIR visszaszámláló visszaáll a "time_to_turn_off - PIR_time" értékről, és így a time_to_turn_off 20 perccel meghosszabbodik minden alkalommal, amikor a PIR mozgást észlel. "PIR jel észlelve!" üzenet jelenik meg a webböngészőben, amikor ez megtörténik.
  7. Amíg az Arduino alvó állapotban van, a fények a távirányítón keresztül be- és kikapcsolhatók. Az Arduino nem fog ellensúlyozni.
  8. Az Arduino visszaállítása vagy bekapcsolási ciklusa aktív módba hozza. Ez azt jelenti, hogy ha az Arduino -t a time_turn_off után visszaállították, akkor az Arduino bekapcsolja a lámpákat. Ennek elkerülése érdekében az Arduino -t kézi üzemmódba kell kapcsolni (jelölje be a "Light Automatic Control" jelölőnégyzetet), és várja meg reggelig, hogy visszaállítsa a "Light Automatic Control" állapotba.
  9. Mint már említettük, Arduino várja, hogy a hajnal újra aktivizálódjon. Emiatt a rendszer becsapható, ha elég erős fényt irányít a fényérzékelő felé, amely meghaladja a "minimális fényerő" küszöbét. Ha ez megtörténik, akkor az Arduino aktív állapotba vált.
  10. A Tolerancia értéke rendkívül fontos annak elkerülése érdekében, hogy a rendszer a Minimum Fényesség küszöbérték körül be- és kikapcsoljon. A LED -es lámpák villódzásuk és nagy reagálóképességük miatt csapkodó viselkedés forrásai lehetnek. Növelje a tűrésértéket, ha ezt a problémát tapasztalja. Én a 7 -es értéket használom.

Jó tudni a kódról

  1. Mint látható, a kód nagyon nagy, és jelentős mennyiségű könyvtárat használ. Ez veszélyezteti a halomhoz szükséges szabad memória mennyiségét. A múltban instabil viselkedést észleltem, amikor a rendszer leállt, különösen a webes hívások után. Ezért a legnagyobb kihívás az volt, hogy korlátozzam a méretét és a különböző változók használatát a rendszer stabilitása érdekében.
  2. A kód, amely kihasználja a belső szervert, amelyet otthon használtam, 2016 februárja óta problémamentesen fut.
  3. Jelentős erőfeszítéseket tettem annak érdekében, hogy magyarázatokkal gazdagítsam a kódexet. Használja ki ezt a lehetőséget, ha különféle paraméterekkel szeretne játszani, mint például a Nexa -kódos küldések száma sorozatonként, NTP -szinkronizálási idő stb.
  4. A kód nem rendelkezik nyári időszámítással. Ezt a webböngészőn keresztül kell módosítani, amikor alkalmazható.

Néhány szempontot figyelembe kell venni

  1. Adja hozzá az antennákat a TX és RX rádiófrekvenciás (RF) modulokhoz. Időt takaríthat meg, ha két fő ponton panaszkodik: a rugalmasság és az RF jel hatótávolsága. Egy 50 Ohmos huzalt használok, 17,28 cm (6,80 hüvelyk) hosszú.
  2. Ez a beépíthetetlen más otthoni automatizálási rendszerekkel is működhet, például a Proove -val. A sok feltétel közül az egyiknek teljesülnie kell, ha 433,92 MHz -en működnek.
  3. Az Arduino nagy fejtörést okoz, ha olyan könyvtárakkal foglalkozik, amelyek idővel frissülhetnek, és hirtelen nem lesznek kompatibilisek a "régi" vázlattal; ugyanez a probléma merülhet fel az Arduino IDE frissítésekor. Vigyázzon, hogy ez itt is a mi esetünk lehet -igen, az én problémám is.
  4. Több egyidejű webes kliens különböző fénymódokkal "villogó" állapotot hoz létre.

Képernyőkép

A fenti képválasztóban talál egy képernyőképet arról a weboldalról, amely akkor jelenik meg, amikor az Arduino -t hívja böngészőjén keresztül. Tekintettel a kód alapértelmezett IP -konfigurációjára, az URL a

Az egyik szempont, amely javításra szorulhat, az a „Küldés” gomb elhelyezése, mivel az minden beviteli mezőre érvényes, és nem csak a „Könnyű automatikus vezérlésre”, mint gondolnánk. Más szóval, ha módosítani szeretne a lehetséges értékek bármelyikén, akkor mindig nyomja meg a "küldés" gombot.

Részletes/speciális dokumentáció

Az alábbi fájlokat csatoltam, hogy segítsenek megérteni a teljes megoldást, különösen a hibaelhárítás és javítás érdekében.

Az Arduino_NexaControl_IS.pdf dokumentációt tartalmaz a belső szerver megoldásról.

Az Arduino_NexaControl_ES.pdf dokumentációt tartalmaz a külső szerver megoldásról.

Külső hivatkozások

Nexa rendszer (svéd)

5. lépés: Kész

Befejezett!
Befejezett!

Itt minden kész és működésbe lép!

Az Arduino Uno tok megtalálható a Thingiverse-ben "Arduino Uno Rev3 with Ethernet Shield XL-case" néven.

Ajánlott: