Sisukord:

NexArdu: valgustuse nutikas juhtimine: 5 sammu
NexArdu: valgustuse nutikas juhtimine: 5 sammu

Video: NexArdu: valgustuse nutikas juhtimine: 5 sammu

Video: NexArdu: valgustuse nutikas juhtimine: 5 sammu
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №37 2024, November
Anonim
NexArdu: valgustuse nutikas juhtimine
NexArdu: valgustuse nutikas juhtimine

Värskenda

Kui olete arendanud sama funktsiooni Home Assistanti abil. Koduabiline pakub tohutult erinevaid võimalusi. Arenduse leiate siit.

Eskiis kodu valgustuse nutikaks juhtimiseks 433.92MHz (aka 433MHz) traadita X10-sarnaste seadmete, nt. Nexa.

Taust

Mis puudutab dekoratiivset valgustust, siis on mulle kuidagi väsitav olnud, et iga teine või kolmas nädal pidin ümber seadma taimerid, mis lülitavad sisse tuled, kuna päikesetund on CET suhtes nihkunud. Samal ajal Mõnel õhtul läheme varem magama kui teised. Seetõttu lülituvad tuled mõnikord välja "liiga hilja" või "liiga vara". Ülaltoodu pani mind mõtlema: ma tahan, et dekoratiivne valgustus lülituks alati sisse samal ümbritseva valguse tasemel ja lülituks seejärel teatud ajal välja, olenevalt sellest, kas oleme ärkvel või mitte.

Eesmärk

See juhendab ära traadita juhitavate seadmete, näiteks System Nexa, võimalused, mis töötavad sagedusel 433,92 MHz. Siin peame esile tooma:

  1. Valgustuse automaatne juhtimine
  2. Veebi juhtimine

Veebi juhtimine. Sisemine vs väline veebiserver

Sisemine server kasutab Arduino Etherneti kilbi võimalust veebiserveri pakkumiseks. Veebiserver osaleb veebikliendi kõnedes, et kontrollida ja suhelda Arduinoga. See on lihtne ja piiratud funktsionaalsusega lahendus; veebiserveri koodi täiustamise võimalusi piirab Arduino mälu. Väline server nõuab välise PHP veebiserveri seadistamist. See seadistamine on keerulisem ja seda õpetus ei toeta, kuid PHP kood/leht Arduino kontrollimiseks ja juhtimiseks on varustatud põhifunktsioonidega. Veebiserveri täiustamise võimalusi piirab sel juhul väline veebiserver.

Materjalide arve

Selle visandi võimaluste täielikuks ärakasutamiseks vajate:

  1. Arduino Uno (testitud R3 -ga)
  2. Arduino Etherneti kilp
  3. Nexa komplekt vms, mis töötab sagedusel 433,92 MHz
  4. PIR (passiivne infrapuna) andur, mis töötab sagedusel 433,92 MHz
  5. 10KOhm takisti
  6. LDR
  7. RTC DS3231 (ainult välise serveri versioon)
  8. 433,92 MHz saatja: XY-FST
  9. 433,92 MHz vastuvõtja: MX-JS-05V

Minimaalne soovitatav on:

  1. Arduino Uno (testitud R3 -ga)
  2. Nexa komplekt vms, mis töötab sagedusel 433,92 MHz
  3. 10KOhm takisti
  4. LDR
  5. 433,92 MHz saatja: XY-FST

(Etherneti kilbi väljajätmine nõuab eskiisi muutmist, mida selles juhendis ei ole)

Nexa loogika. Lühike kirjeldus

Nexa vastuvõtja õpib kaugjuhtimispuldi ja nupu ID -d. Teisisõnu, igal puldil on oma saatja number ja igal sisse/välja nuppude paaril on oma nupu ID. Vastuvõtja peab need koodid ära õppima. Mõned Nexa dokumendid väidavad, et vastuvõtja saab siduda kuni kuue kaugjuhtimispuldiga. Nexa parameetrid:

  • SenderID: kaugjuhtimispuldi ID
  • ButtonID: nupupaari number (sisse/välja). See algab numbriga 0
  • Grupp: jah/ei (nupud "Kõik välja/sisse")
  • Käsk: sisse/välja

Juhendatavad sammud. Märge

Siin kirjeldatud erinevad sammud pakuvad eesmärgi saavutamiseks kahte erinevat maitset. Valige julgelt endale sobiv. Siin on indeks:

Samm 1: ahel

2. samm: Nexardu koos sisemise veebiserveriga (NTP -ga)

Samm #3: Nexardu välise serveriga

4. samm: väärtuslikku teavet

Samm: vooluring…

Ringrada…
Ringrada…

Ühendage erinevad komponendid juhtmetega, nagu pildil näidatud.

Arduino pin#8 to Data pin on RX (vastuvõtja) moodul Arduino pin#2 to Data pin on RX (vastuvõtja) moodul Arduino pin#7 to Data pin on TX (sender) moodul Arduino pin A0 to LDR

RTC konfiguratsioon. Vajalik ainult välise serveri konfiguratsioonis. Arduino pin A4 kuni SDA pin RTC moodulil Arduino pin A5 kuni SCL pin RTC moodulil

2. toiming: Nexardu koos sisemise veebiserveriga (sisaldab NTP -d)

Raamatukogud

See kood kasutab palju teeke. Enamikku neist leiate Arduino IDE raamatukoguhalduri kaudu. Kui te ei leia loetletud raamatukogu, siis googeldage.

Wire.hSPI.h - nõutav Etherneti kilpNexaCtrl.h - Nexa seadme kontroller Ethernet.h - Etherneti kilbi lubamiseks ja esiletõstmiseks NTP klient

Sketš

Allolev kood kasutab võimalust kasutada Arduino UNO plaati mitte ainult Nexa seadmete juhtimiseks, vaid sellel on ka sisemine veebiserver. Märkus lisamiseks on see, et RTC (reaalajas kella) moodul reguleeritakse automaatselt NTP (Network Time Protocol) kaudu.

Enne koodi Arduinosse üleslaadimist peate võib -olla konfigureerima järgmise.

  • SenderId: kõigepealt peate nuusutama SenderId, vt allpool
  • PIR_id: kõigepealt peate nuusutama SenderId, vt allpool
  • LAN -i IP -aadress: määrake oma LAN -i IP -aadressiks Arduino Ethernet. Vaikeväärtus: 192.168.1.99
  • NTP -server: pole tingimata vajalik, kuid võib olla hea otsida teie läheduses asuvaid NTP -servereid. Vaikeväärtus: 79.136.86.176
  • Kood on kohandatud CET ajavööndi järgi. Vajadusel kohandage seda väärtust oma ajavööndiga, et kuvada õige aeg (NTP)

Nexa koodide nuusutamine

Selleks peate vähemalt RX -komponendi ühendama Arduinoga, nagu skeemil näidatud.

Allpool leiate Nexa_OK_3_RX.ino visandi, mis selle kirjutamise ajal ühildub Nexa seadmetega NEYCT-705 ja PET-910.

Järgmised sammud on järgmised:

  1. Siduge Nexa vastuvõtja kaugjuhtimispuldiga.
  2. Laadige Nexa_OK_3_RX.ino Arduinole ja avage jadamonitor.
  3. Vajutage kaugjuhtimispuldi nuppu, mis juhib Nexa vastuvõtjat.
  4. Võtke teadmiseks "RemoteID" ja "ButtonID".
  5. Määrake need numbrid eelmise visandi muutuja deklaratsiooni all SenderID ja ButtonID.

PIR -i ID lugemiseks kasutage lihtsalt seda visandit (Nexa_OK_3_RX.ino) ja lugege väärtus "Seeriamonitorilt", kui PIR tuvastab liikumise.

Samm: Nexardu välise serveriga

Raamatukogud

See kood kasutab palju teeke. Enamiku neist leiate Arduino IDE raamatukoguhalduri kaudu. Kui te ei leia loetletud raamatukogu, googeldage.

Wire.hRTClib.h - see on raamatukogu aadressilt https://github.com/MrAlvin/RTClibSPI.h - Nõutav Etherneti kilbi pooltNexaCtrl.h - Nexa seadme kontroller PIRTime.h - vajalik RTCTimeAlarms.h jaoks - ajahäirete haldamine

Sketš

Alloleval visandil on sama asja teine maitse, mis annab seekord võimaluse välisele veebiserverile anda. Nagu sissejuhatuses juba mainitud, nõuab väline server välise PHP veebiserveri seadistamist. See seadistamine on keerulisem ja seda õpetus ei toeta, kuid PHP kood/leht Arduino kontrollimiseks ja juhtimiseks on varustatud põhifunktsioonidega.

Enne koodi Arduinosse üleslaadimist peate võib -olla konfigureerima järgmise.

  • SenderId: esmalt peate nuusutama SenderId, vaadake jaotist Nexa koodide nuusutamine eelmises etapis
  • PIR_id: kõigepealt peate nuusutama SenderId, vt Nexa koodide nuusutamine eelmises etapis
  • LAN -i IP -aadress: määrake oma LAN -i IP -aadressiks Arduino Ethernet. Vaikeväärtus: 192.168.1.99

Nexa koodi nuusutamisprotseduuri kohta vt 1. sammu.

Täiendav fail

Laadige manustatud nexardu4.txt fail üles oma välisele PHP -serverile ja nimetage see ümber failiks nexardu4.php

RTC aeg seatud

Kellaaja/kuupäeva määramiseks RTC -s kasutan visandit SetTime, mis on kokku pandud raamatukogus DS1307RTC.

4. samm: väärtuslikku teavet

Väärtuslikku teavet
Väärtuslikku teavet
Väärtuslikku teavet
Väärtuslikku teavet

Hea teada käitumist

  1. Kui Arduino on valguse automaatjuhtimise all, võib see ümbritseva valgustuse ja kellaaja järgi minna nelja erinevasse olekusse:

    1. Ärkvel: Arduino ootab öö saabumist.
    2. Aktiivne: öö on kätte jõudnud ja Arduino lülitas tuled sisse.
    3. Somnolent: tuled põlevad, kuid aeg on need välja lülitada. See algab kell "time_to_turn_off - PIR_time", st kui time_to_turn_off on seatud 22:30 ja PIR_time 20 minutile, siis läheb Arduino uinuvasse olekusse kell 22:10.
    4. Uinuv: Öö möödub, Arduino on tuled välja lülitanud ja Arduino ootab koidu ärkamist.
  2. Arduino kuulab alati kaugjuhtimispultide saadetud signaale. See võimaldab kaugjuhtimispuldi kasutamisel kuvada veebis tulede olekut (sisse/välja).
  3. Kuigi Arduino on ärkvel, üritab ta tuled kogu aeg välja lülitada, seetõttu võib Arduino jäädvustada signaalid, mis saadetakse parandusjuhtimisseadmest tulede sisselülitamiseks. Kui see peaks juhtuma, proovib Arduino tuled uuesti välja lülitada.
  4. Kui Arduino on aktiivne, üritab see tulesid pidevalt sisse lülitada, seetõttu võib Arduino jäädvustada kaugjuhtimispuldi poolt tulede väljalülitamiseks saadetud OFF -signaale. Kui see peaks juhtuma, proovib Arduino tuled uuesti sisse lülitada.
  5. Unises olekus saab tulesid kaugjuhtimispuldiga sisse/välja lülitada. Arduino ei hakka vastu.
  6. Unises olekus hakkab PIR -loendur lähtestama "time_to_turn_off - PIR_time" ja seega pikeneb time_to_turn_off 20 minuti võrra iga kord, kui PIR tuvastab liikumise. Tuvastati "PIR -signaal!" sõnum kuvatakse veebibrauseris.
  7. Kui Arduino on puhkeolekus, saab tulesid kaugjuhtimispuldi abil sisse ja välja lülitada. Arduino ei hakka vastu.
  8. Arduino lähtestamine või toite tsükkel viib selle aktiivsesse režiimi. See tähendab, et kui Arduino on lähtestatud pärast time_turn_off, lülitab Arduino tuled sisse. Selle vältimiseks tuleb Arduino viia manuaalsesse režiimi (märkige ruut "Light Automatic Control") ja oodake hommikuni, et see uuesti "Light Automatic Control" režiimi tagasi viia.
  9. Nagu eelpool mainitud, ootab Arduino, et koidik taas aktiivseks muutuks. Seetõttu võib süsteem petta, suunates piisavalt tugeva valguse valgusanduri poole, mis peaks ületama "minimaalse heleduse" läve. Kui see peaks juhtuma, peab Arduino muutuma aktiivsesse olekusse.
  10. Tolerantsiväärtus on väga oluline, et vältida süsteemi sisse- ja väljalülitamist läviväärtuse Minimaalne heledus ümber. LED -tuled võivad vilkumise ja suure reageerimisvõime tõttu olla lehvitava käitumise allikaks. Selle probleemi ilmnemisel suurendage tolerantsi väärtust. Kasutan väärtust 7.

