Sisällysluettelo:

NexArdu: Valaistuksen älykäs ohjaus: 5 vaihetta
NexArdu: Valaistuksen älykäs ohjaus: 5 vaihetta

Video: NexArdu: Valaistuksen älykäs ohjaus: 5 vaihetta

Video: NexArdu: Valaistuksen älykäs ohjaus: 5 vaihetta
Video: Séance ordinaire - 5 juillet 2021 2024, Marraskuu
Anonim
NexArdu: Valaistuksen älykäs ohjaus
NexArdu: Valaistuksen älykäs ohjaus

Päivittää

Jos olet kehittänyt samat toiminnot Home Assistantilla. Home Assistant tarjoaa laajan valikoiman mahdollisuuksia. Kehityksen löydät täältä.

Luonnos kodin valaistuksen ohjaamiseen älykkäästi 433,92 MHz (eli 433 MHz) langattomien X10-kaltaisten laitteiden, esim. Nexa.

Tausta

Koristevalaistuksen osalta on ollut minulle jotenkin väsyttävää, että joka toinen tai kolmas viikko jouduin säätämään uudelleen ajastimet, jotka kytkevät valot päälle, koska aurinkotunti muuttuu Keski -Euroopan aikaa. joinain öinä menemme nukkumaan aikaisemmin kuin toiset. Tästä syystä joskus valot sammuvat joko "liian myöhään" tai "liian aikaisin". Yllä oleva haastoi minut ajattelemaan: Haluan, että koristevalaistus syttyy aina samalla ympäristön valotasolla ja sammuu sitten tiettyyn aikaan riippuen siitä, olimmeko hereillä vai emme.

Tavoite

Tässä ohjeessa hyödynnetään langattomasti ohjattujen laitteiden, kuten System Nexan, mahdollisuuksia, jotka toimivat 433,92 MHz: n taajuudella. Tässä meidän on esillä:

  1. Automaattinen valaistuksen ohjaus
  2. Web -ohjaus

Web -ohjaus. Sisäinen vs. ulkoinen verkkopalvelin

Sisäinen palvelin hyödyntää Arduino Ethernet -kilven mahdollisuutta tarjota verkkopalvelin. Verkkopalvelin osallistuu web -asiakaspuheluihin tarkistaakseen ja ollakseen vuorovaikutuksessa Arduinon kanssa. Tämä on suoraviivainen ratkaisu, jonka toiminnot ovat rajalliset; Arduinon muisti rajoittaa mahdollisuuksia parantaa verkkopalvelimen koodia. Ulkoinen palvelin vaatii ulkoisen PHP -verkkopalvelimen asennuksen. Tämä asennus on monimutkaisempi eikä tämä opetusohjelma tue sitä, mutta PHP -koodi/-sivu Arduinon tarkistamiseksi ja ohjaamiseksi on varustettu perustoiminnoilla. Verkkopalvelimen parantamismahdollisuuksia rajoittaa tässä tapauksessa ulkoinen verkkopalvelin.

Materiaaliluettelo

Jotta voit hyödyntää täysin tämän luonnoksen tarjoamia mahdollisuuksia, tarvitset:

  1. Arduino Uno (testattu R3: lla)
  2. Arduino Ethernet -suoja
  3. Nexa -laite tai vastaava, joka toimii 433,92 MHz: n taajuudella
  4. PIR (passiivinen infrapuna) -anturi, joka toimii 433,92 MHz: n taajuudella
  5. 10Kohmin vastus
  6. LDR
  7. RTC DS3231 (vain ulkoisen palvelimen versio)
  8. 433,92 MHz: n lähetin: XY-FST
  9. 433,92 MHz: n vastaanotin: MX-JS-05V

Vähimmäissuositus on:

  1. Arduino Uno (testattu R3: lla)
  2. Nexa -laite tai vastaava, joka toimii 433,92 MHz: n taajuudella
  3. 10Kohmin vastus
  4. LDR
  5. 433,92 MHz: n lähetin: XY-FST

(Ethernet -suojauksen laiminlyönti edellyttää luonnoksen muutoksia, jotka eivät sisälly tähän ohjeeseen)

Nexan logiikka. Lyhyt kuvaus

Nexa -vastaanotin oppii kauko -ohjaimen ja painikkeen tunnuksen. Toisin sanoen jokaisella kaukosäätimellä on lähettäjänumeronsa ja jokaisella päälle/pois -painikeparilla on painikkeen tunnus. Vastaanottimen on opittava nämä koodit. Joissakin Nexa -asiakirjoissa todetaan, että vastaanotin voidaan yhdistää jopa kuuteen kaukosäätimeen. Nexa -parametrit:

  • SenderID: Kaukosäätimen tunnus
  • ButtonID: painikeparin numero (päällä/pois). Se alkaa numerolla 0
  • Ryhmä: kyllä/ei (eli "Kaikki pois/päälle" -painikkeet)
  • Komento: päälle/pois

Ohjeelliset vaiheet. Huomautus

Tässä kuvattujen eri vaiheiden tarkoituksena on tarjota kaksi eri makua tavoitteen saavuttamiseksi. Voit vapaasti valita itsellesi sopivan. Tässä on indeksi:

Vaihe 1: Piiri

Vaihe 2: Nexardu ja sisäinen verkkopalvelin (mukana NTP)

Vaihe 3: Nexardu ulkoisen palvelimen kanssa

Vaihe 4: Arvokasta tietoa

Vaihe 1: Piiri…

Kierros…
Kierros…

Johda eri komponentit kuvan mukaisesti.

Arduino -nasta#8 - RX (vastaanotin) -moduulin datatappi Arduino -nasta#2 - RX (vastaanotin) -moduulin datanappi Arduino -nasta#7 - TX (lähettäjä) -moduulin datanappi Arduino -nasta A0 - LDR

RTC -kokoonpano. Tarvitaan vain ulkoisen palvelimen kokoonpanossa. Arduino -nasta A4 - SDA -nasta RTC -moduulissa Arduino -nasta A5 - SCL -nasta RTC -moduulissa

Vaihe 2: Nexardu sisäisellä verkkopalvelimella (mukana NTP)

Kirjastot

Tämä koodi käyttää paljon kirjastoja. Suurin osa niistä löytyy Arduino IDE: n "kirjastonhoitajan" kautta. Jos et löydä luettelossa olevaa kirjastoa, googleta.

Wire.hSPI.h - Ethernet -suojauksen vaatimaNexaCtrl.h - Nexa -laiteohjain Ethernet.h - Ethernet -suojauksen ottaminen käyttöön ja esillepano NTP -asiakas

Luonnos

Alla oleva koodi hyödyntää mahdollisuutta käyttää Arduino UNO -korttia paitsi keinona ohjata Nexa -laitteita, mutta siinä on myös sisäinen verkkopalvelin. Huomaa vielä, että RTC (Real Time Clock) -moduuli säädetään automaattisesti NTP: n (Network Time Protocol) kautta.

Ennen kuin lataat koodin Arduinolle, sinun on ehkä määritettävä seuraavat:

  • SenderId: sinun on ensin haistettava SenderId, katso alla
  • PIR_id: sinun on ensin haistettava SenderId, katso alla
  • Lähiverkon IP -osoite: aseta lähiverkon IP -osoite Ethernet Arduino -suojaksi. Oletusarvo: 192.168.1.99
  • NTP -palvelin: Ei ehdottoman välttämätöntä, mutta voisi olla hyvä googlettaa lähistölläsi olevia NTP -palvelimia. Oletusarvo: 79.136.86.176
  • Koodi on säädetty CET -aikavyöhykkeen mukaan. Säädä tätä arvoa tarvittaessa aikavyöhykkeellesi oikean ajan (NTP) näyttämiseksi

Haistaa Nexa -koodeja

Tätä varten sinun on johdotettava vähintään RX -komponentti Arduinoon piirin mukaisesti.

Löydät alla Nexa_OK_3_RX.ino-luonnoksen, joka on sen kirjoittamishetkellä yhteensopiva Nexa-laitteiden NEYCT-705 ja PET-910 kanssa.

Seuraavat vaiheet ovat:

  1. Yhdistä Nexa -vastaanotin ja kaukosäädin.
  2. Lataa Nexa_OK_3_RX.ino Arduinolle ja avaa "Sarjamonitori".
  3. Paina Nexa -vastaanotinta ohjaavaa kaukosäätimen painiketta.
  4. Ota huomioon "RemoteID" ja "ButtonID".
  5. Aseta nämä numerot SenderID- ja ButtonID -kohdissa edellisen luonnoksen muuttujan ilmoituksessa.

Jos haluat lukea PIR -tunnuksen, käytä samaa luonnosta (Nexa_OK_3_RX.ino) ja lue arvo "Sarjamonitorista", kun PIR havaitsee liikkeen.

Vaihe 3: Nexardu ulkoisen palvelimen kanssa

Kirjastot

Tämä koodi käyttää paljon kirjastoja. Suurin osa löytyy Arduino IDE: n "kirjastonhoitajan" kautta. Jos et löydä luettelossa olevaa kirjastoa, googleta.

Wire.hRTClib.h - tämä on kirjasto osoitteesta https://github.com/MrAlvin/RTClibSPI.h - Ethernet -suojauksen vaatimaNexaCtrl.h - Nexa -laiteohjainEthernet.h - Ethernet -suojauksen ottaminen käyttöön ja esittely PIRTime.h - vaaditaan RTCTimeAlarms.h: lle - Aikahälytysten hallinta REST.h - RESTful API -palveluille, joita ulkoinen serverair/wdt.h käyttää

Luonnos

Alla olevassa luonnoksessa on saman maun toinen maku, tällä kertaa ulkoisen verkkopalvelimen tarjoamat mahdollisuudet. Kuten jo johdannossa mainittiin, ulkoinen palvelin vaatii ulkoisen PHP -verkkopalvelimen asennuksen. Tämä asennus on monimutkaisempi eikä tämä opetusohjelma tue sitä, mutta PHP -koodi/-sivu Arduinon tarkistamiseksi ja ohjaamiseksi on varustettu perustoiminnoilla.

Ennen kuin lataat koodin Arduinolle, sinun on ehkä määritettävä seuraavat:

  • SenderId: sinun on ensin haistettava SenderId, katso Nexa -koodien haukuttaminen edellisessä vaiheessa
  • PIR_id: sinun on ensin haistettava SenderId, katso Nexa -koodien haukuttaminen edellisessä vaiheessa
  • Lähiverkon IP -osoite: aseta lähiverkon IP -osoite Ethernet Arduino -suojaksi. Oletusarvo: 192.168.1.99

Katso Nexa -koodin halausprosessi vaiheesta 1.

Täydentävä tiedosto

Lataa liitteenä oleva nexardu4.txt -tiedosto ulkoiselle PHP -palvelimellesi ja nimeä se uudelleen nimeksi nexardu4.php

RTC -aika asetettu

Asettaaksesi kellonajan/päivämäärän RTC: ssä käytän luonnosta SetTime, joka sisältää DS1307RTC -kirjaston.

Vaihe 4: Arvokasta tietoa

Arvokasta tietoa
Arvokasta tietoa
Arvokasta tietoa
Arvokasta tietoa

Hyvä tietää käyttäytyminen

  1. Kun Arduino on "Light Automatic Control" -tilassa, se voi mennä neljään eri tilaan ympäristön valaistuksen ja kellonajan mukaan:

    1. Herää: Arduino odottaa illan tuloa.
    2. Aktiivinen: Yö on tullut ja Arduino on sytyttänyt valot.
    3. Somnolent: Valot ovat päällä, mutta aika sammuttaa ne on tulossa. Se alkaa "time_to_turn_off - PIR_time" eli jos time_to_turn_off on asetettu 22:30 ja PIR_time 20 minuuttia, Arduino siirtyy uniseen tilaan 22:10.
    4. Lepotilassa: Yö kuluu, Arduino on sammuttanut valot ja Arduino odottaa aamunkoiton heräämistä.
  2. Arduino kuuntelee aina kaukosäätimien lähettämiä signaaleja. Siinä on mahdollisuus näyttää valojen tila (päällä/pois) verkossa, kun kauko -ohjainta käytetään.
  3. Kun Arduino on hereillä, se yrittää sammuttaa valot koko ajan, joten Arduino saattaa kaapata korjaussäätimen lähettämät ON -signaalit valojen sytyttämiseksi. Jos näin tapahtuu, Arduino yrittää sammuttaa valot uudelleen.
  4. Kun Arduino on aktiivinen, se yrittää saada valot päälle koko ajan, joten Arduino voi kaapata kaukosäätimen lähettämät sammutusvalot sammuttamaan valot. Jos näin tapahtuu, Arduino yrittää sytyttää valot uudelleen.
  5. Unettomassa tilassa valot voidaan kytkeä päälle/pois kaukosäätimellä. Arduino ei vastusta.
  6. Unessa tilassa PIR -lähtölaskenta alkaa nollata "time_to_turn_off - PIR_time" ja siten time_to_turn_off pidentyy 20 minuutilla joka kerta, kun PIR havaitsee liikkeen. "PIR -signaali havaittu!" viesti näkyy selaimessa, kun näin tapahtuu.
  7. Kun Arduino on lepotilassa, valot voidaan kytkeä päälle ja pois päältä kaukosäätimellä. Arduino ei vastusta.
  8. Arduinon nollaaminen tai käynnistysjakso vie sen aktiiviseen tilaan. Tämä tarkoittaa, että jos Arduino on nollattu time_turn_off jälkeen, Arduino kytkee valot päälle. Tämän välttämiseksi Arduino on saatettava manuaaliseen tilaan (rasti rasti "Light Automatic Control") ja odota aamuun asti, jotta se palautuu "Light Automatic Control" -tilaan.
  9. Kuten edellä mainittiin, Arduino odottaa aamunkoiton aktivoituvan jälleen. Tämän vuoksi järjestelmä voi huijata suuntaamalla tarpeeksi voimakasta valoa kohti valoanturia, jonka on ylitettävä "vähimmäisvalovoima". Jos näin tapahtuu, Arduino siirtyy aktiiviseen tilaan.
  10. Toleranssi -arvo on erittäin tärkeä, jotta vältetään järjestelmän päälle- ja poiskytkentä kynnysarvon Minimum Luminosity ympärillä. Led -valot vilkkumisen ja suuren reagointikyvyn vuoksi voivat olla räpyttelevän käyttäytymisen lähde. Nosta toleranssiarvoa, jos kohtaat tämän ongelman. Käytän arvoa 7.

