Obsah:

NexArdu: Inteligentné ovládanie osvetlenia: 5 krokov
NexArdu: Inteligentné ovládanie osvetlenia: 5 krokov

Video: NexArdu: Inteligentné ovládanie osvetlenia: 5 krokov

Video: NexArdu: Inteligentné ovládanie osvetlenia: 5 krokov
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, November
Anonim
NexArdu: Inteligentné ovládanie osvetlenia
NexArdu: Inteligentné ovládanie osvetlenia

Aktualizácia

Ak ste vyvinuli rovnakú funkciu pomocou Home Assistant. Home Assistant ponúka obrovské množstvo možností. Vývoj nájdete tu.

Náčrt na inteligentné ovládanie domáceho osvetlenia prostredníctvom 433,92 MHz (alias 433 MHz) bezdrôtových zariadení podobných X10, napr. Nexa.

Pozadie

Pokiaľ ide o dekoratívne osvetlenie, bolo pre mňa nejakým spôsobom únavné, že som každý druhý alebo tretí týždeň musel prestavovať časovače, ktoré zapínajú svetlá, kvôli posunu slnečnej hodiny vzhľadom na SEČ. Zároveň niektoré noci ideme spať skôr ako ostatné. Z tohto dôvodu sa niekedy svetlá vypnú buď „príliš neskoro“alebo „príliš skoro“. Vyššie uvedené ma vyzvalo, aby som premýšľal: Chcem, aby sa dekoratívne osvetlenie zapínalo vždy na rovnakej úrovni okolitého svetla a potom sa v určitom čase vypínalo podľa toho, či sme hore alebo nie.

Objektívny

Tento návod využíva možnosti zariadení bezdrôtovo ovládaných, ako je System Nexa, pracujúcich na frekvencii 433,92 MHz. Tu uvádzame:

  1. Automatická kontrola osvetlenia
  2. Ovládanie na webe

Ovládanie na webe. Interný vs externý webový server

Interný server využíva možnosť ethernetového štítu Arduino na poskytnutie webového servera. Webový server bude navštevovať hovory webových klientov, aby skontroloval a komunikoval s Arduinom. Toto je priame riešenie s obmedzenou funkčnosťou; možnosti vylepšenia kódu webového servera sú obmedzené pamäťou Arduina. Externý server vyžaduje zriadenie externého webového servera PHP. Toto nastavenie je komplikovanejšie a tento návod ho nepodporuje, ale kód/stránka PHP na kontrolu a riadenie Arduina má základnú funkciu. Možnosti vylepšenia webového servera sú v tomto prípade obmedzené externým webovým serverom.

Kusovník

Aby ste naplno využili možnosti, ktoré tento náčrt ponúka, potrebujete:

  1. Arduino Uno (testované na R3)
  2. Ethernetový štít Arduino
  3. Súprava Nexa alebo podobná, ktorá pracuje na frekvencii 433,92 MHz
  4. Senzor PIR (pasívny infračervený) pracujúci na frekvencii 433,92 MHz
  5. Rezistor 10 kOhms
  6. LDR
  7. A RTC DS3231 (iba verzia pre externý server)
  8. Vysielač 433,92 MHz: XY-FST
  9. Prijímač 433,92 MHz: MX-JS-05V

Odporúčané minimum je:

  1. Arduino Uno (testované na R3)
  2. Súprava Nexa alebo podobná, ktorá pracuje na frekvencii 433,92 MHz
  3. Rezistor 10 kOhms
  4. LDR
  5. Vysielač 433,92 MHz: XY-FST

(Vynechanie ethernetového štítu si vyžaduje úpravy náčrtu, ktorý nie je súčasťou tohto návodu)

Logika Nexa. Stručný popis

Prijímač Nexa sa učí ID diaľkového ovládača a ID tlačidla. Inými slovami, každý diaľkový ovládač má svoje číslo odosielateľa a každý pár tlačidiel zapnutia/vypnutia má svoje ID tlačidla. Prijímač sa musí tieto kódy naučiť. Niektoré dokumenty Nexa uvádzajú, že prijímač je možné spárovať až so šiestimi diaľkovými ovládačmi. Parametre Nexa:

  • SenderID: ID diaľkového ovládača
  • ButtonID: číslo páru tlačidiel (zapnuté/vypnuté). Začína sa číslom 0
  • Skupina: áno/nie (alias tlačidlá „Všetko vypnúť/zapnúť“)
  • Príkaz: zapnúť/vypnúť

Pokyny, ako postupovať. Poznámka

Rôzne kroky opísané v tomto texte majú ponúknuť dve rôzne príchute, ako dosiahnuť cieľ. Neváhajte si vybrať ten, ktorý vám vyhovuje. Tu je index:

Krok č. 1: Okruh

Krok č. 2: Nexardu s interným webovým serverom (s NTP)

Krok č. 3: Nexardu s externým serverom

Krok č. 4: Cenné informácie

Krok 1: Okruh…

Okruh…
Okruh…

Pripojte rôzne komponenty tak, ako je to znázornené na obrázku.

Pin Arduino č. 8 na dátový kolík na module RX (prijímač) Arduino kolík č. 2 na dátový kolík na module RX (prijímač) Arduino kolík č. 7 na dátový kolík na module TX (odosielateľ) Arduino kolík A0 až LDR

Konfigurácia RTC. Potrebné iba pri konfigurácii externého servera. Pin Arduino A4 na SDA na module RTC Arduino pin A5 na SCL pin na module RTC

Krok 2: Nexardu s interným webovým serverom (s NTP)

Knižnice

Tento kód využíva množstvo knižníc. Väčšinu z nich nájdete prostredníctvom „Správcu knižníc“v Arduino IDE. Ak by ste nenašli uvedenú knižnicu, googlite.

Wire.hSPI.h - vyžaduje ethernetový štít NTP klient

Skica

Nasledujúci kód využíva možnosť použitia dosky Arduino UNO nielen ako prostriedku na ovládanie zariadení Nexa, ale obsahuje aj interný webový server. Poznámka, ktorú je potrebné dodať, je, že modul RTC (hodiny v reálnom čase) sa automaticky upravuje prostredníctvom protokolu NTP (Network Time Protocol).

Pred nahraním kódu do Arduina bude možno potrebné nakonfigurovať nasledujúce:

  • SenderId: Najprv musíte čuchať SenderId, pozri nižšie
  • PIR_id: Najprv musíte čuchať SenderId, pozri nižšie
  • Adresa IP LAN: nastavte IP siete LAN na štít Ethernet Arduino. Predvolená hodnota: 192.168.1.99
  • Server NTP: Nie je to úplne nevyhnutné, ale mohlo by byť dobré vygoogliť servery NTP vo vašom okolí. Predvolená hodnota: 79.136.86.176
  • Kód je upravený pre časové pásmo SEČ. Ak je to potrebné, upravte túto hodnotu podľa svojho časového pásma, aby sa zobrazoval správny čas (NTP)

Čuchanie kódov Nexa

Na to musíte pripojiť -najmenej komponent RX k Arduinu, ako je znázornené v obvode.

Nižšie nájdete náčrt Nexa_OK_3_RX.ino, ktorý bol v čase písania článku kompatibilný so zariadeniami Nexa NEYCT-705 a PET-910.

Nasledujú nasledujúce kroky:

  1. Spárujte prijímač Nexa s diaľkovým ovládaním.
  2. Vložte Nexa_OK_3_RX.ino do Arduina a otvorte „Sériový monitor“.
  3. Stlačte tlačidlo diaľkového ovládača, ktoré ovláda prijímač Nexa.
  4. Všimnite si „RemoteID“a „ButtonID“.
  5. Nastavte tieto čísla pod SenderID a ButtonID na deklarácii premennej predchádzajúceho náčrtu.

Ak si chcete prečítať Id PIR, použite rovnaký náčrt (Nexa_OK_3_RX.ino) a prečítajte si hodnotu na „Sériovom monitore“, keď PIR detekuje pohyb.

Krok 3: Nexardu s externým serverom

Knižnice

Tento kód využíva množstvo knižníc. Väčšinu z nich nájdete prostredníctvom „Správcu knižníc“v Arduino IDE. Ak nenájdete uvedenú knižnicu, vyhľadajte na Googli.

Wire.hRTClib.h - toto je knižnica z https://github.com/MrAlvin/RTClibSPI.h - Vyžaduje ethernetový štítNexaCtrl.h - Ovládač zariadenia NexaEthernet.h - Povolenie a používanie ethernetového štítuRCSwitch.h - Vyžaduje sa pre PIRTime.h - Vyžadované pre RTCTimeAlarms.h - Správa časového alarmu aREST.h - pre služby RESTful API využívané externým serveromairair/wdt.h - spracovanie časovača Watchdog

Skica

Nižšie uvedený náčrt predstavuje ďalšiu príchuť tej istej veci, tentoraz posilňujúcu možnosti, ktoré môže poskytnúť externý webový server. Ako už bolo spomenuté v úvode, externý server vyžaduje zriadenie externého webového servera PHP. Toto nastavenie je komplikovanejšie a tento návod ho nepodporuje, ale kód/stránka PHP na kontrolu a riadenie Arduina má základnú funkciu.

Pred nahraním kódu do Arduina bude možno potrebné nakonfigurovať nasledujúce:

  • SenderId: Najprv musíte čuchať SenderId, pozrite si Čuchanie kódov Nexa v predchádzajúcom kroku
  • PIR_id: Najprv musíte čuchať SenderId, viď Čuchanie kódov Nexa v predchádzajúcom kroku
  • Adresa IP LAN: nastavte IP siete LAN na štít Ethernet Arduino. Predvolená hodnota: 192.168.1.99

Postup pri čuchaní kódu Nexa nájdete v kroku č. 1.

Doplnkový súbor

Nahrajte priložený súbor nexardu4.txt na svoj externý server PHP a premenujte ho na nexardu4.php

Nastavený čas RTC

Na nastavenie času/dátumu v RTC používam náčrt SetTime, ktorý je súčasťou knižnice DS1307RTC.

Krok 4: Cenné informácie

Cenné informácie
Cenné informácie
Cenné informácie
Cenné informácie

Dobré vedieť správanie

  1. Keď je Arduino pod „automatickým riadením svetla“, môže prechádzať štyrmi rôznymi stavmi v závislosti od okolitého osvetlenia a dennej doby:

    1. Prebudene: Arduino čaká na nadchádzajúcu noc.
    2. Aktívne: Prišla noc a Arduino zapol svetlá.
    3. Somnolent: Svetlá sú zapnuté, ale blíži sa čas ich vypnutia. Začína sa to na „time_to_turn_off - PIR_time“, to znamená, že ak je time_to_turn_off nastavený na 22:30 a PIR_time na 20 minút, Arduino vstúpi do somnolentného stavu o 22:10.
    4. Spiaci: Noc prechádza, Arduino vypol svetlá a Arduino čaká, kým sa svitanie prebudí.
  2. Arduino vždy počúva signály vysielané diaľkovými ovládačmi. Táto funkcia ponúka možnosť zobraziť stav svetiel (zapnuté/vypnuté) na webe pri použití diaľkového ovládača.
  3. Aj keď je Arduino v bdelom stave, pokúša sa neustále vypínať svetlá, Arduino však môže zachytiť signály ZAP odoslané ovládačom remonte na zapnutie svetiel. Ak k tomu dôjde, Arduino sa pokúsi znova vypnúť svetlá.
  4. Kým je Arduino aktívny, pokúša sa zapnúť svetlá stále, preto signály Arduino môžu zachytávať signály VYPNUTÉ odoslané diaľkovým ovládaním na vypnutie svetiel. Ak k tomu dôjde, Arduino sa pokúsi znova zapnúť svetlá.
  5. V somnolentnom stave je možné svetlá zapnúť/vypnúť pomocou diaľkového ovládača. Arduino nebude pôsobiť.
  6. V somnolentnom stave sa odpočítavanie PIR začne resetovať od „time_to_turn_off - PIR_time“, a tak sa time_to_turn_off predĺži o 20 minút zakaždým, keď PIR detekuje pohyb. „Zistený signál PIR!“Keď sa to stane, správa sa zobrazí vo webovom prehliadači.
  7. Kým je Arduino v kľude, svetlá je možné zapínať a vypínať pomocou diaľkového ovládača. Arduino nebude pôsobiť.
  8. Resetovací alebo napájací cyklus Arduina ho uvedie do aktívneho režimu. To znamená, že ak bol Arduino resetovaný po time_turn_off, potom Arduino zapne svetlá. Aby sa tomu zabránilo, Arduino musí byť prepnuté do manuálneho režimu (začiarknite políčko „Automatické ovládanie svetla“) a počkajte do rána, kým sa vráti k „Automatickému riadeniu svetla“.
  9. Ako už bolo spomenuté, Arduino čaká, kým sa svitanie opäť aktivuje. Z tohto dôvodu môže byť systém oklamaný nasmerovaním dostatočne silného svetla na svetelný senzor, ktorý má prekročiť prah „minimálnej svietivosti“. Ak k tomu dôjde, Arduino sa zmení na aktívny stav.
  10. Hodnota tolerancie je veľmi dôležitá, aby sa zabránilo kmitaniu systému okolo prahovej hodnoty minimálnej svietivosti. LED svetlá, kvôli svojmu blikaniu a vysokej odozve, môžu byť zdrojom mávania. Ak sa vyskytne tento problém, zvýšte hodnotu tolerancie. Používam hodnotu 7.

Je dobré vedieť o kóde

  1. Ako si môžete všimnúť, kód je veľmi veľký a používa značné množstvo knižníc. To kompromituje množstvo voľnej pamäte potrebnej pre haldu. V minulosti som si všimol nestabilné správanie, keď sa systém zastavil, najmä po webových hovoroch. Preto bolo najväčšou výzvou obmedziť jeho veľkosť a používanie rôznych premenných, aby bol systém stabilný.
  2. Kód, ktorý využíva interný server -mnou používaný doma, beží od februára 2016 bez problémov.
  3. Vyvinul som značné úsilie na obohatenie kódu o vysvetlenia. Využite to a hrajte s rôznymi parametrami, ako je počet odoslaných kódov Nexa za sériu, synchronizačný čas NTP atď.
  4. Kód neobsahuje letný čas. Keď je to potrebné, je to potrebné upraviť prostredníctvom webového prehliadača.

Niektoré body na zváženie

  1. Pridajte antény k rádiofrekvenčným (RF) modulom TX a RX. Ušetrí vám to čas sťažovaním sa na dva hlavné body: odolnosť a dosah RF signálu. Používam drôt 50 Ohmov 17,28 cm (6,80 palca) dlhý.
  2. Táto neštruktúrovateľná môže fungovať aj s inými systémami domácej automatizácie, ako je napríklad Proove. Jednou z mnohých podmienok, ktoré je potrebné splniť, je nechať ich pracovať na frekvencii 433,92 MHz.
  3. Veľkou bolesťou hlavy s Arduino je vysporiadať sa s knižnicami, ktoré sa môžu časom aktualizovať a zrazu nebudú kompatibilné s vašim „starým“náčrtom; rovnaký problém môže nastať pri aktualizácii vášho Arduino IDE. Dávajte si pozor, že to môže byť náš prípad -áno, aj môj problém.
  4. Viaceré súbežné webové klienty s rôznymi režimami svetla vytvárajú stav „blikania“.

Snímka obrazovky

V kruhovom obrázku vyššie nájdete snímku obrazovky webovej stránky, ktorá sa zobrazí po zavolaní Arduina prostredníctvom webového prehliadača. Vzhľadom na predvolenú konfiguráciu kódu IP bude adresa URL

Jedným z aspektov, ktoré by mohli byť predmetom zlepšenia, je umiestnenie tlačidla „odoslať“, pretože sa prejavuje vo všetkých vstupných poliach, a nielen v „automatickom riadení svetla“, ako by sa mohlo zdať. Inými slovami, ak by ste chceli zmeniť niektoré z možných hodnôt, vždy musíte stlačiť tlačidlo „odoslať“.

Podrobná/pokročilá dokumentácia

Pripojil som nasledujúce súbory, aby vám mohli pomôcť porozumieť celému riešeniu, špeciálne na riešenie problémov a zlepšovanie.

Arduino_NexaControl_IS.pdf poskytuje dokumentáciu k riešeniu interného servera.

Arduino_NexaControl_ES.pdf poskytuje dokumentáciu k riešeniu externého servera.

Externé referencie

Systém Nexa (švédsky)

Krok 5: Hotovo

Hotovo!
Hotovo!

Tu máte všetko hotové a v akcii!

Puzdro Arduino Uno nájdete v Thingiverse ako „puzdro Arduino Uno Rev3 s ethernetovým štítom XL“.

Odporúča: