INHOUDSOPGAWE:
- Stap 1: Die kring …
- Stap 2: Nexardu met interne webbediener (met NTP)
- Stap 3: Nexardu met eksterne bediener
- Stap 4: Waardevolle inligting
- Stap 5: klaar
Video: NexArdu: Illumination Smart Control: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
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:
- Outomatiese beligtingskontrole
- 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:
- 'N Arduino Uno (getoets op R3)
- 'N Arduino Ethernet -skild
- 'N Nexa -stel of soortgelyk wat op 433,92 MHz werk
- 'N PIR (Passive InfraRed) sensor wat op 433,92 MHz werk
- 'N Weerstand van 10KOhms
- 'N LDR
- 'N RTC DS3231 (slegs eksterne bedienerweergawe)
- 'N 433,92 MHz sender: XY-FST
- 'N Ontvanger van 433,92 MHz: MX-JS-05V
Die minimum aanbevole is:
- 'N Arduino Uno (getoets op R3)
- 'N Nexa -stel of soortgelyk wat op 433,92 MHz werk
- 'N Weerstand van 10KOhms
- 'N LDR
- '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 …
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:
- Koppel die Nexa -ontvanger met die afstandsbediening.
- Laai Nexa_OK_3_RX.ino op die Arduino en maak die "Serial Monitor" oop.
- Druk die afstandsbedieningsknoppie wat die Nexa -ontvanger beheer.
- Let op die "RemoteID" en "ButtonID".
- 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
Goed om gedrag te ken
-
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:
- Wakker: Arduino wag vir die nag wat kom.
- Aktief: Die nag het aangebreek en Arduino het die ligte aangeskakel.
- 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.
- Slaap: Die nag gaan verby, Arduino het die ligte afgeskakel en Arduino wag dat die dagbreek wakker word.
- 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.
- 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.
- 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.
- In 'n rustige toestand kan die ligte met 'n afstandsbediening aan/uit geskakel word. Die Arduino sal nie teenwerk nie.
- 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.
- Terwyl Arduino dormant is, kan ligte met die afstandsbediening aan en afgeskakel word. Die Arduino sal nie teenwerk nie.
- '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'.
- 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.
- 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
- 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.
- Die kode wat die interne bediener gebruik wat ek tuis gebruik, werk sedert Februarie 2016 sonder probleme.
- 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.
- 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
- 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.
- 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.
- '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.
- 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
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:
Romeo: Una Placa De Control Arduino Para Robótica Con Driver Incluidos - Robot Seguidor De Luz: 26 stappe (met foto's)
Romeo: Una Placa De Control Arduino Para Robótica Con Driver Incluidos - Robot Seguidor De Luz: Que tal amigos, siguiendo con la revisionses de placas y sensores, con el aporte de la empresa DFRobot, hoy veremos una placa with prestaciones muy interesante, y es 'n ideale para el desarrollo de prototipos robóticos en el control of motores and servos, d
Mission Control Box V3.0: 4 stappe
Mission Control Box V3.0: Hallo almal! Dit is 'n opgedateerde weergawe van my oorspronklike Mission Control Box. Hierdie weergawe is dieselfde basiese idee: ligte, skakelaars, 'n afteller en 'n prettige LED -staafgrafiek " kragmeter, " almal met 'n Space Shuttle -tema. Die belangrikste verskil
SONOFF Voeg Alexa en Google Home Voice Control by ZigBee Smart Devices: 3 stappe
SONOFF voeg Alexa en Google Home Voice Control by ZigBee Smart Devices: van Wi-Fi smart switches en plugs tot ZigBee smart switches en plugs, stembeheer is 'n gewilde slim handsfree beheer toegangspunt. Deur met Amazon Alexa of Google Home te werk, kan u met die slimproppe direkte beheer neem oor die gekoppelde huis
Smart Phone Control Arduino -robot: 3 stappe
Smart Phone Control Arduino Robot: Dit is 'n slimfoonbeheer Arduino robotprojek. vir hierdie projek het ek 'n PCB gemaak, so daar is geen probleem met draaddraadverbindings nie. Hierdie bord het 'n dubbele motorbestuurder en amp; 'n paar ekstra Arduino -penne, 3V, 5V, GND uit, sodat u met hierdie PCB lyn kan volg
Smart Room Control: 5 stappe
Smart Room Control: In hierdie projek wil ons leer hoe om AWS en MQTT in ons opset te gebruik. In die wêreld van tegnologie, hoe wonderlik sal dit wees om u kamer met net u skootrekenaar te beheer! Stel jou voor dat jy haastig is om tyd te kry om jou projekte te voltooi, loop