Hyvä tietää koodista

  1. Kuten huomaat, koodi on erittäin suuri ja käyttää huomattavaa määrää kirjastoja. Tämä heikentää kasan tarvitseman vapaan muistin määrää. Olen huomannut epävakaata käyttäytymistä aiemmin, kun järjestelmä pysäytettiin, erityisesti verkkopuheluiden jälkeen. Siksi suurin haasteeni on ollut rajoittaa sen kokoa ja erilaisten muuttujien käyttöä järjestelmän vakauttamiseksi.
  2. Koodi, joka hyödyntää kotona käyttämääni sisäistä palvelinta, on ollut käynnissä helmikuusta 2016 lähtien ilman ongelmia.
  3. Olen pyrkinyt rikastamaan koodia selityksillä. Hyödynnä tätä pelataksesi eri parametreilla, kuten Nexa -koodilähetysten määrä sarjaa kohti, NTP -synkronointiaika jne.
  4. Koodissa ei ole kesäaikaa. Tätä on säädettävä selaimen kautta, kun sitä sovelletaan.

Muutamia kohtia harkittavaksi

  1. Lisää antenas TX- ja RX -radiotaajuus (RF) -moduuleihin. Se säästää aikaa valittaessa kahdesta pääkohdasta: joustavuus ja RF -signaalin kantama. Käytän 50 ohmin johtoa, jonka pituus on 17,28 cm (6,80 tuumaa).
  2. Tämä integroitava voi toimia myös muiden kodin automaatiojärjestelmien, kuten Proove, kanssa. Yksi monista edellytyksistä on, että ne toimivat 433,92 MHz: n taajuudella.
  3. Suuri päänsärky Arduinon kanssa on käsitellä kirjastoja, jotka saattavat päivittyä ajan myötä eivätkä yhtäkkiä ole enää yhteensopivia "vanhan" luonnoksen kanssa; sama ongelma voi ilmetä, kun päivität Arduino IDE: tä. Varo, että tämä voi olla meidän tapauksemme täällä -kyllä, myös minun ongelmani.
  4. Useat samanaikaiset verkkopalvelut, joissa on eri valotilat, luovat "vilkkuvan" tilan.

Kuvakaappaus

Yllä olevasta kuvakarusellista löydät kuvakaappauksen verkkosivusta, joka näytetään, kun soitat Arduinolle verkkoselaimesi kautta. Kun otetaan huomioon koodin oletusarvoinen IP -määritys, URL -osoite olisi

Yksi näkökohta, jota voitaisiin parantaa, on "lähetä" -painikkeen sijainti, koska se vaikuttaa kaikkiin syöttökenttiin eikä vain "kevyeen automaattiseen ohjaukseen", kuten voisi luulla. Toisin sanoen, jos haluat muuttaa mahdollisia arvoja, sinun on aina painettava "lähetä" -painiketta.

Yksityiskohtainen/edistynyt dokumentaatio

Olen liittänyt seuraavat tiedostot, jotta ne voivat auttaa sinua ymmärtämään koko ratkaisun erityisesti vianmääritystä ja parantamista varten.

Arduino_NexaControl_IS.pdf sisältää dokumentaation sisäisen palvelimen ratkaisusta.

Arduino_NexaControl_ES.pdf sisältää asiakirjoja ulkoisen palvelimen ratkaisusta.

Ulkoiset viitteet

Nexa -järjestelmä (ruotsi)

Vaihe 5: Valmis

Valmis!
Valmis!

Siinä kaikki valmiina ja toiminnassa!

Arduino Uno -kotelo löytyy Thingiversesta nimellä "Arduino Uno Rev3 with Ethernet Shield XL-case".

Suositeltava: