INHOUDSOPGAWE:

NexArdu: Illumination Smart Control: 5 stappe
NexArdu: Illumination Smart Control: 5 stappe

Video: NexArdu: Illumination Smart Control: 5 stappe

Video: NexArdu: Illumination Smart Control: 5 stappe
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, November
Anonim
NexArdu: Illumination Smart Control
NexArdu: Illumination Smart Control

Opdateer

As u dieselfde funksie met Home Assistant ontwikkel het. Home Assistant bied 'n groot verskeidenheid moontlikhede. U kan die ontwikkeling hier vind.

'N Skets om die verligting van die huis op 'n slim manier te beheer via 433,92MHz (ook bekend as 433MHz) draadlose X10-agtige toestelle, bv. Nexa.

Agtergrond

Wat dekoratiewe beligting betref, was dit vir my op een of ander manier vermoeiend dat ek elke tweede of derde week die tydtellers moes aanpas wat die ligte aanskakel weens die verskuiwing van die son -uur ten opsigte van die CET. party aande gaan slaap ons vroeër as ander. As gevolg hiervan skakel die ligte soms 'te laat' of 'te vroeg' af. Bogenoemde het my uitgedaag om te dink: ek wil hê dat die dekoratiewe beligting altyd op dieselfde vlak van omringende lig moet aanskakel en dan op 'n sekere tyd kan afskakel, afhangende van of ons wakker is of nie.

Doel

Hierdie instruksies benut die moontlikhede van draadloos beheerde toestelle soos System Nexa wat op die 433,92 MHz -frekwensie werk. Hierin moet ons die volgende kenmerk:

  1. Outomatiese beligtingskontrole
  2. Webbeheer

Webbeheer. Interne vs eksterne webbediener

Die interne bediener benut die moontlikheid van die Arduino Ethernet -skild om 'n webbediener te voorsien. Die webbediener sal oproepe na die webkliënt bywoon om die Arduino te kontroleer en met hom te kommunikeer. Dit is 'n eenvoudige oplossing met beperkte funksionaliteit; die moontlikhede om die webbedienerkode te verbeter word beperk deur die geheue van die Arduino. Die eksterne bediener vereis die opstel van 'n eksterne PHP -webbediener. Hierdie opstelling is meer ingewikkeld en word nie deur hierdie tutoriaal ondersteun nie, maar die PHP -kode/bladsy om die Arduino na te gaan en te stuur, is voorsien van basiese funksies. Die moontlikhede om die webbediener te verbeter, word in hierdie geval beperk deur die eksterne webbediener.

Materiaallêer

Om die moontlikhede wat hierdie skets bied, ten volle te benut, benodig u:

  1. 'N Arduino Uno (getoets op R3)
  2. 'N Arduino Ethernet -skild
  3. 'N Nexa -stel of soortgelyk wat op 433,92 MHz werk
  4. 'N PIR (Passive InfraRed) sensor wat op 433,92 MHz werk
  5. 'N Weerstand van 10KOhms
  6. 'N LDR
  7. 'N RTC DS3231 (slegs eksterne bedienerweergawe)
  8. 'N 433,92 MHz sender: XY-FST
  9. 'N Ontvanger van 433,92 MHz: MX-JS-05V

Die minimum aanbevole is:

  1. 'N Arduino Uno (getoets op R3)
  2. 'N Nexa -stel of soortgelyk wat op 433,92 MHz werk
  3. 'N Weerstand van 10KOhms
  4. 'N LDR
  5. 'N 433,92 MHz sender: XY-FST

(Die weglating van die Ethernet -skild vereis aanpassings van die skets wat nie in hierdie instruksies verskaf word nie)

Die Nexa Logic. 'N Kort beskrywing

Die Nexa -ontvanger leer die afstandbeheer -ID en knoppie -ID leer. Met ander woorde, elke afstandsbediening het sy sender nommer en elke paar aan/af knoppies het sy knoppie ID. Die ontvanger moet die kodes leer. Volgens sommige Nexa -dokumente kan 'n ontvanger met tot ses afstandsbedienings gekoppel word. Die Nexa parameters:

  • SenderID: ID van die afstandbeheer
  • ButtonID: knoppie-paar nommer (aan/af). Dit begin met nommer 0
  • Groep: ja/nee (ook bekend as "Alle af/aan" knoppies)
  • Opdrag: aan/af

Onderrigbare stappe. Let op

Die verskillende stappe wat hierin beskryf word, is om twee verskillende geure te bied oor hoe om die doel te bereik. Kies gerus die een op u gemak. Hier is die indeks:

Stap 1: Die kring

Stap 2: Nexardu met interne webbediener (met NTP)

Stap 3: Nexardu met eksterne bediener

Stap #4: Waardevolle inligting

Stap 1: Die kring …

Die kring…
Die kring…

Draai die verskillende komponente soos in die prentjie aangedui.

Arduino pen#8 tot Data pin op RX (ontvanger) module Arduino pin#2 na Data pin op RX (ontvanger) module Arduino pin#7 tot Data pin op TX (sender) module Arduino pin A0 tot LDR

RTC -opset. Slegs nodig vir die konfigurasie van die eksterne bediener. Arduino -pen A4 tot SDA -pen op RTC -module Arduino -pen A5 tot SCL -pen op RTC -module

Stap 2: Nexardu met interne webbediener (met NTP)

Die biblioteke

Hierdie kode maak gebruik van baie biblioteke. Die meeste van hulle kan gevind word deur die 'biblioteekbestuurder' van die Arduino IDE. As u nie 'n gelyste biblioteek vind nie, google asb.

Wire.hSPI.h - Vereis deur Ethernet -skildNexaCtrl.h - Nexa -toestelbeheerder Ethernet.h - Om die Ethernet -skild in te skakel en te gebruikRCSwitch.h - Vereist vir PIRTime.h - Vereis vir RTCTimeAlarms.h - TydalarmbestuurthernetUdp.h - Vereist vir NTP -kliënt

Die Skets

Die onderstaande kode benut die moontlikheid om die Arduino UNO -bord nie net as middel te gebruik om Nexa -toestelle te beheer nie, maar bevat ook 'n interne webbediener. 'N Opmerking wat bygevoeg moet word, is dat die RTC -module (Real Time Clock) outomaties aangepas word via NTP (Network Time Protocol).

Voordat u die kode na die Arduino laai, moet u moontlik die volgende instel:

  • SenderId: u moet eers die SenderId snuif, sien hieronder
  • PIR_id: u moet eers die SenderId snuif, sien hieronder
  • LAN IP -adres: stel 'n IP van u LAN in op u Ethernet Arduino -skild. Standaardwaarde: 192.168.1.99
  • NTP -bediener: nie streng nodig nie, maar dit kan goed wees om na NTP -bedieners in u omgewing te google. Standaardwaarde: 79.136.86.176
  • Die kode word aangepas vir die CET -tydsone. Pas hierdie waarde aan -indien nodig, na u tydsone om die regte tyd (NTP) te vertoon

Snuffel die Nexa -kodes

Hiervoor moet u die RX -komponent ten minste aan die Arduino koppel, soos in die kring getoon.

Vind onder die Nexa_OK_3_RX.ino-skets wat, op die oomblik van skryf, versoenbaar is met Nexa-toestelle NEYCT-705 en PET-910.

Die stappe wat gevolg moet word, is:

  1. Koppel die Nexa -ontvanger met die afstandsbediening.
  2. Laai Nexa_OK_3_RX.ino op die Arduino en maak die "Serial Monitor" oop.
  3. Druk die afstandsbedieningsknoppie wat die Nexa -ontvanger beheer.
  4. Let op die "RemoteID" en "ButtonID".
  5. Stel hierdie getalle onder SenderID en ButtonID op die veranderlike verklaring van die vorige skets.

Om die ID van die PIR te lees, gebruik dieselfde skets (Nexa_OK_3_RX.ino) en lees die waarde op die "Serial Monitor" wanneer die PIR beweging opspoor.

Stap 3: Nexardu met eksterne bediener

Die biblioteke

Hierdie kode maak gebruik van baie biblioteke. Die meeste kan gevind word deur die "biblioteekbestuurder" van die Arduino IDE. As u nie 'n gelyste biblioteek vind nie, google asb.

Wire.hRTClib.h - dit is die biblioteek van https://github.com/MrAlvin/RTClibSPI.h - Vereis deur Ethernet -skildNexaCtrl.h - Nexa -toestelbeheerderEthernet.h - Om die Ethernet -skild in te skakel en te gebruikRCSwitch.h - Vereis vir PIRTime.h - Vereis vir RTCTimeAlarms.h - Tydalarmbestuur aREST.h - vir RESTful API -dienste wat deur eksterne serverair/wdt.h uitgebuit word - Timerhantering van waghonde

Die Skets

Die onderstaande skets bevat nog 'n smaak van dieselfde ding, wat hierdie keer die moontlikhede bied wat 'n eksterne webbediener kan bied. Soos reeds in die inleiding genoem, vereis The External Server die opstel van 'n eksterne PHP -webbediener. Hierdie opstelling is meer ingewikkeld en word nie deur hierdie tutoriaal ondersteun nie, maar die PHP -kode/bladsy om die Arduino na te gaan en te stuur, is voorsien van basiese funksies.

Voordat u die kode na die Arduino laai, moet u moontlik die volgende instel:

  • SenderId: u moet eers die SenderId snuif, sien Sniffing the Nexa codes on the previous step
  • PIR_id: u moet eers die SenderId snuif, sien Sniffing the Nexa codes on the previous step
  • LAN IP -adres: stel 'n IP van u LAN in op u Ethernet Arduino -skild. Standaardwaarde: 192.168.1.99

Raadpleeg stap #1 vir die snuifprosedure van die Nexa -kode.

Aanvullende lêer

Laai die aangehegte nexardu4.txt -lêer op na u eksterne PHP -bediener en hernoem dit na nexardu4.php

RTC tyd vasgestel

Om die tyd/datum op die RTC in te stel, gebruik ek skets SetTime wat bymekaarkom biblioteek DS1307RTC.

Stap 4: Waardevolle inligting

Waardevolle inligting
Waardevolle inligting
Waardevolle inligting
Waardevolle inligting

Goed om gedrag te ken

  1. As Arduino onder "Ligte outomatiese beheer" is, kan dit deur vier verskillende toestande gaan met betrekking tot die omringende beligting en die tyd van die dag:

    1. Wakker: Arduino wag vir die nag wat kom.
    2. Aktief: Die nag het aangebreek en Arduino het die ligte aangeskakel.
    3. Somnolent: die ligte is aan, maar die tyd om dit af te skakel kom. Dit begin by "time_to_turn_off - PIR_time" dit wil sê, as time_to_turn_off op 22:30 en PIR_time op 20 minute ingestel is, gaan die Arduino om 22:10 in die somnolente toestand.
    4. Slaap: Die nag gaan verby, Arduino het die ligte afgeskakel en Arduino wag dat die dagbreek wakker word.
  2. Arduino luister altyd na die seine wat deur afstandsbedienings gestuur word. Dit bied die moontlikheid om die toestand van die ligte (aan/uit) op die internet te wys wanneer afstandsbediening gebruik word.
  3. Terwyl Arduino wakker is, probeer dit altyd om die ligte af te skakel, maar AR -seine kan deur Arduino vasgelê word deur 'n remonte -beheer om die ligte aan te skakel. As dit gebeur, sal die Arduino weer probeer om die ligte af te skakel.
  4. Terwyl Arduino aktief is, probeer dit altyd om die ligte aan te skakel, maar Arduino kan OFF -seine wat deur 'n afstandsbediening gestuur word om die ligte uit te skakel, vasvang. As dit gebeur, sal die Arduino weer probeer om die ligte aan te skakel.
  5. In 'n rustige toestand kan die ligte met 'n afstandsbediening aan/uit geskakel word. Die Arduino sal nie teenwerk nie.
  6. In die somnolente toestand begin die PIR -aftelling van "time_to_turn_off - PIR_time", en sodoende word die time_to_turn_off met 20 minute verleng elke keer as die PIR beweging opspoor. 'N' PIR -sein opgespoor! ' boodskap sal in die webblaaier gewys word wanneer dit gebeur.
  7. Terwyl Arduino dormant is, kan ligte met die afstandsbediening aan en afgeskakel word. Die Arduino sal nie teenwerk nie.
  8. 'N Herstel- of kragsiklus van die Arduino bring dit in die aktiewe modus. Dit beteken dat as die Arduino herstel is na die time_turn_off, Arduino die ligte sal aanskakel. Om dit te vermy, moet die Arduino in die handmatige modus gebring word (merk 'Light Automatic Control' af) en wag tot die oggend om dit terug te keer na 'Light Automatic Control'.
  9. Soos hierbo genoem, wag Arduino op die dagbreek om weer aktief te raak. As gevolg hiervan kan die stelsel mislei word deur 'n sterk genoeg lig na die ligsensor te stuur wat die drempel van 'minimum helderheid' moet oorskry. As dit gebeur, moet Arduino na die aktiewe toestand verander.
  10. Die verdraagsaamheidswaarde is van groot belang om te voorkom dat die stelsel rondom die drempelwaarde Minimum Luminosity aan en af klap. As gevolg van flikkering en hoë reaksie, kan LED -ligte 'n bron van wapperende gedrag wees. Verhoog die verdraagsaamheid as u hierdie probleem ondervind. Ek gebruik waarde 7.

Goed om te weet oor die kode

  1. Soos u kan sien, is die kode baie groot en maak gebruik van 'n aansienlike hoeveelheid biblioteke. Dit kompromitteer die hoeveelheid gratis geheue wat nodig is vir die hoop. Ek het in die verlede onstabiele gedrag opgemerk omdat die stelsel tot stilstand gekom het, veral na weboproepe. Daarom was die grootste uitdaging wat ek gehad het om die grootte en die gebruik van verskillende veranderlikes te beperk om die stelsel stabiel te maak.
  2. Die kode wat die interne bediener gebruik wat ek tuis gebruik, werk sedert Februarie 2016 sonder probleme.
  3. Ek het baie moeite gedoen om die kode met verduidelikings te verryk. Profiteer hiervan om te speel met verskillende parameters, soos die aantal Nexa -kodeversendings per sarsie, NTP -sinkronisasie -tyd, ens.
  4. Die kode bevat nie daglig nie. Dit moet via die webblaaier aangepas word wanneer dit van toepassing is.

Enkele punte om in ag te neem

  1. Voeg die antenas by die TX en RX radiofrekwensie (RF) modules. Dit spaar u tyd om oor twee hoofpunte te kla: veerkragtigheid en omvang van die RF -sein. Ek gebruik 'n 50Ohms -draad van 17,28 cm (6,80 duim) lank.
  2. Dit kan nie met ander tuisautomatiseringstelsels, soos byvoorbeeld Proove, werk nie. Een van die vele voorwaardes wat nagekom moet word, is om dit op die 433,92 MHz -frekwensie te laat werk.
  3. 'N Groot kopseer met Arduino is om biblioteke te hanteer wat mettertyd opgedateer kan word en skielik nie weer versoenbaar is met u' ou 'skets nie; dieselfde probleem kan ontstaan as u u Arduino IDE opgradeer. Pasop dat dit hier ons geval kan wees -ja, my probleem ook.
  4. Meervoudige gelyktydige webkliënte met verskillende ligmodusse skep 'n 'knipperende' toestand.

Kiekie

In die foto -karrousel hierbo vind u 'n skermkiekie van die webbladsy wat vertoon word wanneer u die Arduino deur u webblaaier bel. Gegewe die standaard IP -opset van die kode, sou die URL https://192.168.1.99 wees

Een aspek wat moontlik verbeter kan word, is die posisionering van die "stuur" -knoppie, aangesien dit van krag is op alle invoerblokkies en nie net op die "Ligte outomatiese beheer" soos u dink nie. Met ander woorde, as u enige van die moontlike waardes wil verander, moet u altyd op die "stuur" -knoppie druk.

Gedetailleerde/gevorderde dokumentasie

Ek het die volgende lêers aangeheg, sodat hulle u kan help om die hele oplossing te verstaan, veral vir probleemoplossing en verbetering.

Arduino_NexaControl_IS.pdf bied dokumentasie oor die oplossing van die interne bediener.

Arduino_NexaControl_ES.pdf bied dokumentasie oor die oplossing vir eksterne bedieners.

Eksterne verwysings

Nexa System (Sweeds)

Stap 5: klaar

Klaar!
Klaar!

Daar het u alles klaar en in aksie!

Die Arduino Uno-omhulsel kan in Thingiverse gevind word as "Arduino Uno Rev3 with Ethernet Shield XL-case".

Aanbeveel: