Kontakti

Laika stacijas arduino ar spiediena grafika piemēru. Iekštelpu meteoroloģiskā stacija Arduino

Novembris ir neaptveramu laikapstākļu mēnesis: no rīta spīdēja saule, bet pusdienlaikā aiz loga jau viss bija balts no sniega. Vecā, labā laikapstākļu stacija vietnē Arduino palīdzēs jums izsekot visiem šiem laikapstākļiem. Iedvesmojies no mūsu stilīgāko paštaisīto meteoroloģisko staciju izvēles un samontē savu, lai vienmēr būtu gatavs dabas pārsteigumiem un burtiski neiekļūtu peļķē.

Bluetooth laikapstākļu lampa

Vadības ierīce meklē informāciju internetā un, izmantojot Bluetooth, nosūta signālus uz lampas servomotoru, kas maina attēlus atkarībā no prognozes. Vienkārša un stilīga meteoroloģiskā stacija, kas var izrotāt jūsu interjeru.

Šeit princips ir aptuveni tāds pats kā iepriekšējā projektā, bet izpildierīce ir veidota mākoņa formā, kas maina krāsu atkarībā no temperatūras, un servomotors norāda, vai ārā ir silts vai auksts. Šī jautrā mini stacija lieliski izskatīsies uz jūsu darbvirsmas.

Tiem, kam patīk lielāki mākoņi, ir arī šāda iespēja

Vintage laika stacija

Vintage priekšmetu cienītāji un pieredzējuši steampunkers varēs novērtēt meteoroloģisko staciju antīka pulksteņa formā.

Laika ziņas vietnē Twitter

Šī šķietami neuzkrītošā koka piramīda patiesībā ir augsto tehnoloģiju laika stacija, kas var izmērīt temperatūru, mitrumu, spiedienu, gaismas līmeni, CO līmeni un nosūtīt visus datus jums Twitter.

Tempeskops

Tempeskops ir tāds, ko varat izmantot lietus pārvešanai mājās. Vai migla. Vai pat pērkona negaiss. Un viņi tur dzīvos. Tagad jums pat nav jāskatās ārā pa logu, lai uzzinātu, ko māte daba jums šodien ir sagatavojusi.

Laikapstākļi kubā

Laika prognozi var ne tikai redzēt, bet arī aptaustīt. Šis tērauda krioskopa kubs, vadoties pēc datiem no tīkla, tiek uzkarsēts vai atdzesēts līdz āra temperatūrai. Tu noliec šo tieši zem astes kaula, un uzreiz ir skaidrs, vai tev šodien ir jānovelk apakšbikses vai nē.

Pirms komponentu pievienošanas ieteicams lejupielādēt programmaparatūru, lai pārliecinātos, ka plate darbojas. Pēc salikšanas to var atkal uzzibināt, dēlis ir jāzibina gludi. Projektos ar jaudīgiem patērētājiem plates 5V barošanas ķēdē (adresējama LED sloksne, servo, motori u.c.) pirms Arduino pievienošanas datoram ir nepieciešams ķēdei piegādāt ārējo 5V strāvu, jo USB nenodrošinās nepieciešamā strāva, ja, piemēram, sloksne to prasa. Tas var izraisīt Arduino plates aizsardzības diodes izdegšanu. Programmaparatūras lejupielādes un augšupielādes ceļvedis ir atrodams zem spoilera nākamajā rindā.

Arhīvā esošo mapju saturs

  • bibliotēkas– projektu bibliotēkas. Aizstāt esošās versijas
  • programmaparatūra- Arduino programmaparatūra
  • shēmas– detaļu savienojuma shēmas

Turklāt

  • Kā parādīja eksperiments, temperatūras sensors ārpus korpusa rāda par 0,5 grādiem mazāk nekā iekšpusē! Ir nepieciešams labāk sakārtot elektroniku, noņemt un aizsargāt siltumu no sildelementiem...

  • Ja displejs ir pārāk blāvs/uz balta fona
    Uz displeja draivera plates (kurai pieslēgti vadi) ir kontrasta poga, ar tās palīdzību var pielāgot kontrastu vēlamajam. Turklāt kontrasts ir atkarīgs no displeja skata leņķa (tas ir LCD), un jūs varat iestatīt, lai displejs tiktu skaidri parādīts pat leņķī "displejs nabas līmenī, skatoties no augšas". Un kontrasts ir ļoti atkarīgs no barošanas avota: no 5V displejs rāda pēc iespējas skaidrāk un spilgtāk, savukārt, barojot no USB caur Arduino, spriegums būs aptuveni 4,5 V (daļa no tā krīt uz aizsargdiodes pa USB līniju ), un displejs vairs nav tik spilgts. Noregulējiet izeju, izmantojot pagriežamo pogu ar ārējo barošanas avotu no 5 V!

  • Ja CO2 sensors nedarbojas pareizi (informācija no Jevgeņija Ivanova)
    Nu, piemēros sensoru bibliotēkas mapē ir skices kalibrēšanai. to var arī iedarbināt, akli saīsinot “HD” savienotāju ar zemi uz 7+ sekundēm.
    Protams, jums tas nav jādara tieši ārā aukstumā... jūs varat vienkārši piepildīt pudeli ar svaigu gaisu ar sensoru iekšpusē un noslēgt to. Kalibrēšana aizņem vismaz 20 minūtes.
    Pēc noklusējuma sensoram ir ieslēgta automātiskā kalibrēšana, kas notiek katru dienu, un, ja sensors tiek izmantots nevēdināmā telpā, šī kalibrēšana ātri pārvieto vērtības, kas pārsniedz normu, tāpēc tas ir jāatspējo.
    Dokumentācija.

  • Sensora automātiskā kalibrēšana CO2 skicē ir atspējots!

  • Ja Jums ir BME280 sensors nedarbojas, visticamāk, viņa adrese ir cita. Projektā tiek izmantota bibliotēka Adafruit_BME280, kurai nav atsevišķas funkcijas adreses maiņai, tāpēc adrese tiek iestatīta manuāli Adafruit_BME280.h bibliotēkas failā gandrīz pašā faila sākumā ( atrodas jūsu bibliotēku mapes mapē Adafruit_BME280, jums to vajadzēja tur instalēt), manam modulim bija adrese 0x76. Kā es varu uzzināt sava BME280 moduļa adresi? Ir īpaša skice, ko sauc par i2c skeneri. Jūs varat to googlē, jūs varat. Jūs mirgojat šo skici, atverat portu un iegūstat i2c kopnei pievienoto ierīču adrešu sarakstu. Lai citi moduļi jums netraucētu, varat tos atspējot un atstāt tikai BME280. Bibliotēkā norādām saņemto adresi, saglabājam failu un ielādējam laikapstākļu pulksteņa programmaparatūru. Visi!

  • Ja pulkstenis ir lēns, problēma, visticamāk, ir ķēdes barošanas avotā. Ja problēma neizzūd, mainot barošanas avotu uz labāku, pievienojiet kondensatoru, lai barotu RTC moduli (lodējiet tieši uz plates pie VCC un GND): vienmēr keramikas, 0,1-1 µF (marķējums 103 vai 104). , skatiet marķēšanas tabulu). Varat arī piegādāt elektrolītu (6,3 V, 47–100 uF)

Programmaparatūras iestatījumi

#define RESET_CLOCK 0 // atiestatiet pulksteni, kamēr notiek programmaparatūras ielāde (modulim ar neizņemamu akumulatoru). Neaizmirstiet ielikt 0 un vēlreiz mirgot! #define SENS_TIME 30000 // sensora rādījumu atjaunināšanas laiks ekrānā, milisekundes #define LED_MODE 0 // RGB LED tips: 0 - galvenais katods, 1 - galvenais anods #define LED_BRIGHT 255 // CO2 LED spilgtums (0 - 255) # definējiet BLUE_YELLOW 1 // zilā vietā dzeltenu krāsu (1 jā, 0 nē), bet savienojuma īpašību dēļ dzeltenā krāsa nav tik spilgta #define DISP_MODE 1 // displejs augšējā labajā stūrī: 0 - gads, 1 - diena nedēļas, 2 - sekundes #define WEEK_LANG 1 // nedēļas dienas valoda: 0 - angļu, 1 - krievu (transliterēts) #define DEBUG 0 // startēšanas laikā parādīt sensora inicializācijas žurnālu #define PRESSURE 1 // 0 - spiediena grafiks, 1 - lietus prognozes grafiks (spiediena vietā). Neaizmirstiet pielāgot grafiku ierobežojumus // attēlojuma ierobežojumus diagrammām #define TEMP_MIN 15 #define TEMP_MAX 35 #define HUM_MIN 0 #define HUM_MAX 100 #define PRESS_MIN -100 #define PRESS_MIN -100 #define PRESS_MAX 100 #define CO2_MIN 30_MAX 200 CO200 #define

Kādu dienu, staigājot pa pilsētu, ieraudzīju jaunu radioelektronikas veikalu, kas bija atvērts. Ieejot tajā, es atradu lielu skaitu Arduino vairogu, jo... Man mājās bija Arduino Uno un Arduino Nano, un uzreiz radās doma spēlēt ar signālu raidītājiem no attāluma. Es nolēmu iegādāties lētāko raidītāju un uztvērēju 433 MHz:

Signāla raidītājs.


Signāla uztvērējs.

Ierakstot vienkāršu datu pārraides skici (piemērs ņemts no šejienes), izrādījās, ka pārraides ierīces var būt diezgan piemērotas vienkāršu datu, piemēram, temperatūras, mitruma, pārraidīšanai.

Raidītājam ir šādas īpašības:
1. Modelis: MX-FS - 03V
2. Diapazons (atkarībā no bloķējošo objektu klātbūtnes): 20-200 metri
3. Darba spriegums: 3,5 -12V
4. Moduļa izmēri: 19 * 19 mm
5. Signāla modulācija: AM
6. Raidītāja jauda: 10mW
7. Frekvence: 433MHz
8. Nepieciešamais ārējās antenas garums: 25cm
9. Viegli savienojams (tikai trīs vadi): DATI ; VCC ; Zeme.

Saņemšanas moduļa īpašības:
1. Darba spriegums: DC 5V
2. Strāva: 4mA
3. Darba frekvence: 433,92 MHz
4. Jutība: - 105dB
5. Moduļa izmēri: 30 * 14 * 7 mm
6. Nepieciešama ārējā antena: 32 cm.

Internets saka, ka informācijas pārraides diapazons ar ātrumu 2Kb/s var sasniegt pat 150m. Pats neesmu pārbaudījis, bet divistabu dzīvoklī to pieņem visur.

Mājas meteoroloģiskās stacijas aparatūra

Pēc vairākiem eksperimentiem es nolēmu pievienot Arduino Nano temperatūras, mitruma sensoru un raidītāju.


Temperatūras sensors DS18D20 ir savienots ar Arduino šādi:

1) GND līdz mikrokontrollera mīnusam.
2) DQ caur pievilkšanas rezistoru uz zemi un Arduino tapu D2
3) Vdd līdz +5 V.

MX-FS - 03V raidītāja modulis tiek barots ar 5 voltiem, datu izvade (ADATA) ir savienota ar tapu D13.

Arduino Uno pievienoju LCD displeju un BMP085 barometru.


Savienojuma shēma ar Arduino Uno

Signāla uztvērējs ir savienots ar kontaktu D10.

Modulis BMP085 - digitālais atmosfēras spiediena sensors. Sensors ļauj izmērīt temperatūru, spiedienu un augstumu virs jūras līmeņa. Savienojuma interfeiss: I2C. Sensora barošanas spriegums 1,8-3,6 V

Modulis ir savienots ar Arduino tāpat kā citas I2C ierīces:

  • VCC - VCC (3,3 V);
  • GND - GND;
  • SCL - uz analogo tapu 5;
  • SDA — uz analogo tapu 4.
  • Ļoti zemas izmaksas
  • Jauda un I/O 3-5 V
  • Mitruma noteikšana 20-80% ar 5% precizitāti
  • Temperatūras noteikšana 0-50 grādi. ar 2% precizitāti
  • Aptaujas frekvence ne vairāk kā 1 Hz (ne biežāk kā reizi 1 sekundē)
  • Izmēri 15,5 mm x 12 mm x 5,5 mm
  • 4 tapas ar 0,1" atstarpi starp tapām

DHT ir 4 tapas:

  1. Vcc (3–5 V barošanas avots)
  2. Datu izvadīšana — datu izvade
  3. Nav izmantots
  4. Ģenerālis

Savieno ar Arduino D8.

Programmatūras daļa no mājas meteoroloģiskās stacijas

Raidīšanas modulis mēra un pārraida temperatūru ik pēc 10 minūtēm.

Zemāk ir programma:

/* Skices versija 1.0 Nosūtiet temperatūru ik pēc 10 minūtēm. */ #include #include #include #define ONE_WIRE_BUS 2 //Pin Dallas OneWire sensora pievienošanai oneWire(ONE_WIRE_BUS); Dalasas temperatūras sensori (&oneWire); Ierīces adrese termometra iekšpusē; void setup(void) ( //Serial.begin(9600); vw_set_ptt_inverted(true); // Nepieciešams DR3100 vw_setup(2000); // Iestatiet datu pārraides ātrumu (bit/s) sensors.begin(); if (! sensori .getAddress(insideThermometer, 0)); printAddress(insideThermometer); sensors.setResolution(insideThermometer, 9); ) void printTemperature(DeviceAddress deviceAddress) ( pludiņa tempC = sensors.getTempC(deviceAddress); //Serial.print("Temp C : "); //Serial.println(tempC); //Datu veidošana int numura nosūtīšanai = tempC; char simbols = "c"; //Pakalpojuma simbols, lai noteiktu, vai šis ir sensors String strMsg = "z" ; strMsg += simbols; strMsg += " "; strMsg += numurs; strMsg += " "; char msg; strMsg.toCharArray(msg, 255); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx (); / / Pagaidiet, līdz pārsūtīšana ir pabeigta delay(200); ) void loop(void) ( for (int j=0; j<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } }

Uztvērēja ierīce saņem datus, mēra spiedienu un temperatūru telpā un pārraida to uz displeju.

#iekļaut #iekļaut LiquidCrystal lcd(12, 10, 5, 4, 3, 2); #iekļauts dht11 sensors; #define DHT11PIN 8 #include #include BMP085 dps = BMP085(); garš Temperatūra = 0, Spiediens = 0, Augstums = 0; void setup() ( Serial.begin(9600); vw_set_ptt_inverted(true); // Nepieciešams DR3100 vw_setup(2000); // Iestatiet uztveršanas ātrumu vw_rx_start(); // Sākt apraides uzraudzību lcd.begin(16, 2) ; Wire.begin(); delay(1000); dps.init(); //lcd.setCursor(14,0); //lcd.write(byte(0)); //lcd.home(); ) void loop() ( uint8_t buf; // Buferis ziņojumam uint8_t buflen = VW_MAX_MESSAGE_LEN; // Bufera garums if (vw_get_message(buf, &buflen)) // Ja ziņojums ir saņemts ( // Sākt parsēšanu int i; // Ja ziņojums nav adresēts mums , iziet if (buf != "z") ( return; ) char command = buf; // Komanda atrodas indeksā 2 // Skaitliskais parametrs sākas ar indeksu 4 i = 4; int numurs = 0; // Tā kā pārraide notiek pa rakstzīmēm, rakstzīmju kopa ir jāpārvērš par skaitli, kamēr (buf[i] != " ") (skaitlis *= 10; skaitlis += buf[i] - "0"; i++; ) dps.getPressure(&Pressure); dps.getAltitude (&Altitude); dps.getTemperature(&Temperature); //Serial.print(command); Serial.print(" "); Serial.println( numurs); lcd.print("T="); lcd.setCursor(2,0); lcd.print(skaitlis); lcd.setCursor(5,0); lcd.print("P="); lcd.print(Spiediens/133.3); lcd.print("mmH"); lcd.setCursor(0,1); lcd.print("T="); lcd.print(Temperatūra*0,1); lcd.print("H="); lcd.print(sensor.mitrums); lcd.home(); //delay(2000); int chk = sensors.read(DHT11PIN); slēdzis (chk) ( gadījums DHTLIB_OK: //Serial.println("OK"); pārtraukums; gadījums DHTLIB_ERROR_CHECKSUM: //Serial.println("Kontrolsummas kļūda"); pārtraukums; gadījums DHTLIB_ERROR_TIMEOUT: //Serial.println("Taimauts kļūda"); pārtraukums; noklusējuma: //Serial.println("Nezināma kļūda"); pārtraukums; ) ) )

P.S. Nākotnē plānoju pievienot sekojošo:
- mitruma sensors uz raidītāju, pārstrādāt datu pārraides algoritmu
- sensors vēja ātruma un virziena mērīšanai.
- pievienojiet uztverošajai ierīcei citu displeju.
- pārsūtiet uztvērēju un raidītāju uz atsevišķu mikrokontrolleri.

Zemāk ir foto no notikušā:

Radioelementu saraksts

Apzīmējums Tips Denominācija Daudzums PiezīmeVeikalsMans piezīmju bloks
Pārraides daļa.
Arduino dēlis

Arduino Nano 3.0

1 Uz piezīmju grāmatiņu
temperatūras sensors

DS18B20

1 Uz piezīmju grāmatiņu
Rezistors

220 omi

1 Uz piezīmju grāmatiņu
Raidītāja modulisMX-FS-03V (433 MHz)1 Uz piezīmju grāmatiņu
Radio uztveršanas daļa.
Arduino dēlis

Arduino Uno

1 Uz piezīmju grāmatiņu
Trimmera rezistors 1 Uz piezīmju grāmatiņu
Rezistors

Kādu dienu, pētot internetu, es uzgāju interesantu Arduino dēli. Mani ļoti ieinteresēja šis dēlis. Ar tās palīdzību jūs varat izveidot savu robotu, meteoroloģisko staciju, signalizāciju un pat kaut ko nopietnāku, piemēram, "Gudrās mājas".

Iegādājoties šo ierīci, es sāku pētīt tās funkcijas. Pietiekami paspēlējies ar LED, temperatūras sensoru un LCD displeju, nolēmu uztaisīt kaut ko interesantu un kaut ko tādu, kas man varētu noderēt mājās.
Un tas ir tas, kas no tā iznāca...

Šodien es vēlos runāt par savu mazo mājas projektu, proti, iekštelpu laika staciju, izmantojot Arduino. Es domāju, ka ikviens vēlētos redzēt, piemēram, kāda ir viņa istabas temperatūra vai mitrums, tāpēc mans projekts ļaus jums to izdarīt.

Šādi izskatīsies samontētā meteoroloģiskā stacija:

Jūs droši vien gribējāt salikt to pašu ierīci, labi, nekavēsimies.

Iespējas

Bet vispirms apskatīsim, ko spēj mūsu meteoroloģiskā stacija:

1) Parādiet pašreizējo datumu un laiku;
2) Rādīt pašreizējo temperatūru;
3) Rādīt pašreizējo mitrumu;
4) Parādiet pašreizējo atmosfēras spiedienu.

Savienojums

Kas mums ir nepieciešams, lai ieviestu šo meteoroloģisko staciju:

1) Pats Arduino mikrokontrolleris (es izmantoju Arduino nano v3);
2) Temperatūras un mitruma sensors Dht22 (nelielas kļūdas rādījumos);
3) Barometrs BMP085, ar to var izdarīt daudzas lietas, piemēram, izmērīt atmosfēras spiedienu, temperatūru, jūras līmeni;
4) Reālā laika pulkstenis DS3231 (tas ir ļoti precīzs un viegli konfigurējams);
5) Šo vēl kaut kur jāparāda, izvēlējos labi zināmo ekrānu no Nokia 5110;
6) Taisnas rokas, bez tā nevar iztikt.

Nepieciešamības gadījumā:

7) Akumulators, lai darbinātu visu struktūru. Es baroju to no USB. Neiztur pāris dienas ar baterijām;
8) Slēdzis, tas ir šeit, lai pēc vajadzības ieslēgtu ekrāna fona apgaismojumu;
9) Saplākšņa gabals un kājas.
10) Savienotājs barošanas avota pievienošanai.

Savienojums

Tagad apskatīsim, kur un kā ko savienot.

1) Pirmais būs mūsu ekrāns:
3. kontakts — sērijas pulksteņa izeja (SCLK)
4. kontakts — sērijas datu izeja (DIN)
tapa 5 — datu/komandu atlase (D/C)
tapa 7 — LCD mikroshēmas izvēle (CS)
tapa 6 — LCD atiestatīšana (RST)
Jauda 3.3V

3) Trešais būs barometrs:
tapa 4 - SDA
tapa 5 - SCL
Barošana 5V

Neaizmirstiet savienot strāvu un zemējumu.

Kods

Tagad visinteresantākā daļa ir mūsu kods.
Mēģināju labi komentēt, lai būtu skaidrs, bet būs arī ieliktņi angļu valodā no bibliotēkām. Domāju, ka ar tulkošanu problēmu nebūs.

Kods

#iekļauts #iekļaut "DHT.h" #iekļaut #iekļauts #include "RTClib.h" #define DHTPIN 10 // 10 pin for DHT22 sensor #define DHTTYPE DHT22 RTC_DS1307 RTC; BMP085 dps = BMP085(); DHT dht (DHTPIN, DHTTYPE); garā temp3 = 0, Spiediens = 0, Augstums = 0; // 3. kontakts — sērijas pulksteņa izeja (SCLK) // 4. kontakts — sērijas datu izeja (DIN) // 5. kontakts — datu/komandu atlase (D/C) // 7. kontakts — LCD mikroshēmas izvēle (CS) // tapa 6 - LCD atiestatīšana (RST) LCD5110 myGLCD(3, 4, 5, 6, 7); ārējais unsigned char SmallFont; void setup() ( myGLCD.InitLCD(); myGLCD.setFont(SmallFont); Wire.begin(); RTC.begin(); dht.begin(); delay(2000); dps.init(MODE_ULTRA_HIGHRES, 3200, true ); // 3200 ir 32 metri virs jūras līmeņa (Pīters atrodas šajā augstumā + jums jāpieskaita daži metri atkarībā no stāva, kurā dzīvojat) ) void loop() ( dps.getPressure(&Pressure); dps.getAltitude (&Altitude); dps.getTemperature(&temp3); DateTime now = RTC.now(); // Sensora rādījumi var būt arī līdz 2 sekundēm "veci" (tas ir ļoti lēns sensors) peldēt h = dht.readHumidity(); // Nolasīt temperatūru kā Celsija pludiņu t = dht.readTemperature(); myGLCD.setFont(SmallFont); // iestatiet nelielu fonta lielumu ekrānā myGLCD.clrScr(); // Notīrīt ekrānu myGLCD.print("Time= ", LEFT, 0); //iestatiet laiku myGLCD.printNumI(int(now.hour()), 32, 0); // 32.0 nozīmē 32=atstarpju skaits rindā, tās, no kurām mēs drukāsim . 0=rindas numurs myGLCD.print(": ", 45, 0); myGLCD.printNumI(int(now.minute()), 50, 0); myGLCD.print(":", 62, 0); mansGLCD .printNumI(int(tagad.second()) , 67, 0); myGLCD.print("Datums = ", LEFT, 10); //iestata datumu myGLCD.printNumI(int(now.day()), 32, 10); mansGLCD.print("/", 44, 10); myGLCD.printNumI(int(tagad.mēnesis()), 50, 10); mansGLCD.print("/", 62, 10); myGLCD.printNumI(int(tagad.gads() - 2000), 68, 10); myGLCD.print("T=", LEFT, 20); //iestata temperatūru myGLCD.printNumF(t, 2, 13, 20); //Šī ir temperatūra ar DHT22 myGLCD.print("/", 45, 20); myGLCD.printNumF(temp3 * 0,1, 2, 53, 20); //Šī ir temperatūra no barometra myGLCD.print("Hum=", LEFT, 30); // iestatiet mitrumu ar DHT22 myGLCD.printNumF(h, 2, 28, 30); myGLCD.print("%", 63, 30); myGLCD.print("Press=", LEFT, 40); // iestatīt atmosfēras spiedienu myGLCD.printNumF(Spiediens / 133.3, 2, 31, 40); //aprēķināt atmosfēras spiedienu myGLCD.print("mm", 68, 40); // Serial.print(" Alt(m):"); kam tas rūp, šis ir pašreizējais augstums virs jūras līmeņa // Serial.print(Altitude / 100); myGLCD.update(); // Izvadīt lielu buferi displeja aizkavei (1000); // Aizkave 1 s)



Vai jums patika raksts? Dalies ar to