Systemy wbudowane
Jest to przedmiot składający się z dwóch form dydaktycznych: wykładu oraz laboratoriów.
Dodatkowo na przestrzeni semestru studenci przygotowują projekt.
Z powodu anomalii w prowadzeniu zajęć tymczasowe zasady zaliczenia są następujące:
- Kolokwium z wykładu (40% oceny)
- Projekt z wykładu (60% oceny)
- Pozytywnie zaliczone laboratoria (sine qua non)
Wykład
Wykład odbywa się we środy, w sali 1.28/C13 o godzinie 15:15.
Od 11 marca wykłady odbywają się w formie prezentacji pdf do pobrania i samodzielnego opracowania.
Termin kolokwium: TBA
- 26.02:
- 04.03: systemy: wymagania, specyfikacja, krzywa życia produktu...
- 11.03/13.03: magistrala CAN, wykład do samodzielnego opracowania:
proszę pobrać (link), zapoznać się z treścią
slajdów oraz zwrócić szczególną uwagę na pojęcia i teksty zewnętrzne oznaczone symbolem
karcianego pika. Zalecam przeczytanie, a przynajmniej przekartkowanie podlinkowanych artykułów
i stron WWW. W razie wątpliwości bądź dalszych pytań proszę o kontakt mailowy.
- 18.03 programowalne procesory, HDL, technologia MOS...
(slajdy oraz
źródła VHDL). Do samodzielnego
zapoznania się. Proszę standardowo przyjrzeć się specjalnie elementom oznaczonym symbolem pika,
zajrzeć na YT, poszukać w Wikipedii...
- 25.03 transmisja UART, wykład do samodzielnego opracowania
[slajdy]. Jak zwykle, rzeczy, na które
należy zwrócić szczególną uwagę ozaczyłem znakiem karcianego pika.
- 01.04 protokół SPI, wykład do samodzielnego opracowania
[slajdy]. Jak zwykle, rzeczy, na które
należy zwrócić szczególną uwagę ozaczyłem znakiem karcianego pika. Tym razem krótko, następny
wykład to I2C i czytanie specyfikacji.
- 08.04 protokół OneWire, wykład do samodzielnego opracowania
[slajdy]. Jak zwykle, rzeczy, na które
należy zwrócić szczególną uwagę ozaczyłem znakiem karcianego pika. Protokół komunikacji OneWire
oraz kilka praktycznych uwag jak czytać dokumentację komponentów (datasheets).
- 15.04 protokół I2C i PROFIBUS, wykład do samodzielnego opracowania
[slajdy]. Kilka pytań i poleceń
ozaczyłem znakiem karcianego pika. Protokół komunikacji I2C oraz
kilka drobiazgów na temat PROFIBUS (absolutnie nie wyczerpujące!).
- 22.04 komponenty systemów wbudowanych, wykład do samodzielnego opracowania
[slajdy]. Kilka pytań i poleceń
ozaczyłem znakiem karcianego pika. Przegląd (skromny) z lotu ptaka różnych procesorów wykorzystywanych
do sterowania systemami.
- 29.04 systemy czasu rzeczywistego (1), wykład do samodzielnego opracowania
[slajdy]. Kilka pojęć i poleceń
ozaczyłem znakiem karcianego pika. Wprowadzenie do problematyki systemów czasu rzeczywistego
oraz planowania zadań. Część pierwsza. W części drugiej przedstawienie schematów planowania.
- 06.05 systemy czasu rzeczywistego (2), wykład do samodzielnego opracowania
[slajdy]. Planowanie zadań.
Algorytm EDD, EDF i schemat Bratley'a. Kilka pojęć i poleceń ozanczyłem znakiem karcianego pika.
- 13.05 systemy czasu rzeczywistego (3), wykład do samodzielnego opracowania
[slajdy]. Planowanie zadań z
obostrzeniami. Algorytm LDF, modyfikacja do EDF, planista Rate-Monotonic (RM)
W tym tygodniu więcej rzeczy do samodzielnego przeanalizowania - oznaczyłem je znakiem karcianego pika.
- 20.05 systemy czasu rzeczywistego (4), wykład do samodzielnego opracowania
[slajdy]. Planowanie zadań w
Neutrino QNX: pojęcie wątku w systemie, planowanie sporadyczne, zjawisko odwrócenia priorytetów.
Naprawdę zachęcam do przeczytania dwóch artykułów o problemie z Pathfinderem
- oznaczyłem je znakiem karcianego pika.
- 27.05 Kilka słow o bateriach, kilka słów o panelach solarnych.
[slajdy].
Oznaczyłem znakiem karcianego pika kilka rzeczy do przeczytania.
Projekt
Projekt wykonujecie pojedynczo (zespoły jednoosobowe). Proszę zalogować się na
eportal.pwr.edu.pl i odnaleźć kurs "Systemy wbudowane - projekt".
Zamieściłem tam już zadania do wykonania
w określonym terminie od 18 marca godz. 15:15. W razie trudności
lub wątpliwości proszę o kontakt za pomocą forum kursu na eportalu (lepiej) lub przez e-mail (gorzej).
Jest to nowa dla mnie forma prowadzenia zajęć, także proszę spodziewać się zmian i modyfikacji w miarę jak
będę poznawał możliwości systemu.
Zadaniem projektowym jest stworzenie dokumentacji uprzednio wybranego i skonsultowanego z prowadzącym systemu
wbudowanego. Zakres opracowania powinien obejmować:
- Opis środowiska działania systemu i problemów z tym związanych.
- Analizę zapotrzebowania na funkcjonalności w systemie.
- Przedstawienie działania systemu (diagram UML itp.) ze szczególnym uwzględnieniem wygody użytkowania
systemu, jego ergonomii, kompletności i tzw. "dobrych praktyk" (tj. logicznych rozwiązań).
- Zestawienie komponentów systemu oraz ich wzajemne interakcje.
W szczególności, opis projektu powinien obejmować następujące dwa zagadnienia:
- Części składowe systemu. Opis komponentów pod kątem ich funkcjonalności (co robią),
połączeń (zasilanie, interfejsy we/wy) oraz rodzaju przyjmowanych poleceń i generowanych danych
(jakiego typu, jak często, itp.). Ta część powinna też zawierać opis wzajemnej komunikacji
między tymi komponentami.
Przykład: "Waga elektroniczna o rozdzielczości 0,5 g i
maksymalnym obciążeniu 2500 g. Sygnały wejściowe (logika TTL): DataRequest, Reset, Tara
(aktywne HIGH), sygnały wyjściowe: komunikacja równoległa, 8-bitowa, postać ramek: (...)"
- Logika działania. Opis stanów, w jakich system może się znaleźć, mechanizmy przejścia
pomiędzy tymi stanami, inne założenia dotyczące np. czasu trwania w każdym z nich.
Konkretne nazwy układów wykonawczych nie są potrzebne, ani precyzyjny schemat połączeń elektrycznych.
Opis powinien utrzymywać poziom ogólności diagramu blokowego.
Oceniana będzie precyzja i czystość opisu, logika działania systemu.
Laboratoria
Zajęcia odbywają się w salach 317.2 i 317.3 budynku D1.
Proszę zalogować się na
eportal.pwr.edu.pl i odnaleźć kurs "Systemy wbudowane - laboratorium".
Zamieszczone są tam instrukcje na bieżące laboratorium oraz podany sposób oddawania zadań.
Na tę chwilę (01:35, 18 marca)
do kursu dostęp mają tylko studenci grupy dra Wodo i mojej, pozostałych
proszę o cierpliwość - zostaniecie dopisani do kursu.
Z oczywistych względów forma laboratoriów odbiega nieco od założeń, ale nadal pracujemy w okolicach autek tak,
żeby gdy pojawi się taka możliwość - wrócić do laboratorium i „rzeczywiście” się nimi pobawić. Jednocześnie
zbierajcie informacje i korzystajcie z możliwości, jakie daje eportal - uczę się tego narzędzia, także może
różnie być - zobaczmy, jak to działa.
Prowadzący:
- Patryk Kozieł -
- Maciej Gębala -
- Wojciech Wodo -
- Przemysław Błaśkiewicz -
- Obejrzyj dokładnie płytkę Arduino UNO oraz dostępne Ci inne podzespoły pojazdu.
Wykorzystaj opis płytki w sieci, aby zidentyfikować: główny mikrokontroler, piny we/wy
(jakie mają funkcje?), diodę LED (ile ich jest? do czego służą?), zasilanie, reset.
- Uruchom środowisko programistyczne Arduino (możesz uruchomić na swoim laptopie).
Połącz płytkę arduino przewodem USB z komputerem. Upewnij się, że w menu
Narzędzia/Płytka oraz Narzędzia/Port wybrane są, odpowiednio,
"Arduino/Genuino Uno" oraz port w stylu /dev/ttyACM0. Możesz sprawdzić, czy wszystko
działa za pomocą Narzędzia/Pobierz informacje o płytce.
- Uruchom przykład Przykłady/Basics/Blink i zapoznaj się z kodem oraz
samouczkiem. Zajrzyj też
do odnośników z rozdziału "Learn more".
- Skompiluj kod (znaczek "ptaszka" z lewej strony belki menu). Sprawdź, jakie informacje
o skompilowanym kodzie otrzymasz. Przeanalizuj je. Następnie wgraj (przycisk obok)
kod na płytkę przyglądając się temu, co się z nią w tym czasie dzieje (wgrywanie
możesz powtórzyć, żeby się upewnić). Sprawdź, czy Twoje domysły na temat kodu i faktyczne
jego działanie są zbieżne. Jeśli nie - rozwiąż konflikt :)
- Pobierz ten kod i
otwórz w środowisku. Ponownie przeanalizuj kod, postaw
tezę co do tego, co on robi. Skompiluj i wgraj na płytkę. Wybierz
Narzędzia/Monitor portu szeregowego (Ctrl+Shift+M), ustaw odpowiedni baudrate
i zweryfikuj swoje domysły co do programu.
- Korzystając z dwóch przedstawionych programów, napisz swój, który:
- pobierze literę przez port szeregowy,
- wymruga ją za pomocą diody w kodzie Morse'a.
UWAGA! Od ubiegłych zajęć nastąpiła zmiana w autkach:
- Pojawiło się zasilanie bateryjne, podłączone do silników. Mogą one obracać kołami, w
związku z tym, aby nie spowodować niekontrolowanego ruszenia pojazdu stojącego
na biurku, przed włączeniem zasilania należy ustawić pojazd na podstawie z gąbki!
Dostępny jest wyłącznik główny, odcinający zasilanie bateryjne. Jeśli Arduino podłączone jest
przez kabel USB, to nadal będzie zasilane (ale tylko płytka).
Ta lista poświęcona jest sterowaniu silnikami. Pojazd wyposażony jest w dwa niezależne silniki napędzające przednie koła.
W jaki
sposób sterować silnikiem? Oczywiście przez podanie napięcia na jego dwa bieguny (są też inne silniki,
posiadające więcej wejść, ale o tych innym razem). Chcielibyśmy, aby to Arduino sterowało silnikiem, podobnie
jak w poprzednim tygodniu sterowało diodą (włącz/wyłącz).
Jednakże
nie można podłączyć silnika bezpośrednio do któregoś z pinów Arduino, o czym szerzej na wykładzie.
Dlatego też w autku zamontowany jest moduł z układem L298, który będzie pośredniczył pomiędzy Arduino a silnikiem
i odpowiednio włączał/wyłączał zasilanie pobierane bezpośrednio z baterii.
- Układ N298. Pobierz
specyfikację układu. Przeanalizuj schemat na pierwszej stronie. Potraktuj obecne tam
tranzystory NPN jako elektronicznie
włączniki: jeśli na bazie (B) jest „HIGH”, to tranzystor przewodzi między emiterem (E) a kolektorem (C).
Przeanalizuj, co się stanie, jeśli na „In1”, „In2”, „EnA” pojawią się różne kombinacje stanów LOW i HIGH.
(W tym schemacie zasilanie z baterii podłączane jest do „+Vs” (na środku u góry) i do wspólnej „ziemi” --
symbol krótkiej, grubej, poziomej kreski np. na dole schematu). Silnik podłączany jest do wyjść „OUT1” i
„OUT2”. Spróbuj wyobrazić sobie, jak za pomocą tego układu można sterować kierunkiem obracania się kół.
- Programowanie ruchu. Na autku znajdziesz taśmę 6 przewodów, które „pod pokładem” są połączone jak
na powyższej fotografii.
Uwaga. Autka w wersji 2.0 mogą mieć odwrócone kolory taśmy!
Korzystając z dotychczas osiągniętych wyników, spróbuj podłączyć te przewody do
pinów 2-13 na Arduino tak, by móc sterować jazdą w przód i do tyłu silnikami po prawej i lewej stronie.
(Podpowiedź: przewody biały i żółty [wejścia „EnA” i „EnB” układu N298] podłącz do pinów zasilania „+5V”
w okolicach baterii. Po podłączeniu pozostałych przewodów możesz na nich ustawiać stany „HIGH” i „LOW”
tak, jak w przypadku świecenia diodą LED.)
- Sterowanie prędkością. Odłącz teraz przewody żółty i biały od zasilania „+5V” i podłącz je do pinów
Arduino oznaczonych falką (~), są to: 3, 5, 6, 9, 10, 11. Są to piny, na których można wykonać operację
analogWrite(), co spowoduje, że średnie napięcie na tym pinie można zmieniać
pomiędzy 0V („LOW”) a 5V („HIGH”). [Więcej o tej technice, zwanej PWM - Pulse Coded Modulation
na wykładzie.] Przetestuj, jak kręcą się koła dla różnych wartości zapisywanych do pinów En1 i En2
(zapisanie za niskich wartości może sprawić, że koła nie będą się poruszać).
- Rozbudowa biblioteki. Pobierz archiwum, rozpakuj i otwórz
w środowisku Arduino. Przeanalizuj kod i uruchom go ustawiwszy uprzednio autko na podstawce!
Dopisz do klasy Wheels metodę goForward(int cm)
oraz goBack(int cm), której wywołanie spowoduje, że autko przemieści się o
liczbę centymetrów podaną jako parametr.
Treść laboratoriów, materiały i mechanizm oddawania zadań na
eportal.pwr.edu.pl - kurs "Systemy wbudowane - laboratorium".
Materiały pomocnicze w sieci i na papierze
- Kurs Arduino na forbot.pl podstawy Arduino i środowisko oraz następne
- Jedno z możliwych połączeń dla kompletnego autka:
silnik: 10 - biały, 9 - fioletowy, 8 - szary, 6 - żółty, 5 - zielony, 4 - niebieski
serwo: 3
infra red: 2