Můj dlouhodobý zájem o radiaci dospěl do bodu, kdy jsem si řekl, že bych si mohl postavit vlastní solárně napájený monitor radiačního pozadí.
Jednotlivé části už vlastně mám. Solární panel s jednoduchým monitoringem jsem popsal tady, radiační detektor tady a komunikaci detektoru s počítačem jsem úspěšně vyzkoušel tady. Zbývalo tedy všechno spojit dohromady a vytvořit zařízení, které bude dlouhodobě měřit radiační pozadí a odesílat naměřené hodnoty na server.

Volba HW
Vlastní solární část jsem podrobně popsal v tomto článku, takže ji zde představím jen stručně. Celá sestava se skládá z následujících částí:
- Solární panely s výkonem 2 x 10 W – zajišťuje napájení celé sestavy
- Nabíječka CN3791 – nabíjí tři paralelně zapojené Li-ion články s celkovou kapacitou 9600 mAh
- INA219 – měří proud dodávaný solárním panelem
- MAX17043 – měří napětí akumulátorů a odhaduje jejich zbývající kapacitu v procentech
- LaskaKit ESP32-S3-DEVKit – řídí celý monitoring, zpracovává naměřené hodnoty a komunikuje s detektorem radiace
- Bosean FS-5000 – měří radiační pozadí
- MeshCore repeater – využívá stejný solární systém jako původně
Původně jsem k řízení monitoringu používal modul ESP8266 Lua NodeMCU V3. Ten jsem nyní nahradil deskou LaskaKit ESP32-S3-DEVKit, protože ESP32-S3 podporuje režim USB host, který potřebuji ke komunikaci s detektorem radiace.
Jako detektor slouží Bosean FS-5000 s nahraným firmwarem RadPro 3.0.2. Samotný detektor jsem podrobněji popsal v tomto článku a jeho komunikaci s počítačem jsem vyzkoušel tady, proto i zde jen stručně.
ESP32 komunikuje s detektorem přes USB pomocí virtuální sériové linky. Komunikace probíhá jednoduchým způsobem dotaz–odpověď a používá obyčejné textové příkazy. Stačí například odeslat dotaz na aktuální hodnotu CPM a detektor odpoví textem s naměřenou hodnotou. Není tedy potřeba dekódovat žádný složitý binární protokol.
Původní solární sestava byla postavena především pro napájení MeshCore repeateru. Ten jsem v ní ponechal, takže solární systém nyní napájí repeater i monitoring radiace.
Řídicí desku LaskaKit ESP32-S3-DEVKit je ještě nutné mírně upravit. Na její spodní straně stačí propojit pájecí propojku JP2, čímž se aktivuje napájení zařízení připojeného k USB konektoru. Detektor Bosean tak může být napájen přímo z řídicí desky.

Celá sestava je umístěna v plastové krabici, která ji chrání před nepříznivým počasím. Plast jsem zvolil také proto, aby měření ovlivňoval co nejméně.


Software
Pro komunikaci s Boseanem používám jeho USB rozhraní. Detektor má nahraný alternativní firmware RadPro 3.0.2, který umožňuje získávat naměřené hodnoty pomocí jednoduchých textových příkazů. ESP32-S3 pracuje jako USB host a přes převodník CH340 v Boseanu komunikuje rychlostí 115200 Bd.
Při připojení se zařízení hlásí jako:
VID: 0x1A86
PID: 0x7523
Pro komunikaci používám knihovnu esp32-usb-serial.
Při testování jsem narazil na problém s USB Host v Arduino-ESP32 3.3.11, kdy se připojené zařízení vůbec nedetekovalo. Po návratu na verzi 3.3.10 začala komunikace fungovat bez dalších problémů, takže tuto verzi používám i ve výsledném programu.
Čtení dat z Boseanu
Po připojení si program nejprve přečte identifikaci zařízení příkazem GET deviceId a potom si pravidelně načítá několik hodnot:
GET deviceBatteryVoltage
GET tubeRate
GET tubePulseCount
GET tubeSensitivity
GET tubeTime
Získám tak napětí interní baterie Boseanu, okamžitou hodnotu CPM, celkový počet zaznamenaných impulzů, citlivost Geigerovy trubice a její celkovou dobu provozu.
Výpočet CPM a dávkového příkonu
RadPro poskytuje přímo okamžitou hodnotu tubeRate, která udává počet impulzů za minutu, tedy CPM. Pro dlouhodobý monitoring ale program zároveň počítá vlastní hodnotu z rozdílu celkového počtu impulzů.
Jednou za přibližně 60 sekund porovná aktuální tubePulseCount s předchozí hodnotou a podle skutečně uplynulého času vypočítá CPM. Tato hodnota je pro ukládání a grafy vhodnější, protože představuje počet impulzů za delší časový úsek.
Dávkový příkon se následně vypočítá z CPM a citlivosti trubice:
µSv/h = CPM / citlivost
Program si ponechává jak okamžitou hodnotu z RadPro, tak vlastní hodnotu vypočítanou z přibližně minutového intervalu. Na webu používám jako hlavní údaj právě minutovou hodnotu.
Spojení se solárním monitoringem
Původní program monitoru solárního parapetu měřil pomocí INA219 proud a napětí ze solárního panelu a pomocí MAX17043 napětí a odhad stavu akumulátoru.
Tato část programu zůstala zachována. I²C komunikace na ESP32-S3 používá:
SDA = GPIO42
SCL = GPIO2
Napájení I²C části desky je zapnuté pomocí GPIO47. Toto napájení nechávám trvale aktivní, protože MAX17043 musí zůstat zapnutý, aby mohl správně sledovat stav akumulátoru.
Bosean se čte průběžně přes USB. Původní pětiminutové čekání pomocí delay() proto už nebylo možné použít, protože během něj by se zastavila obsluha USB komunikace. Hlavní měřicí cyklus je nyní řízen pomocí millis() a komunikace s Boseanem může mezitím běžet nepřetržitě.
Každých pět minut program:
- změří stav hlavního akumulátoru pomocí MAX17043
- změří solární panel pomocí INA219
- použije aktuální hodnoty získané z Boseanu
- zapne Wi-Fi
- odešle všechna data na server
- Wi-Fi opět vypne
Wi-Fi tedy neběží zbytečně stále, což je důležité hlavně kvůli napájení celé sestavy ze solárního panelu.
Ukládání dat na server
Data se odesílají HTTP požadavkem na PHP skript pridej.php. Původní solární data se dál ukládají do souboru:
solar.csv
Radiační data jsem oddělil do druhého souboru:
bosean.csv
Díky tomu nebylo potřeba měnit strukturu staršího solar.csv a zůstala zachována veškerá dosavadní historie měření. Přijímací PHP skript při každém požadavku uloží solární data jako dříve a pokud jsou přítomné také hodnoty z Boseanu, zapíše je současně do bosean.csv.
Do souboru se ukládá například:
- stav připojení Boseanu
- napětí jeho baterie
- okamžité CPM
- CPM vypočítané z přibližně 60 sekund
- okamžitý dávkový příkon v µSv/h
- dávkový příkon vypočítaný z CPM za přibližně 60 sekund
- celkový počet impulzů
- citlivost trubice
- celková doba jejího provozu
Zobrazení na webu
Stránka prehled_dat.php načítá zvlášť solární data, data z Boseanu a údaje z meteorologické stanice ČHMÚ a zobrazuje je v jednom přehledu.
Pro Bosean se nahoře zobrazují aktuální hodnoty, například:
- dávkový příkon v µSv/h
- CPM
- napětí interní baterie
- celkový počet impulzů
- doba provozu trubice
- stav připojení
Pod nimi jsou grafy dávkového příkonu a CPM. Napětí baterie Boseanu zobrazuji pouze jako aktuální hodnotu, protože jeho samostatný graf pro tento projekt nepřinášel příliš užitečných informací.



Stejně jako u původního monitoringu lze přepínat časový rozsah grafů například na posledních 12, 24 nebo 48 hodin, týden nebo celou dostupnou historii.
Závěr
Původní monitoring solárního parapetu se podařilo rozšířit o dlouhodobé měření radiace bez nutnosti stavět celý systém znovu. Výměnou ESP8266 za LaskaKit ESP32-S3-DEVKit jsem získal USB host pro komunikaci s Boseanem FS-5000 a zároveň zůstalo zachované měření solárního panelu i stavu akumulátoru.
Nejvíc práce nakonec nebylo se samotným RadPro protokolem, který je poměrně jednoduchý, ale se zprovozněním USB hostu. Bylo potřeba propojit napájecí propojku JP2 a při testování se ukázalo, že se u mé sestavy s Arduino-ESP32 3.3.11 Bosean nedetekoval, zatímco s verzí 3.3.10 komunikace fungovala.
Výsledkem je zařízení, které z jednoho solárního systému napájí původní MeshCore repeater i monitoring radiace. ESP32 průběžně čte Bosean, každých pět minut změří také solární část a všechny hodnoty odešle na server. Na webu tak můžu dlouhodobě sledovat nejen stav napájení, ale nově i vývoj radiačního pozadí v CPM a µSv/h.

Je možnost shlédnout data, výstup i v režimu host. Podívat se na hodnoty radioaktivity pozadí.
V článku je odkaz. Přidávám i zde: https://www.michaluvbrloh.cz/prehled_dat.php?hours=24