Arvutiteaduse instituut
  1. Esileht
  2. Noored Koodi
EN
Logi sisse

Noored Koodi

<- Kõik kursused

  • Arduino kursus
  • 1. Sissejuhatus: millist Arduinot valida, programmeerimiskeskkond Arduino IDE
  • 2. Töötamine Arduino IDE-ga, Arduino ühendamine arvutiga ja sisseehitatud LEDi vilgutamine
  • 3. Vooluahela koostamine (LED, takistid, maketeerimislaud, juhtmed) ja värvikood
  • 4. LED-ide vilgutamine FOR tsükliga, lokaalmuutuja kasutamine
  • 5. Lüliti ühendamine ja LEDi vilgutamine vastavalt lüliti asendile: IF/ELSE tingimuse kasutamine
  • 6. RGB ledi ühendamine ja RGB võimaluste katsetamine analogWrite() abil
  • 7. Valgustundliku takisti ja ADC abil valguse mõõtmine ja kuvamine arvuti ekraanil—Serial monitor
  • 8. UART liidese abil andmete vahetamine Arvuti ja Arduino vahel, ASCII tabel
  • 9. Potentsiomeeter: töö-põhimõte, ühendamine, juhtkang (joystick)
  • 10. Servomootori juhtimine—pulsilaiusmodulatsioon ja joystick
  • 11. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
  • 12. USART ja 1602 LCD: Serial monitorist ekraanile!

  • 13. IDE-s programmeerimisest kokkuvõtvalt
  • 14. LED heleduse muutmine vastavalt keskkonna valgustugevusele
  • 15. Ohmi seadus, multimeetri kasutamine

  • 16. Kordamisküsimused
  • 17. Kontrolltöö

  • 18. LED juhtimine infrapuna-saatjaga ja -vastuvõtjaga
  • 19. HC-SR04 ultrahelisensori ühendamine ja näitude kuvamine LCD ekraanil
  • 20. Joonistame ise programmi Fritzing abil korrektse vooluringi skeemi
  • 21. Sissejuhatavalt sünkroonsest ühendusest (I2C ning SPI) õhurõhu anduri BMP280 näitel
  • 22. CSV—Comma Separated Values
  • 23. Kujundite kuvamine 1602 LCD ekraanil
  • 24. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
  • 25. Arduino ühendamine bluetooth seadmega
  • 26. Relee juhtimine

  • 27. Digispark: netist tarkvara leidmine, installeerimine ja esimese lihtsa programmi töölepanek
  • 28. ESP32: tarkvara ja lihtsa esimese programmi töölepanek
  • 29. ESP32: jõuame sisse-ehitatud LED vilgutamiseni

  • 30. Kordamine
  • 31. Teooria esitlus
  • 32. Projektiesitlus

22. CSV—Comma Separated Values

<- eelmine peatükk järgmine peatükk ->

22. CSV—Comma Separated Values

22.0. Seosed eelnenud peatükkidega

Oleme uurinud erinevate anduritega töötamist.

Oleme ka uurinud teekide kasutamist—et oleks lihtne ja kiire võimekus programmi „spikerdada“.

Oskame seejuures ka programmi lugeda ja muudatusi teha: kui näiteks peame mõne viigu ümber tõstma, siis peame muutma ka programmi.

Eelmistes peatükkides oleme uurinud, kuidas kasutada Serial monitori. Meenutame, et Serial monitor võimaldas küll andurilt korjatavat infot jälgida, näha väärtusi, neid korrastada—ent Serial monitor ei anna meile võimalust reaal-ajas saadud infot hilisemaks analüüsiks salvestada.

22.1. CSV-peatüki eesmärk ja selgitused

Eesmärk on mitte niivõrd enam suuta skeemi iseisesvalt kokku panna—taotleme juba esimeste vilumuste teket. Kasuks tuleb seega eelnevaid peatükke läbides arenenud oskus internetist infot leida; järjest enam hakkab abi olema ka eelnenu kohta tehtud ülestähendustest. Eesmärk on ka arendada dokumenteerimise oskust, seejuures aidata tekkida ka vastaval sisemisel vajadusel—ikka töö kergendamise huvides.

Kasutame selles peatükis näitena õhuniiskuse ja temperatuuriandurit DHT21—selle Arduinoga ühendamise skeemi leiate internetist. Vajadusel saate ise kiirelt visandada skeemi. Kas leiate internetist ka vastava info viikude ühendamise kohta?

Programmi aga anname siiski sedakorda ette, saate selle kiiruse huvides kopeerida antud peatüki materjalist.

Seejärel tuleb netist uurida, milliseid programme on leida info mugavamaks talletamiseks.

  • Tunnis kasutame Tera Term nimelist programmi—ent eeldame, et netiotsingu tulemusena olete võimelised leidma veel vähemalt ühe sarnaselt kasutatava programmi.

Selle tunni järel õpilane tunneb end kindlamalt:

a) netist andurite kohta infot leides;
b) netist leitava kohta kriitiline olles.
c) Ühtlasi oleme alla laadinud oma arvutitesse oma esimese programmi andmete hilisemaks talletamiseks.
d) Tekkinud on ideid ja küsimusi, soov on õpitut mingi muu anduriga iseseisvalt korrata.
e) Kui me veel ei ole pidanud iseseisvalt netist teeki enda arvutisse laadima, siis nüüd on võimalus see mugavus-puudujääk parandada.

Julgustame õpilasi omavahel koostööd tegema.

22.2. Töövahendid:

1) Arduino Uno;
2) USB ühenduskaabel;
3) arvuti;
4) internetiühendus;
5) luup;
6) juhtmed;
7) maketeerimislaud;(selles tunnis saab tegelikult hakkama ka ilma selleta, ent mulle meeldib pigem siiski maketeerimislauda kasutada);
8) DHT22 andur õhuniiskuse ja temperatuuri kohta info korjamiseks.

22.3. Teise osa esimese tunni tegevused

Harjutus A

Paneme kokku skeemi DHT22 tarvis. Materjali leiame netist. Võite otsisõnadena kasutada nii anduri markeeringut kui ka märksõnu nagu „tutorial“, „datasheet“. Eelnenud kogemuste põhjal peaks see olema lihtne ülesanne. Probleemide korral küsige õpetajalt abi.

22.3.1 Programmi tekst:

//Teek:
#include <DHT.h>;

//Konstandid:
#define DHTPIN 7     // näiteks valisin mina Arduino pealt seistmenda viiki
#define DHTTYPE DHT22   // määrame tüübiks meie anduri tüübi: DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// vajalik DHT22 Arduino-skeemis käivitamiseks (to initialise) 


//Muutujad:
float niiskus = dht.readHumidity();  //teeme õhuniiskuse-muutuja ujukoma-arvuks
float temperatuur = dht.readTemperature(); //teeme temperatuuri-muutuja ujukoma-arvuks 

void setup()
{
  Serial.begin(9600); // baudide määramine
  Serial.println("AEG,NIISKUS,TEMPERATUUR"); //logifaili ülemine rida
  dht.begin(); //Kui ei initsialiseeri, siis ei tule ka väärtusi serial monitoris 
}

void loop()
{
    //Siin tsükli-osas loeme andurilt niiskuse ja temperatuuri näitusid, võime mõelda, et kui suure sagedusega me seda teha tahame.
    niiskus = dht.readHumidity(); //talletame konkreetse niiskuse-mõõtmise kohta info muutujasse
    temperatuur = dht.readTemperature(); //talletame konkreetse temperatuuri-mõõtmise kohta info muutujasse

    // Nüüd aga paneme mõõdetud väärtused kirja SCV formaadis.
    Serial.print(","); /*antud Tera Term programmiga saame lisada ajatempli CSV jaoks sobival kujul alles logimisel, 
    seega siin peame alustama komast--et ka ajatempel oleks hiljem komaga eraldatud */

    Serial.print(niiskus);
    Serial.print(",");

    Serial.print(temperatuur);
    Serial.println ();

    delay(5000); //ja kuna soovime mõõta vaid mingi mõistliku vahemiku järel, siis palun määrake ise mõistlik vahemik.
}

Kas käivitus? Kui käivitus, siis pange tööle Serial Monitor ja vaadelge saadud tulemust. Mis on selles puudu? Vastus: ikka see, mille me meelega välja jätsime. Minu Serial Monitor näeb välja selline:

Küsimus: kui tahate vaadata ka mõõtmise aega—kas märkate Serial Monitoril selle sisse-välja lülitamise võimalust?

Ent Serial monitori näitusid ei ole võimalik pikaks kasutamiseks säilitada, peame sellise võimaluse ise juurde nuputama.

22.3.2 Tera Term abil andurilt saadud info logimine:

Antud teema paremaks illustreerimiseks oleme valinud lihtsa näite programmi Tera Term abil.

Palun leidke internetist tasuta Tera Term tarkvara alla-laadimise võimalus ja laadige see tasuta programm endale arvutisse. Tegemist on ühe lihtsama võimalusega teemat näitlikustada—ent häid sarnaseid programme on veel.

Kui Tera Term alla laetud, siis Teie laual praegu töötava Arduino andmete Tera Term keskkonnas talletamiseks peate kõigepealt veenduma, et olete välja lülitanud Serial monitori.

NB!

Kahte logijat korraga sees olla ei saa. Veenduge, et Serial monitor ei ole sisse lülitatud.

Palun kindlasti veenduge, et lülitasite välja Serial monitori ja seejärel avage Tera Term, klikkides menüüs või desktop-il 1 vastaval ikoonil. Saate ekraanile akna, milles kindlasti vaja märkida õiged andmed vajalikesse lahtritesse—palun kontrollige, et port on ka õige!

Mina sain ette sellise akna:

Mis on mul puudu?

Vajutades File > Log , saan ette järgmise tabeli, mida pean täiendama Timestamp osas:

Vaadake ka aktiivseks tehtud sinisega kohta eeltoodud pildil (st valikus „File name:“)—faili nimi on mul pandud teraterm.log… asendage ka see nii, et *.log asemel oleks *csv.

Miks peame nii toimima?

Kusjuures sõnadega „Save in“ tähistatud realt saate ka kohe panna faili sobivasse kataloogi. Minu kataloogi nimi on teraterm.

Klikkides File> View Log saan avada Notepadis jooksva infofaili… näeme, et selles on olemas nüüd ka aeg. Kandilised sulud aga peame enne andmete töötlemist eraldi eemaldama.

1 töölaual

Harjutus A

Palun vaadake menüüst järgi, kas saate ka ise midagi Log-faili kirjutada! Kommenteerimine ridade vahele võib teinekord kasulikuks osutuda.

Enne teemat käsitlenud tunni lõppu peatage Arduino töö…

Vaadake, kas andmed on endiselt alles!

Kui ikkagi salvestasite pigem *.log formaati, siis asendage *.log nüüd *.csv-ga. Saate faili avada ka Exceli formaadis, mis on mugav keskkond andmetega edasi toimetamiseks.

Kodune töö:

Võite iseseisvalt kodus uurida ka täiendavate võimaluste kohta. Kas leidsite mingi parema programmi? Midagi lihtsamat ent paremini töötavat? Kommenteerige oma katsetust.

Võite antud tunni anduri ja programmi asemel uurida mingi muu anduriga vastavalt oma vajadustele üles ehitatud logimise/salvestamise võimalust.

Kodutöö

Tehke internetis otsing otsisõnadega „CSV“ „machine learning“

Kirjeldage, mille jaoks CSV formaat kasulik on. Selleks tehke ise täiendavate otsisõnadega internetiotsinguid.



<- eelmine peatükk järgmine peatükk ->

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo