Už dříve jsem se zabýval dozimetrem Bosean FS-5000 s alternativním firmwarem Rad Pro. Jedna z věcí, která mě na Rad Pro zaujala, je možnost získávat naměřené hodnoty z přístroje přímo přes USB.
To se může hodit třeba pro dlouhodobý monitoring, ukládání hodnot do počítače nebo později pro připojení dalšího zařízení, které bude data automaticky zpracovávat.
Než se ale pustím do komunikace s ESP32, chtěl jsem si nejdřív ověřit úplný základ – připojit Bosean k počítači přes USB, ručně mu posílat příkazy a podívat se, co skutečně vrací.
Testoval jsem konkrétně Bosean FS-5000 s firmwarem Rad Pro 3.0.2/cs. V této kombinaci komunikace přes USB funguje.

Jak komunikace funguje
Rad Pro používá přes USB jednoduchý textový komunikační protokol. Příkazy se posílají jako běžný ASCII text a zařízení na ně odpovídá opět textem.
Komunikace funguje systémem požadavek–odpověď. Když je příkaz správný, odpověď začíná OK.
Při chybném nebo nepodporovaném příkazu dostaneme ERROR.
Každý příkaz i odpověď končí dvojicí řídicích znaků \r\n (CR+LF). Pro sériové připojení dokumentace Rad Pro uvádí následující nastavení:
- Rychlost: 115200 baudů
- Datové bity: 8
- Parita: žádná
- Stop bity: 1
- Řízení toku: žádné
Jde tedy o klasické nastavení 115200 8N1.
Po připojení Boseanu k počítači přes USB jsem otevřel jeho sériový port v terminálu a mohl začít zkoušet jednotlivé příkazy.
Identifikace přístroje
Jako první jsem vyzkoušel příkaz GET deviceId, který vrací identifikaci hardwaru, verzi a jazyk firmwaru a unikátní identifikátor zařízení.
V mém případě se tak pěkně potvrdilo, s čím skutečně komunikuji:

Už tento jednoduchý příkaz stačí jako základní test, že USB komunikace funguje správně.
Aktuální počet impulzů za minutu
Pro samotné měření radiace je nejzajímavější příkaz GET tubeRate, který vrací aktuální četnost impulzů Geigerovy trubice v jednotkách CPM – Counts Per Minute, tedy počet impulzů za minutu.
Rad Pro tuto hodnotu aktualizuje každou sekundu a vrací ji se třemi desetinnými místy.
V mém případě tedy přístroj v danou chvíli měřil 27.420 CPM:

To už je hodnota, se kterou se dá velmi jednoduše dál pracovat.
Celkový počet impulzů
Další zajímavý příkaz je GET tubePulseCount.

Jde o průběžný kumulativní počet impulzů ,evidovaný firmwarem, zaznamenaných Geigerovou trubicí. Hodnota se nezahazuje při vypnutí přístroje a lze ji využít například pro přesnější výpočet CPM z rozdílu dvou odečtů v přesně známém časovém intervalu. Počítadlo přeteče až po dosažení 2³²−1 a pak začne znovu od nuly.
Tahle hodnota bude zajímavá hlavně při automatickém měření. Místo používání okamžité hodnoty tubeRate lze například přečíst tubePulseCount, po určité době ho načíst znovu a z rozdílu vypočítat počet impulzů za přesně známý časový interval.
Dokumentace Rad Pro tento způsob přímo doporučuje pro přesnější výpočet CPM.
Citlivost Geigerovy trubice
Aby bylo možné převést CPM na dávkový příkon v µSv/h, potřebujeme znát nastavenou citlivost trubice. K tomu slouží příkaz GET tubeSensitivity.
Bosean mi odpověděl:

Hodnota je uvedená v jednotkách CPM / µSv/h.
V mém Boseanu je tedy nastavená citlivost 153,8 CPM / µSv/h.
Převod CPM na µSv/h
Když známe aktuální CPM a citlivost trubice, můžeme si dávkový příkon jednoduše vypočítat.
µSv/h = CPM / citlivost
Při mém měření jsem měl:
CPM = 27,420
citlivost = 153,8 CPM / µSv/h
Takže:
27,420 / 153,8 = 0,1783 µSv/h
Po zaokrouhlení tedy přibližně 0,178 µSv/h.
Tím můžeme z hodnoty získané přímo přes USB vypočítat dávkový příkon bez nutnosti odečítat údaj z displeje dozimetru.
Je ale dobré připomenout, že tento výsledek vychází z nastavené citlivosti Geigerovy trubice. Dokumentace komunikačního protokolu pouze udává, že tubeSensitivity vrací citlivost v CPM na µSv/h; přesnost samotného převodu nebo energetickou závislost konkrétní trubice neřeší.
Napětí akumulátoru
Přes USB lze zjistit také napětí akumulátoru příkazem GET deviceBatteryVoltage.

Bosean tedy v tu chvíli hlásil napětí baterie 4,168 V.
Příkaz vrací napětí akumulátoru ve voltech se třemi desetinnými místy.
Tohle bude užitečné hlavně při plánovaném dlouhodobém monitoringu, protože společně s radiací půjde sledovat také stav napájení přístroje.
Čas přístroje
Aktuální čas lze přečíst příkazem GET deviceTime.

Příkaz nevrací čas v běžném formátu data a času, ale jako UNIX timestamp, tedy počet sekund od 1. ledna 1970.
Nastavené časové pásmo lze zjistit příkazem GET deviceTimeZone.

Příkaz vrací posun časového pásma proti UTC v hodinách.
Doba provozu Geigerovy trubice
Další údaj získáme příkazem GET tubeTime.

Jde o celkovou provozní dobu Geigerovy trubice evidovanou firmwarem Rad Pro, uvedenou v sekundách. Hodnota se zachovává i po vypnutí přístroje a lze ji případně ručně změnit příkazem SET tubeTime.
Mrtvá doba
Mrtvá doba je krátký okamžik po každém impulzu, kdy Geigerova trubice ještě není připravená zaznamenat další. Při běžném pozadí to prakticky nevadí, ale při vysoké četnosti impulzů kvůli tomu může část impulzů uniknout a naměřená hodnota pak může být nižší než skutečná.
Rad Pro umožňuje načíst nastavenou mrtvou dobu trubice příkazem GET tubeDeadTime.

Hodnota je uvedená v sekundách. Dokumentace ji popisuje jako horní hranici mrtvé doby trubice.
Samostatně lze zjistit také nastavenou kompenzaci mrtvé doby příkazem GET tubeDeadTimeCompensation.

Nulová hodnota znamená, že kompenzace mrtvé doby je vypnutá.
Příkaz GET tubeType na mém přístroji nefunguje
Ne všechny příkazy uvedené v obecné dokumentaci Rad Pro musí fungovat na každém podporovaném zařízení.
Například příkaz GET tubeType, který má vrátit označení použité Geigerovy trubice, na mém Boseanu FS-5000 s Rad Pro 3.0.2 skončil pouze odpovědí ERROR.

V této konkrétní kombinaci hardwaru a firmwaru tedy GET tubeType nefunguje.
Je to zároveň pěkná ukázka, proč má smysl příkazy na konkrétním zařízení prakticky vyzkoušet a nespoléhat pouze na obecný seznam podporovaných funkcí.
Uložený datalog
Zajímavou možností je také stažení interního záznamu měření příkazem GET datalog.
Tady už Bosean odpověděl pořádnou porcí dat:

Celý můj výpis byl výrazně delší, takže nemá smysl ho sem kopírovat celý. Důležitý je jeho formát.
První položky říkají, co jednotlivé hodnoty znamenají:
time,tubePulseCount
Následují jednotlivé záznamy obsahující čas a stav počítadla impulzů.
Například:
1785777339,9598
1785777939,9775
1785778539,9975
Jednotlivé záznamy jsou oddělené středníkem. Dvojice středníků ;; označuje začátek nové měřicí relace.
Rad Pro umožňuje při stahování datalogu zadat také počáteční a koncový čas a maximální počet požadovaných záznamů. Při samotném stahování datalogu je interní logování dočasně pozastaveno.
Pro průběžný monitoring proto bude vhodnější pravidelně vyčítat aktuální hodnoty než neustále stahovat celý datalog.
Přehled vyzkoušených příkazů
| Příkaz | Výsledek mého testu | Význam |
|---|---|---|
GET deviceId | OK Bosean FS-5000;Rad Pro 3.0.2/cs;... | Identifikace zařízení a firmwaru |
GET tubeRate | OK 27.420 | Aktuální CPM |
GET tubePulseCount | OK 23465 | Celkový počet impulzů |
GET tubeSensitivity | OK 153.800 | Citlivost trubice v CPM/µSv/h |
GET deviceBatteryVoltage | OK 4.168 | Napětí baterie |
GET deviceTime | OK 1786167108 | Čas jako UNIX timestamp |
GET deviceTimeZone | OK 0.0 | Časové pásmo vůči UTC |
GET tubeTime | OK 65830 | Provozní doba trubice v sekundách |
GET tubeDeadTime | OK 0.0050960 | Mrtvá doba trubice |
GET tubeDeadTimeCompensation | OK 0.0000000 | Kompenzace mrtvé doby |
GET datalog | OK time,tubePulseCount;... | Uložený datalog |
GET tubeType | ERROR | Na mém FS-5000 nefunguje |
Všechny hodnoty v tabulce pocházejí přímo z mého praktického testu Boseanu FS-5000 s Rad Pro 3.0.2/cs.
Dokumentace Rad Pro obsahuje i řadu dalších příkazů pro čtení a změnu nastavení přístroje. Pro moje použití ale nejsou všechny potřeba, takže jsem se zaměřil hlavně na ty, které mají smysl pro monitoring radiace, stav baterie a základní diagnostiku zařízení. Kompletní seznam příkazů je k dispozici v oficiální dokumentaci Rad Pro.
Závěr
Komunikace Boseanu FS-5000 s firmwarem Rad Pro 3.0.2 přes USB funguje velmi jednoduše. Není potřeba řešit žádný složitý binární protokol – stačí poslat textový příkaz a zpracovat textovou odpověď.
Podařilo se mi tak přímo z přístroje získat aktuální CPM, celkový počet impulzů, citlivost Geigerovy trubice, napětí baterie, čas, dobu provozu trubice i uložený datalog.
Z dvojice hodnot tubeRate a tubeSensitivity lze navíc jednoduše vypočítat dávkový příkon v µSv/h.
Ukázalo se také, že ne úplně všechny příkazy z obecné dokumentace musí být na konkrétním zařízení podporované. GET tubeType například na mém Boseanu vrací pouze ERROR.
Ruční komunikace z počítače je ale jen první krok. Když už víme, že protokol funguje a jak vypadají odpovědi, můžeme se pustit do něčeho zajímavějšího.
Příště zkusím Bosean připojit k ESP32 a naměřené hodnoty z něj vyčítat automaticky.
