Meření teploty počítačem je věčné téma. Způsobů, jak jí měřit je také mnoho. Můj bratr na mě přišel s požadavkem, měřit nějak teplotu ve sklepě, aby věděl, zda už nastal čas zazimovat tam želvu :)
Prohrabal jsem šuplíkové zásoby a našel integrovaný teploměr pro SMBus DS1631 s přesností 0,5 stupně Celsia. Tak jsem si říkal, že by bylo dobré prostě ho připojit na sběrnici SMBus nějakého PC a jeho obsah číst přes standardní balík LM-sensors.
Ale narazil jsem. První problém byl v tom, že žádný počítač, co jsem měl k dispozici, neměl sběrnici SMBus vyvedenou do patřičného konektoru. A pájet přímo na nožičky SPD EEPROM u DIMM modulů mi připadalo nevhodné.

Začal jsem tedy přemýšlet, kde ještě v počítači je sběrnice I2C. A záhy mě napadl kanál DDC, pomocí kterého komunikuje monitor s grafickou kartou, aby sdělil svá podporovaná rozlišení. Po chvilce Gůglení jsem našel i stránku, příznačně nazvanou
25 cent I2C adapter, která prostřednictvím krásných obrázků informuje, že kromě I2C se ve VGA konektoru najde i +5V pro napájení teplotního čidla a že v linuxu takové řešení funguje s kartami ATI a NVidia.
Našel jsem tedy nějakou starou kartu ATI, vyrobil jednoduchou redukci z VGA na VGA s odbočkou a připojil. i2cdetect čip skutečně našel, a dokonce jsem z příkazového řádku podle datasheetu dokázal přečíst teplotu z čipu. Druhý zádrhel ovšem nastal s ovladači teplotního čidla z balíku lm-sensors. Součástí jádra totiž je ovladač pro DS1621 - starší model, se kterým je DS1631 zpětně kompatibilní. I když jsem však modul zavedl s příznakem force a nastavil adresu, na které senzor byl, ovladač odmítl spolupracovat.
Číst dále...