
Joseph Goodman
0
2182
17
Inteligentní domácí senzory stojí směšné množství peněz. Při 60 až 100 USD jen pro detektor pohybu nebo čidlo vlhkosti se zapojení do celého domu stává doménou těch, kteří mají hloupé částky disponibilního příjmu. Postavme si vlastní.
Naštěstí tvrdá práce již byla provedena skvělými lidmi za MySensors.org. Dnes vám ukážu, jak používat rámec MySensors k vytvoření levné řady inteligentních domácích senzorů, které se mohou zapojit do instalace OpenHAB (viz náš průvodce Začínáme s OpenHAB na Raspberry Pi) Začínáme s OpenHAB Home Automation na Raspberry Pi Začínáme s domácí automatizací OpenHAB na Raspberry Pi OpenHAB je vyspělá platforma pro domácí automatizaci s otevřeným zdrojovým kódem, která běží na různých hardwarech a je protokolová agnostická, což znamená, že se dnes může připojit k téměř jakémukoli hardwaru pro domácí automatizaci na trhu. . Předpokládám, že již máte funkční server MQTT a rozumím základům formátu zpráv MQTT; pokud ne, přečtěte si návody k příručce OpenHAB, která obsahuje pokyny pro instalaci serveru MQTT Příručka pro začátečníky, část 2: ZWave, MQTT, pravidla a mapování Příručka pro začátečníky, část 2: ZWave, MQTT, pravidla a mapování OpenHAB , software pro domácí automatizaci s otevřeným zdrojovým kódem, daleko přesahuje možnosti jiných systémů domácí automatizace na trhu - není však snadné nastavit. Ve skutečnosti to může být naprosto frustrující. .
Přestože se budu zabývat konkrétně předáváním dat MySensors ze sítě Arduinos, pomocí MQTT, na instalaci OpenHAB, měl bych zdůraznit, že rámec MySensors může přispět k řadě různých řadičů domácí automatizace. Představili jsme to zde jako kompletní řešení, které pro mě funguje, ale podívejte se na web MySensors, protože se vám zdá, že vyhovuje vašemu podobnému účelu, ale používá trochu odlišný hardware nebo jiný protokol pro zasílání zpráv. Je to neuvěřitelně univerzální.
Náklady na hardware pro mé nastavení jsou menší než 10 $ na uzel (o něco více pro bránu), ale za velmi málo lze přidat další senzory a akční členy (například čidlo vlhkosti a teploty DHT11 je například asi 1 $; vysokonapěťové relé je kolem 3 $).
Co děláme
Základní myšlenka je, že spíše než přidávání do naší stávající přeplněné místní sítě pomocí nespolehlivých Wi-Fi nebo drahých ethernetových štítů, vytváříme zcela oddělenou síť schopnou síť pouze pro Arduinos; pak to přemostěte do místní sítě pomocí jediného uzlu brány, který má připojení Ethernet i rádiové připojení k dalším Arduinos. Vyrábíme tedy několik senzorových uzlů, které shromažďují data; a uzel brány, který přenáší tato data na server OpenHAB.
Zase to funguje pro mě, protože můj Wi-Fi příjem je tak hrozný a já ho nechci zaplňovat zbytečnými daty. Pokud jste s Wi-Fi spokojeni, podívejte se na použití nízkonákladového ESP8266 kompatibilního s Arduino. Seznamte se s Arduino Killer: ESP8266 Seznamte se s Arduino Killer: ESP8266 Co když vám řeknu, že je k dispozici Arduino kompatibilní dev karta se zabudovanou Wi-Fi -Fi za méně než 10 $? No, je. s vestavěnými kartami Wi-Fi - MySensors je také podporuje.
Důležitá poznámka pro uživatele El Capitan a Arduino Clones: Apple se díky novým bezpečnostním opatřením podařilo prolomit sériové ovladače používané pro komunikaci s řadou klonových desek Arduino v nejnovější verzi El Capitan. Chcete-li zjistit, zda se vás to týká, podívejte se na svou desku a čip nejblíže portu USB. Říká-li se CH340, tím to ovlivníte. Postupujte podle pokynů a zakažte podepisování ovladačů kext, znovu nainstalujte sériové ovladače CH340.
Potřebné komponenty
Pro bránu budete potřebovat:
- Arduino Uno
- Ethernetový štít (založený na W5100)
- Modul NRF24L01 - použil jsem +PA + LNA verze, které mají zvýšený dosah až 1 km. Zapojení je stejné, podle toho, co si vyberete.
Pro každý uzel senzoru:
- Arduino Uno
- Modul NRF24L01
- Senzory (nejprve bych navrhl modul DHT11 nebo DHT22 pro teplotu a vlhkost)
Další / volitelné:
- Kondenzátory 10uF, jeden pro každý RF modul, který máte (odkaz je pro balíček 50!)
- Napájecí zdroj s výstupem 5 V a 3,3 V (YwRobot MB102 funguje dobře a každý je 1 $) - vyžadováno, pokud používáte klon Arduino. Budete také potřebovat 9-12V stejnosměrné napájení.
- Prototypovací štíty nebo krátké propojovací vodiče muž-žena.
Práce s moduly NRF24L01
Začněme s moduly NRF24L01, protože jsou nejsložitější součástí projektu. Šel jsem na dražší verzi s větším dosahem: technicky známý jako NRF24L01 + PA + LNA. Přicházejí s integrovaným obvodem zesílení signálu a antény, i když doporučuji zkusit levnější anténní verzi modulů jako první, pokud máte běžný domov s pravidelnými zdmi, nikoli metrem tlustý pevný kámen, Dělám. Tvrdil, že jejich dosah je asi kilometr, což je více než dost pro to, abych se dal do zahradní kůlny.
Avšak tyto věci jsou opravdu obtížné s ním pracovat; Pokud se do toho pustíte a zapojíte vše bez toho, abyste si nejprve přečetli tyto tipy, budete zklamáni.
- Modul potřebuje vstupní napětí 3,3 V na pin VCC - ne 5v. Pokud vložíte 5V, smažte to.
- Připájejte kondenzátor 10uF na svorky VCC / GND. Plná šedá čára na kondenzátoru označuje zápornou / GND stranu.
- Používejte krátké, vysoce kvalitní propojovací kabely; nebo ještě lépe, připájejte je přímo k prototypovému štítu, aby délka kabelu byla minimální a pevná.
- Pokud používáte klon Arduino, regulátor napětí pro ně dostatečně nezajistí na pin 3,3 V - budete muset použít externí napájecí desku (viz výše), která je k dispozici asi za 1 $. Ty poskytují stabilní 3,3v. Pokud používáte originál Arduino značka Uno, to se nezdá být problém.
Důrazně doporučujeme, abyste nejprve provedli některé základní testy, abyste zjistili, že vaše rádio funguje. Zapojte dvě rádia nahoru, jak je uvedeno na stránce MySensors. Nezáleží na tom, že jejich diagram ukazuje desky Arduino Micro - používají se stejná čísla pinů. Všimněte si, že diagram ukazuje NRF24L01 z horní; budete skutečně zapojovat věci ze spodní strany. Mentálně přizpůsobte. Ignorujte šedý IRQ pin, momentálně se nepoužívá. Celkem:
- VCC jde na 3,3 V na externím napájení
- GND jde na společnou pozemní železnici
- CE na pin 9
- CSN / CS na pin 10
- MOSI na pin 11
- MISO na pin 12
- SCK na pin 13
K testování budete potřebovat dva uzly plně zapojené. Stáhněte si knihovnu RF24 a načtěte nejjednodušší Začínáme příklad. Zapněte oba moduly, ale ponechte jeden připojený přes USB a otevřete sériovou konzoli. Typ “T” a odeslat, přepnout jej do vysílacího režimu, v kterém okamžiku byste měli dostat ladicí zprávy, že úspěšně pingují zprávu do druhého uzlu.
Vytvoření klientské brány MySensors MQTT
Dobře, nyní, když víme, že jsou radiopřijímače RF24 zapojeny a pracují správně, pokračujte a stáhněte si vývojovou větev balíčku MySensors Arduino. Tento tutoriál byl napsán pomocí verze 1.5, ale měl by být v pořádku i pro pozdější verze. Používáme vývojovou větev, protože v době psaní MQTT klient brána ještě není součástí hlavního balíčku.
Ačkoli je v hlavní větvi k dispozici MQTTGateway, funguje také jako server, což nechceme, protože na Raspberry Pi již máme stabilní server MQTT. Chceme na to pouze předat data MySensors. Opět, pokud to není to, co chcete - pokud byste raději nepoužili MQTT vůbec - pak se podívejte na EthernetGateway nebo SerialGateway, které jsou také kompatibilní s OpenHAB.
Stojí za zmínku, že balíček pro stahování neobsahuje pouze základní soubory MySensors, ale také kompatibilní knihovny potřebné pro každý možný senzor. Chcete-li se vyhnout konfliktům, doporučujeme vám pouze zálohovat celou vaši aktuální složku knihoven a nahradit ji všemi soubory v balíčku ke stažení..
Zapojení brány je trochu jiné; jakmile máte ethernetový štít, použijte pro rádiový modul následující piny:
- CE na pin 5
- CSN na pin 6
- SCK na pin A0
- MOSI na pin A1
- MISO na pin A2
Musíte také povolit #define SOFTSPI linka v knihovny / mySensors / MyConfig.h soubor. To provedete odebráním //, abyste jej mohli zrušit, je to kolem čáry 309 na mém.
Musíme to udělat, protože rádiový modul i štít sítě používají SPI a jsou nekompatibilní; takže jen přesuneme SPI rádiového modulu na jiné piny a místo toho provádíme komunikaci SPI v softwaru (odtud, měkký SPI).
Načíst MySensors / GatewayW5100MQTTClient skica. Pokud to nevidíte v nabídce MySensors, nemáte vývojové odvětví nainstalován. Pomocí výše uvedeného odkazu znovu stáhněte celou knihovnu.
Budete muset definovat statickou adresu IP pro řadič, adresu IP síťového směrovače a podsítě a adresu IP vašeho stávajícího serveru MQTT. Pokud chcete, můžete také upravit předpony tématu. Nahrajte a připojte tuto věc k síti. Stručně zkontrolujte sériovou konzoli, zda nevyskytují do očí bijící chyby, jako je nemožnost připojení k serveru MQTT, jinak ji odložte stranou (ale nechte ji zapnutou).
Vytváření senzorových uzlů
Nejprve to komentujte #define SOFTSPI linka v MyConfig.h soubor na začátku vložením // zpět. Je to potřeba pouze pro bránu - používáme standardní zapojení NRF24L01 pro uzly senzorů, které používají hardwarové rozhraní SPI. Pokud potřebujete připomenout:
- VCC jde na 3,3 V na externím napájení (nebo na samotném Arduinu, pokud se jedná o originál a ne klon)
- GND jde na společnou pozemní železnici
- CE na pin 9
- CSN / CS na pin 10
- MOSI na pin 11
- MISO na pin 12
- SCK na pin 13
Poté připojte svůj výběr senzoru; Pro testování používám DHT11 čidlo vlhkosti a teploty, ale pokud přejdete dolů na seznam senzorů a akčních členů na postranním panelu stránky MySensors, najdete obrovský výběr dalších možností: dveře, měřidlo deště, světlo, pohyb, dokonce RFID - a načte více. Můžete vidět, že jsem také přidal relé do uzlu na obrázku níže, ale o tom později.
Nakonec načtěte HumiditySensor Příklad z nabídky MySensors a přidejte následující řádek ihned za komentáře.
#define MY_NODE_ID 2
Protože používáme speciální verzi řadiče, která právě předává věci na náš vlastní server MQTT, nemá standardní funkci řadiče, která by automaticky přiřazovala ID uzlů každému novému uzlu. Místo toho to pokaždé ručně definujeme. Poznamenejte si toto číslo někde pro své vlastní záznamy a změňte je pro každý uzel.
Povolte také výstup ladění:
#define MY_DEBUG
Nakonec zkontrolujte, zda je datový pin senzoru DHT11 správný.
#define HUMIDITY_SENSOR_DIGITAL_PIN 7
Poté nahrajte!
Vyplatí se otevřít sériovou konzoli a podívat se. Rozhodující kousek k pohledu je st =, což je stav zprávy. st = selhání znamená, že zpráva nebyla odeslána. Je možné, že jste nedefinovali jedinečné ID uzlu nebo že vaše brána je offline. Tyto chyby jsem zfalšoval pouhým odpojením brány:
Pokud vše funguje, měli byste začít vidět, jak na váš server MQTT přicházejí některé údaje. Jejich uvedení do OpenHAB je mimo rozsah tohoto tutoriálu, ale bylo pokryto v části 2 průvodce OpenHAB Průvodce OpenHAB pro začátečníky Část 2: ZWave, MQTT, pravidla a mapování Průvodce pro začátečníky OpenHAB Část 2: ZWave, MQTT, pravidla a mapování OpenHAB, software pro domácí automatizaci s otevřeným zdrojovým kódem daleko přesahuje možnosti jiných systémů domácí automatizace na trhu - není však snadné nastavit. Ve skutečnosti to může být naprosto frustrující. takže se tam můžete vrátit.
Kombinace kódu senzoru
Přestože je spuštění a provoz jednoho uzlu senzoru relativně jednoduché, je trochu složitější, když chcete do každého uzlu přidat více senzorů. V podstatě budete smíchat fragmenty kódu ze dvou různých příkladů. Nejjednodušší způsob, jak vám to ukázat, je například s videem! Zde kombinuji náš základní senzor vlhkosti s relé.
Kompletní kód pro snímač vlhkosti a relé najdete zde, který již byl upraven neblokující smyčkou, jak jsem se zmínil ve videu. Chcete-li se dozvědět více o struktuře příkazů MQTT potřebné k aktivaci relé, podívejte se na to, zda stačí, když následující kanál řídí první relé v kódu, který jsem zadal (s tělem zprávy 0 nebo 1):
mysensors-in / 9/1/1/0/2
Vaším jediným omezením je nyní množství paměti na Arduino, a já to řeknu - nejspolehlivější senzory v mém chytrém domě nejsou komerční Z-Wave moduly, které stojí 80 $, ale ty vlastní MySensors.
Skončím to tam dnes, ale pokud máte problémy, můžete se zeptat v komentářích nebo na velmi aktivních uživatelských fórech MySensors. Budete sestavovat své vlastní levné senzorové uzly? Jak přichází váš chytrý domov?