Měření teploty, verze 2 


Minulý rok jsem tu psal o poměrně svérázném využití VESA DDC rozhraní jako I2C sběrnice pro přímé připojení teplotního čidla DS1631. Rok se s rokem sešel a želva u nás opět zimuje. Oproti minulému roku letos nemáme elektroměr zaseklý na nízkém tarifu*, takže přidání dalšího trvale běžícího PC jen kvůli měření teploty jsem bral jako krajní řešení.

Nakonec se ukázalo, že ke sklepu vede jeden UTP kabel, sice využívaný pro IP telefon, ale jak známo, ve (Fast) Ethernetu jsou 4 dráty navíc. Stačilo trochu naprosto neprofesionálního krimpování jakýchsi Y-kabelů a už byla ve sklepě natažena sériová linka RS-232. I když je to celkem nějakých 35 metrů, při rychlosti 9600 Bd to spolehlivě funguje.

Zbývalo vyřešit, jak převést sběrnici I2C na RS232. Nakonec jsem to vyřešil mikrokontrolérem DS89C450, kam jsem za pár hodin v Céčku vyrobil (a pomocí SDCC přeložil) program, který místo pouze hloupého převodu protokolů také realizuje vlastní odečet teploty. S výhodou jsem využil I2C podprogramy, co jsem napsal ve škole v rámci předmětu Praktika z mikroprocesorové techniky, takže největší prací bylo nastudovat, jak v tomto typu procesoru pracují vestavěné periferie.

No a nakonec bylo potřeba vyřešit, kterak obsloužit sériový kanál na straně PC a ukládat načtená data do MySQL databáze. Shellový skriptík jsem pro sériovou komunikaci zavrhl. Místo toho jsem udělal program v C, který je více méně neprůstřelný - vyprazdňuje buffery, má timeout na čtení dat, takže nezůstane viset, atd. Protože jsem ale líný studovat, jak se v Cčku připojuje k MySQL, vyřešil jsem to tak, že prográmek generuje textový dotaz, který se rourou předá do řádkového klienta mysql. :)

Nad databází je pak jednoduchý PHP frontend, který pomocí knihovny jpgraph generuje moc pěkné** grafy. Tato knihovna je taky jediná, kterou jsem našel, co dokáže korektně vykreslit X-Y graf, kde osu X tvoří datum a čas.

Jsem sám zvědav, co vymyslím napřesrok. Možná by to chtělo aspoň stávající zapojení předělat z nepájivého pole na desku tištěných spojů :)

Zdrojové kódy všech uvedených komponent neuvádím, protože nejsou dostatečně zobecnitelné a nemyslím si, že by je někdo užil. Pokud by snad přeci jen měl někdo zájem, nechť se ozve.

*) Ono se nakonec ukázalo, že to až tak výhodně není - po zjištění poruchy provedla distribuční společnost v souladu §16 vyhlášky 51/2006Sb. energetického regulačního úřadu přepočet na spotřebu obdobnou v předchozím období.

**) Odborníci jistě prominou použití fontu Comic Sans :)

Komentáře

Pro tento záznam nejsou komentáře povoleny.