Tento článek navazuje na starší příspěvek pojednávající o měření výšky hladiny vody ve studni, který byl řešený formou zadrátování jednotlivých komponent a proto také byl označený “Ghetto style”. Mailem jsem obdržel spoustu žádostí o stavbu stejného zařízení a i po odfiltrování české klasiky – “Já si to koupím, když mi dáte 20% slevu z nákupních cen součástek…”, nebo “Dejte mi cenu na 5000 kusů a já si pak jeden za tuhle cenu koupím…” zbylo stále dost opravdu vážných zájemců. Jeden z nich byl natolik zajímavý, že jsme se nakonec dohodli – vyvinu novou elektroniku, která bude uveřejněna pod licencí Open source hardware a napíšu úplně nový firmware, který bude možné rozšiřovat ve smyslu pozdějšího připojení měření do internetu a komunikace s jinými automatizačními systémy. Elektronika bude mít možnost zobrazit hladiny až ze tří zdrojů na OLED displeji. Tohle byly základní dohodnuté parametry.
Protože jsem však chtěl s novou elektronikou pokrýt i “staré” úkoly – tím myslím například řízení relé, které původní zařízení obsahovalo, navrhl jsem jen jedno zařízení, které se dá alternativním osazením změnit na
- Měřící jednotku – jednotka používá původní HX711 převodník a vážící trámec pro měření hloubky. Je určena do nádrží a kopaných studní. Alternativně je možné osadit převodník z proudové smyčky, takže se dají připojit i tlaková čidla, která jsou vhodná pro měření hladiny ve vrtaných studních.
- Zobrazovací jednotku – plní funkce původní řídící jednotky. Zobrazuje naměřené hodnoty a umožňuje celkovou konfiguraci systému.
- Výkonnou jednotku – tato varianta má osazené až dva reléové výstupy, které slouží pro ovládání nízkonapěťových periferií.
Kvůli snaze o co nejlevnější řešení jsem pro všechny varianty osazení zvolil jako řídící mikrokontrolér modul ESP-12. Znamená to tedy, že je možné vytvořit program, který umožní komunikaci mezi jednotkami přes WiFi, nebo alespoň zobrazovací jednotce umožní přenos naměřených hodnot do nadřazeného systému.
Standardní komunikace probíhá pomocí sběrnice RS485, protože nepředpokládám, že by měřící modul, umístěný ve studni měl dobré pokrytí WiFi signálem.
Abych usnadnil instalaci i méně zkušeným uživatelům, navrhl jsem zakončení rozhraní RS485 se semiautomatickým terminátorem. Toto zapojení jsem kdysi viděl v nějakém doporučení pro zapojování RS485, ale nedokázal jsem původní pramen najít. Spočívá v tom, že jsou použity terminátory s vyšším odporem, polarizační odpory sběrnice mají také vyšší hodnoty a v sérii s terminátorem jsou zapojeny antiparalelně diody, které zabezpečí potřebné minimální polarizační napětí. Znamená to tedy, že je sběrnice do jistého počtu připojených zařízení a určitých přenosových rychlostí samozakončující a nemusíme řešit zapojování terminátorů na koncích linky.
Když už je usnadněná instalace hardware, tak by bylo vhodné co nejvíce zjednodušit i konfiguraci softwareovou. To jsem vyřešil tak, že jsem napsal vlastní síťový komunikační modul, zabezpečující automatickou adresaci bez nutnosti ručního přidělování adres, zabezpečující automatickou detekci nových zařízení v síti a detekci odpojení zařízení. Původně jsem pro toto všechno chtěl použít protokol PJON, ale byl jsem zklamán jeho nespolehlivostí a (alespoň mi to tak připadá) neforemností.
Celkové zapojení desky prakticky není nutné komentovat snad až na zapojení 4-tlačítkové klávesnice. Protože má modul ESP-12 málo pinů pro obsluhu, tak jsem navrhnul zapojení klávesnice jako odporový dělič, který je připojený do analogového vstupu. Hodnoty odporů jsou takové, jaké jsou protože A/D převodník v ESP8266 měří v rozsahu 0-1V. Na desce je také připojovací místo pro mikrovlnné čidlo RCWL-0516, které je použité pro detekci osoby, stojící před displejem. Podstatným způsobem se tím prodlouží životnost OLED displeje. Místo programovacího konektoru s pogo piny jsem v tomto případě použil konektoru, tvořeného jen částí PCB a jako protikus používám koncovku z Wii ovladače – kabely jsou dostupné velmi levně třeba zde a jejich úprava na programovací přípravek je rovněž velmi snadná. Toto řešení jsem použil už na dvou projektech a zatím se velmi osvědčilo. Jako zobrazovací jednotku je možné použít LED displej, postavený na čipu TM1637, ale pro pohodlí obsluhy byl nakonec zvolený OLED 2.42 palce s rozlišením 128×64 bodů. Jako vizualizační doplněk je možné připojit řadu LED WS2812, například tuto.
Pro pohodlí obsluhy je zobrazení na displeji animované – původně animace měly zabránit vypalování bodů na OLED displeji, ale to jsem vyřešil připojením RCWL čidla. Animace však už zůstaly…
Ovládání je tvořeno dvěma menu – hlavní menu slouží pro přidávání senzorů nádrží a pro nastavení timeoutu pro zhasínání OLED, lokální menu nádrže pak slouží k odebírání nádrží, jejich kalibraci (nastavení nulové hladiny a měřené hladiny) a k monitorování kvality spojení se senzorem.
Chybové stavy jednotlivých čidel jsou pak indikovány blikajícím varovným trojúhelníkem namísto výšky hladiny. Přítomnost nového, dosud nepřidaného čidla je indikována blikající ikonou klíče ve spodní části obrazovky.
Pro snadnou aktualizaci firmware má každý prvek stavebnice integrovaný WiFi AP, který se spustí dvojím stiskem tlačítka Reset. Pak je možné přes webové rozhraní aktualizovat firmware. Senzory nemají možnost indikace tohoto stavu, ale zobrazovací jednotka ho indikuje blikající ikonou WiFi signálu.
Hardware je publikovaný pod licencí Open source hardware – chtěl jsem získat i certifikát, o který jsem požádal zde https://application.oshwa.org/apply , ale vůbec jsem nedostal žádnou reakci, takže jsem se na celý certifikační proces vykašlal (chtěl jsem certifikační číslo umístit na PCB, ale nechtěl jsem zdržovat výrobu).
A na závěr tedy archiv s designem hardware v Kicadu:
Ahoj Pavle,
děkuji za další článek (myslel jsem že jsi již KO). Vždy si rád pročítám nové články na tvém webu – je to uklidňující pocit 😀
Děkuji a ať se daří – nezanevři na svoji práci (blog)
Martin
Ahoj Martine,
díky. KO nejsem, jen jsem tak zavalený prací, že nezbývá čas na články…
Pavel
Tož vítej z5 😉
Díky… 😀
Dobrý den, dáte k dispozici i programové vybavení?
Dobrý den,
v dohledné době se nechystám zveřejnit programové vybavení pod licencí open source. Nebráním se ale vážně míněné spolupráci…
Dobrý den, chtěl jsem se zeptat zda je zařízení možné zakoupit či objednat?
Dobrý den,
ještě mám nějaké kusy, které dodávám jako téměř hotovou stavebnici (osazená a oživená elektronika, kterou je nutné mechanicky zabudovat do krabic). Pro více informací mi napište na mail, který je v sekci “Kontakt”.
Dobrý den, jsem potěšen, že jste použil inspiraci podle mého hladinoměru. Zřejmě jste ale přehlédl, že princip snímání hladiny ve studni mám chráněný Průmyslovým vzorem. To znamená, že byste neměl dodávat hladinoměr ani jako stavebnic bez licence.
Je škoda, že jste se neozval hned na počátku Vaší činnosti. Mohl jste si ušetřit mnoho práce a bádání. Můj první vzorek s tímto principem funguje již přes 20 let v žumpě! Vyhodnocení bylo tehdy ještě analogové. Sonda ve studni musí být velmi dobře utěsněná aby dlouhodobě obstála. Elektrické řešení sondy se obejde bez mikropocesoru. Jsou tam použity pouze dva jednoduché běžné analogové obvody včetně teplotní kompenzace. Signál ze studně se přenáší frekvenční modulací do dvoudrátového přívodu. Tím můžete použít jakýkoliv přívodní kabel s prakticky neomezenou délkou. V přijímači se pak měří počet impulzů za např. 5 sekund. Jeden impuls = 1cm.
V přijímači je použito Arduino Pro a jeden plošný spoj bez drátování. Je tam přímo i konektor, do kterého lze připojit ESP-01 s programem pro připojení na Thing View a zákazník tak může přímo v mobilu sledovat graf hladiny. Je tam i možnost připojit i desku až s 4 relé pro signalizaci hladin. Relé se připojí pomocí kabelu a umístí třeba v rozvaděči u stykače čerpadla.
K Vaší poznámce, že je to drahé. Pokud zařízení prodáváte jako firma a platíte daně a DPH a musíte započítat i mzdové náklady a počítat se zárukou vyjde taková cena. Zkuste si spočítat Vaše hodiny, které jste na projektu strávil a vynásobit je třeba jen 300 Kč/hod. Připočtěte materiál. To, že jste použil cizí nápad započítat nemusíte. Rozdělte to do počtu realizovaných kusů. Zajímá mě, kolik Vám vyšlo.
Zdravím
Kavalír
Dobrý den pane Kavalíre,
domnívám se, že informaci o průmyslovém vzoru jsem v rešerších, které jsem dostal od původních zadavatelů v roce 2017 nikde neviděl (tato informace není ani na Vašem webu). O dalších schopnostech, které uvádíte (komunikace, připojení řízení) na webu informace žádné nebyly (a v době psaní této reakce stále nejsou). Pro Vaši informaci stavebnice s tímto způsobem měření už dávno nedodávám. A k tomu, že to je drahé (předpokládám, že narážíte na původní článek z roku 2017) – mám zkušenosti s cenotvorbou elektroniky i jejím vývojem, takže vím, o čem mluvím.
Hezký den,
Pavel Brychta
Dobrý den,
abych se ujistil, že jsem nezasáhl do Vašeho duševního vlastnictví, tak jsem nechal znovu udělat rešerše na Vámi inzerovaný Průmyslový vzor. Zjistilo se, že informace, které jsem dostal v roce 2017 jsou správné – nemáte zaregistrovaný Průmyslový vzor, ale Užitný vzor pod číslem 15990. Nicméně ochrana tohoto vzoru zanikla v roce 2009, takže k žádnému porušení práv nedošlo a, protože se běžně vyhledává jen v platných dokumentech, tak tato informace nevyskočila ani v rešerších předchozích.
Hezký den,
Pavel Brychta
Dobrý den,
mohl by jste aspoň nastínit, jak řešíte automatickou adresaci a detekci připojení/odpojení ve Vašem síťovém protokolu?
Dobrý den,
jasně – adresace spočívá v tom, že každé zařízení má svou unikátní 32 bitovou adresu – u ESP to je chipid() (3 byty), u SAMD architektury ji zase získávám z CPUID. Komunikace je master-slave, kde master má vždy id 0. Master periodicky “očichává” zaregistrované slavy a detekuje timeouty. Periodicky také v tomto procesu vytváří komunikační mezery, ve kterých neznámý/nově připojený slave může masterovi poslat informaci o tom, že je přítomný na síti. Zde je využito CSMA-CA (hezky odborně řečeno 😉 – ve skutečnosti to je generátor náhodných čísel, který řídí jitter ohlašovacího timeru). Zní to složitě ale zase tak moc to složité není. Shrnuto – master detekuje ztrátu spojení opakovaným timeoutem na jeho výzvy, slave detekuje ztrátu spojení timeoutem výzev. Formát zpráv je ASCII – kdysi jsem objevil nějakou knihovnu na githubu (teď jsem hledal, jestli nemám v poznámkách zdroj, ale nemám.), která by mi vyhovovala, ale nevyhovovala licencí, tak jsem si napsal vlastní, nekompatibilní variantu.
Děkuji za odpověď, byl jsem hlavně zvědavý jak řešíte konflikty na síti a to jste pěkně vysvětlil.
Dobrý den,
můžu se zeptat jaké jsou zatím zkušenosti s dlouhodobým provozem tohoto měřiče hladiny?
Zejména mne zajímá přesnost měření (odchylka) v závislosti na teplotě – jinými slovy, jestli je nutná nějaká teplotní kompenzace tenzometrického snímače a nebo jestli vyhovuje stávající řešení s HX711 (v článku píšete, že to není třeba, ale zajímala by mne dlouhodobá zkušenost). Kromě toho by mne zajímá dlouhodobá stabilita použitého tenzometrického snímače na hliníkovém nosníku – jinými slovy hliník při trvalém zatížení teče a deformuje se což samozřejmě má nějaký vliv na přesnost – odchylku měření (resp. z toho by vyplývala nutnost po nějakém období zařízení znovu zkalibrovat na stav minimální – maximální hladina).
Plánuji stavbu podobného zařízení na měření hladiny v podzemní nádrži na dešťovou vodu, takže mne zajímají dlouhodobé zkušenosti s tímto způsobem měřením výšky hladiny.
Předem díky za odpověď
Dobrý den, tak jsem se dnes ptal kolegy – měřit to měří stále, kdyby ne, tak by prý švagr nemohl splachovat, protože to řídí čerpadlo. Přesnost ale už dlouho nekontroloval. Co se týče tečení hliníku, tak k tomu jsem tady už psal…