Obsah:

NexArdu: Inteligentní ovládání osvětlení: 5 kroků
NexArdu: Inteligentní ovládání osvětlení: 5 kroků

Video: NexArdu: Inteligentní ovládání osvětlení: 5 kroků

Video: NexArdu: Inteligentní ovládání osvětlení: 5 kroků
Video: Séance ordinaire - 5 juillet 2021 2024, Červenec
Anonim
NexArdu: Inteligentní ovládání osvětlení
NexArdu: Inteligentní ovládání osvětlení

Aktualizace

Pokud jste vyvinuli stejnou funkci pomocí Home Assistant. Home Assistant nabízí obrovskou škálu možností. Vývoj najdete zde.

Náčrt inteligentního ovládání domácího osvětlení prostřednictvím bezdrátových zařízení typu X10 s frekvencí 433,92 MHz (alias 433 MHz), např. Nexa.

Pozadí

Pokud jde o dekorativní osvětlení, bylo pro mě nějak únavné, že jsem každý druhý nebo třetí týden musel znovu nastavit časovače, které zapínají světla kvůli posunu sluneční hodiny vzhledem k SEČ. některé noci jdeme spát dříve než ostatní. Z tohoto důvodu někdy světla zhasnou buď „příliš pozdě“nebo „příliš brzy“. Výše uvedené mě vyzvalo k zamyšlení: Chci, aby se dekorativní osvětlení zapínalo vždy na stejné úrovni okolního světla a poté se v určitou dobu vypínalo podle toho, zda jsme vzhůru nebo ne.

Objektivní

Tento instruktáž využívá možnosti bezdrátově ovládaných zařízení, jako je System Nexa, pracujících na frekvenci 433,92 MHz. Zde uvádíme:

  1. Automatická kontrola osvětlení
  2. Webové ovládání

Webové ovládání. Interní vs externí webový server

Interní server využívá možnosti ethernetového štítu Arduino k poskytnutí webového serveru. Webový server bude navštěvovat volání webového klienta, aby zkontroloval a komunikoval s Arduinem. Toto je přímé řešení s omezenou funkčností; možnosti vylepšení kódu webového serveru jsou omezeny pamětí Arduina. Externí server vyžaduje nastavení externího webového serveru PHP. Toto nastavení je komplikovanější a tento návod jej nepodporuje, ale kód/stránka PHP pro kontrolu a řízení Arduina má základní funkce. Možnosti vylepšení webového serveru jsou v tomto případě omezeny externím webovým serverem.

Kusovník

Abyste plně využili možností, které tento náčrt nabízí, potřebujete:

  1. Arduino Uno (testováno na R3)
  2. Ethernetový štít Arduino
  3. Souprava Nexa nebo podobná zařízení pracující na frekvenci 433,92 MHz
  4. Senzor PIR (pasivní infračervený) pracující na frekvenci 433,92 MHz
  5. Rezistor 10 KOhms
  6. LDR
  7. A RTC DS3231 (pouze verze pro externí server)
  8. Vysílač 433,92 MHz: XY-FST
  9. Přijímač 433,92 MHz: MX-JS-05V

Doporučené minimum je:

  1. Arduino Uno (testováno na R3)
  2. Souprava Nexa nebo podobná zařízení pracující na frekvenci 433,92 MHz
  3. Rezistor 10 KOhms
  4. LDR
  5. Vysílač 433,92 MHz: XY-FST

(Vynechání ethernetového štítu vyžaduje úpravy náčrtu, který není součástí tohoto návodu)

Logika Nexa. Stručný popis

Přijímač Nexa se učí ID dálkového ovladače a ID tlačítka. Jinými slovy, každý dálkový ovladač má své číslo odesílatele a každý pár tlačítek zapnutí/vypnutí má své ID tlačítka. Přijímač se musí tyto kódy naučit. Některé dokumenty Nexa uvádějí, že přijímač lze spárovat až se šesti dálkovými ovladači. Parametry Nexa:

  • SenderID: ID dálkového ovladače
  • ButtonID: číslo páru tlačítek (zapnuto/vypnuto). Začíná to číslem 0
  • Skupina: ano/ne (aka tlačítka „Vše vypnuto/zapnuto“)
  • Příkaz: zapnuto/vypnuto

Instruktabilní kroky. Poznámka

Různé zde popsané kroky mají nabídnout dvě různé příchutě, jak dosáhnout cíle. Neváhejte si vybrat ten, který vám vyhovuje. Zde je rejstřík:

Krok č. 1: Obvod

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

Krok č. 3: Nexardu s externím serverem

Krok č. 4: Cenné informace

Krok 1: Okruh…

Okruh…
Okruh…

Jednotlivé součásti zapojte podle obrázku.

Pin Arduino#8 na datový pin na modulu RX (přijímač) Arduino pin#2 na datový pin na modulu RX (přijímač) Arduino pin#7 na datový pin na modulu TX (vysílač) Arduino pin A0 až LDR

Konfigurace RTC. Je potřeba pouze v konfiguraci externího serveru. Pin Arduino A4 na SDA na modulu RTC Arduino pin A5 na SCL pin na modulu RTC

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

Knihovny

Tento kód využívá mnoho knihoven. Většinu z nich lze najít prostřednictvím „Správce knihoven“Arduino IDE. Pokud byste nenašli uvedenou knihovnu, vyhledejte na Googlu.

Wire.hSPI.h - požadováno ethernetovým štítem NTP klient

Skica

Níže uvedený kód využívá možnosti použití desky Arduino UNO nejen jako prostředku pro ovládání zařízení Nexa, ale také obsahuje interní webový server. Poznámka, kterou je třeba dodat, je, že modul RTC (hodiny v reálném čase) se automaticky upravuje prostřednictvím NTP (Network Time Protocol).

Než nahrajete kód do Arduina, možná budete muset nakonfigurovat následující:

  • SenderId: Nejprve musíte očichat SenderId, viz níže
  • PIR_id: nejprve musíte očichat SenderId, viz níže
  • LAN IP Address: nastavte IP vaší LAN na ethernetový Arduino štít. Výchozí hodnota: 192.168.1.99
  • Server NTP: Není to nezbytně nutné, ale mohlo by být dobré hledat servery NTP ve vašem okolí. Výchozí hodnota: 79.136.86.176
  • Kód je upraven pro časové pásmo CET. V případě potřeby upravte tuto hodnotu podle svého časového pásma, aby se zobrazoval správný čas (NTP)

Čichání kódů Nexa

K tomu potřebujete připojit -alespoň komponentu RX k Arduinu, jak je znázorněno v obvodu.

Níže najdete skicu Nexa_OK_3_RX.ino, která v době psaní byla kompatibilní se zařízeními Nexa NEYCT-705 a PET-910.

Následující kroky jsou následující:

  1. Spárujte přijímač Nexa s dálkovým ovladačem.
  2. Načtěte Nexa_OK_3_RX.ino na Arduino a otevřete „Serial Monitor“.
  3. Stiskněte tlačítko na dálkovém ovládání, které ovládá přijímač Nexa.
  4. Všimněte si „RemoteID“a „ButtonID“.
  5. Nastavte tato čísla pod SenderID a ButtonID na deklaraci proměnné předchozí skici.

Chcete -li přečíst ID PIR, použijte stejný náčrt (Nexa_OK_3_RX.ino) a přečtěte hodnotu na „Sériovém monitoru“, když PIR detekuje pohyb.

Krok 3: Nexardu s externím serverem

Knihovny

Tento kód využívá mnoho knihoven. Většinu z nich lze najít prostřednictvím „Správce knihoven“Arduino IDE. Pokud nenajdete uvedenou knihovnu, vyhledejte na Googlu.

Wire.hRTClib.h - toto je knihovna z https://github.com/MrAlvin/RTClibSPI.h - vyžadováno ethernetovým štítemNexaCtrl.h - ovladač zařízení NexaEthernet.h - povolení a funkce ethernetového štítuRCSwitch.h - vyžadováno pro PIRTime.h - vyžadováno pro RTCTimeAlarms.h - správa časového alarmu aREST.h - pro služby RESTful API využívané externím serverair/wdt.h - zpracování časovače Watchdog

Skica

Níže uvedený náčrt obsahuje další příchuť stejné věci, tentokrát posilující možnosti, které může poskytnout externí webový server. Jak již bylo zmíněno v úvodu, externí server vyžaduje nastavení externího webového serveru PHP. Toto nastavení je komplikovanější a tento návod jej nepodporuje, ale kód/stránka PHP pro kontrolu a řízení Arduina má základní funkce.

Než nahrajete kód do Arduina, možná budete muset nakonfigurovat následující:

  • SenderId: Nejprve musíte očichat SenderId, viz Čichání kódů Nexa v předchozím kroku
  • PIR_id: musíte nejprve očichat SenderId, viz Čichání kódů Nexa v předchozím kroku
  • LAN IP Address: nastavte IP vaší LAN na ethernetový Arduino štít. Výchozí hodnota: 192.168.1.99

Postup čichání kódu Nexa najdete v kroku č. 1.

Doplňkový soubor

Nahrajte připojený soubor nexardu4.txt na svůj externí server PHP a přejmenujte jej na nexardu4.php

Nastavený čas RTC

K nastavení času/data na RTC používám skicu SetTime, která obsahuje knihovnu DS1307RTC.

Krok 4: Cenné informace

Cenné informace
Cenné informace
Cenné informace
Cenné informace

Dobré znát chování

  1. Když je Arduino pod „automatickým řízením světla“, může procházet čtyřmi různými stavy ve vztahu k okolnímu osvětlení a denní době:

    1. Probuzení: Arduino čeká, až přijde noc.
    2. Aktivní: Nastala noc a Arduino zapnul světla.
    3. Somnolent: Světla jsou ZAPNUTA, ale přichází čas jejich vypnutí. Začíná na „time_to_turn_off - PIR_time“, to znamená, že pokud je time_to_turn_off nastaven na 22:30 a PIR_time na 20 minut, pak Arduino přejde do somnolentního stavu ve 22:10.
    4. Spící: Noc ubíhá, Arduino vypnul světla a Arduino čeká, až se úsvit probudí.
  2. Arduino vždy poslouchá signály vysílané dálkovými ovladači. Tato funkce umožňuje zobrazit stav světel (zapnuto/vypnuto) na webu při použití dálkového ovladače.
  3. Zatímco je Arduino v bdělém stavu, snaží se neustále vypínat světla, Arduino může zachytit signály ON vyslané ovládáním remonte k zapnutí světel. Pokud k tomu dojde, Arduino se pokusí znovu vypnout světla.
  4. Když je Arduino aktivní, pokouší se stále rozsvěcet světla, takže signály Arduino mohou zachytit signály VYPNUTÉ vysílané dálkovým ovladačem k vypnutí světel. Pokud k tomu dojde, Arduino se pokusí znovu zapnout světla.
  5. V somnolentním stavu lze světla zapnout/vypnout pomocí dálkového ovladače. Arduino nebude působit proti.
  6. V ospalém stavu začne odpočítávání PIR resetovat od „time_to_turn_off - PIR_time“, a tak se time_to_turn_off prodlouží o 20 minut pokaždé, když PIR detekuje pohyb. "Byl detekován signál PIR!" Jakmile k tomu dojde, ve webovém prohlížeči se zobrazí zpráva.
  7. Zatímco Arduino je spící, světla lze zapínat a vypínat pomocí dálkového ovladače. Arduino nebude působit proti.
  8. Resetovací nebo napájecí cyklus Arduina jej uvede do aktivního režimu. To znamená, že pokud byl Arduino resetován po time_turn_off, pak Arduino rozsvítí světla. Aby se tomu zabránilo, musí být Arduino přepnuto do manuálního režimu (zaškrtněte „Light Automatic Control“) a počkejte do rána, než se dostanete zpět do „Light Automatic Control“.
  9. Jak již bylo zmíněno, Arduino čeká, až se úsvit znovu aktivuje. Z tohoto důvodu může být systém oklamán nasměrováním dostatečně silného světla na světelný senzor, který má překonat práh „minimální svítivosti“. Pokud k tomu dojde, Arduino se přepne do aktivního stavu.
  10. Hodnota tolerance je velmi důležitá, aby se zabránilo kmitání systému kolem prahové hodnoty minimální svítivosti. LED světla díky svému blikání a vysoké odezvě mohou být zdrojem mávání. Pokud k tomuto problému dojde, zvyšte hodnotu tolerance. Používám hodnotu 7.

Je dobré vědět o kódu

  1. Jak si můžete všimnout, kód je velmi velký a využívá značné množství knihoven. To kompromituje množství volné paměti potřebné pro haldu. V minulosti jsem si všiml nestabilního chování, kdy se systém zastavil, zvláště po webových hovorech. Největší výzvou, kterou jsem proto měl, bylo omezit jeho velikost a používání různých proměnných, aby byl systém stabilní.
  2. Kód, který využívá interní server -mnou používaný doma, běží nyní od února 2016 bez problémů.
  3. Vynaložil jsem značné úsilí na obohacení kódu vysvětlením. Využijte toho a hrajte s různými parametry, jako je počet odeslání kódu Nexa za dávku, synchronizační čas NTP atd.
  4. Kód neobsahuje letní čas. To je třeba upravit prostřednictvím webového prohlížeče, pokud to platí.

Některé body k zvážení

  1. Přidejte antény k modulům radiofrekvenčních (RF) TX a RX. Ušetří vám čas stěžováním si na dva hlavní body: odolnost a dosah RF signálu. Používám drát 50 Ohmů dlouhý 17,28 cm (6,80 palce).
  2. Tento nestrukturovatelný může fungovat i s jinými systémy domácí automatizace, jako je například Proove. Jednou z mnoha podmínek, které je třeba splnit, je nechat je pracovat na frekvenci 433,92 MHz.
  3. Velkou bolestí hlavy s Arduinem je vypořádat se s knihovnami, které se mohou časem aktualizovat a najednou nebudou kompatibilní s vaším „starým“náčrtem; stejný problém může nastat při upgradu vašeho Arduino IDE. Dejte si pozor, že to může být náš případ -ano, můj problém také.
  4. Několik souběžných webových klientů s různými světelnými režimy vytváří stav „bliká“.

Snímek obrazovky

Ve výše uvedeném kolotoči obrázků najdete snímek obrazovky webové stránky zobrazený při volání Arduina prostřednictvím webového prohlížeče. Vzhledem k výchozí konfiguraci IP kódu bude adresa URL

Jedním z aspektů, které by mohly být předmětem zlepšení, je umístění tlačítka „odeslat“, protože se projeví ve všech vstupních polích, a nejen v „automatickém ovládání světla“, jak by se mohlo zdát. Jinými slovy, pokud byste chtěli změnit některou z možných hodnot, musíte vždy stisknout tlačítko „odeslat“.

Podrobná/Pokročilá dokumentace

Připojil jsem následující soubory, aby vám pomohly porozumět celému řešení, zejména pro odstraňování problémů a zlepšování.

Arduino_NexaControl_IS.pdf poskytuje dokumentaci k řešení interního serveru.

Arduino_NexaControl_ES.pdf poskytuje dokumentaci k řešení externího serveru.

Externí reference

Systém Nexa (švédský)

Krok 5: Hotovo

Hotovo!
Hotovo!

Tady máte vše hotové a v akci!

Pouzdro Arduino Uno lze v Thingiverse najít jako „pouzdro Arduino Uno Rev3 s ethernetovým štítem XL“.

Doporučuje: