Osvitová jednotka
pre výrobu plošných spojov fotocestou.
BananaPi jednodoskový minipočítač
Banana Pi is an open source hardwarový projekt spoločnosti GuangDong BiPai technology co., LTD.i technology co., LTD.
Monitor radiácie s BPI-M2 Zero.
Screenshot z interpretovaných dát monitora radiacie
Záťažovy regulátor otáčok mini vŕtačky
K základnej výbave každej dielne elektrotechnika, či modelára patrí mini vŕtačka
Záťažovy regulátor otáčok mini vŕtačky
pohľad na osadenú dosku plošných spojov
Spájkovacia pec
pre spájkovanie SMD dosiek plošných spojov
RC433 pre Home Assistant
ovládanie garážvej brány z HomeAssistenta
LK-20 napájací zdroj
laboratórny napájací zdroj
Internetový rádiobudík
Prehrávač médií Volumio s LCD displejom a automatickým riadením jasu

Inteligentná meteo stanica s meraním radiacie a kvality ovzdušia LK-29

        LK-29 je smart meteostanica s LK-29 doplnená o meranie rádioaktivity okolia, s webovým rozhraním a podporou ukladania nameraných hodnôt do databázy. Beží na mikrokontroléri ESP32-S3 s firmvérom napísaným v MicroPythone. Systém je navrhnutý pre nepretržitú prevádzku s minimálnou spotrebou energie a možnosťou vzdialenej konfigurácie.

Popis hardvéru

         Jadrom obvodového riešenia je mikroradič ESP32-S3- Zero, použil som modul od Waveshare ESP32-S3FH4R2, Type-C USB  , ktorý na čipe integruje dvojjadrový procesor Xtensa® 32-bit LX7 s frekvenciou do 240MHz , podporu 2.4GHz Wi-Fi (802.11 b/g/n) a Bluetooth® 5 (LE). Má vstavanú 512KB SRAM a 384KB ROM, Flash pamäť 4MB Flash a 2MB PSRAM. Modul má keramickú wifi anténu prispájkovanú priamo na doske, integrovaný USB seriový port s plno rýchlostným radičom, 24 × GPIO pins umožňujúcim flexibilne konfigurovať funkcie jednotlivých vývodov ako 4 × SPI, 2 × I2C, 3 × UART, 2 × I2S, 2 × ADC, atď.
        Celková schéma zapojenia meteostanice je na obrázku. Jadro hardvéru meteostanice tvorí počítačom riadený obvod na doske plošných spojov (DPS), ktorá je zabudovaná do skrinky osadenej konektormi XS1 na pripojenie napájacieho napätia a konektormi XS3, XS4 na pripojenie I2C senzorov.


Obr30R118 Konektory som zvolil masívnejšie s lepším krytím IP67  pre použitie vo vonkajšom prostredí. Epaper displej je doplnková voľba (nemusí byť pripojený), ak chcete vidieť namerané hodnoty v mieste umiestnenia stanice. Jeho prednosťou je , že zobrazuje údaje aj v stave po odpojení napájania a jeho priemerná spotreba počas refreshovania je 26.4mW a mimo tohto času je odber menší ako 10nA, takže „nežerie“ takmer nič. Nevýhodou je dlhšia doba refrešovania. ~14 sekúnd, počas ktorej displej bliká, čo kompenzuje jeho nízka cena. Ja som nastavil interval 15 minút, ale táto hodnota sa môže podľa ľubovôle zmeniť. Na konektor XS3 som pripojil I2C senzor BM688, ktorý poskytuje údaje o teplote, atmosferickom tlaku, vlhkosti a kvalite ovzdušia s vysokoupresnosťou Obr6(Obr6.png). Konektor XS4 je rezerva pre plánované pripojenie ďalších senzorov, napríklad UV žiarenia, alebo vlhkosti pôdy, alebo niečo iné. Meranie radiácie zabezpečujú obvody sústredené na DPS, schéma zapojenia týchto obvodov je na Obr3.pdf.
        Intenzita radiácie sa meria pomocou Geiger-Müllerovej j trubice (ďalej GM). Princíp je jednoduchý: sklenená GM trubica je naplnená vzácnym plynom , obyčajne Neón, Argón,…, alebo zmesou vzácneho plynu a halogénu ako je Chlór, či Bróm. Obsahuje dve elektródy, na ktoré je privedené vysoké jednosmerné napätie 400V -600V. Prechod častice plynom vyvolá ionizujúci výboj, ktorý sa prejaví prúdovým impulzom na elektródach. Tie meriame. Zdroj potrebného vysokého napätia, ktoré sa privádza na elektródy GM trubice je tvorený Cockcroft–Walton (CW) generátorom, alebo to môžeme nazývať aj násobičom. Tu sa treba pristaviť a prehrýzť sa troškou nezáživnej teórie. 

 Uvyst = 2 x N x Upeak , kde Upeak  je špičkové napätie generované cievkou (viď popis nižšie)

           Aby VN napätie neklesalo treba vhodne zvoliť všetky parametre CW generátora pre, ktorý platí vzorec pre výpočet poklesu napätia:
\[ \Delta V = \frac{ \frac{I}{f C} \cdot N \left( N + 1 \right) \left( 2N + 1 \right) }{12} \]
kde f je vstupná frekvencia , N je počet stupňov, C je kapacita kondenzátora a I je zaťažovací prúd.
Pri výpočte som vychádzal z predpokladu, že bežná GM trubica (napríklad SBM-20) má pracovný prúd do 20µA . Odporúča sa pracovná frekvencia medzi 5kHz až 10kHz, zvolil som 7kHz, čo aj ESP32 dobre zvládne, aj spínací tranzistor bude mať pracovný bod ďaleko od medznej frekvencie fT .
To znamená, že pre každý jeden cyklus je potrebná energia:
\[ E_{cyklus} = \frac{P_{vyst}}{f} = 1.43 \times 10^{-6} \, \text{J} \]
pričom energia v cievke je :
\[ E = \frac{1}{2} L I_{\text{peak}}^2, \quad \text{kde} \quad I_{\text{peak}} = \frac{V_{\text{in}} \times t_{\text{on}}}{L}, \quad \text{takže} \quad E = \frac{1}{2} L \left( \frac{V_{\text{in}} \times t_{\text{on}}}{L} \right)^2 = \frac{(V_{\text{in}} \times t_{\text{on}})^2}{2L} \]
      Z týchto vzťahov je jasné , že výstupné VN napätie sa dá pohodlne riadiť zmenou striedy a pre naše hodnoty VN = 500V, I = 20µA je požadovaný výkon 10mW pri energii v cievke E = 1,43 µJ bude strieda 23.6% (za ideálnych podmienok).
\[ D = \frac{t_{\text{on}}}{T}, \quad \text{a} \quad t_{\text{on}} = 33{,}8 \, \mu\text{s}, \quad \text{je strieda } 23.6\% \]
      Z týchto vzťahov sa dá vypočítať, že pri striede 50% bude výstupný výkon 44.7mW a pri 90% striede bude vákon 145mW. Toto sú teoretické hodnoty, ale dávajú záruku, že pri vyššej radiácií bude zdroj schopný dodávať potrebný výkon, aby VN napätie na GM trubici neklesalo a trubica nestratila schopnosť ionizácie plynu a teda generovať impluzy pri prechode ionizujúcej častice.
    Z vyššie uvedej teórie vyplýva, že postačuje 3 stupňový CW generátor pre požadovaný rozsah napätia 300V – 600V (pri zohľadnení všetkých strát). Každý stupeň tvorí dvojica diód a kondenzátorov. Počas záporných a kladných polvĺn vstupného striedavého napätia sa kondenzátory postupne nabíjajú a výsledné napätie na výstupe je tak násobkom vstupného napätia. Vstupné striedavé napätie pre CW generátor je generované mikropočítačom ESP32 na vývod GPIO7 s frekvenciou 7kHz a premenlivou striedou. To umožní nastavovanie výstupného vysokého napätia vo veľkom rozsahu. Tieto impulzy s premenlivou striedou budia tranzistor Q2 cez rezistor R12. Pri otvorenom tranzistore Q2 tečie cievkou prúd, ktorý vytvára magnetické pole v jadre cievky, keď sa tranzistor zavrie, energia tohoto magnetického poľa indukuje na koncoch cievky napätie. Tieto napäťové špičky majú amplitúdu až 200V, čo zužitkuje následný CW generátor tvorený diódami D1, D2, D3 a kondenzátormi C4, C5 a C10. Teoreticky je možné takto dosiahnuť až 1200V pri trojstupňovom CW, čo je optimistické a nezohľadňuje reálne parametre súčiastok (prechodové odpory, parazitné kapacity, strmosť spínania rozpínania tranzistora …).
      Teoretické výpočty CW generátora som overil praktickým meraním hodnôt:

Žiadaná hodnota [V] Výstupné napätie [V] Duty cycle [%] Odchýlka [V] Odchýlka [%]
100,00 228,41 9,97 -128,41 -128,41 %
125,00 228,19 9,97 -103,19 -82,55 %
150,00 228,43 9,97 -78,43 -52,28 %
175,00 228,05 9,97 -53,05 -30,31 %
200,00 228,11 9,97 -28,11 -14,05 %
225,00 228,18 9,97 -3,18 -1,41 %
250,00 245,17 11,14 4,83 1,93 %
275,00 268,75 12,90 6,26 2,27 %
300,00 296,34 14,86 3,66 1,22 %
325,00 320,78 16,42 4,22 1,30 %
350,00 347,01 18,38 2,99 0,85 %
375,00 374,65 20,43 0,35 0,09 %
400,00 394,64 21,99 5,37 1,34 %
425,00 421,74 24,15 3,26 0,77 %
450,00 447,34 26,20 2,66 0,59 %
475,00 470,50 28,15 4,50 0,95 %
500,00 495,73 30,40 4,27 0,85 %
525,00 522,33 32,85 2,67 0,51 %
550,00 545,59 35,19 4,41 0,80 %
575,00 571,65 38,22 3,35 0,58 %
600,00 596,20 40,96 3,80 0,63 %
625,00 620,15 44,48 4,85 0,78 %
650,00 644,96 48,29 5,04 0,78 %
675,00 670,13 52,79 4,87 0,72 %
700,00 696,30 58,75 3,71 0,53 %
725,00 723,70 65,69 1,30 0,18 %
750,00 712,11 89,93 37,89 5,05 %
775,00 712,22 89,93 62,78 8,10 %
800,00 711,80 89,93 88,20 11,02 %

 

     Zaujímalo ma ako sa bude obvod správať vrátane PID regulátora. Na presnosť nameraných výsledkov má vplyv hodnota DEADBAND PID regulátora (vysvetlené nižšie), ktorú som nastavil na 5V. Graf na obrázku Obr17 ukazuje závislosť želanej a skutočnej hodnoty výstupného vysokého napätia. Z grafu vidno, že závislosť je v rozmedzí 250 až 700V prakticky lineárna. Graf závislosti šírky budiacich impulzov CW generátora (duty cycle) zobrazuje Obr18tento obrázok. Nedá sa očakávať, že CW generátor bude pracovať dobre ak bude strieda menšia ako 10%, alebo väčšia ako 90%, preto sú možné hodnoty striedy limitované na tento rozsah . Teoretický predpoklad (podľa výpočtu ) hovoril, že 500V dosiahneme pri striede 23,6%. Pre 500V je skutočná nameraná hodnota striedy 30,4%, čo je perfektný výsledok, lebo tranzistor Q2 nie je ideálny spínací prvok a vzhľadom k tomu, že sa jedná o tranzistor s veľým záverným napätím CE sa dá očakávať, že prúdový zosilňovací činiteľ h21e bude rádovo desiatky, čo znamená vyššie straty počas nábežnej aj dobežnej hrany kvôli obmedzenej veľkosti bázového prúdu, ktorý môže poskytnúť GPIO výstup ESP32.  Veľkosť striedy má len informatívny charakter pre posúdenie zhody s teóriou. Ako vplýva charakteristika spínania tranzistora na zhodu s teóriou, možno ilustrovať na tomto príklade. Rezistor R12 s hodnotou 2k7 v báze tranzistora Q2 som nahradil rezistorom s hodnotou 10k a strieda sa zmenila z 30% na 43% pri 500V na výstupe. Uvádzam to len pre ilustráciu, ako sú dôležité spínacie charakteristiky tranzistora Q2 pre správnu činnosť CW generátora. V tomto zapojení to nie kritické, lebo o nastavenie správneho výstupného napätia sa postará PID regulátor. Kritické by to bolo v aplikácií s otvorenou regulačnou slučkou. Percentuálnu odchýlku žiadanej a skutočnej hodnoty zobrazuje tento graf: Obr19
          Z grafu vidno, že presnosť nastavenia výstupného napätia zodpovedá očakávaniu.
Takto vytvorené vysoké napätie (VN) je privedené cez rezistor R6 na jednu elektródu GM trubice a cez odporový delič (R1+R2+R3+R4+R5)/R16 je toto VN zmenšené na tisícinu a cez filter C9,R11,C11 je privedené na vstup GPIO6, ktorý je nastavený ako vstup AD prevodníka. Takže ak je VN 500V na vstupe AD prevodníka je 0.5V. Pomocou softvérového PID regulátora sa udržiava na elektróde GM trubice požadované VN napätie, ktoré sa dá nastavovať cez konfiguračnú web stránku a jeho nastavená hodnota závisí od použitej GM trubice. DPS je navrhnutý tak, aby sa dali použiť rôzne typy GM trubíc. Diódy D6 a D7 majú ochrannú funkciu AD prevodníka, ktorého vstupné napätie má byť v rozsahu 0V – 1V. Celkový úbytok napätia na týchto dvoch diodách (pri otvorení) sa pohybuje okolo 1.1V , čo ochráni ESP32 pred zničením. Privedenie 3V, alebo 5V na tento vstup v režime AD prevodníka spoľahlivo zničí ESP32 (čo som neskúšal, verím výrobcovi). Keďže GM trubice majú pomerne široký rozsah VN napätia, pri ktorom spoľahlivo pracujú nerobil som si starosti s presnosťou deliča, použil som rezistory s presnosťou 1%, a teda presnosť merania (ak nezohľadníme nelinearitu a zašumenie AD prevodu by mohla byť 2%), a je určite lepšia ako 5%. Vývody GPIO8 a GPIO9 mikropočítača sú použité na I2C zbernicu pre komunikáciu s inými zariadeniami. Diódy D9- D12 chránia zbernicu pred indukovaným prepätím. Na vstup GPIO1 sú generované impulzy ionizujúcim žiarením z GM trubice upravené deličom R7, R15, C3 a sú programom počítané. Z nich je vypočítaná hodnota žiarenia v Siviertoch/hod. Cez odporový delič R7/R14 je napájacie napätie 5V privedené na vstup GPIO2, ktorý je nastavený do režimu vstupu druhého AD prevodníka. Diody D5 a D7 majú ochrannú funkciu , ako už bolo popísané a rezistor R9 s kondenzátorom C8 zabezpečujú filtráciu a stabilitu pri meraní napätia.  Cez výstup GPIO10 a tranzistor Q1 je budený piezomenič BUZZER1 na akustickú signalizáciu prekročenia hraničných hodnôt. Jeho použitie nie je nevyhnutné a nie je až tak dôležité pre správnu funkciu meteostanice LK-29.   Cievka L1 a ostatné kondenzátory majú filtračný charakter a majú zabrániť prenikaniu rušenia do meracích častí obvodov.
     Všetky súčiasky sú umiestnené na jednom obojstrannom plošnom spoji o rozmeroch 140 x 80 mm (120 x 80 mm ). Spodná strana motívu plošného spoja je na nasledujúcich obrázkoch  spodná strana, horná strana  aj sadzovací plán  a jeho trojrozmerné vyobrazenie .

Obr14

Obr15

Obr16
Obr7
Priestor pre GM trubicu je navrhnutý tak, aby bolo možné použiť ľubovoľnú GM trubicu menšiu ako 120mm.
Plošný spoj som sa rozhodol navrhnúť technológiou THT (Through-Hole Technology ), aby bol dobre zrealizovateľný v amatérskych podmienkach aj menej skúseným rádioamatérom. Tvar plošného spoja zodpovedá rozmerom skrinky Kradex ZP15010060UJPH-PC ,
 Obr32
do ktorej som ho zabudoval. Výstupky DPS na pravej a ľavej strane sa dajú odlomiť, alebo odstrihnúť, potom má DPS štandardný rozmer 120 x 80 mm. Skrinka má krytie IP65, čo je vhodné aj do nepriaznivých poveternostných podmienok, ktoré môžu panovať vonku. Vhodné púzdro pre senzor som vytlačil na 3D tlačiarni, vrátane jeho držiaku. Obrázok modelu zostavy aj s prívodným káblom a prechodkou PG7 je na nasledujúcom obrázku. 
Obr33
         Kruhové púzdro má po obvode oválne otvory , aby dobre prúdil vzduch k snímaču. Do vnútra som vložil nerezové sitko z vodárenského Y ventilu s otvormi 400 µm, aby som zabránil vstupu hmyzu a pavúkov.Obr30 
Je jasné že treba vybrať vhodné miesto bez priameho slnečného osvetlenia senzora, aby údaje o teplote vzduchu boli hodnoverné.

 

Popis softvéru

 

         Všetky požadované funkcie sú programovo riadené. Program zabezpečuje načítanie a prepočet hodnôt zo snímačov, ich zobrazenie na lokálnom ePaper displeji, alebo vzdialene vo webovom prehliadači cez HTTP protokol. Samozrejme spravuje sieťové wifi pripojenie. Program má modulárnu architektúru, tu je zoznam najdôležitejších z nich :

Najdôležitejšie programové moduly

Súbor

Popis

main.py

hlavný riadiaci cyklus, inicializácia modulov

reg.py

regulácia HV, ADC, GM pulzy, CPM

i2c.py

komunikácia s BME688 / SHT30

openweather.py

načítavanie počasia z OpenWeatherMap

geoip.py

geolokácia podľa IP

display.py

ePaper displej

influx.py

zápis do InfluxDB

wifi_manager.py

správa Wi-Fi pripojenia

http_server.py

HTTP server

http_api.py

API handlery (oddelené kvôli pamäti)

config.py

konfiguračné premenné

http_cfg.py

premenné pre webové rozhranie

html/dashboard.html

Dashboard je hlavná používateľská obrazovka prístupná na adrese
http://<ip>/ alebo http://<ip>/dashboard. Je optimalizovaná pre mobilné
zariadenia aj počítače (responzívny dizajn).

html/dashboard.css

obsahuje štýly zobrazenia pre rôzne formáty a orientácie zobrazenia

html/http_server.json

definuje štruktúru webového rozhrania

 

       Uvažoval som aj o použití HTTPS protokolu, ale bezpečnostný prínos je minimálny. Zariadenie beží na lokálnej sieti a SSL chráni pred odpočúvaním dát na ceste medzi prehliadačom a serverom, ale na domácej WiFi je to riziko prakticky nulové. Skutočné ohrozenie (ak existuje) je neautorizovaný prístup a SSL to nerieši (ktokoľvek na sieti sa pripojí cez HTTPS rovnako ako cez HTTP). Toto rieši použitie hesla na konfiguračné stránky. Keďže ESP32 nemá doménu ani CA-podpísaný certifikát, musel by som použiť self-signed certifikát. Každý prehliadač zobrazí varovanie : „Toto pripojenie nie je bezpečné" a budete musieť kliknúť „Pokračovať napriek riziku". Na mobile v kiosk móde (Fully Kiosk) to môže byť problém — niektoré WebView to odmietnu úplne. Dashboard polluje každých 15 s a môj dashboard.html volá /api/data každých 15 sekúnd. Každý request by vyžadoval plný TLS handshake (ESP32 neudržiava keep-alive pri TLS), čo na ESP32-S3 trvá 1–2 sekundy. To by spomalilo odozvu dashboardu a zaťažilo procesor. Aj RAM pri TLS handshake. Pri TLS spojeniach na ESP32 sa objavujú ENOMEM chyby (Not enough memory - nedostatok pamäte ) a samotný handshake spotrebuje 30–50 KB RAM na jedno spojenie. Ak dashboard otvorí viacero requestov súčasne (dáta + CSS + JS), môže dôjsť k pádu programu.
          Po reštarte sa spustí program boot.py, ktorý sa vytvorí pri nahratí Micropython do flash pamäte. Netreba ho nijako upravovať, lebo Micropython po zavedení boot.py automaticky spúšťa main.py ak existuje. Náš main.py zabezpečí načítanie konfigurácie z config.py , potom sa spustí reg.py, ktorý zinicializuje PWM, ADC, GM piny, PID regulátor a CPM timer (časovač pre počítanie impulzov z GM trubice). Vykoná sa inicializácia I2C zbernice, OpenWeatherMap, GeoIP (voliteľné) a pokúsi sa pripojiť k Wi-Fi (konfigurácia pre wifi je uložená v súbore wifi_config.json). Ak sa nepodarí pripojiť, spustí sa AP režim "LK-29 Setup, kedy sa wifi modul ESP32 prepne do režimu AP a po pripojení k AP je konfiguračná obrazovka dostupná na adrese http://192.168.4.1, kde sa zavolá program wifi_manager.py umožňujúci prehľadať okolité dostupné siete a pripojiť sa k nim, prípadne manuálne nastaviť sieťové parametre. Po stlačení tlačidla „Connect“ sa mikroprocesor pokúsi pripojiť k wifi sieti a ak je úspešný prepne sa do režimu klienta a reštartuje. Po reštarte a úspešnom pripojení do wifi sa pokračuje spustením HTTP servera a inicializáciou ePapper displeja. Potom zostáva program v hlavnej slučke a obsluhuje HTTP, I2C čítanie, OpenWeatherMap aktualizácia, InfluxDB zápis, ePaper displej (ak je). V hlavnej slučke sa program „fláká“, lebo všetky dôležité činnosti sú riadené cez prerušenia, vrátane časových slučiek. Vysoké napatie je nastavované a stabilizované PID regulátorm , ktorý beží v timer interrupte (predvolene 100 ms) a číta ADC hodnotu cez spätnú väzbu z deliča, porovnáva prečítanu hodnotu s premennou TARGET_VOLTAGE a vypočíta PID výstup a upraví PWM duty cycle. Ak je chyba (rozdiel medzi želanou a skutočnou hodnotou napätia) v pásme necitlivosti (DEADBAND – dovolená odchýlka od žiadanej hodnoty napätia), integrálna zložka sa vynuluje. Počítanie impulzov z GM trubice sa vykonáva tiež pomocou prerušenia. Prúdový impulz GM trubice vyvolá prerušenie od impulzu na vstupe GPIO1, ktoré zvýši hodnotu premennej obsahujúcej počet impulzov. Obr9Prerušenie od časovača, ktoré sa vykoná každých 60 sekúnd vypočíta rozdiel starej a novej hodnoty počtu impulzov a takto sa získa aktuálna hodnota CPM (counter per minute), čo reprezentuje počet ionizujúcich častíc , ktoré excitovali plyn v trubici. Z týchto údajov sa počíta aj hodnota radiácie v µSiviertoch za hodinu (µSv/h). Tento výpočet sa riadi vlastným časovačom pre zlepšenie presnosti, najmä pre menšie trubice, ako je napríklad Xeram 3G8B , ktorú som použil aj ja. Vzťah medzi CPM a intezitou vyjadrenou v µS/h je definovaný výrobcom a jeho hodnota je uložená v príslušnej premennej CPM_PER_USV uloženej v config.py . Dávka žiarenia sa vypočítava takto :

\[ \text{dávka} \left( \frac{\mu\text{Sv}}{\text{h}} \right) = \frac{\text{CPM}}{\text{CPM\_PER\_USV}} \]

      Hodnoty teploty, vlhkosti ,… sa čítajú z I2C senzorov . Automatická detekcia prítomnosti senzora a vykonáva počas prvého skenovania (10 s po štarte). Potom sa číta v intervale I2C_INTERVAL sekúnd. BME688 poskytuje teplotu, vlhkosť, tlak a hodnotu IAQ (kvalita ovzdušia). V stanovenom intervale OWM_INTERVAL sa načítava aktuálne počasie a 5-dňová predpoveď (predvolené na 1800 s = 30 min). Ak nie je k dispozícii I2C senzor, teplota a vlhkosť sa preberajú z OWM (OpenWeatherMap, alebo Open-meteo ).Obr20 Pre ďalšie spracovanie nameraných údajov je možné ukladať údaje do databázy . Ak je INFLUX_ENABLED = True, systém v pravidelnom intervale INFLUX_INTERVAL (sekundy) zapisuje namerané hodnoty do databázy InfluxDB. Zapisujú sa: teplota, vlhkosť, tlak, dávka žiarenia, CPM, napätie batérie, atď. Hodnota premennej DISPLAY = True, indikuje prítomnosť ePaper displeja systém aktualizuje hodnoty na ePaper displeji v intervale REFRESH_DISP (počet sekúnd). Zobrazuje aktuálne hodnoty zo senzorov, vypočítanú dávku žiarenia a stav .
   Obr12   Dôležitú časť tvorí webové rozhranie cez HTTP server. Hlavná obrazovka je dostupná na http://Ipadresa/, alebo http://Ipadresa/dashboart.html. . Vzhľad sa dá ovládať cez súbory CSS. Načítavanie údajov do stránky, automatické obnovovanie a zobrazovanie grafov zabezpečujú Javascripty v html kóde. Rozhranie je dostupné v dvoch jazykových mutáciach a pridanie ďalšieho jazyka sa vykoná vytvorením JSON súboru s patričným prekladom. Napríklad pre češtinu stačí preložiť obsah súboru lang_en.json do češtiny a nazvať ho lang_cz.json. Potom v konfiguračnom rozhraní nastaviť jazyk na cz.  Dôležitý je aj súbor manifest.json na ktorý odkazuje tzv PWA manifest (hovorí prehliadaču a operačnému systému, ako má vaša aplikácia vyzerať a správať sa, keď si ju používateľ nainštaluje do zariadenia na plochu, do ponuky štart, na domovskú obrazovku telefónu). Každý html súbor na HTTP serveri odkazuje v svojom kóde naň a tak sa zabezpečuje správne zobrazovanie na rôznych zariadeniach (portrait/landscape mód na mobilnom telefóne, alebo tablete, celo-obrazovkový režim, …). Veľkosti a umiestnenie sa dynamicky menia podľa zobrazovaného okna (responzívny dizajn).
Na adrese http://IPadresa/api/data  jedostupná väčšina premenných na ďalšie možné spracovanie. Toto je výhodné pre prípadnú integráciu a prenášanie hodnôt do iných systémov. Príkladom je zobrazenie údajov v homeassistant-e (program pre inteligentnú domácnosť) bez potreby ďalšej integrácie pomocou zabudovanej systémovej integrácie RESTfull. Dashboard ukladá posledných 1440 nameraných bodov (24 hodín) do pamäte RAM v ESP32. Pri každom novom bode (každú minútu) sa pole aktualizuje a grafy sa prekreslia. To znamená, že pri vymazaní údajov v prehliadači, alebo spustenie prehliadača na inom zariadení znamená, že grafy za posledných 24 hodín sa vykreslia. Tieto dáta sú dostupné na adrese http://IPadresa/api/history .  Čas sa synchronizuje s NTP serverom pri štarte a potom v intervale SYNC_INTERVAL_DEV hodín. Posun časovej zóny a DST sa nastavuje v config.py. Dashboard automaticky prepne do celoobrazovkového režimu po prvom kliknutí (kvôli PWA). Ak používateľ opustí fullscreen, zariadenie sa pokúsi znova aktivovať pri ďalšej interakcii.
      Celoobrazovkový režim nefunguje na niektorých mobiloch a tabletoch v Chrome prehliadači. Môj kód v dashboard.html sa snaží vynútiť fullscreen cez JavaScript API pri prvom kliku/dotyku. Chrome rozlišuje rôzne displej módy a requestFullscreen() má prísne pravidlá na tabletoch. Navyše na niektorých tabletoch Chrome rešpektuje systémové nastavenia navigačnej lišty a fullscreen odmietne. Ak má tablet slúžiť ako stály displej, Fully Kiosk Browser aplikácia je najspoľahlivejšie riešenie. Poskytuje natívny fullscreen bez navigačných prvkov, auto-start po boote, a screen-on management. Môj dashboard s ním funguje na telefóne aj tablete dobre.
     Vačšina funkcií meteostanice je zobraziteľá cez webové rozhranie. Týmto spôsobom je možné zobraziť aj obsah vykreslený na ePaper displeji, alebo monitorovať to čo je vypisované na konzolu ESP32 , napríklad logy Obr21. Popis ostatných možností je možné nájsť v užívateľskej príručke, ako aj všetok potrebný softvér nájdete na stiahnutie na adrese https://www.dedeideas.eu v sekcii na stiahnutie.

Ovládací panel

    Nastavenie parametrov meteostanice LK-29 je sústredené v config.py module , tzv. „Control panel“. Všetky dôležité premenné sú dostupné aj cez http://IPadresa/config . Obr22 Obr23        Obr24Obr28 Prístup vyžaduje autorizáciu menom a heslom. Meno je pevne nastavené na „admin“ a heslo je implicitne prázdne. Ovládací panel je rozdelený do šiestich sekcii . 
       Prvé dve sekcie „Live Measurements“ a „Wi-Fi Status“. V ľavej hornej časti obrazovky je ikona ☀ alebo ☾ , umožnujúca prepínanie medzi tmavým a svetlým štýlom (deň/noc) .  Sekcia „Live Measureents“ ukazuje aktuálne namerané dôležité hodnoty . Myslím, že ich nie je potrebné popisovať a ich význam je jasný z predchádzajúceho popisu meteostanice. Druhá sekcia „Wi-Fi Status“ zobrazuje aktuálne parametre sieťového pripojenia. Všetky údaje sú len na čítanie s výnimkou ikony tlačidla s ozubeným kolieskom ⚙ v riadku „Status“. Kliknutím na toto tlačidlo sa vyvolá obrazovka nastavenia sieťového pripojenia (Wi-Fi Manager), ktorý umožní preskenovať okolité siete a pripojiť sa k nim.
       Na druhom obrázku  sú vyobrazené ďalšie dve sekcie ovládacieho panela. „I2C Bus“ sekcia zobrazuje údaje o zariadeniach na I2C zbernici. Stlačenie tlačidla s ozubeným kolieskom ⚙ v riadku status vyvolá prescanovanie I2C zbernice. Nájdené zariadenia a ich adresy a typ sa vypíšu v nižšom riadku. Program dokáže obslúžiť v tejto verzii I2C zariadenia SHT3x a BME68x.   „Read Only Configuration“ sekcia zobrazuje dôležité systémové hodnoty, nedajú sa editovať, sú len na čítanie.
     Ďalšia sekcia  „OpenMeteo/OpenWeatherMap“ zobrazuje informácie o čítaní zo zdroja informácií o predpovedi počasia. Kliknutie na ikonu tlačidla s ozubeným kolieskom ⚙ vynúti načítanie nových údajov zo zdroja predpovede počasia. Najväčšia sekcia je sekcia „Editable configuration“, ktorá obsahuje niekoľko skupín (Firmware, OpneMeteo/OpenWeatherMap, Bat divider, …).
       Prvá skupina v sekcii „Editable configuration“ patrí možnosti upgradu firmware cez wifi. Po kliknutí na tlačidlo „Upgrade“ sa otvorí stránka http://IPadresa/ota, kde je možné zadať názov súboru ZIP s obsahom balíčku programov. Všetky súbory vo flash pamäti ESP32 budú zmazané, vrátane podadresárov a obsah ZIP súboru bude rozpakovaný a nakopírovaný do flash pamäte. Súbor ZIP môže byť s normálnou kompresiou, alebo bez kompresie. Priebeh rozbaľovania a kopírovania súborov sa zobrazuje v status bare a v ráme obrazovky upgradu. Po rozbalení súborov sa ESP32 automaticky reštartuje.  V skupine „OpenMeteo / OpenWeatherMap“ je možné si zvoliť zdroj predpovede počasia. OpenMeteo nevyžaduje žiadne nastavenia okrem polohy (Latitude, Longitude), hodnoty ktorých získate z máp google. OpenWeatherMap vyžaduje prístupový kľúč (API key OWM), ktorý získate bezplatne po zaregistrovaní na stránke OpenWeatherMap.
       Obr25Nasledujúca skupina „BAT divider“ obsahuje iba jednu položku „VBAT divider ratio“, čo je korekčný koeficient pre meranie napätia batérie, alebo napájania. Na vstup analógovo digitálneho prevodníka je napájacie napätie privedené cez delič napätia R8/R14. Použil som bežné odpory , ktoré nemajú vysokú presnosť ani hodnoty s presným deliacím pomerom. Pripojil som voltmeter na napájacie svorky a koeficient „VBAT divider ratio“ som nastavil na takú hodnotu , aby napätie na voltmetri a „Battery Voltage “ v sekcii „Live measurements“ ukazovali rovnakú hodnotu.
     Ďalšia skupina „HV regulator“ sa týka PID regulátora vysokého napätia. V položke „Target voltage“ nastavíte žiadanú hodnotu vysokého napätia pre GM trubicu, podľa typu ktorý ste použili , na hodnotu určenú výrobcom. Obyčajne výrobca udáva minimálnu hodnotu vysokého napätia „threshold voltage“ pri ktorej nastáva výboj v trubici . Typicky je táto hodnota medzi 300V – 400V a označuje začiatok tzv. "Geiger plateau" , čo je oblasť vysokého napätia nad „threshold voltage“, kde trubica spoľahlivo detekuje ionizujúce častice žiarenia a býva široká viac ako 200V. Takže odporúčam nastaviť túto hodnotu na „threshold voltage“ + 50V, alebo +100V. Ja som použil GM trubicu Xeram 3GB8, kde výrobca určuje, že „threshold voltage“ je 445V. Keď som nastavil 450V , trubica spoľahlivo detekovala rádioaktívne častice z prírodného pozadia. Nastavil som 500V, aby prípadný pokles vysokého napätia neskresľoval meranie. Ostatné parametre sa týkajú nastavenia PID regulátora a neodporúčam ich meniť, ak neviete čo robíte.  Nasledujúca skupina „Buzzer“ má iba jednu položku a tou je zaškrtávacie políčko „Acoustic signalling“ , čo slúži na zapnutie vypnutie akustickej signalizácie detekovaných častíc. Skupina „Radiation“ v položke „CPM per 1µSv/h“ určuje počet zachytených častíc za minútu CPM pre výpočet 1 µSv/h. Tento údaj definuje výrobca GM trubice a hľadajte ho v jej dokumentácii. Položka „Alarm treshold“ určuje hodnotu radiácie pri ktorej sa spustí akustický alarm signalizujúci zvýšenú radiáciu. Hodnota v riadku s „CPM calc period“ reprezentuje číslo v mili sekundách, ako často sa prepočítava hodnota CPM na dávku radiácie v µSv/h.
        V nasledujúcej skupine “I2C Sensors“ sa nastavujú časové intervaly pre čítanie hodnôt z I2C senzorov a obnovovanie ePaper displeja. Pripomínam, že čas potrebný na plné prekreslenie displeja je 14 sekúnd počas ktrorých displej bliká a nedá sa dobre čítať, takže príliš nízke hodnoty obnovovacieho intervalu by pôsobili rušivo. Skupina „Time“ umožňuje nastavovať údaje o čase a jazykovom rozhraní.
Obr26       „InfluxDB“ skupina združuje nastavenia pre zápis nameraných hodnôt do databázy . Za pozornosť v tejto skupine stoja dva riadky: „Buffered records“ a „DB buffer capacity“. Prvý hovorí o tom koľko záznamov je RAM mikropočítača ESP32 pripravených na zápis do databázy, ak je nedostupná, hodnota sa dá prepísať na menší údaj, aj vynulovať, čím sa neuložené záznamy trvalo stratia z pamäte RAM v ESP32. Druhý údaj hovorí koľko záznamov bude ESP32 držať v pamäti kým sa neobnoví prístup na databázu, aby mohli byť staré záznamy uložené. Je možné zadať ľubovoľne veľkú hodnotu, ktorá sa ale kontroluje na nároky na pamäť RAM a vypočíta sa maximalna hodnota, ktorá nespotrebuje viac ako 90% voľnej RAM. Pamäť sa alokuje až pri vzniku nového záznamu, takže tento údaj neovplyvňuje okamžité využitie RAM. V tejto konfigurácií hardvéru je maximálna hodnota okolo 8000 záznamov, čo je pri minútovom zbere dát asi na týždeň. Údaje sú v kruhovom buffri, to znamená , že po dosiahnutí maximálneho počtu záznamov v buffri sa najstarší zmaže pri pridaní nového. Strata napájania znamená stratu obsahu buffra, keďže som sa rozhodol „netrápiť“ flash ukladaním záznamov do flash. Skupina „Debug level“ umožňuje zvoliť, ktoré programové moduly majú vykonávať detailné logovacie výpisy , napríklad modul regulátora vysokého napätia . Nedoporučujem nechávať logy zapnuté, lebo výpisy sú smerované na konzolu ESP32. Dôvodom je, že väčšina sériových výpisov je blokujúca. To znamená, že procesor pri odosielaní každého znaku čaká, kým sa fyzicky odošle, a počas tohto času nemôže vykonávať žiadnu inú užitočnú prácu. A hoci je ESP32-S3 rýchly procesor, rýchlosť sériovej linky (typicky 115200 baudov, čo je ~11 kB za sekundu) je v porovnaní s ním extrémne pomalá, takže takáto réžia dominuje celkovému času behu programu a výrazne spomaľuje jeho odozvu. Kliknutie na malé štvorcové tlačidlo na konci riadku   ✓  spôsobí okamžité nastavenie hodnoty, čo sa aj prejaví ihneď, ale neuloží sa do konfiguračného súboru v pamäti flash, čo má za následok, že takto vykonaná zmena platí iba do nasledujúceho reštartu, kde sa pri inicializácii nastavia hodnoty podľa nastavení uložených v pamäti flash ESP32. Akceptácia novej hodnoty je signalizovaná zmenou farby pozadia tlačidla na dve sekundy   ✓  . Na permanentné uloženie pomenených hodnôt slúži tlačidlo „Save config“ v poslednej skupine. Tlačidlo „Download config“ umožní stiahnúť konfiguračný súbor do lokálneho počítača. Ostatné dve tlačidlá majú jasný význam. „Reštart“ slúži na reštartovanie ESP32 a „Change PWD“ slúži na zmenu hesla pre prístup do konfiguračného panelu. Ak heslo stratíte, jediná možnosť je pripojiť sa do ESP32 cez sériový port a v config.py nastaviť premennú AUTH_PASSWORD = "" ako prázdnu, alebo na žiadanú hodnotu. Zmena niektorých parametrov vyžaduje reštart, toto je indikované zmenou pozadia tlačidla „Restart“ na červenú farbu, čo znamená, že je vyžadovaný čo najskorší reštart ESP32.

Related Articles

Copyright © Free Joomla! 4 templates / Design by Galusso Themes