Professional Documents
Culture Documents
IoT Meteorologicka Stanica
IoT Meteorologicka Stanica
2
2. Poďakovanie
3. Obsah
1. Čestné vyhlásenie..............................................................................................................................................
2. Poďakovanie.....................................................................................................................................................
3. Obsah................................................................................................................................................................
4. Úvod..................................................................................................................................................................
5. Problematika a prehľad literatúry.....................................................................................................................
3
6. Ciele práce.........................................................................................................................................................
7. Materiál a metodika..........................................................................................................................................
7.1. Hardware........................................................................................................................................................
7.1.1. ESP32....................................................................................................................................................
7.1.2. AHT20/BMP280...................................................................................................................................
7.1.3. Water Sensor.........................................................................................................................................
7.1.4. Rýchlosť vetra.......................................................................................................................................
7.1.5. Spájkovanie...........................................................................................................................................
7.2. Software.........................................................................................................................................................
7.2.1. Úvod......................................................................................................................................................
7.2.2. Cyklus...................................................................................................................................................
7.2.2.1 Inicializácia senzorov a premenných............................................................................................
7.2.2.2 Pripojenie na sieť – WifiClient.....................................................................................................
7.2.2.3. Čítanie dát zo senzorov................................................................................................................
7.2.2.4. Dátové úložisko – ThingSpeak....................................................................................................
7.2.2.5. Spánok – Deep sleep....................................................................................................................
7.3. Konštrukcia....................................................................................................................................................
7.3.1. Časti konštrukcie...................................................................................................................................
7.3.1.1 Spodná časť...................................................................................................................................
7.3.1.2. Držiak senzorov...........................................................................................................................
7.3.1.3. Kryt..............................................................................................................................................
7.3.1.4. Rotačná vrtuľa..............................................................................................................................
7.4. Merania..........................................................................................................................................................
7.4.1. Namerané dáta.......................................................................................................................................
7.4.2. Spotreba................................................................................................................................................
8. Výsledky práce a diskusia.................................................................................................................................
9. Záver práce a zhrnutie.......................................................................................................................................
10. Zoznam použitej literatúry..............................................................................................................................
11. Prílohy.............................................................................................................................................................
4
4. Úvod
O informatiku sme mali záujem už od skorého veku. Naša záľuba v tejto oblasti vychádzala z
presvedčenia, že ide o fascinujúce a dynamické pole. Bol to jeden z dôvodov, prečo sme sa
rozhodli spracovať túto tému. Zároveň nám aj dala úvod do elektrotechniky, v ktorom sa
vieme ďalej rozvíjať a rozširovať naše vedomosti. Síce popri konštrukcii alebo programovaní
sme narazili na niekoľko prekážok, na koniec nám však vždy slúžili ako príležitosť zistiť toho
viac a vylepšiť sa v tomto obore.
Fenomén IoT sa v posledných rokoch rozšíril na všetky oblasti nášho života. Internet vecí
(ang. Internet of Things) je momentalne prítomný v každej inteligentnej domacnosti. Preto
naša meteostanica používa tento koncept. Zároveň nám je umožnené bližšie skúmať túto
sféru.
Naša stanica je schopná merať meteorologické údaje a zapisovať ich na externé úložisko, kde
sú prístupné verejnosti. V tejto práci sme rozobrali jej fungovanie, vrátane hardvérového
vybavenia, druhov senzorov, softvérového vybavenia a zdrojového kódu. V práci je taktiež
popísaná konštrukcia stanice a schéma spájkovania senzorov s čipom.
Celkovo náš projekt nielen preukázal našu vášeň pre informatiku a elektrotechniku, ale tiež
ukázal možnosti v oblasti konkrétnych technologických aplikácií. Veríme, že naša práca
môže slúžiť ako inšpirácia pre ďalších nadšencov v tomto odvetví a prispieť k ďalšiemu
vývoju a rozvoju technológií v odbore meteorológie.
5
5. Problematika a prehľad literatúry
Meteorologická stanica je jeden z projektov, ktoré majú veľké zázemie na internete. Všetky
zdroje, ktoré sme použili, vychádzajú buď z našich poznatkov, alebo z overených stránok na
internete, zaoberajúcich sa touto problematikou. Každá z nich je uvedená v Zozname použitej
literatúry.
Veľa zdrojov je v anglickom jazyku, takže sme boli nútení prekladať väčšinu. Z tohto dôvodu
sa v práci vyskytujú anglické pojmy a skratky, ktoré sú síce laicky preložené do slovenčiny,
no v ďalšom kontexte sú použité ich anglické verzie z dôvodu korektnosti, keďže formálny a
oficiálny preklad na ne neexistuje.
Všetky komplikované myšlienky, skratky alebo princípy sú zároveň zjednodušené pre ľudí,
ktorí sa s touto témou oboznamujú po prvýkrát.
6
6. Ciele práce
Cieľom našej práce je vytvoriť funkčnú meteorologickú stanicu, ktorá bude schopná merania
meteorologických parametrov a ktorá bude schopná samostatne exportovať namerané dáta
tak, aby boli čitateľné a zrozumiteľné aj pre neodborníkov.
Jeden z čiastkových cieľov je zároveň aj autonómne napájanie a dizajn celej konštrukcie tak,
aby nebola závislá na externom zdroji energie (zásuvka, generátor), ale aby bola ideálne
energeticky samostatná (použitie batérie a solárnych panelov)
7
7. Materiál a metodika
7.1. Hardware
7.1.1. ESP32
Za riadenie celého modelu, logiku, posielanie dát a šetrenie energie je zodpovedný čip
ESP32, ktorý je súčasťou vývojovej dosky ESP32 WROOM Development Kit. Dôvodov
zvolenia tohoto čipu bolo niekoľko; jeden z hlavných bola však možnosť pripojiť sa na Wi-Fi
sieť a pracovať online – teda posielať na úložisko dáta namerané počas jednotlivých cyklov.
Zároveň však nemôžeme zabúdať aj na schopnosť uviesť procesor do takzvaného deep sleep,
teda módu, kedy sa výrazne zníži spotreba energie, keďže hlavný procesor je neaktívny a teda
celý čip riadi druhotný, menej výkonný procesor – tzv. ULP (Ultra low power) koprocesor.
Stanica funguje v periodických cykloch zberu údajov + posielania dát + spánku.
Čip je naprogramovaný v jazyku Arduino, ktorý je štandardne používaný pre programovanie
čipov na podobných vývojových doskách.
Čip ESP32 je nasledovníkom staršieho modelu zo série ESP a to ESP8266. Líši sa od neho
len modernejšími vstupmi, procesorom naviac, kompatibilitou s Bluetooth systémom novšej
generácie a jedným vstavaným senzorom naviac. Okrem týchto vlastností sa nijak výrazne
ne-odlišuje od jeho predchodcu.
Špecifikácie, počet jadier, pamäť RAM, úložisko a ostatné parametre uvádzame v tabuľke
v prílohe (Príloha 1.).
ESP32 WROOM Development Kit, rovnako ako iné vývojové dosky, funguje na princípe
kontaktov, ktoré prenášajú signál a zastávajú úlohu vstupu, teda prenosu dát do procesora,
alebo výstupu, teda prenosu dát z procesora. ESP32 má dokopy 30 kontaktov, no nie všetky
sú plne programovateľné. Niektoré slúžia na špecifické úlohy alebo ako napájanie pre
samotnú vývojovú dosku (viac v časti 1.4. Spájkovanie).
Všetky druhy kontaktov sú uvedené v kategórii Vonkajšie pripojenia v prílohe 1.
Rozmiestnenie všetkých kontaktov a ich mená sú zároveň uvedené v prílohe 2.
Dosku je možné napájať dvoma spôsobmi: cez kontakt 3V3 (respektíve kontakt VIN)
a kontakt GND, alebo cez micro USB port, pomocou ktorého sa zároveň čip programuje.
Keďže je doska už naprogramovaná, na napájanie používame kontakty, na ktoré je pripojený
lítiový akumulátor.
Kontakty ESP je možné softvérovo nastaviť na niektorú z funkcii vstup – výstup
analogového signálu, vstup – výstup digitálneho signálu alebo komunikáciu cez
8
špecializované zbernice. V našej meteorologickej stanici sme použili analogové vstupy,
digitálne vstupy a I2C zbernicu pre pripojenie dvoch senzorov.
ESP32 zároveň disponuje aj dvoma tlačidlami: RESET a BOOT, ktoré však majú osobitné
funkcie a nie sú programovateľné;
● BOOT, ktorý nemusí vždy byť na doske, ale slúži na uvedenie procesora do režimu,
Vo finálnej verzii našej meteorologickej stanice však nie sú využité, z dôvodu ich
umiestnenia na doske. Z dôvodu vodotesnosti a ochrany dosky (ako najdôležitejšej časti celej
stanice) pred vonkajšími prejavmi počasia, ktoré má stanica zaznamenávať, je ESP32 uložený
v tele stanice tak, aby bol vhodne chránený pred prachom, vodou alebo vlhkosťou. Tento fakt
implikuje zbytočnosť implementovania akéhokoľvek optického prejavu alebo inej interakcie
vstavaného na dosku.
V počiatočných verziách prototypu (predtým ako boli všetky komponenty pospájané) sa však
(spolu s inými metódami) používala modrá LED na signalizovanie režimov, do ktorých doska
vstupovala (viac o pripojení a stavoch v časti 2.4 Wificlient). Vo finálnom prototype nie je
využitá.
7.1.2. AHT20/BMP280
Ku ESP32 je pripojená doska s dvoma senzormi – čipmi AHT20 a BMP280. Sú zodpovedné
za meranie teploty, vlhkosti vzduchu a atmosférického tlaku. Z dôvodu ich spoločného
umiestnenia na jednej doske sú ku ESP32 pripojené cez spoločnú zbernicu (viac v kapitole
Konštrukcia). Senzor AHT20 je zodpovedný za meranie vlhkosti vzduchu a BMP280 za
atmosférický tlak.
Oba senzory sú schopné merania teploty, preto je v exportovaných dátach použitá priemerná
teplota vypočítaná z oboch.
9
7.1.3. Water Sensor
Tento senzor je ako jediný umiestnený externe – vytŕča zo stanice. Funguje na základe
medených kontaktov, ktoré menia svoj odpor podľa hĺbky ponorenia senzoru do vody,
respektíve podľa množstva vody na senzore. Tento odpor ESP32 prevedie na bezrozmerné
číslo od 0 do 1023.
7.1.5. Spájkovanie
Ku ESP32 sú pripojené štyri externé komponenty:
● Senzor AHT20/BMP280
● Water sensor
● Jazýčkový kontakt
10
7.2. Software
7.2.1. Úvod
Čip sme programovali v jazyku C/C++ Arduino programming language, no zároveň dokáže
byť programovaný aj množstve iných alternatív, ako sú:
● Expressif IDF
● MicroPython
● JavaScript
● LUA
Každý z nich má trochu inú syntax, no kvôli prehľadnosti, vôli rozšíriť naše obzory
a rýchlosti C/C++ sme si zvolili tento jazyk.
Na to, aby sme vedeli programovať ESP32, potrebujeme IDE – Integrated development
environment – v preklade integrované vývojové prostredie. Tento program je nástrojom,
ktorý prekladá zdrojový kód do strojového kódu a nahrává ho do procesora, zároveň
umožňuje komunikáciu medzi počítačom a doskou a debugging (metóda odstraňovania chýb
založená na princípe zastavenia programu vo vopred určenom stave). Na tento účel
používame PlatformIO, ktoré je rozšírením mnohoúčelového IDE Visual Studio Code (VS
Code). Použitie VS Code dodáva väčšiu kontrolu nad zdrojovým kódom. Síce je Visual
Studio Code nástroj, ktorý nebol vyvíjaný s takýmto účelom, modul PlatformIO ho rozširuje
o všetky potrebné úlohy ako je nahrávanie kódu do procesora alebo jeho samotný preklad.
Niekoľko ukážok (snímok obrazovky) z tohoto IDE nájdeme v prílohe č. 3.
Štruktúra Arduino programu má dve základné funkcie – funkciu setup, ktorá sa spustí vždy
keď sa procesor spustí a funkciu loop, ktorá beží hneď na to, v nekonečnom cykle. Príkazy,
ktoré sú v ktorejkoľvek z funkcií sú už výberom programátora. Z dôvodu opakovaného cyklu
zaspávania a budenia sa z deep sleep-u používame iba funkciu setup, keďže sa do druhej
funkcie beh programu nikdy nedostane (viac v časti Deep sleep)
7.2.2. Cyklus
Funkcia stanice je založená na opakovaní sledu akcií, vždy ohraničených prechodom do
režimu deep sleep. Pozostáva z:
11
1. Inicializácie senzorov, trvanie: < 100 ms
2. Pripojenia sa na sieť, trvanie: ~ 5 000 ms (v závislosti od rýchlosti siete)
3. Čítanie dát zo senzorov trvanie: 10 s
4. Odoslanie dát na úložisko, trvanie: ~ 500 ms
5. Spánok – deep sleep, trvanie: ~ 9 min, 15 s
Celková dĺžka cyklu bola nastavená prispôsobením poslednej fázy na 10 min.
//BMP280 setup
float BMPpressure;
float BMPtemp;
12
float avgTimePerCycle = 0;
float floatTime;
unsigned long beginTime;
unsigned long endTime = 0;
int cycles = 0;
unsigned long currentTime;
float cycleToMeters = 1;
const int MIN_CYCLETIME = 200;
const int MAX_CYCLETIME = 4000;
const int MIN_WIND = 3;
const int MAX_WIND = 16;
Funkcia sa skladá nastavenia Connect Timeout, počet sekúnd počas ktorých sa ESP32 snaží
pripojiť na určenú sieť, po ňom nasleduje samotné pripojenie sa na sieť, v ktorom je zahrnutá
aj alternatívna možnosť vytvorenia Prístupového bodu. Parameter tohoto príkazu určuje
názov stanice, ak by malo prísť ku neschopnosti autonómne sa pripojiť na sieť.
13
Teplota
Keďže sú oba senzory AHT20 a BMP280 schopné merania teploty, pre najpresnejší výsledok
je použitá priemerná hodnota, vypočítaná z načítaných hodnôt oboch senzorov. Teplota je
poskytnutá v stupňoch Celzia.
//AHT20
AHTtemp = aht20.getTemperature();
//BMP280
BMPtemp = bmp280.readTemperature();
Vlhkosť vzduchu
Vlhkosť vzduchu je poskytovaná senzorom AHT20.
AHThumidity = aht20.getHumidity();
Dažďový senzor
Dažďový senzor odosiela dáta analógovo, preto je na jej čítanie použitý iný príkaz. Okrem
tejto charakteristiky sa však nelíši od čítania dát z ostatných senzorov.
//Water sensor
waterSensorValue = analogRead(AnalogWaterSensorPin);
Atmosférický tlak
Atmosférický tlak je meraný senzorom BMP280. Zároveň je v programe premenený na bary,
keďže ju senzor poskytuje vo forme Pascalov.
BMPpressure = bmp280.readPressure();
//convert to bar/100
BMPpressure = BMPpressure / 1000 ;//1 Pa = 0.00001 bar
14
Rýchlosť vetra
Na vypočítanie rýchlosti vetra je vytvorená samostatná funkcia calcWindSpeed(), volaná v
rámci funkcie sensorRead(). Na priradenie hodnôt sa používa funkcia map().
void calcWindSpeed(){
floatTime = endTime - beginTime;
if (cycles > 0){
avgTimePerCycle = floatTime / cycles;
Táto funkcia vypočíta priemerný čas medzi dvoma otáčkami, ktorý je následne priradený k
zodpovedajúcej rýchlosti medzi dvoma manuálne nameranými krajnými hodnotami.
Alternatívne, pri extrémnych prípadoch hodnôt mimo priraďovacieho rozmedzia je ku
vypočítanému času priradená najväčšia hodnota z rozmedzia.
Funkcia windInterrupt() zastaví beh programu, aby zvýšila počet nameraných otáčok vždy,
keď sa jazýčkový kontakt spojí.
//interrupt for cycle counting for wind
void IRAM_ATTR windInterrupt(){
currentTime = millis();
if (currentTime - endTime > 50){if (cycles == 0){
beginTime = millis();
}
cycles ++;
endTime = millis();
Serial.println(cycles);
}
}
15
attachInterrupt(WINDPIN, windInterrupt, FALLING);
V časti setup() je vytvorené prepojenie medzi schopnosťou prerušiť hlavný beh programu a
funkciou windInterrupt().
Funkcia thingspeakSetup() je použitá neskôr v časti setup(), aby bol kód prehľadnejší.
17
7.3. Konštrukcia
7.3.1.3. Kryt
Kryt (ang. sensor housing) má špecifickú štruktúru, ktorá ho robí odolným voči vetru a
dažďu, no zároveň umožňuje robiť aj merania. Táto časť zároveň obsahuje jazýčkový
kontakt.
18
7.3.1.4. Rotačná vrtuľa
Rotačná vrtuľa (ang. anemometer) je jediná pohyblivá časť konštrukcie. Na spodnej časti je
pripevnený neodymový magnet, ktorý spína jazýčkový kontakt, umiestnený v kryte. Jej
schopnosť rotovať s minimálnym trecím odporom je zabezpečená ložiskom, umiestneným v
jej osi otáčania. Ložisko je spojené s krytom cez skrutku, na ktorú je vrtuľa nasadená.
19
7.4. Merania
Namerané dáta:
Dátum 6.12.2023 7.12.2023 8.12.2023 9.12.2023 10.12.2023 11.12.2023 12.12.2023 13.12.2023
Maximálna teplota -1.4 0.7 1.6 1.4 1.6 1.1 0.0 4.0
Minimálna teplota -3.9 2.6 -4.0 -3.5 -1.1 -4.0 -2.0 0.0
Vlhkosť vzduchu 82.2 93.2 89.9 89.3 91.2 94.9 95.7 94.9
Rýchlosť vetra 14.2 11.7 12.8 10.9 12.7 24.0 18.6 15.6
Atmosférický tlak 1016.6 1019.2 1022.7 1020.8 1013.3 1015.0 1011.3 1005.0
Dáta zo zdroja:
Dátum 6.12.2023 7.12.2023 8.12.2023 9.12.2023 10.12.2023 11.12.2023 12.12.2023 13.12.2023
Maximálna teplota 1.6 0.7 -0.4 0.4 0.6 1.1 1.0 4.0
Minimálna teplota -3.9 -0.4 -4.0 -1.5 -0.1 -1.0 0.0 1.0
Vlhkosť vzduchu 85.2 94.2 89.9 92.3 94.2 97.9 97.7 96.9
Rýchlosť vetra 13.2 13.7 12.8 10.9 15.7 22.0 16.6 16.6
Atmosférický tlak 1015.6 1018.2 1021.7 1020.8 1015.3 1013.0 1010.3 1003.0
7.4.2. Spotreba
Spotreba je v dôsledku perodického opakovania sa cyklu premenlivá. Na grafe nižšie vidíme
jej premeny (miliAmpér v závislosti od času). Spotreba cyklu sa vždy skladá spočiatku z
významného nárastu na prúd približne 125 mA (1), kedy sa ESP32 zapína a pripája na sieť.
Nasleduje fáza poklesu na približne 60 mA (2), kedy prebieha samotné meranie a následne
znovu pozorujeme nárast na približne 70 mA (3). Ten je spôsobený posielaním dát na
úložisko Thingspeak. Nakoniec spotreba klesne na 11 mA (4), kedy čip prejde do režimu
deep sleep a po určitom čase sa cyklus opakuje.
20
Takýmto spôsobom dokáže stanica vydržať 15 dní merania bez toho, aby musela byť
dobíjaná.
.
Poznámka: Pri meraní spotreby sme nastavili čas, kedy má byť ESP32 neaktívne, na kratší,
za účelom efektívnejšieho merania spotreby jedného cyklu. Pôvodný čas je nastavený na
desať minút medzi meraniami, tu sme pre praktickosť použili 5 sekúnd.
21
8. Výsledky práce a diskusia
22
9. Záver práce a zhrnutie
Úspešne sme vytvorili stanicu, ktorá je schopná samostatnej činnosti, a zároveň energeticky
závislá len od jednej nabíjateľnej batérie. Má pomerne vysokú výdrž, dosiahnutú
pravidelným spánkom procesora, čo znižuje jej spotrebu. Zároveň posiela všetky svoje dáta
na verejné úložisko, kde sú čitateľné a prístupné každému.
Dalo by sa teda povedať, že sme splnili všetky predom dané ciele, ktoré sme očakávali od
našej práce. Zároveň sme získali veľmi veľa poznatkov, ktoré sme schopní použiť
v budúcnosti a vytvorili modernú alternatívu ku dnešnému spôsobu merania počasia na
lokálnom území.
Meteorológia je veda, ktorá možno na prvý pohľad vyzerá dokončene a bez potreby
modernizácie, no súčasný technologický pokrok nám ukazuje, že vždy je priestor kde sa
zlepšovať a vždy je možnosť zlepšiť a zefektívniť svoje spôsoby merania.
23
10. Zoznam použitej literatúry
24
11. Prílohy
Príloha 1.
Architektúra 32 bitov
Frekvencia
Do 240 MHz
časovača
RAM 512 KB
Kontakty 30
Vstavané
Tlačidlá RESET a BOOT
tlačítka
25
Príloha 2.
Rozloženie
kontaktov na
vývojovej doske
26
Príloha 3.
27
Príloha 4.
28
Príloha 5.
29
Príloha 6.
30
Príloha 7.
Zdrojový kód použitý na programovanie stanice
#include <Arduino.h>
#include <AHT20.h> //AHT20 senzor
#include <Wire.h> //kablikova komunikacia
#include <WiFi.h> //default wifi pripojenie
#include <WiFiManager.h> //wifimanager library
#include <Adafruit_BMP280.h> //BMP280 sensor library
#include "ThingSpeak.h" //thingspeak library
//Thingspeak API+channel
const char * tsAPIkey = "JY2GJEID5PQSM7JX";
long tschannelnum = 2302447;
//dlzka spinkania
const float SLEEPY_TIME_SECONDS = 5;
const int CONVERT_TO_SECONDS = 1000000;
//AHT20 setup
float AHTtemp;
float AHThumidity;
//BMP280 setup
float BMPpressure;
float BMPtemp;
31
float avgTimePerCycle = 0;
float floatTime;
unsigned long beginTime;
unsigned long endTime = 0;
int cycles = 0;
unsigned long currentTime;
float cycleToMeters = 1;
const int MIN_CYCLETIME = 200;
const int MAX_CYCLETIME = 4000;
const int MIN_WIND = 3;
const int MAX_WIND = 16;
void saveParamCallback(){
Serial.println("[CALLBACK] saveParamCallback fired");
Serial.println("PARAM customfieldid = " + getParam("customfieldid"));
}
//should be called before reading, for setting up the communication between the ESP and the
sensors
void sensorSetup(){
//AHT20
Serial.println("Booting up AHT20 communication...");
Wire.begin();
if (aht20.begin() == false){
Serial.println("AHT20 not detected. Please check wiring. Freezing.");
while (1);}
Serial.println("AHT20 acknowledged.");
//BMP280
if (!bmp280.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring or try a different
address! Freezing."));
while (1);
}
Serial.println("BMP280 acknowledged.");
}
void thingspeakSetup(){
Serial.println("Initializing wificlient...");
ThingSpeak.begin(client);
32
Serial.println("Setting fields...");
ThingSpeak.setField(1, AHThumidity);
ThingSpeak.setField(2, BMPpressure);
ThingSpeak.setField(3, waterSensorValue);
ThingSpeak.setField(4, avgTemp);
ThingSpeak.setField(5, windspeed);
Serial.println("Fields set!");
}
void calcWindSpeed(){
floatTime = endTime - beginTime;
if (cycles > 0){
avgTimePerCycle = floatTime / cycles;
void printIsCidloConnected(){
pinMode(WINDPIN, INPUT_PULLUP);
if (digitalRead(WINDPIN) == HIGH){
Serial.println("Wind pin is high");
}
else {Serial.println("Wind pin is low");
}
}
//BMP280
BMPtemp = bmp280.readTemperature();
BMPpressure = bmp280.readPressure();
33
//convert to bar/100
BMPpressure = BMPpressure / 1000 ;//1 Pa = 0.00001 bar
//Water sensor
waterSensorValue = analogRead(AnalogWaterSensorPin);
void valuesWrite(){
ThingSpeak.writeFields(tschannelnum, tsAPIkey);
Serial.println("Values written!");
}
void wifiConnect(){
Serial.println("Checking the Wifi...");
wm.setConnectTimeout(15);
wm.autoConnect("Station");
}
void setup(){
Serial.begin(115200);
Serial.println();
Serial.println("Starting up...");
34
attachInterrupt(WINDPIN, windInterrupt, FALLING);
//setup timera
esp_sleep_enable_timer_wakeup(SLEEPY_TIME_SECONDS * CONVERT_TO_SECONDS);
Serial.println("Sleep timer setup complete.");
wifiConnect();
sensorSetup();
sensorRead();
thingspeakSetup();
valuesWrite();
35
Príloha 7.
Zostavená stanica
36