pondělí 16. prosince 2024

Oprava displeje mikrovlnky

Naší vestavné mikrovlnce se odporoučel displej. Pěkně pomalu a postupně pohasínaly různé segmenty, jiné zase začínaly svítit když neměly. Na fotce přiložené níže je to vidět trochu, ale živě při odpočtu na minutce to vypadalo opravdu jako koukat na Matrix.

Displej je klasická multiplexovaná sedmisegmentovka a k ní hromada symbolů. První podezření padlo na tranzistory ve společných anodách, příp. na mikroprocesor ovládající katody. Výměna tranzistorů nepomohla, až pohled osciloskopem odhalil hnusné rozmáznuté signály o neurčitých úrovních tam, kde vše mělo být digitálně čisté. Viník nalezen - opravdu je to ten LED displej! A to jsem donedávna tvrdil, že tato technologie je nezničitelná.

Náhradní kus typ MLS-54010BSC1-T19.5 je nesehnatelný. Nová vestavná mikrovlnka stojí kolem osmi tisíc. Takže jasná volba, to opravím.

Části displeje ješte fungovaly, takže se z toho dalo reverznout zapojení jednotlivých segmentů. Nakreslit schéma a následně plošný spoj pro klasické sedmisegmentovky a hromádku LEDek okolo byla práce na chvíli, stále používám Eagle, který umožňuje vložit do jedné vrstvy BMP obrázek, který jsem získal tak, že jsem displej protáhl skenerem na 300dpi, zvýšil kontrast a zkonvertoval do dvou barev. Plošňák šel do JLCPCB a já si pomalu začal hrát s krytem.

Výroba krytu byla docela komplikovaná. Základní motiv jsem získal vektorizací skenu displeje v Inkscape, následně jsem kolem jednotlivých symbolů doplnil vymezovací prostory a vyexportoval do SVG v několika variantách - symboly a okénka pro displej, symboly tlustou čarou a okénka pro displej, vymezovací prostory, inverzí vymezovací prostory.

Základ krytu je vytištěný na 3D tiskárně, pro sesazení předloh používám OpenSCAD. První dvě vrstvy jsou plné, tištěné červeným PLA, které je tak akorát průsvitné. Následně změna barvy na černý PLA, dvě vrstvy symbolů tlustou čarou a pak už do výšky cca 8mm vymezovací prostory. Vytisknout rovnou detail symbolů nelze, 3D tiskárna nemá dostatečnou jemnost. Proto jsem symboly vytiskl na klasické laserové tiskárně na samolepící průhlednou fólii (Rayfilm R0400), pro dosažení lepšího kontrastu dvakrát slepenou přes sebe. Na ni pro zvýšení mechanické odolnosti dávám ještě samolepící matnou fólii pro laminaci za studena (Rayfilm R0893).

Složité, že? Ale výsledek stojí za to. Takže skladba od vršku je následující: laminovací fólie, 2x průhledná fólie s vytištěným jemným motivem symbolů, 2 vrstvy červený PLA plné, 2 vrstvy černý PLA s tlustými symboly, vymezovací prostory. Následně se ukázalo, že do vymezovacích prostorů je vhodné doplnit difuzory, aby se světlo z LED lépe rozprostřelo po symbolech. Ty jsou vytištěny z předlohy inverzích vymezovacích prostorů pomocí čirého PLA se 100% infillem.

Celá konstrukce je obalena černou elektrikářskou páskou, která zajistí, že světlo neproniká kam nemá. Zároveň vyřešila přichycení krytu k DPS. Pak už stačilo jen displej osadit do správné výšky na původní plošný spoj ovládacího panelu a vše zkompletovat. Kupodivu jsem nepopletl žádné segmenty, takže jsem nemusel škrábat DPS a předrátovávat. Místo 3mm LED jsem na DPS osadil SMD velikost 0805, lépe se s tím pracovalo.

Mikrovlnka je jako nová! Tedy až na červený displej místo bílého a maličko horší kontrast. Zejména dvojtečka mezi sedmisegmentovkami se nepovedla, chtělo to víc místa a více svítivé LED diody... ale hlavně, že funguje! Zde je archiv s Eagly a různými mezikroky v Inkscape, OpenSCAD a PrusaSliceru. Asi to nikdy nikdo nevyužije, ale co kdyby ;-)


  

  


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.