Körbenéztem itthon, hogy no akkor miből élünk itton digitális hőmérő fronton, és találtam egy marék TMP112 SMBUS-os hőmérőt. Linux support első google-ra nézésre nincsen, viszont a TMP102 szoftveresen ugyanaz, ahhoz van.
Napi OpenWRT svn snapshot letölt, lepörget:
http://users.atw.hu/balubati/blog/comments.php?y=09&m=07&entry=entry090…
Először sajnálattal kellett tudomásul vennem, hogy ehhez a modulhoz még nincs OpenWRT csomag (így vagy belefordítom a kernelbe, vagy kézzel másolom), de némi hekkelés árán ez megoldódott:
https://dev.openwrt.org/ticket/12524
Bekapcsolni ezután a menuconfig -> Kernel modules -> Hardware monitoring support -> kmod-hwmon-tmp102 -al lehet.
Ez mint utóbb kiderült majdhogynem felesleges, mert nem a modul betöltésekor kell paramétereket átpasszoni, hogy melyik i2c buszra tapadjon.
Az NSLU2-n van egy I2C-s RTC, ami a GPIO 6-7-re (SCL-SDA) van rádrótozva.
Az RTC használatához a kernel_menuconfig-ban a Device drivers -> Real Time Clock -> Xicor/Intersil X1205 modult kell beforgatni.
Az I2C over gpio használatához van OpenWRT csomag, ezt a menuconfig -> Kernel modules -> I2C support -> kmod-i2c-gpio úton kapcsolhatjuk be. A cucc okos, magátoól tudja, hogy melyik GPIO-n van az SDA, SCL.
Ha ez megvan és fent van a csigán akkor a hwclock segedelmével be lehet állítani az időt az RTC-ben/ből.
Ahhoz hogy ez reboot után érvénybe lépjen a következő initscriptet készítettem az /etc/init.d/hwclock fájlba:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org
START=50
start() {
hwclock -s
}
Erre adjunk futtatási jogot (chmod +x /etc/init.d/hwclock).
Majd engedélyezzük:(/etc/init.d/hwclock enable).
Állítsuk be a rendszeridőt ()date -s"2012-11-24 19:29:00")
Majd írjuk ki az RTC-be (hwclock -w)
Loggolásunk egyik kérdését az időt ezzel letuduk, essünk neki a hőmérőnek.
root@OpenWrt:/etc/init.d# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
70: -- -- -- -- -- -- -- --
Meg is van a két eszközünk a TMP112 földre kötött ADDR lábbal a 00x48-as címen az X1205 meg a 0x6F címen.
A tmp102 kernelmodulnak a következő trükkel kell megmondani melyik i2c buszra telepedjen:
echo tmp102 0x48 > /sys/class/i2c-dev/i2c-0/device/new_device
Ezt követően a sensors paranccsal szépen vagy a sysfsből nyers módon lehet a hőmérsékletet kiköhögtetni:
root@OpenWrt:/etc/init.d# sensors
tmp102-i2c-0-48
Adapter: i2c-gpio0
temp1: +24.9 C (high = +160.0 C, hyst = +150.0 C)
root@OpenWrt:/etc/init.d# cat /sys/class/hwmon/hwmon0/device/temp1_input
24937
Mára ennyi, holnap kokeszolok hozzá valami cronjobot ami logol sqliteba, meg valami egyszerű webes frontendet hozzá.
- martonmiklos blogja
- A hozzászóláshoz be kell jelentkezni
- 117027 megtekintés
Hozzászólások
"A tmp102 kernelmodulnak a következő trükkel kell megmondani melyik i2c buszra telepedjen hanem a következő módon:"
A lektor csunyan dolgozik nalad :-)
Egyebkent erdekes iras. Az, hogy az svn.openwrt.org folyamatosan 404-ekkel bombaz bongeszobol, az teljesen normalisnak szamit?
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
nehéz elképzelni, hogy mit akarhatsz ott browserrel, de ha esetleg a forrást szeretnéd böngészni, akkor https://dev.openwrt.org/browser/trunk
- A hozzászóláshoz be kell jelentkezni
Ja, igen, svn:// protokollal meg parancssorbol is mukodik :-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Kösz, fixed. Nekifutottam párszor, azért maradt benne. Annyira nem volt triviális, ezért gondoltam, hogy itt jó helyen lesz a google számára.
- A hozzászóláshoz be kell jelentkezni
>> A cucc okos, magától tudja, hogy melyik GPIO-n van az SDA, SCL.
:D
- A hozzászóláshoz be kell jelentkezni
Csak az volt furcsa hogy nincs megadva extra kernelparaméter, sem modulparaméter, hanem tudja magától. Ezen az ARM-on meg ha jól tudom nincs DTB meg hasonló nyalánkságok.
- A hozzászóláshoz be kell jelentkezni
sda_pin/scl_pin bele van égetve az i2c platform databa
- A hozzászóláshoz be kell jelentkezni