středa 10. července 2024

Meteostanice a měření studny

Meteostanici na chalupě jsem již před delším časem předělal na kvalitnější DPS a přidal pár nových funkcí. Zejména zpětný kanál, který umožňuje konfigurovat parametry a spínat výstupy při každém updatu údajů, tj. nyní každých 20 hodin. Hlavní část experimentů byla zaměřena na spínání jednoho z výstupů podle porovnání aktuálních teplot rosného bodu uvnitř objektu a mimo. Cílem bylo opět zvýšit efektivitu vysoušení, pomocí řízení ventilátoru v Trombeho stěně. No, nápad dobrý, ale po necelých dvou letech šla stěna dolů. Vzduch byl zahřátý, ale vlhkost se samozřejmě ohřevem nezměnila, ventilace by musela vytlačovat chladnější vlhký vzduch z objektu ven, což by ale vyžadovalo ventilátor odhadem o dva řády výkonnější, než poskytl použitý počítačový. A to by kromě hlučnosti narazilo na napájení ze solárních panelů. K nové verzi meteostanice tedy už jen připojuji fotku revidované DPS a zdrojáky na Githubu.

A teď ty novinky - měření hladiny vody ve studni. Studna je původní kopaná, kamenná. Je pár metrů od silnice, kterou v zimě silničáři náležitě solí, takže násobně překročené limity soli, bakterie... no voda není zrovna pitná. Pomáhá pravidelné čerpání - a na to se opět hodí tvrdá data, jak rychle se v různých obdobích roku voda doplňuje.

Pro měření jsem po domácích pokusech s ultrazvukem použil tlakové čidlo TL-136 z Aliexpressu, varianta 0-3m. Není nejlevnější, ale zatím vypadá, že bude spolehlivě fungovat. Výstup je proudový 4-20mA pro hladinu 0-3m. Zajímavostí je přívodní kabel, který kromě dvou vodičů obsahuje také hadičku, sloužící pro měření referenčního tlaku. Čidlo je masivní a těžké, z obrázku to tak nepůsobí, ale je to fakt kusanec.

Jak dostat měřené údaje ze studny do GSM meteostanice? Do studny samotné vede z garáže UTP, takže první část připojení je jasná. Spoj ve studni jsem do kusu trubky zafouknul pěnou, snad to bude těsnit. A dál? Úplně se nabízí bezdrátový přenos. Měřič hladiny se prostě bude chovat jako další IT+ čidlo teploty, která jsou tam nyní už čtyři a meteostanice je poslouchá. Jen místo teploty v desetinách stupně Celsia bude posílat výšku hladiny v centimetrech.

Od nápadu k realizaci už je kousek. Hardware je bateriově napájený (2x AA), obsahuje step-up s čínským MT3608 na cca 12V a měření proudu pomocí INA180A1 na sériovém 5ohm odporu plus přesnou referenci LM4040. Aktualizace údaje probíhá jen jednou za hodinu, takže step-up se zapíná vždy jen na několik sekund a další hodinu je odpojený. Zároveň se krátce zapne displej s TM1637 a zobrazí výšku v centimetrech. Údaj se následně odesílá v náhodných 4-7sekundových intervalech pomocí RFM12B.

Zatím mám nasbíraných prvních pár dnů dat, ale vše vypadá funkčně, hodnota kolísá odhadem ±2cm. Ještě zakrytovat do vhodné krabičky z 3D tiskárny a dlouhodobě otestovat. Ale teď už dost elektroniky, jde se zazdívat, omítat, prostě zedničit!


  

  

čtvrtek 28. března 2024

Kamerový systém

Když jsem dokončoval dům, pořídil jsem kamerový systém nepříliš známé značky Partizan. Nebyla to dobrá volba. Systém fungoval, ale byl hrozně uzavřený, většina funkcí byla dostupná pouze fyzicky na NVR přes připojený monitor a myš, obsluha nepohodlná, optika kamer průměrná a detekce pohybu trpící množstvím falešných alarmů. Pravda, je to už přes 5 let. O důvod víc systém inovovat!

Strefil jsem skvělou dobu výprodejů značky HiLook, což je low-end od renomovaného Hikvision. Na Alze jsem pořídil tři kusy 4MP kamer IPC-B149HA (4mm), k tomu z CZC přidal další 4MP kameru IPC-B449HA (6mm) a rekordér NVR-108MH-D(C). Do NVR jsem osadil mírně starší HDD řady WD Purple. Celá sranda nakonec stála jen pár tisíc... a mnoho hodin času.

První dojmy z kamer byly skvělé. Obraz vynikající, k tomu perfektní detekce pohybu. Rozhodně se vyplatí volit HA verze, které mají Motion Detection 2.0, spolehlivost detekce je výborná. Také NVR a k němu rozumný přístup přes webové rozhraní mě potěšilo. Potíže začaly, když jsem se to celé snažil rozumně nastavit. NVR sice umí samo konfigurovat kamery, ale ne perfektně. Hlavní problém byl však se záznamem. Nepodařilo se mi rozběhat kontinuální záznam s označením detekce pohybu v časové ose, tuto funkcionalitu prý Hikvision z webové verze rozhraní v minulosti odstranil (?!). Následně jsem zjistil, že mám i problém s ukládáním pouze při detekci pohybu.

Všechny návody zmiňují nutnost zapnout funkci Dual VCA na kamerách, ta ale v těchto HiLook low-end verzích chybí. Vlastně celý firmware je neuvěřitelně osekaný, zatímco hardware je parádní, tak funkce (i kritické) prostě nejsou. Po cvičené aktualizaci firmwaru jedné z kamer se to ještě zhoršilo - zmizela položka FTP uploadu snímků při detekci pohybu... downgrade samozřejmě nemožný, starší firmwary nedostupné, ještě že výměnná politika Alzy je v tomto velmi vstřícná.

Naštěstí se funkčního očesání nedočkalo ONVIF rozhraní. Takže nakonec jsou HiLook kamery připojený k HiLook rekordéru nikoliv přes nativní Hikvision protokol, ale prostřednictvím ONVIF. Vyrobil jsem pro tento účel na kamerách uživatele s omezenými právy, aby rekordér nemohl do nastavení kamer zasahovat, takže to konečně mám celé spokojeně pod kontrolou.

Záznam při detekci pohybu funguje spolehlivě, napájení kamer je vyřešené běžným PoE switchem TP-Link. Kamera s 6mm ohniskem, tj. úzkým úhlem záběru, perfektně sedla dovnitř garáže a je namířená na vrata. Funkce WDR (Wide Dynamic Range) si uspokojivě poradila s kontrasty. Ostatní kamery zabírají okolí domu. Za zmínku stojí také ColorVu, což je funkce přirozených barev i při nízkém okolním osvětlení. Znamená to, že kamery nemají klasický neviditelný IR přísvit, ale slušně svítí bílou LEDkou. Pokud je v okolí pouliční lampa, bude stačit. Pokud ne, bude holt na zahradě nové světlýko.

Protože jsem paranoidní, mají kamery na firewallu zakázanou veškerou síťovou komunikaci s okolním světem s výjimkou synchronizace času. Nějaký přístup "zvenku" jsem k nim ale chtěl. U předchozích kamer byla jediná možnost získat RTSP stream a z něj udělat pomocí ffmpeg snímek formátu JPEG, předaný webovému serveru. Pomalé, náročné. Vybrané kamery HiLook mají přes ONVIF dostupný snapshot, jak prozradil ONVIF Device Manager. Získat odpovídající URL pomocí Wiresharku (http://192.168.1.64/onvif-http/snapshot?Profile_1) bylo dílem okamžiku. Krása. No a když už ho máme, co streamovat takové pseudo-video pomocí MJPEG? Celé to jde přece snadno udělat v PHP!

header("Content-Type: multipart/x-mixed-replace; boundary=cam-boundary");
header(
"Cache-Control: no-cache");
header(
"Pragma: no-cache");

$ch = curl_init();
curl_setopt(
$ch, CURLOPT_URL, $cam_url);
curl_setopt(
$ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt(
$ch, CURLOPT_USERPWD, $cam_user . ':' . $cam_password]);

$ts = microtime(true);
while (!connection_aborted()) {
    $data = curl_exec($ch);
    echo "--cam-boundary\r\n";
    echo "Content-Type: image/jpeg\r\n";
    echo "Content-Length: " . strlen($data) . "\r\n\r\n";
    echo $data;
    ob_flush();
    $ts = $ts + 0.5;
    @time_sleep_until($ts);
}
curl_close(
$ch);

čtvrtek 8. února 2024

Odpojovač akumulátoru

Meteostanice na chalupě funguje. Většinou. Vyrobil jsem novou revizi desky, o ní někdy příště. Mimo jiné podporuje spínání několika výstupů na základě dálkově nastavitelných parametrů, jako je napětí akumulátoru, teploty rosného bodu apod.

Nedávno jsem ale musel vyrazit na fyzickou opravu. Stejně jako při experimentech se zřejmě ve výjimečných případech kousne MCU, když GSM modul začne vysílat. Nejspíš kombinace špatného přizpůsobení antény a zvýšení výkonu při určitých podmínkách šíření. Watchdog samozřejmě používám, ale nezareagoval. Takže výsledkem byl VRLA olověný akumulátor vybitý na necelé 3V.

Řešení? Odpojovač akumulátoru při poklesu napětí. Čínských modulů je k dispozici několik, doslova za pár korun. Jejich nevýhodou je ovšem značná vlastní spotřeba - používají běžné 12V relé a obvykle také operační zesilovač se značným odběrem. Takže jsem se rozhodl pro návrh vlastního řešení.

Odpojovač je postaven na obvodu MCP121. Tento obvod je původně určený jako napěťový supervizor a resetovací obvod pro mikrokontroléry. Vzhledem k extrémně nízkému vlastnímu odběru (pod 2uA) lze však s výhodou použít i pro navrhovanou aplikaci. Zvolená varianta MCP121T-300E/TT generuje aktivní reset (log. 0) při napětí pod cca 3V, má minimální hysterezi a výstup s otevřeným kolektorem. Pro posunutí rozhodovací úrovně k napětí vhodnému pro olověné akumulátory je obvod napájený z děliče R3/R4, čímž je vypínací napětí nastaveno na cca 9,5V. Pull-up pro gate tranzistoru Q2 zároveň zvyšuje hysterezi a posouvá zapínací napětí na cca 11,0V.

Tranzistor Q2 spíná výkonový P-MOSFET tranzistor Q1, který připojuje zátěž. Dioda LED1 indikuje aktivní výstup, s výhodou je použita modrá LED, která již při proudu řádově 100uA spolehlivě svítí. Celková spotřeba zařízení se pohybuje kolem 40uA při odpojeném akumulátoru a do 200uA při připojeném vč. proudu pro LED indikaci.

Při experimentech se mi podařilo "nakopnout" tranzistor Q1. Fungoval, spínal, ale při napětí na gate (Vgs) nad cca 11V začal prudce stoupat proud. Podle datasheetu by přitom tranzistor měl bezpečně zvládnout 20V. Na druhém kusu vše v pořádku, udělal jsem tedy destruktivní test - napětí jsem zvyšoval až k cca 16V, kdy tranzistor odešel do křemíkového nebe a zůstal sepnutý navždy. Po výměně za nový vše OK.

Vodotěsnost jsem vzhledem k přítomnosti modré LED a nedostatku průhledných smršťovaček vyřešil zalitím pomocí chrchlometu (lepící pistole) s průhlednými náboji. Na stole se vše chová perfektně - tak uvidíme po instalaci v provozu. Schéma a DPS pro Eagle jsou dostupné na mém Githubu.