Browsed by
Tag: DS2438

Arduino 1-Wire UDP Gateway – alternativa k Loxone 1-Wire Extension

Arduino 1-Wire UDP Gateway – alternativa k Loxone 1-Wire Extension

Rád bych se vámi podělil o další projekt, na kterém jsem v poslední době pracoval. Jedná se o Arduino sketch, který je schopen pracovat s DS18(B)2X, DS2401 a DS2438 senzory, číst z nich data a posílat je po UDP jako multicast či unicast. Mezi výhody toho řešení patří to, že je možné používat více 1-Wire sběrnic a předejít tak případným problémům s kabeláží apod. Dále je možné určité sběrnice priorizovat (ideální pro využití s iButtony či NFC).

Zdrojové kódy

http://jirin.deso.cz/1-Wire_UDP_Gateway/

Video tutoriál

Potřebný hardware

Pro jeho použití budete potřebovat Arduino UNO či MEGA a k tomu Ethernet shield – mám ozkoušený W5100, který funguje výborně a lze jej sehnat i v 802.3af verzi.

Arduino UNO s W5100

Odkazy na zakoupení:
https://www.aliexpress.com/wholesale?SearchText=arduino+uno+mega328p
https://www.aliexpress.com/wholesale?SearchText=arduino+mega+2560
https://www.aliexpress.com/wholesale?SearchText=arduino+uno+w5100

Zapojení

Pro každou 1-Wire sběrnici je bezpodmínečně nutné použít pull-up rezistory 4,7 kΩ a zapojení je následující:

Ještě přidávám pinout pro DS18B20 samotný:

Hlavně si nepoplést zem a napájení – nedopádá to úplně nejlépe.

Konfigurace 1-Wire sběrnic

Při nastavování lze vydefinovat libovolný počet sběrnic. U každé z nich lze také říct, jestli je prioritní nebo ne – prioritní jsou určené pro čtení iButtonů, kdy je potřeba okamžitá reakce.

Základní nastavení (použita pouze sběrnice na pinu D5 a není prioritní):

ONE_WIRE_BUS ONE_WIRE_BUSES[] = {{5, false},
                                 //{6, false},
                                 //{7, false},
                                 //{8, false},
                                 //{9, false},
};

Pokud chcete ale použít sběrnic více, stačí řádky odkomentovat případně si přidat další. Kupříkladu:

ONE_WIRE_BUS ONE_WIRE_BUSES[] = {{5, false},
                                 {6, false},
                                 {7, false},
                                 {8, false},
                                 {9, true},
};

Kdy je port na pinu D9 prioritní, takže na něm mám třeba čtečku, D5–D8 jsou pak další obyčejné sběrnice.

A jako poslední poznámka, není možné používat piny D4, D10, D11, D12 a D13 jelikož je využívá W5100 (Ethernet shield).

Získávání dat v Loxone

Loxone dostává pakety ve tvaru:
DS2401 – „1W 01000065A43BBE67
DS18(B)2X – „1W 2861641273EA057D TEMP 24187“
DS2438 – „1W 26CABA16020000BD TEMP 23656 VAD 2220 VDD 4700 VSENS 250“
Všechny teploty a voltáže jsou posílány jako celá čísla, která vznikla násobením původní hodnoty číslem 1000.

Dále je možné se potkat s pakety:
1W 28616412704EF007 ERROR“
1W 2861641273E55AFF DETECTED“
Tyto jsou posílány v případě chyby či detekce nového 1-Wire zařízení.

V Loxone je potřeba vytvořit digitální UDP vstup pro daný port:

Dále je nutné vytvořit příkaz pro každé 1-Wire zařízení.

Pro DS2401 je to digitální vstup:

Pro DS18(B)2X je to analogový vstup a je nutné použít korekci (vstupní hodnota 2: „1000“, zobrazená hodnota 2: „1“):

A v případě DS2438 je nutné vytvořit 4 analogové virtuální vstupy, stejně jako v předchozím případě je nutné použít korekci („1000“ => „1“):

Pro instalaci do rozvaděče doporučuji sehnat uchycení na DIN lištu, něco ve stylu:

Autor článku a projektu: Jiří Jaša, http://www.deso.cz