Kazalo:
- 1. korak: Vezje …
- Korak: Nexardu z notranjim spletnim strežnikom (vključno z NTP)
- Korak: Nexardu z zunanjim strežnikom
- 4. korak: Dragocene informacije
- 5. korak: Končano
Video: NexArdu: Pametni nadzor osvetlitve: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Nadgradnja
Če ste razvili isto funkcijo z uporabo domačega pomočnika. Domači pomočnik ponuja ogromno možnosti. Razvoj najdete tukaj.
Skica za pameten nadzor domače osvetlitve prek 433,92 MHz (znanih tudi 433 MHz) brezžičnih naprav, podobnih X10, npr. Nexa.
Ozadje
Kar zadeva dekorativno osvetlitev, me je nekako utrudilo, da sem moral vsak drugi ali tretji teden prilagoditi časovnike, ki prižgejo luči zaradi premikanja sončne ure glede na CET. nekatere noči gremo spat prej kot druge. Zaradi tega se včasih luči izklopijo "prepozno" ali "prezgodaj". Zgoraj navedeno me je spravilo v misel: želim, da se dekorativna osvetlitev vklopi vedno na isti ravni zunanje svetlobe in se nato ob določenem času izklopi, odvisno od tega, ali smo budni ali ne.
Objektivno
To navodilo izkorišča možnosti brezžično vodenih naprav, kot je System Nexa, ki delujejo na frekvenci 433,92 MHz. Tukaj moramo predstaviti:
- Avtomatiziran nadzor osvetlitve
- Spletni nadzor
Spletni nadzor. Notranji ali zunanji spletni strežnik
Notranji strežnik izkorišča možnost, da Arduino Ethernet ščit zagotavlja spletni strežnik. Spletni strežnik se bo udeležil klicev spletnega odjemalca za preverjanje in interakcijo z Arduinom. To je neposredna rešitev z omejeno funkcionalnostjo; možnosti za izboljšanje kode spletnega strežnika so omejene s pomnilnikom Arduina. Zunanji strežnik zahteva nastavitev zunanjega spletnega strežnika PHP. Ta nastavitev je bolj zapletena in jo ta vadnica ne podpira, vendar ima koda/stran PHP za preverjanje in usmerjanje Arduina osnovne funkcije. Možnosti izboljšanja spletnega strežnika so v tem primeru omejene z zunanjim spletnim strežnikom.
Račun za materiale
Če želite v celoti izkoristiti možnosti, ki jih ponuja ta skica, potrebujete:
- Arduino Uno (preizkušeno na R3)
- Arduino Ethernet ščit
- Komplet Nexa ali podoben, ki deluje pri 433,92 MHz
- PIR (pasivni infrardeči) senzor, ki deluje pri 433,92 MHz
- 10Kohmski upor
- LDR
- RTC DS3231 (samo različica zunanjega strežnika)
- Oddajnik 433,92 MHz: XY-FST
- Sprejemnik 433,92 MHz: MX-JS-05V
Najmanjša priporočena vrednost je:
- Arduino Uno (preizkušeno na R3)
- Komplet Nexa ali podoben, ki deluje pri 433,92 MHz
- 10Kohmski upor
- LDR
- Oddajnik 433,92 MHz: XY-FST
(Izpustitev ščita Ethernet zahteva spremembe skice, ki niso navedene v tem navodilu)
Logika Nexa. Kratek opis
Sprejemnik Nexa spozna ID daljinskega upravljalnika in ID gumba. Z drugimi besedami, vsak daljinski upravljalnik ima svojo številko pošiljatelja in vsak par gumbov za vklop/izklop ima svoj ID gumba. Sprejemnik se mora naučiti teh kod. Nekateri dokumenti Nexa navajajo, da je sprejemnik mogoče povezati z največ šestimi daljinskimi upravljalniki. Parametri Nexa:
- SenderID: ID daljinskega upravljalnika
- ButtonID: številka par gumbov (vklop/izklop). Začne se s številko 0
- Skupina: da/ne (znani tudi kot gumbi »Vklop/izklop«)
- Ukaz: vklop/izklop
Koraki po navodilih. Opomba
Različni koraki, opisani tukaj, ponujajo dva različna okusa, kako doseči cilj. Prosto izberite tistega, ki vam ustreza. Tukaj je indeks:
1. korak: Vezje
2. korak: Nexardu z notranjim spletnim strežnikom (z NTP)
3. korak: Nexardu z zunanjim strežnikom
4. korak: dragocene informacije
1. korak: Vezje …
Različne komponente povežite, kot je prikazano na sliki.
Arduino pin#8 na podatkovni pin na modulu RX (sprejemnik) Arduino pin#2 na podatkovni pin na modulu RX (sprejemnik) Arduino pin#7 na podatkovni pin na modulu TX (pošiljatelj) Arduino pin A0 do LDR
Konfiguracija RTC. Potrebujete samo pri konfiguraciji zunanjega strežnika. Arduino pin A4 do SDA pin na modulu RTC Arduino pin A5 do SCL pin na modulu RTC
Korak: Nexardu z notranjim spletnim strežnikom (vključno z NTP)
Knjižnice
Ta koda uporablja veliko knjižnic. Večino jih je mogoče najti prek "Upravitelja knjižnice" Arduino IDE. Če ne najdete knjižnice, ki je navedena na seznamu, poiščite google.
Wire.hSPI.h - Zahteva Ethernet št. NexaCtrl.h - Krmilnik naprave Nexa Ethernet.h - Omogočanje in delovanje ethernetnega ščita NTP odjemalec
Skica
Spodnja koda izkorišča možnost uporabe plošče Arduino UNO ne le kot sredstva za nadzor naprav Nexa, ampak tudi z notranjim spletnim strežnikom. Opomba, ki jo je treba dodati, je, da se modul RTC (ura realnega časa) samodejno prilagodi prek NTP (omrežni časovni protokol).
Preden kodo naložite v Arduino, boste morda morali konfigurirati naslednje:
- SenderId: najprej morate povohati SenderId, glejte spodaj
- PIR_id: najprej morate povohati SenderId, glejte spodaj
- Naslov IP LAN: nastavite IP vašega LAN -a na svoj Ethernet Arduino ščit. Privzeta vrednost: 192.168.1.99
- Strežnik NTP: Ni nujno potreben, vendar bi bilo dobro, če iščete strežnike NTP v vaši bližini. Privzeta vrednost: 79.136.86.176
- Koda je prilagojena časovnemu pasu CET. To vrednost, če je potrebno, prilagodite svojemu časovnemu pasu, da se prikaže pravilen čas (NTP)
Vdihavanje kod Nexa
Za to morate priključiti vsaj komponento RX na Arduino, kot je prikazano v vezju.
Spodaj poiščite skico Nexa_OK_3_RX.ino, ki je v času pisanja združljiva z napravami Nexa NEYCT-705 in PET-910.
Koraki, ki jih je treba upoštevati, so:
- Sprejemnik Nexa povežite z daljinskim upravljalnikom.
- Naložite Nexa_OK_3_RX.ino na Arduino in odprite "Serijski monitor".
- Pritisnite gumb za daljinski upravljalnik, ki upravlja sprejemnik Nexa.
- Upoštevajte "RemoteID" in "ButtonID".
- Te številke nastavite pod SenderID in ButtonID na deklaraciji spremenljivke prejšnje skice.
Če želite prebrati ID PIR, uporabite isto skico (Nexa_OK_3_RX.ino) in preberite vrednost na "Serijskem monitorju", ko PIR zazna gibanje.
Korak: Nexardu z zunanjim strežnikom
Knjižnice
Ta koda uporablja veliko knjižnic. Večino je mogoče najti prek "Upravitelja knjižnice" Arduino IDE. Če knjižnice, ki je na seznamu, ne najdete, poiščite google.
Wire.hRTClib.h - to je knjižnica s spletnega mesta https://github.com/MrAlvin/RTClibSPI.h - Zahteva Ethernet shieldNexaCtrl.h - Krmilnik naprave NexaEthernet.h - Omogočanje in delovanje ethernetnega ščitaRCSwitch.h - Zahtevano za PIRTime.h - Zahtevano za RTCTimeAlarms.h - Upravljanje časovnega alarma
Skica
Spodnja skica prikazuje še en okus iste stvari, tokrat pa povečuje možnosti, ki jih lahko ponudi zunanji spletni strežnik. Kot smo že omenili v uvodu, zunanji strežnik zahteva nastavitev zunanjega spletnega strežnika PHP. Ta nastavitev je bolj zapletena in jo ta vadnica ne podpira, vendar ima koda/stran PHP za preverjanje in usmerjanje Arduina osnovne funkcije.
Preden kodo naložite v Arduino, boste morda morali konfigurirati naslednje:
- SenderId: najprej morate povohati SenderId, glejte Vdihavanje kod Nexa v prejšnjem koraku
- PIR_id: najprej morate povohati SenderId, glejte Vdihavanje kod Nexa v prejšnjem koraku
- Naslov IP LAN: nastavite IP vašega LAN -a na svoj Ethernet Arduino ščit. Privzeta vrednost: 192.168.1.99
Za postopek vdihavanja kode Nexa glejte 1. korak.
Dopolnilna datoteka
Naloženo datoteko nexardu4.txt naložite na zunanji strežnik PHP in jo preimenujte v nexardu4.php
Nastavljen čas RTC
Za nastavitev časa/datuma na RTC -ju uporabim skico SetTime, ki združuje knjižnico DS1307RTC.
4. korak: Dragocene informacije
Vedenje je dobro poznati
-
Ko je Arduino pod "Light Automatic Control", lahko prehaja skozi štiri različna stanja glede na osvetlitev okolice in čas dneva:
- Zbujen: Arduino čaka, da pride noč.
- Aktivno: Prišla je noč in Arduino je prižgal luči.
- Somnolent: Luči so prižgane, vendar se bliža čas, da jih ugasnete. Začne se pri "time_to_turn_off - PIR_time", to je, če je time_to_turn_off nastavljen na 22:30 in PIR_time nastavljen na 20 minut, bo Arduino vstopil v zaspano stanje ob 22:10.
- Neaktiven: Noč mineva, Arduino je ugasnil luči in Arduino čaka, da se zora zbudi.
- Arduino vedno posluša signale, ki jih pošiljajo daljinski upravljalniki. To vsebuje možnost prikaza stanja luči (vklop/izklop) v spletu, ko uporabljate daljinski upravljalnik.
- Medtem ko je Arduino v budnem stanju, poskuša ves čas ugasniti luči, zato lahko Arduino ujame signale VKLOP, ki jih pošlje daljinski upravljalnik za vklop luči. Če se to zgodi, bo Arduino znova poskušal ugasniti luči.
- Medtem ko je Arduino aktiven, poskuša ves čas prižgati luči, zato lahko signale OFF, ki jih pošlje daljinski upravljalnik za izklop luči, ujame Arduino. Če se to zgodi, bo Arduino znova poskušal prižgati luči.
- V zaspanem stanju lahko luči vklopite/izklopite z daljinskim upravljalnikom. Arduino ne bo nasprotoval.
- V zaspanem stanju se bo odštevanje PIR začelo ponastavljati od "time_to_turn_off - PIR_time", zato se time_to_turn_off podaljša za 20 minut vsakič, ko PIR zazna gibanje. "Zaznan signal PIR!" Ko se to zgodi, bo v spletnem brskalniku prikazano sporočilo.
- Medtem ko Arduino miruje, lahko luči vklopite in izklopite z daljinskim upravljalnikom. Arduino ne bo nasprotoval.
- Ponastavitev ali cikel vklopa Arduina ga bosta pripeljala v aktivni način. To pomeni, da če bo Arduino ponastavljen po času_turn_off, bo Arduino prižgal luči. Da bi se temu izognili, je treba Arduino preklopiti v ročni način (označite polje »Samodejno krmiljenje svetlobe«) in počakajte do jutra, da se vrnete na »Lahki samodejni nadzor«.
- Kot že omenjeno, Arduino čaka, da se zora spet aktivira. Zaradi tega lahko sistem zavedete tako, da usmerite dovolj močno svetlobo proti svetlobnemu senzorju, ki bo presegel prag "minimalne svetilnosti". Če se to zgodi, bo Arduino prešel v aktivno stanje.
- Vrednost tolerance je zelo pomembna, da se prepreči vklop in izklop sistema okoli mejne vrednosti Minimalna svetilnost. Led luči so zaradi utripanja in visoke odzivnosti lahko vir vedenja. Če naletite na to težavo, povečajte tolerančno vrednost. Uporabljam vrednost 7.
Dobro je vedeti o kodi
- Kot lahko opazite, je koda zelo velika in uporablja veliko knjižnic. To ogroža količino prostega pomnilnika, ki je potreben za kup. V preteklosti sem opazil nestabilno vedenje, zaradi katerega se je sistem ustavil, zlasti po spletnih klicih. Zato je bil moj največji izziv omejiti njegovo velikost in uporabo različnih spremenljivk, da bi sistem postal stabilen.
- Koda, ki izkorišča notranji strežnik, ki jo uporabljam doma, zdaj deluje brez težav od februarja 2016.
- Veliko sem si prizadeval za obogatitev kodeksa z razlagami. Izkoristite to za igranje z različnimi parametri, kot so število pošiljanj kode Nexa na niz, čas sinhronizacije NTP itd.
- Koda ne vsebuje poletnega časa. To je treba prilagoditi prek spletnega brskalnika, ko se uporablja.
Nekaj točk, ki jih je treba upoštevati
- Dodajte antene modulom radijskih frekvenc TX in RX (RF). Prihranili boste čas, ko se pritožujete glede dveh glavnih točk: odpornosti in dosega RF signala. Uporabljam 50Ohms žico dolžine 17,28 cm (6,80 palca).
- Ta vsiljivec lahko deluje tudi z drugimi sistemi za avtomatizacijo doma, na primer Proove. Eden od mnogih pogojev, ki jih je treba izpolniti, je, da delujejo na frekvenci 433,92 MHz.
- Velik glavobol pri Arduinu je obravnava knjižnic, ki se lahko sčasoma posodobijo in nenadoma ne bodo več združljive z vašo "staro" skico; enaka težava se lahko pojavi pri nadgradnji vašega Arduino IDE. Pazite, da bi to lahko bil naš primer -ja, tudi moj problem.
- Več sočasnih spletnih odjemalcev z različnimi svetlobnimi načini ustvari stanje »utripajoče«.
Posnetek zaslona
Na zgornjem vrtiljaku s slikami najdete posnetek zaslona spletne strani, ki se prikaže, ko pokličete Arduino prek spletnega brskalnika. Glede na privzeto konfiguracijo IP kode bi bil URL
Eden od vidikov, ki bi ga lahko izboljšali, je pozicioniranje gumba »pošlji«, saj začne veljati za vsa polja za vnos in ne le za »Samodejno samodejno krmiljenje«, kot bi si kdo mislil. Z drugimi besedami, če želite spremeniti katero koli od možnih vrednosti, morate vedno pritisniti gumb "pošlji".
Podrobna/napredna dokumentacija
Priložil sem naslednje datoteke, da vam lahko pomagajo razumeti celotno rešitev, zlasti za odpravljanje težav in izboljšanje.
Arduino_NexaControl_IS.pdf vsebuje dokumentacijo o rešitvi Internal Server.
Arduino_NexaControl_ES.pdf vsebuje dokumentacijo o rešitvi za zunanji strežnik.
Zunanje reference
Sistem Nexa (švedski)
5. korak: Končano
Tukaj je vse končano in v akciji!
Ohišje Arduino Uno lahko v Thingiverse najdete kot "Arduino Uno Rev3 z ohišjem Ethernet Shield XL".
Priporočena:
MOD: Vklop/izklop osvetlitve ozadja LCD zaslona Ender 3: 6 korakov
MOD: Vklop/izklop osvetlitve ozadja LCD zaslona Ender 3: Mod za vklop/izklop osvetlitve zaslona ponoči. Zdaj lahko izklopite osvetlitev ozadja
IlluMOONation - pametni model osvetlitve: 7 korakov
IlluMOONation - model pametne razsvetljave: Ste kdaj pogledali v nočno nebo in niste videli nobene zvezde? Milijoni otrok po vsem svetu zaradi povečane in razširjene uporabe umetne svetlobe nikoli ne bodo doživeli Mlečne poti, kjer živijo ponoči tega ni
Samodejni sistem osvetlitve akvarija: 6 korakov
Avtomatski sistem osvetlitve akvarija: Pozdravljeni vsi! V današnjem projektu vam bom pokazal, kako ustvariti avtomatiziran sistem razsvetljave za vaš akvarij. Z uporabo krmilnika Wifi in aplikacije Magic Home WiFi sem lahko brezžično spremenil barvo in svetlost LED. Nazadnje,
Leseni ključi Macbook (s funkcijo osvetlitve ozadja): 7 korakov
Leseni ključi Macbook (s funkcijo osvetlitve ozadja): Uvod Računalniki Mac so bili v zadnjih nekaj letih močno spremenjeni. To se lahko razlikuje glede na barve, nalepke, gravure in drugo. Leseni ključi na macbooku so me vedno navdušili. Na spletu jih lahko kupite na različnih mestih za približno 70 USD ali
Nadzor osvetlitve ozadja I2C LCD zaslona 1602 /2004 ali HD44780 itd.: 4 koraki
Upravljanje osvetlitve ozadja I2C LCD zaslona 1602 /2004 ali HD44780 itd.: Ta navodila kažejo, kako lahko upravljate osvetlitev ozadja LCD zaslona z modulom ADC I2C. Kontrast lahko na enak način nadzirate tudi po odstranitvi potenciometra za obrezovanje