Difference between revisions of "LU-BST-B11:PD"

From DiLab
Jump to: navigation, search
(PD2)
Line 109: Line 109:


PD pildīšanas gadījumā par to jāziņo pasniedzējam līdz piektdienai, 01.12.2011. 23:59.
PD pildīšanas gadījumā par to jāziņo pasniedzējam līdz piektdienai, 01.12.2011. 23:59.


== PD4 ==
Sensoru datu pārsūtīšana uz bāzes staciju.

'''Uzdevums''': Izveidot divas aplikācijas: programmatūru sensoru mezglam, kas lasa analogos sensorus, un bāzes stacijai, kas pieprasa sensoru mezglam datus un nosūta tos uz seriālo portu.

Gan pārraidi no sensoru mezgla pa radio, gan no bāzes stacijas uz seriālo portu veikt ar TinyOS AM paketēm, ar sekojošu struktūru:
SensorRequestMsg:
moteId: uint16_t // sensoru mezgla id
adcChannel: uint8_t // kuru ADC kanālu lasīt (analogā sensora numurs)
period: uint8_t // ik pa cik sekundēm lasīt un sūtīt šī sensora lasījumus
avg: uint8_t // no cik lasījumiem vilkt vidējo vērtību

SensorReportMsg:
moteId: uint16_t // sensoru mezgla id
adcChannel: uint8_t // kurš ADC kanāls nolasīts (analogā sensora numurs)
value: '''uint16_t''' // nolasītā sensora vērtība

Katrs students izvēlas sev unikālu sensoru tīkla identifikatoru (<code>networkId</code>): studentu apliecības pēdējos divus ciparus. MoteId tad izvēlas kā <code>networkId * 100 + moteNr</code>, numurējot motes no 1 uz priekšu. Vairāku vienādu tīkla ID gadījumā atrādīšanas laikā tiks izvēlēti citi, unikāli ID. Katram studentam paredzēta arī sava bāzes stacija, kura prasa datus tikai sev piederīgajam sensoru mezglam. Bāzes stacijai ID nav vajadzīgs. Citiem vārdiem, katrs students noprogrammē pāri: bāzes stacija un sensoru mezgls (vairāki mezgli), kas abi runājas savā starpā, netraucējot citu studentu motēm, kas vienlaikus atrodas tajās pašās telpās.

Sensoru mezgla un bāzes stacijas darbības protokols:
* Bāzes stacija:
** Ik pa 1 sekundei nosūta sensoru mezglam pieprasījumu <code>SensorRequestMsg</code>, norādot tajā sev piederīgu <code>moteId</code>
** <code>adcChannel</code> katrā pieprasījuma ziņojumā tiek palielināts par vienu, sākot no 1. Kad <code>adcChannel</code> > 8, tas tiek uzstādīts atpakaļ uz 1 (TMote Sky ir pieejami arī ADC kanāli 0-15, bet visus tos lasīt nevajag). Citiem vārdiem: bāzes stacija cikliski pieprasa sensoru mezglam nolasīt visus analogos sensorus
** Bāzes stacija klausās ienākošos <code>SensorReportMsg</code> ziņojumus, atfiltrē no tiem tikai tos, kam ir atbilstošs <code>moteId</code>, pieglabā sev lokāli saņemtās sensoru vērtības (<code>value</code>)
** Kad bāzes stacija saņēmusi visus 8 sensoru lasījumus, tiek uzbūvēta <code>SensorTotalReportMsg</code> AM pakete un nosūtīta pa seriālo portu. Ja gadījumā sensora i vērtība nav saņemta no sensoru mezgla, bāzes stacijai tas ir jāpieprasa atkārtoti, atkārtošanu veicot līdz 2 reizēm (kopā prasīt līdz 3 reizēm). Ja arī tad vērtība nav saņemta, izmantot 0 kā vērtību
* Sensoru mezgls:
** Klausās pa radio saņemtos <code>SensorRequestMsg</code> ziņojumus, atfiltrē tikai sev piederīgus (ar savu <code>moteId</code>).
** Saņemot sev adresētu <code>SensorRequestMsg</code>, nolasa analogo sensoru, kura ADC kanāls uzrādīts šī ziņojuma <code>adcChannel</code> laukā. Nolasīto vērtību nosūta atbildes ziņā <code>SensorReportMsg</code>, uzstādot tādu pašu <code>adcChannel</code> un <code>value</code> vietā liekot nolasīto vērtību.

'''Bonusa uzdevums''': Uztaisīt aplikāciju uz PC (ieteicams, Javas vidē, bet ne obligāti), kas lasa seriālo portu, parsē tajā saņemtās <code>SensorTotalReportMsg</code> AM paketes no bāzes stacijas un attēlo tās vizuāli saprotamā formā, piemēram, šādi:
+-------------------------------------------------------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+-------------------------------------------------------+
| 13 | 0 | 1922 | 20 | 25 | 106 | 7 | 0 |
| 13 | 0 | 1922 | 22 | 27 | 1201 | 7 | 0 |
...
Kur kolonna i attēlo i-tā ADC kanāla (analogā sensora) vērtību, katra rinda attēlo vienu <code>SensorTotalReportMsg</code> ziņojumu, saņemtu no bāzes stacijas. Šajā piemēra tabulā uzrādītās vērtības ir izdomātas, realitātē tās var atšķirties.

Lai arī bonusa uzdevums ir neobligāts, tas varētu palīdzēt gan šī PD atkļūdošanā, gan arī kalpot kā iestrāde PD3.

Veiksmīgas bonusa uzdevuma izpildes gadījumā iespējams iegūt vēl līdz 50% no PD2 vērtējuma (t.i., kopā iespējams iegūt 150% par PD2).

'''Termiņš''': Sestdiena, 16.10.2010. 05:00

Soda punkti, iesūtot novēloti:
* pēc 16.10.2010. 05:00: -15%
* pēc 23.10.2010. 05:00: -30%
* pēc 30.10.2010. 05:00: -45%
* pēc 06.11.2010. 05:00: -60%

Revision as of 11:14, 30 November 2011

Praktiskie darbi

Praktiskajos darbos jāizpilda sensoru mezgla programmēšanas uzdevums

Lai nokārtotu kursu, sekmīgi jānokārto visi praktiskie darbi!

Praktiskais darbs ir sekmīgs, ja par to saņemts vismaz 40% vērtējums.

PD iesniegšanas procedūra:

  • Darbā izmantotos failus (izejas kodu) iesūtīt uz epastu, subjektā norādot "BST PDxx", kur xx ir PD numurs: 01, 02, ... . Iesūtīšanai jāievēro norādītais termiņš
  • Darbs jāatrāda uz vietas, 312. datorklasē, ieteicams, praktisko darbu laikā (pēc lekcijas). Atrādīšana var notikt arī pēc iesūtīšanas termiņa beigām.

Izstrādes platformas un vide

Praktiskos darbus atļauts veidot jebkurā vidē: TinyOS, MansOS, Contiki, Mantis, SOS, ... . Vēlams izmantot TMote Sky sensoru mezglus. Bet arī citas motes ir atļautas, to saskaņojot ar pasniedzēju (uzrakstiet epastā "vēlos izmantot platformu X, programmēšanas vidi Y").

Vērtēšana

Visi praktiskie darbi kopā sastāda 20% no kopējā kursa vērtējuma (2 balles).

Praktiskajiem darbiem ir atšķirīga sarežģītība, tāpēc tiem ir arī atšķirīgi svari kopējā vērtējuma veidošanā. PD svari tiks noteikti brīdī, kad būs pienācis pēdējā PD termiņš un kad būs redzams, cik daudz piepūles katrs konkrētais PD studentiem ir sagādājis.

Bonusa punkti

Praktiskajos darbos būs neobligātā daļa, par kuru iespējams saņemt papildus punktus. Rezultātā par PD kopā iespējams saņemt arī vairāk par 20% no kopējās atzīmes (2 ballēm). Šādā veidā ar padziļinātu darbu iespējams nopelnīt punktus kas zaudēti citās "disciplīnās": esejas, KD, projekts.

PD1

Morzes kods.

Uzdevums: izspīdināt uz sarkanās gaismas diodes savu vārdu Morzes kodā (bez mīkstinājuma zīmēm).

Lai kods būtu lasāms "ar neapbruņotu aci", izmantosim sekojošus signālu ilgumus (kuri ideālā gadījumā ir konfigurējami):

  • Punkta garums (P): 300ms
  • Svītras garums (S): 3 * P
  • Atstarpe starp signāliem viena burta ietvaros: P
  • Atstarpe starp diviem burtiem: S
  • Pauze pēc vārda beigām: 2 sekundes

Pēc pauzes vārds tiek izspīdināts atkal no sākuma.

Bonusa uzdevums: vienlaikus uz sarkanās diodes spīdināt savu vārdu, uz zaļās: uzvārdu. Ja vārds īsāks par uzvārdu, sarkanā diode sagaida, kamēr zaļā beidz savu signālu virkni, abas kopā nogaida vēl sekundi, un atkal viss sākas no sākuma. Ja uzvārds īsāks, zaļā diode sagaida sarkano, pauze, atkal no sākuma.

Veiksmīgas bonusa uzdevuma izpildes gadījumā iespējams iegūt vēl līdz 100% no PD1 vērtējuma (t.i., kopā iespējams iegūt 200% par PD1).

Termiņš: Trešdiena, 12.10.2011. 05:00

Soda punkti, iesūtot novēloti:

  • pēc 12.10.2011. 05:00: -15%
  • pēc 19.10.2011. 05:00: -30%
  • pēc 26.10.2011. 05:00: -45%
  • pēc 02.11.2011. 05:00: -60%

PD2

Kursa projekta pieteikums.

Šis praktiskais darbs nedaudz atšķiras no pārējiem. Šoreiz nekas nav jāprogrammē. Bet gan jāuzraksta sava kursa projekta īss apraksts un jāiesniedz tas PDF formātā. PD2 atrādīšana nozīmē, ka lekcijas laikā, 30.11.2010., katra komanda pastāstīs pārējiem par sava kursa projekta ideju, izveidosim īsu diskusiju.

Obligātās dokumenta nodaļas:

  1. Projekta tēma. Kas ir Jūsu projekts, ko Jūs izstrādāsit. Šeit var pietikt ar vienu vai dažiem teikumiem
  2. Projekta komanda. Kas piedalās, kādas lomas katrs izpilda (kurš ko programmēs, kurš projektēs, kurš testēs utt)
  3. Motivācija. Kāpēc Jūs šādu projektu taisāt. Kāds no tā varētu būt labums Jums un pārējiem apkārtējiem cilvēkiem, dabai.
  4. Jūsu pieeja un arhitektūra. Kā realizēsiet projektu. Kāda būs izmantotā aparatūra. Kāda programmatūra. Kāda būs tīkla struktūra. Šeit labi iederas sistēmas arhitektūras bildes, shematiski attēlojumi. Svarīgi norādīt arī nepieciešamo aparatūru, tai skaitā, kādi sensori nepieciešami projekta realizēšanai. Lai varam sākt meklēt nepieciešamos sensorus, motes. Tiek sagaidīts, ka šī ir saturīgākā projekta apraksta daļa.
  5. Sagaidāmais rezultāts. Cik daudz no savas projekta idejas plānojat šī semestra laikā realizēt. Kādus testus veikt. Kā novērtēsit rezultātus.

Neobligātās tēmas, par ko iespējams saņemt papildus punktus:

  1. Kas šajā tēmā pasaulē ir jau izdarīts. Bakalaura studentiem netiek prasīts izdarīt kaut ko universālu, kas pasaulē vēl neeksistē. Tai pat laikā, ir ļoti vēlams, ka veicat izpēti, par to, kas pasaulē Jūsu tēmā ir jau izpildīts. Kaut vai tāpēc, lai izvēlētos labāko risinājumu, lai nav pašiem jāizdomā no nulles
  2. Idealizācija. Šī projekta ietvaros netiek prasīts, lai Jūs uzbūvējat vispasaules sensoru tīklu ar Gūgles mēroga infrastruktūru. Bet, ja tas tiktu izdarīts - ko ar Jūsu sensoru tīklu varētu izdarīt? T.i., padomājiet pāri sava viena semestra robežām!

Vērtējums

Katra sadaļa sastāda šādu daļu no kopējā PD3 vērtējuma:

  1. Projekta tēma: 10%
  2. Komanda: 5%
  3. Motivācija: 20%
  4. Pieeja un arhitektūra: 50%
  5. Sagaidāmais rezultāts: 15%

Papildus punkti:

  1. Pasaules sasniegumu apskats: 30%
  2. Idealizācija: 20%


Termiņš: Trešdiena, 30.11.2011. 05:00

Soda punkti, iesūtot novēloti:

  • pēc 30.11.2011. 05:00: -15%
  • pēc 07.12.2011. 05:00: -30%
  • pēc 14.12.2011. 05:00: -45%
  • pēc 21.12.2011. 05:00: -60%

PD3

Prezentācija par enerģijas ieguvi no vides.

Uzdevums: Sagatavot prezentāciju par kādu konkrētu metodi, kā iegūt enerģiju no vides. Piemēram, no saules, vēja, vibrācijām, temperatūras starpības, elektro magnētiskā lauka.

Izvēlētā metode ir jāsaskaņo ar pasniedzēju, lai neizveidotos situācija, kad ir vairākas vienādas prezentācijas.

Jāuzstājas ar 15min prezentāciju, kuras saturs:

  • Metodes idejas īss apraksts
  • Aktuālie pasaules sasniegumi un reāli pielietojumi, prototipi vai pētījumi (ja tehnoloģija vēl ir eksperimentāla)
  • Tehniskie parametri, cik daudz enerģijas var iegūt un:
    • kādi ir nepieciešamie apstākļi
    • ar kādu ātrumu
    • kādi ir sprieguma ierobežojumi
    • kādi ir strāvas stipruma ierobežojumi
    • kas nosaka metodes efektivitāti, kad tā samazinās
  • Metodes lietderība sensoru tīkliem - kādās situācijās šādu metodi varētu izmantot

Prezentētāji uzstājas BST lekcijas laikā, 07.12.2011. 12:30 - 14:00.

Vērtējumu noteiks prezentācijas klausītāji.

PD pildīšanas gadījumā par to jāziņo pasniedzējam līdz piektdienai, 01.12.2011. 23:59.


PD4

Sensoru datu pārsūtīšana uz bāzes staciju.

Uzdevums: Izveidot divas aplikācijas: programmatūru sensoru mezglam, kas lasa analogos sensorus, un bāzes stacijai, kas pieprasa sensoru mezglam datus un nosūta tos uz seriālo portu.

Gan pārraidi no sensoru mezgla pa radio, gan no bāzes stacijas uz seriālo portu veikt ar TinyOS AM paketēm, ar sekojošu struktūru:

SensorRequestMsg:
    moteId: uint16_t      // sensoru mezgla id
    adcChannel: uint8_t  // kuru ADC kanālu lasīt (analogā sensora numurs)
    period: uint8_t      // ik pa cik sekundēm lasīt un sūtīt šī sensora lasījumus
    avg: uint8_t        // no cik lasījumiem vilkt vidējo vērtību
SensorReportMsg:
    moteId: uint16_t       // sensoru mezgla id
    adcChannel: uint8_t   // kurš ADC kanāls nolasīts (analogā sensora numurs)
    value: uint16_t       // nolasītā sensora vērtība

Katrs students izvēlas sev unikālu sensoru tīkla identifikatoru (networkId): studentu apliecības pēdējos divus ciparus. MoteId tad izvēlas kā networkId * 100 + moteNr, numurējot motes no 1 uz priekšu. Vairāku vienādu tīkla ID gadījumā atrādīšanas laikā tiks izvēlēti citi, unikāli ID. Katram studentam paredzēta arī sava bāzes stacija, kura prasa datus tikai sev piederīgajam sensoru mezglam. Bāzes stacijai ID nav vajadzīgs. Citiem vārdiem, katrs students noprogrammē pāri: bāzes stacija un sensoru mezgls (vairāki mezgli), kas abi runājas savā starpā, netraucējot citu studentu motēm, kas vienlaikus atrodas tajās pašās telpās.

Sensoru mezgla un bāzes stacijas darbības protokols:

  • Bāzes stacija:
    • Ik pa 1 sekundei nosūta sensoru mezglam pieprasījumu SensorRequestMsg, norādot tajā sev piederīgu moteId
    • adcChannel katrā pieprasījuma ziņojumā tiek palielināts par vienu, sākot no 1. Kad adcChannel > 8, tas tiek uzstādīts atpakaļ uz 1 (TMote Sky ir pieejami arī ADC kanāli 0-15, bet visus tos lasīt nevajag). Citiem vārdiem: bāzes stacija cikliski pieprasa sensoru mezglam nolasīt visus analogos sensorus
    • Bāzes stacija klausās ienākošos SensorReportMsg ziņojumus, atfiltrē no tiem tikai tos, kam ir atbilstošs moteId, pieglabā sev lokāli saņemtās sensoru vērtības (value)
    • Kad bāzes stacija saņēmusi visus 8 sensoru lasījumus, tiek uzbūvēta SensorTotalReportMsg AM pakete un nosūtīta pa seriālo portu. Ja gadījumā sensora i vērtība nav saņemta no sensoru mezgla, bāzes stacijai tas ir jāpieprasa atkārtoti, atkārtošanu veicot līdz 2 reizēm (kopā prasīt līdz 3 reizēm). Ja arī tad vērtība nav saņemta, izmantot 0 kā vērtību
  • Sensoru mezgls:
    • Klausās pa radio saņemtos SensorRequestMsg ziņojumus, atfiltrē tikai sev piederīgus (ar savu moteId).
    • Saņemot sev adresētu SensorRequestMsg, nolasa analogo sensoru, kura ADC kanāls uzrādīts šī ziņojuma adcChannel laukā. Nolasīto vērtību nosūta atbildes ziņā SensorReportMsg, uzstādot tādu pašu adcChannel un value vietā liekot nolasīto vērtību.

Bonusa uzdevums: Uztaisīt aplikāciju uz PC (ieteicams, Javas vidē, bet ne obligāti), kas lasa seriālo portu, parsē tajā saņemtās SensorTotalReportMsg AM paketes no bāzes stacijas un attēlo tās vizuāli saprotamā formā, piemēram, šādi:

+-------------------------------------------------------+
|    1 |    2 |    3 |    4 |    5 |    6 |    7 |    8 |
+-------------------------------------------------------+
|   13 |    0 | 1922 |   20 |   25 |  106 |    7 |    0 |
|   13 |    0 | 1922 |   22 |   27 | 1201 |    7 |    0 |
...

Kur kolonna i attēlo i-tā ADC kanāla (analogā sensora) vērtību, katra rinda attēlo vienu SensorTotalReportMsg ziņojumu, saņemtu no bāzes stacijas. Šajā piemēra tabulā uzrādītās vērtības ir izdomātas, realitātē tās var atšķirties.

Lai arī bonusa uzdevums ir neobligāts, tas varētu palīdzēt gan šī PD atkļūdošanā, gan arī kalpot kā iestrāde PD3.

Veiksmīgas bonusa uzdevuma izpildes gadījumā iespējams iegūt vēl līdz 50% no PD2 vērtējuma (t.i., kopā iespējams iegūt 150% par PD2).

Termiņš: Sestdiena, 16.10.2010. 05:00

Soda punkti, iesūtot novēloti:

  • pēc 16.10.2010. 05:00: -15%
  • pēc 23.10.2010. 05:00: -30%
  • pēc 30.10.2010. 05:00: -45%
  • pēc 06.11.2010. 05:00: -60%