I2C 1-wire controller DS2482-100 na RPi

Jelikož mi přestalo 1-wire přímo na GPIO spolehlivě fungovat rozhodle jsem se zkusit I2C kontrolér DS2482-100.

Vycházel jsem z návodu zde.

Zapojení je podle tohoto návodu, zkusil jsem to nejjednodušší bez MOSFET tranzistoru. Zapojení s MOSFET je níže v sekci „další zdroje“.

Hardware a zapojení

Nakoupil jsem si 5 ks DS2482-100, desky … TODO

Software

Nejprve jsem naistaloval I2C tools

sudo apt-get install i2c-tools

I2C kontrolér mám připojen na I2C bus 1 (SDA1, SCL1 piny 3 a 5 resp. GPIO 2,3).

Spustím tedy command pro detekci kontroléru. 18 níže znamená že zdetekovalo.

i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Konfigurace owfs

owfs mám již z minulosti zprovozněno a teploty se mi zobrazují v homeassistantu – více zde.

Bylo potřeba jen přidat zdroj. Někde místo „i2c = …“ uvádí „device = …“ ale mně takto funguje OK.

Slovo „server: “ na začátku asi není nutné (respektive možná s tím nebude fungovat pokud používáte služby owfs / owftpd nebo owhttpd, já používám jen owserver a teploty si z něj sosá homeassistant).

Přímé připojení GPIO a I2C bus najednou fungují, takže toto není třeba komentovat – finálně tedy tato sekce konfiguráku vypadá takto:

# w1 bus directly on GPIO (GPIO4 default)
server: w1 = all
# I2C device: DS2482-100 (on RPi3B+ pin 3,5 - BCM 2,3 SDA1,SCL1)
server: i2c = /dev/i2c-1:ALL

Poté jsem restartoval služby owserveru a zkontroloval že nastartují.

sudo systemctl stop owserver.socket
sudo systemctl stop owserver.service
sudo systemctl start owserver.socket

sudo systemctl status ow*
● owserver.socket - Listening socket for owserver
Loaded: loaded (/lib/systemd/system/owserver.socket; enabled; preset: enabled)
Active: active (running) since Tue 2024-12-03 22:55:20 CET; 13min ago
Triggers: ● owserver.service
Docs: man:owserver(1)
Listen: [::]:4304 (Stream)
Tasks: 0 (limit: 1568)
CPU: 1ms
CGroup: /system.slice/owserver.socket

Dec 03 22:55:20 mccoy systemd[1]: Listening on owserver.socket - Listening socket for owserver.

● owserver.service - Backend server for 1-wire control
Loaded: loaded (/lib/systemd/system/owserver.service; enabled; preset: enabled)
Active: active (running) since Tue 2024-12-03 22:55:53 CET; 12min ago
TriggeredBy: ● owserver.socket
Docs: man:owserver(1)
Main PID: 28125 (owserver)
Tasks: 4 (limit: 1568)
CPU: 712ms
CGroup: /system.slice/owserver.service
└─28125 /usr/bin/owserver --foreground -c /etc/owfs.conf

Dec 03 22:55:45 mccoy systemd[1]: Starting owserver.service - Backend server for 1-wire control...
Dec 03 22:55:45 mccoy owserver[28125]: DEFAULT: ow_opt.c:(780) systemd mode -- ignore foreground request
Dec 03 22:55:45 mccoy owserver[28125]: DEFAULT: ow_opt.c:(670) systemd mode -- ignore 'p' option
Dec 03 22:55:53 mccoy systemd[1]: Started owserver.service - Backend server for 1-wire control.

Home assistant

V home assistantu je potřeba reload integrace 1-wire.

Settings -> Devices and services -> 1 Wire -> u serveru tři tečky a „reload“

 

Další zdroje

Novější návod v angličtině zde a něco na fóru zde.

Hotové řešení i se schématem, které používá MOSFET na pinu 6 DS2482-100 je zde.

Projekt PoEpi od Ondřeje Caletky, který také obsahuje 1-wire kontroller na I2C s DS2482-100 v angličtině zde a zde.

 

Zveřejnit odpověď

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*