Koodist on hea teada

  1. Nagu märkate, on kood väga suur ja kasutab märkimisväärses koguses raamatukogusid. See vähendab hunniku jaoks vajaliku vaba mälu hulka. Olen varem märganud ebastabiilset käitumist, kus süsteem peatati, eriti pärast veebikõnesid. Seetõttu on minu suurim väljakutse olnud selle suuruse ja erinevate muutujate kasutamise piiramine, et muuta süsteem stabiilseks.
  2. Kood, mis kasutab minu kodus kasutatavat sisemist serverit, töötab nüüd alates 2016. aasta veebruarist probleemivabalt.
  3. Olen teinud suuri jõupingutusi koodi rikastamiseks selgitustega. Kasutage seda võimalust, et mängida erinevate parameetritega, nagu Nexa -koodi saatmiste arv sarivõtte kohta, NTP -sünkroonimisaeg jne.
  4. Koodil puudub suveaeg. Seda tuleb veebibrauseri kaudu kohandada.

Mõned punktid, mida kaaluda

  1. Lisage antennid raadiosageduse (RF) moodulitele TX ja RX. See säästab teie aega kahe põhipunkti üle kurtmise üle: vastupidavus ja raadiosignaali ulatus. Ma kasutan 50 oomi traati, mille pikkus on 17,28 cm (6,80 tolli).
  2. See muutmatu võib töötada ka teiste koduautomaatikasüsteemidega, näiteks Proovega. Üks paljudest täidetavatest tingimustest on nende töötamine 433,92 MHz sagedusel.
  3. Arduino suur peavalu on tegeleda raamatukogudega, mis võivad aja jooksul uueneda ja äkki ei ühildu teie "vana" visandiga; sama probleem võib tekkida teie Arduino IDE uuendamisel. Ettevaatust, et see võib olla meie juhtum -jah, ka minu probleem.
  4. Mitu samaaegset veebiklienti, millel on erinevad valgusrežiimid, loob "vilkuva" oleku.

Ekraanipilt

Ülaltoodud pildikarussellilt leiate ekraanipildi veebilehelt, mis kuvatakse Arduinole helistamisel veebibrauseri kaudu. Arvestades koodi vaikimisi IP -konfiguratsiooni, oleks URL

Üks aspekt, mida võiks parandada, on nupu „esita” positsioneerimine, kuna see hakkab kehtima kõikidele sisendkastidele, mitte ainult „kergele automaatjuhtimisele”, nagu võiks arvata. Teisisõnu, kui soovite mõnda võimalikku väärtust muuta, peate alati vajutama nuppu "Esita".

Üksikasjalik/täiustatud dokumentatsioon

Olen lisanud järgmised failid, et need saaksid aidata teil lahendust mõista, eriti veaotsingu ja täiustamise jaoks.

Arduino_NexaControl_IS.pdf pakub dokumente sisemise serveri lahenduse kohta.

Arduino_NexaControl_ES.pdf pakub dokumente välise serveri lahenduse kohta.

Välised viited

Nexa süsteem (rootsi keeles)

Samm: lõpetatud

Valmis!
Valmis!

Siin on kõik valmis ja tegus!

Arduino Uno ümbrist võib Thingiversest leida kui "Arduino Uno Rev3 koos Ethernet Shield XL-ümbrisega".

Soovitan: