Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Programowanie systemów internetu rzeczy i aplikacji sieciowych

Informacje ogólne

Kod przedmiotu: 103A-TLxxx-ISP-PSIR
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Programowanie systemów internetu rzeczy i aplikacji sieciowych
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Programowanie )-Telekomunikacja-inż.-EITI
( Przedmioty obieralne - Teleinformatyka )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty obieralne )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

PSIR

Numer wersji:

1

Skrócony opis:

Głównym celem przedmiotu jest zapoznanie studentów z

  • programowaniem usług (aplikacji) sieciowych za pomocą API gniazd (kompetencje typu network programmer) oraz

  • programowaniem mikrokontrolerowego węzła Internetu Rzeczy i obsługi jego peryferiów (kompetencje typu embedded programmer).

  • Pełny opis:

    Celem przedmiotu jest zapoznanie studentów(ek) z (a) programowaniem usług (aplikacji) sieciowych za pomocą API gniazd (kompetencje typu network programmer) oraz (b) programowaniem mikrokontrolerowego węzła Internetu Rzeczy i obsługi jego peryferiów (kompetencje typu embedded engineer).


    TREŚĆ WYKŁADU

    1. Wprowadzenie
      • Mapa drogowa. Treść zajęć (przedmiot „w pigułce”). Organizacja przedmiotu.
      • Co to są systemy wbudowane? Specyfika programowania sieciowego i niskopoziomowego. Internet Rzeczy. Specyfika systemów operacyjnych dla IoT. Najpopularniejsze mikrokontrolery, platformy (węzły), języki programowania, systemy operacyjne, abstrakcje programistyczne w dziedzinie systemów wbudowanych. Motywacja: wiedza i umiejętności nabywane na przedmiocie a możliwości rozwoju kariery zawodowej.
    2. Oszczędna reprezentacja danych
      • Zaprzyjaźnij się z bajtem! Ile można zyskać, jeśli zwrócimy uwagę na oszczędność pamięci. Przykłady formatów minimalizujących zużycie pamięci i ilość przesyłanych danych.
    3. Programowanie aplikacji sieciowych
      • Gniazda BSD. Przypomnienie: (a) stos protokołów TCP/IP, (b) protokoły warstwy transportowej (TCP, UDP) i ich usługi. Architektura klient/serwer. Model programistyczny gniazd. API gniazd w języku C. Klient/serwer z użyciem TCP. Klient/serwer z użyciem UDP.
      • Protokoły warstwy aplikacji. Projektowanie i implementacja, z użyciem API gniazd, własnego prostego protokołu warstwy aplikacji.
      • Wzorce projektowe aplikacji klient-serwer.
    4. Programowanie węzłów Internetu Rzeczy (poziom bare metal)
      • Mikrokontrolery. Ograniczone zasoby pamięciowe i energetyczne. Źródła energii.
      • Mechanizmy mikrokontrolera. Reset. Watchdog timer. Przerwania. Układy czasowe (timers). Tryby uśpienia. Pobór energii w różnych trybach uśpienia. Wybudzanie z trybów uśpienia. Wzorce oszczędzania energii.
      • Końcówki i interfejsy mikrokontrolera. GPIO, UART, SPI, I2C, PWM, wejścia i przetworniki analogowe. Przykłady obsługi programowej wspieranych interfejsów. Podłączanie sensorów i elementów wykonawczych do mikrokontrolera. Proste schematy połączeń. Obsługa programowa popularnych sensorów i elementów wykonawczych.
      • Udostępnianie usług sieciowych w platformach mikrokontrolerowych. Przykłady: sterowanie płytką Ethernet Shield dla Arduino, węzeł Internetu Rzeczy z łącznością WiFi.
    5. Modele programistyczne w programowaniu węzłów Internetu Rzeczy
      • Abstrakcje i techniki programistyczne w programowaniu systemów wbudowanych, na przykładzie popularnych systemów operacyjnych IoT. Proto-wątki (protothreads). Wątki, cykl życia wątków, metody komunikacji wątków, wywłaszczanie. Programowanie zdarzeniowe (event-driven programming), priorytety przerwań i wątków, programowanie czasu rzeczywistego.

    ZAKRES LABORATORIUM

    • Tworzenie klienta i serwera z użyciem API gniazd (słowa kluczowe: Linux, TCP, UDP, select(), fork()).
    • Prosty węzeł IoT (typu bare metal) z łącznością sieciową, zaopatrzony w sensory i el. wykonawcze (słowa kluczowe: Arduino, UART, UDP, PWM, element wykonawczy, sensor).
    • Model programistyczny systemu operacyjnego IoT, ze wsparciem dla aplikacji wielowątkowej i procedur obsługi przerwania (słowa kluczowe: RIOT, ISR, muteks).


    ZAKRES PROJEKTU

    Projekt polega na zaprojektowaniu i zaimplementowaniu rozproszonej aplikacji sieciowej (np. system inteligencji otocznia z funkcjonalnością zadawaną przez użytkownika za pomocą reguł, gra sieciowa, system monitoringu z wykorzystaniem węzłów IoT lub inna o porównywalnej złożoności). Elementami projektu są m.in.: (a) zapewnienie komunikacji między platformami różnymi co do sprzętu i oprogramowania, (b) opracowanie własnego protokołu warstwy aplikacji, (c) opracowanie oszczędnej binarnej reprezentacji przesyłanych danych. Wybrane ćwiczenia laboratoryjne są pomyślane jako wstęp do realizacji projektu.

    Literatura:

    • Opracowane przez prowadzących prezentacje wykładowe oraz instrukcje do ćwiczeń laboratoryjnych (udostępnione w formie elektronicznej).


    LITERATURA UZUPEŁNIAJĄCA

    • C. Bormann, M. Ersue, A. Keranen, “Terminology for Constrained-Node Networks”, IETF RFC 7228, May 2014 (https://datatracker.ietf.org/doc/html/rfc7228).
    • Brian "Beej Jorgensen" Hall “Beej's Guide to Network Programming: Using Internet Sockets”, ‎independently published, 2019 (https://beej.us/guide/bgnet/).
    • W. R. Stevens, „Programowanie usług sieciowych, tom 1, API: gniazda i XTI”, WNT, 2002.
    • Materiały szkoleniowe ze strony https://www.arduino.cc/.
    • M. Banzi, „Wprowadzenie do Arduino”, Promise, 2014.
    • O. Hahm, E. Baccelli, H. Petersen and N. Tsiftes, “Operating Systems for Low—End Devices in the Internet of Things: A Survey”. IEEE IoT Journal Vol. 3 No. 5, Oct 2016 (https://ieeexplore.ieee.org/document/7347318).
    • M. H. Qutqut. A. Al-Sakran, F. Almasalha, H. S. Hassanein, “Comprehensive Survey of the IoT Open-source OSs”. In IET Wireless Sensor Systems, 2018, Vol. 8, Issue 6. pp. 323-339 (https://ietresearch.onlinelibrary.wiley.com/doi/10.1049/iet-wss.2018.5033).
    • Materiały szkoleniowe ze strony https://www.riot-os.org/.
    • Materiały szkoleniowe ze strony https://www.freertos.org/.
    • T. Francuz, „AVR. Układy peryferyjne”, Helion, 2014.
    • M. Schwartz, "Internet of Things with ESP8266”, Packt Publishing, 2016.
    • E. Upton, G. Halfacree, „Raspberry Pi. Przewodnik użytkownika”, wydanie III, Helion, 2015.


    OPROGRAMOWANIE

    • GCC, the GNU Compiler Collection (https://gcc.gnu.org/ )
    • Arduino IDE (https://www.arduino.cc/)
    • PlatformIO, „an open source ecosystem for IoT development” (https://platformio.org/)
    • RIOT, „the friendly OS for the Internet of Things” https://riot-os.org/

    Zajęcia w cyklu "rok akademicki 2023/2024 - sem. zimowy" (zakończony)

    Okres: 2023-10-01 - 2024-02-18
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Laboratorium, 15 godzin, 96 miejsc więcej informacji
    Projekt, 15 godzin, 96 miejsc więcej informacji
    Wykład, 30 godzin, 96 miejsc więcej informacji
    Koordynatorzy: Jarosław Domaszewicz
    Prowadzący grup: Jarosław Domaszewicz, Krzysztof Pachowicz, Aleksander Pruszkowski
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103600 - Instytut Telekomunikacji

    Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

    Okres: 2022-10-01 - 2023-02-19
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Laboratorium, 15 godzin, 90 miejsc więcej informacji
    Projekt, 15 godzin, 90 miejsc więcej informacji
    Wykład, 30 godzin, 90 miejsc więcej informacji
    Koordynatorzy: Jarosław Domaszewicz
    Prowadzący grup: Jarosław Domaszewicz, Krzysztof Pachowicz, Aleksander Pruszkowski
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103600 - Instytut Telekomunikacji

    Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

    Okres: 2022-02-23 - 2022-09-30
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Laboratorium, 15 godzin, 60 miejsc więcej informacji
    Projekt, 15 godzin, 60 miejsc więcej informacji
    Wykład, 30 godzin, 60 miejsc więcej informacji
    Koordynatorzy: Jarosław Domaszewicz
    Prowadzący grup: Jarosław Domaszewicz, Krzysztof Pachowicz, Aleksander Pruszkowski, Fernando Solano Donado
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103600 - Instytut Telekomunikacji

    Zajęcia w cyklu "rok akademicki 2021/2022 - sem. zimowy" (zakończony)

    Okres: 2021-10-01 - 2022-02-22
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Laboratorium, 15 godzin, 90 miejsc więcej informacji
    Projekt, 15 godzin, 90 miejsc więcej informacji
    Wykład, 30 godzin, 90 miejsc więcej informacji
    Koordynatorzy: Jarosław Domaszewicz
    Prowadzący grup: Jarosław Domaszewicz, Aleksander Pruszkowski, Fernando Solano Donado
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103600 - Instytut Telekomunikacji

    Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
    Właścicielem praw autorskich jest Politechnika Warszawska.
    pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)