Turinys:
- 1 žingsnis: grandinė…
- 2 veiksmas: „Nexardu“su vidiniu žiniatinklio serveriu (su NTP)
- 3 žingsnis: „Nexardu“su išoriniu serveriu
- 4 žingsnis: Vertinga informacija
- 5 žingsnis: baigta
Video: „NexArdu“: išmanusis apšvietimo valdymas: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Atnaujinti
Jei sukūrėte tas pačias funkcijas naudodami „Home Assistant“. „Home Assistant“siūlo daugybę galimybių. Vystymą galite rasti čia.
Eskizas, kaip protingai valdyti namų apšvietimą per 433,92 MHz (dar žinomas kaip 433 MHz) belaidžius į X10 panašius įrenginius, pvz. Nexa.
Fonas
Kalbant apie dekoratyvinį apšvietimą, mane kažkaip vargino tai, kad kas antrą ar trečią savaitę turėdavau pakoreguoti laikmačius, kurie įjungia šviesas dėl saulės valandos pasikeitimo CET atžvilgiu. Tuo pačiu metu kai kurios naktys einame miegoti anksčiau nei kitos. Dėl šios priežasties kartais lemputės išsijungia arba „per vėlai“, arba „per anksti“. Tai, kas išdėstyta aukščiau, privertė mane susimąstyti: noriu, kad dekoratyvinis apšvietimas visada įsijungtų tuo pačiu aplinkos apšvietimo lygiu, o tada išsijungtų tam tikru laiku, priklausomai nuo to, ar esame budrūs, ar ne.
Objektyvus
Ši instrukcija išnaudoja belaidžiu būdu valdomų įrenginių, tokių kaip „System Nexa“, veikiančias 433,92 MHz dažniu, galimybes. Čia mes turime parodyti:
- Automatinis apšvietimo valdymas
- Interneto valdymas
Interneto valdymas. Vidinis ir išorinis žiniatinklio serveris
Vidinis serveris išnaudoja „Arduino Ethernet“skydo galimybę pateikti žiniatinklio serverį. Žiniatinklio serveris dalyvaus žiniatinklio kliento skambučiuose, norėdamas patikrinti ir bendrauti su „Arduino“. Tai paprastas sprendimas, turintis ribotą funkcionalumą; galimybes tobulinti žiniatinklio serverio kodą riboja „Arduino“atmintis. Išoriniam serveriui reikia nustatyti išorinį PHP žiniatinklio serverį. Ši sąranka yra sudėtingesnė ir nepalaikoma šioje pamokoje, tačiau PHP kodas/puslapis, skirtas patikrinti ir valdyti „Arduino“, turi pagrindines funkcijas. Žiniatinklio serverio tobulinimo galimybes šiuo atveju riboja išorinis žiniatinklio serveris.
Sąmata
Norėdami visiškai pasinaudoti šio eskizo teikiamomis galimybėmis, jums reikia:
- „Arduino Uno“(išbandytas naudojant R3)
- „Arduino Ethernet“skydas
- „Nexa“rinkinys ar panašus, veikiantis 433,92 MHz dažniu
- PIR (pasyvus infraraudonųjų spindulių) jutiklis, veikiantis 433,92 MHz dažniu
- 10KOhm rezistorius
- LDR
- RTC DS3231 (tik išorinio serverio versija)
- 433,92 MHz siųstuvas: XY-FST
- 433,92 MHz imtuvas: MX-JS-05V
Minimalus rekomenduojamas yra:
- „Arduino Uno“(išbandytas naudojant R3)
- „Nexa“rinkinys ar panašus, veikiantis 433,92 MHz dažniu
- 10KOhm rezistorius
- LDR
- 433,92 MHz siųstuvas: XY-FST
(Norint praleisti „Ethernet“skydą, reikia keisti eskizą, kuris nėra pateiktas šioje instrukcijoje)
„Nexa“logika. Trumpas aprašymas
„Nexa“imtuvas sužino nuotolinio valdymo pulto ID ir mygtuko ID. Kitaip tariant, kiekvienas nuotolinio valdymo pultas turi savo siuntėjo numerį, o kiekviena įjungimo/išjungimo mygtukų pora turi savo mygtuko ID. Imtuvas turi išmokti tuos kodus. Kai kuriuose „Nexa“dokumentuose teigiama, kad imtuvą galima suporuoti su iki šešių nuotolinio valdymo pultų. „Nexa“parametrai:
- Siuntėjo ID: nuotolinio valdymo pulto ID
- ButtonID: mygtukų poros numeris (įjungta/išjungta). Jis prasideda skaičiumi 0
- Grupė: taip/ne (dar žinomi kaip „Visi išjungti/įjungti“mygtukai)
- Komanda: įjungta/išjungta
Instrukciniai žingsniai. Pastaba
Čia aprašyti skirtingi žingsniai yra du skirtingi skoniai, kaip pasiekti tikslą. Nesivaržykite pasirinkti tą, kuris jums patogus. Štai indeksas:
1 žingsnis: grandinė
2 žingsnis: „Nexardu“su vidiniu žiniatinklio serveriu (su NTP)
3 žingsnis: „Nexardu“su išoriniu serveriu
4 žingsnis: Vertinga informacija
1 žingsnis: grandinė…
Prijunkite įvairius komponentus, kaip parodyta paveikslėlyje.
„Arduino“kaištis Nr. 8 į duomenų kaištį RX (imtuvo) modulyje „Arduino“kaištis#2 į duomenų kaištį RX (imtuvo) modulyje „Arduino“kaištis#7 į duomenų kaištį TX (siuntėjo) modulyje Arduino kaištis A0 į LDR
RTC konfigūracija. Reikalingas tik išorinio serverio konfigūracijai. Arduino kaištis nuo A4 iki SDA kaiščio RTC modulyje Arduino kaištis A5 į SCL kaištį RTC modulyje
2 veiksmas: „Nexardu“su vidiniu žiniatinklio serveriu (su NTP)
Bibliotekos
Šis kodas naudoja daugybę bibliotekų. Daugumą jų galima rasti per „Arduino IDE“bibliotekos valdytoją. Jei nerastumėte sąraše esančios bibliotekos, google.
Wire.hSPI.h - Reikalingas Ethernet skydasNexaCtrl.h - Nexa įrenginio valdiklis Ethernet.h - Norėdami įjungti ir rodyti Ethernet skydąRCSwitch.h - Būtinas PIRTime.h - Reikalingas RTCTimeAlarms.h - Laiko aliarmo valdymas NTP klientas
Eskizas
Žemiau pateiktas kodas išnaudoja galimybę naudoti „Arduino UNO“plokštę ne tik kaip „Nexa“įrenginių valdymo priemonę, bet taip pat turi vidinį žiniatinklio serverį. Reikėtų pridurti, kad RTC (realaus laiko laikrodis) modulis automatiškai sureguliuojamas naudojant NTP (tinklo laiko protokolą).
Prieš įkeliant kodą į „Arduino“, gali reikėti sukonfigūruoti šiuos dalykus:
- SenderId: pirmiausia turite užuosti SenderId, žr
- PIR_id: pirmiausia turite užuosti SenderId, žr
- LAN IP adresas: nustatykite savo LAN IP adresą į „Ethernet Arduino“skydą. Numatytoji vertė: 192.168.1.99
- NTP serveris: Nebūtinai būtina, tačiau gali būti naudinga ieškoti „Google“netoliese esančių NTP serverių. Numatytoji vertė: 79.136.86.176
- Kodas pritaikytas pagal CET laiko juostą. Jei reikia, koreguokite šią vertę pagal savo laiko juostą, kad būtų rodomas teisingas laikas (NTP)
„Nexa“kodų uostymas
Tam reikia prijungti bent jau RX komponentą prie „Arduino“, kaip parodyta grandinėje.
Žemiau rasite „Nexa_OK_3_RX.ino“eskizą, kuris jo rašymo metu yra suderinamas su „Nexa“įrenginiais NEYCT-705 ir PET-910.
Toliau nurodyti veiksmai:
- Suporuokite „Nexa“imtuvą su nuotolinio valdymo pultu.
- Įkelkite „Nexa_OK_3_RX.ino“į „Arduino“ir atidarykite „Serial Monitor“.
- Paspauskite nuotolinio valdymo mygtuką, valdantį „Nexa“imtuvą.
- Atkreipkite dėmesį į „RemoteID“ir „ButtonID“.
- Nustatykite šiuos skaičius ankstesnio eskizo kintamosios deklaracijos skiltyje „SenderID“ir „ButtonID“.
Norėdami perskaityti PIR ID, tiesiog naudokite tą patį eskizą (Nexa_OK_3_RX.ino) ir perskaitykite vertę „Serial Monitor“, kai PIR aptinka judesį.
3 žingsnis: „Nexardu“su išoriniu serveriu
Bibliotekos
Šis kodas naudoja daugybę bibliotekų. Daugumą jų galima rasti per „Arduino IDE“bibliotekos valdytoją. Jei nerandate sąraše esančios bibliotekos, google.
Wire.hRTClib.h - tai biblioteka iš https://github.com/MrAlvin/RTClibSPI.h - Reikalingas „Ethernet shieldNexaCtrl.h“- „Nexa“įrenginio valdiklis PIRTime.h - Reikalingas RTCTimeAlarms.h - Laiko aliarmo valdymas
Eskizas
Žemiau eskizas pasižymi dar vienu to paties skonio skoniu, šį kartą suteikiančiu galimybių, kurias gali suteikti išorinis žiniatinklio serveris. Kaip jau minėta įvade, „Išoriniam serveriui“reikia nustatyti išorinį PHP žiniatinklio serverį. Ši sąranka yra sudėtingesnė ir nepalaikoma šioje pamokoje, tačiau PHP kodas/puslapis, skirtas patikrinti ir valdyti „Arduino“, turi pagrindines funkcijas.
Prieš įkeliant kodą į „Arduino“, gali reikėti sukonfigūruoti šiuos dalykus:
- „SenderId“: pirmiausia turite užuosti „SenderId“, žr. „Nexa“kodų uostymas ankstesniame žingsnyje
- PIR_id: pirmiausia turite užuosti SenderId, žr. „Nexa“kodų šnipinėjimas ankstesniame žingsnyje
- LAN IP adresas: nustatykite savo LAN IP adresą į „Ethernet Arduino“skydą. Numatytoji vertė: 192.168.1.99
Norėdami sužinoti „Nexa“kodo uostymo procedūrą, žr. 1 veiksmą.
Papildomas failas
Įkelkite pridėtą failą nexardu4.txt į išorinį PHP serverį ir pervardykite jį į nexardu4.php
Nustatytas RTC laikas
Norėdami nustatyti laiką/datą RTC, naudoju eskizą „SetTime“, kuris yra DS1307RTC biblioteka.
4 žingsnis: Vertinga informacija
Gera žinoti elgesį
-
Kai „Arduino“veikia „šviesos automatinis valdymas“, jis gali pereiti keturias skirtingas būsenas, atsižvelgiant į aplinkos apšvietimą ir paros laiką:
- Pabudęs: Arduino laukia nakties.
- Aktyvus: atėjo naktis ir Arduino įjungė šviesas.
- Mieguistas: šviesos dega, bet ateina laikas jas išjungti. Jis prasideda „time_to_turn_off - PIR_time“, tai yra, jei „time_to_turn_off“nustatytas 22:30, o „PIR_time“nustatytas 20 minučių, tada „Arduino“įjungs ramią būseną 22:10 val.
- Ramybės būsena: naktis praeina, Arduino išjungė šviesas ir Arduino laukia, kol aušra atsibus.
- „Arduino“visada klausosi nuotolinio valdymo pulto siunčiamų signalų. Tai suteikia galimybę rodyti žibintų (įjungtų/išjungtų) būseną žiniatinklyje, kai naudojamas nuotolinio valdymo pultas.
- Nors „Arduino“budi, jis visą laiką bando išjungti šviesas, todėl „Arduino“gali užfiksuoti įjungimo signalus, kuriuos siunčia remonto valdiklis, kad įjungtų šviesas. Jei taip atsitiks, „Arduino“vėl bandys išjungti šviesą.
- Kol „Arduino“yra aktyvus, jis visą laiką bando įjungti šviesas, todėl „Arduino“gali užfiksuoti išjungimo signalus, siunčiamus nuotolinio valdymo pultu, kad būtų išjungtos šviesos. Jei taip atsitiks, „Arduino“bandys vėl įjungti šviesą.
- Ramioje būsenoje šviesas galima įjungti/išjungti nuotolinio valdymo pultu. „Arduino“neprieštaraus.
- Ramioje būsenoje PIR atgalinės atskaitos laikas bus pradėtas atstatyti nuo „time_to_turn_off - PIR_time“, taigi laikas_pasisukimo laikas padidės 20 minučių kiekvieną kartą, kai PIR aptiks judesį. Aptiktas „PIR signalas!“žinutė bus rodoma žiniatinklio naršyklėje.
- Kol „Arduino“neveikia, lemputes galima įjungti ir išjungti nuotolinio valdymo pultu. „Arduino“neprieštaraus.
- Atkuriant arba įjungus „Arduino“ciklą, jis suaktyvės. Tai reiškia, kad jei „Arduino“buvo iš naujo nustatytas po „time_turn_off“, tada „Arduino“įjungs šviesas. Kad to išvengtumėte, „Arduino“reikia įjungti rankiniu režimu (pažymėkite „Šviesos automatinis valdymas“) ir palaukite ryto, kol jis bus grąžintas į „Automatinį šviesos valdymą“.
- Kaip jau minėta, Arduino laukia aušros, kad vėl suaktyvėtų. Dėl šios priežasties sistema gali suklysti nukreipdama pakankamai stiprią šviesą į šviesos jutiklį, kuris turi viršyti „minimalaus ryškumo“slenkstį. Jei taip atsitiks, „Arduino“turi pereiti į aktyvią būseną.
- Tolerancijos reikšmė yra labai svarbi, kad sistema neįsijungtų ir neišsijungtų aplink slenkstinę minimalią šviesumo reikšmę. LED lemputės dėl savo mirgėjimo ir didelio reagavimo gali būti triukšmingo elgesio šaltinis. Padidinkite tolerancijos vertę, jei susiduriate su šia problema. Aš naudoju 7 vertę.
Gera žinoti apie kodą
- Kaip pastebėjote, kodas yra labai didelis ir naudoja daug bibliotekų. Tai sumažina laisvos atminties kiekį, reikalingą krūvai. Pastebėjau nestabilų elgesį, kai sistema buvo sustabdyta, ypač po interneto skambučių. Todėl didžiausias mano iššūkis buvo apriboti jos dydį ir įvairių kintamųjų naudojimą, kad sistema būtų stabili.
- Kodas, kuris naudoja vidinį serverį, kurį naudojau namuose, dabar veikia be problemų nuo 2016 m. Vasario mėn.
- Aš daug pastangų praturtinau kodą paaiškinimais. Pasinaudokite tuo, kad galėtumėte žaisti su įvairiais parametrais, pvz., „Nexa“kodo siuntimų skaičiumi per seriją, NTP sinchronizavimo laiku ir kt.
- Kode nėra vasaros laiko. Tai reikia koreguoti per žiniatinklio naršyklę, kai ji taikoma.
Keletas punktų, į kuriuos reikia atsižvelgti
- Pridėkite antenas prie radijo dažnio (RF) modulių TX ir RX. Sutaupysite laiko skųstis dviem pagrindiniais klausimais: atsparumu ir RF signalo diapazonu. Aš naudoju 50 omų vielą, kurios ilgis yra 17,28 cm (6,80 colio).
- Šis nesuderinamas elementas gali veikti ir su kitomis namų automatikos sistemomis, pvz., „Proove“. Viena iš daugelio įvykdytų sąlygų yra jų veikimas 433,92 MHz dažniu.
- Didelis „Arduino“galvos skausmas yra susidoroti su bibliotekomis, kurios laikui bėgant gali būti atnaujintos ir staiga nebebus suderinamos su jūsų „senu“eskizu; ta pati problema gali kilti atnaujinant „Arduino IDE“. Saugokitės, kad tai gali būti mūsų atvejis -taip, ir mano problema.
- Keli vienu metu veikiantys žiniatinklio klientai su skirtingais šviesos režimais sukuria „mirksinčią“būseną.
Ekrano kopija
Aukščiau esančioje paveikslėlių karuselėje rasite tinklalapio ekrano kopiją, rodomą skambinant „Arduino“per žiniatinklio naršyklę. Atsižvelgiant į numatytąją kodo IP konfigūraciją, URL būtų
Vienas aspektas, kurį galima patobulinti, yra mygtuko „pateikti“išdėstymas, nes jis įsigalioja visose įvesties dėžutėse, o ne tik „šviesos automatiniame valdyme“, kaip galima pamanyti. Kitaip tariant, jei norite pakeisti bet kurią iš galimų reikšmių, visada turite paspausti mygtuką „Pateikti“.
Išsami/išplėstinė dokumentacija
Pridėjau šiuos failus, kad jie galėtų padėti jums suprasti visą sprendimą, ypač trikčių šalinimui ir tobulinimui.
Arduino_NexaControl_IS.pdf pateikia dokumentaciją apie vidinio serverio sprendimą.
Arduino_NexaControl_ES.pdf pateikia dokumentaciją apie išorinio serverio sprendimą.
Išorinės nuorodos
„Nexa“sistema (švedų)
5 žingsnis: baigta
Čia viskas baigta ir veikia!
„Arduino Uno“dėklą „Thingiverse“galima rasti kaip „Arduino Uno Rev3 with Ethernet Shield XL-case“.
Rekomenduojamas:
„IlluMOONation“- išmanusis apšvietimo modelis: 7 žingsniai
„IlluMOONation“- išmanusis apšvietimo modelis: ar kada nors pažvelgėte į naktinį dangų ir nematėte žvaigždžių? Milijonai vaikų visame pasaulyje niekada nepatirs Paukščių tako, kuriame jie gyvena, nes vis dažniau naudojamas dirbtinis apšvietimas naktį, kuri neįjungta
Daiktu internetu pagrįstas išmanusis sodininkystė ir išmanusis žemės ūkis naudojant ESP32: 7 žingsniai
Daiktu internetu pagrįstas išmanusis sodininkystė ir išmanusis žemės ūkis naudojant ESP32: pasaulis keičiasi kaip laikas ir žemės ūkis. Šiais laikais žmonės integruoja elektroniką visose srityse, o žemės ūkis nėra išimtis. Šis elektronikos sujungimas žemės ūkyje padeda ūkininkams ir žmonėms, kurie tvarko sodus. Tai
Išmanusis telefonas valdomas išmanusis pirkinių krepšelis: 7 žingsniai
Išmanusis telefonas valdomas išmanusis pirkinių krepšelis: lankytis prekybos centruose gali būti smagu. Tačiau pirkinių krepšelio vilkimas, kai jį užpildote daiktais, yra labai erzinantis dalykas. Skausmas stumiant jį per tuos siaurus praėjimus, darant tuos staigius posūkius! Taigi, čia (savotiškas) pasiūlymas, kurį jūs
Išmanusis rinkimas - automatiškai taisantis išmanusis tradicinis telefonas: 8 žingsniai
„Smart Dial“-automatinis taisomasis išmanusis tradicinis telefonas: „Smart Dial“yra intelektualus automatiškai taisomas telefonas, sukurtas senjorams, turintiems specialių poreikių, ir leidžia senjorams rinkti tiesiogiai iš įprastų telefonų, prie kurių jie yra įpratę. Tik savanoriaudamas vietos senjorų priežiūros centre aš
I2C LCD ekrano foninio apšvietimo valdymas 1602/2004 arba HD44780 ir tt: 4 žingsniai
„I2C“foninio apšvietimo valdymas LCD ekrane 1602/2004 arba HD44780 ir kt. Ši instrukcija parodo, kaip galite valdyti LCD ekrano apšvietimą naudodami I2C ADC modulį. Nuėmus apkarpymo potenciometrą, kontrastą galima valdyti taip pat