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.
- 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).
Widok wnętrza autka. Pokazane rozprowadzenie zasilania. Prześledź drogę od baterii (od przełącznika - '+' baterii to czerwony przewód)
do układu N298.
Uwaga. Na fotografii powyżej przewody zasilające silniki są podwójne i wielokolorowe. Na tym zdjęciu są tylko czarno-czerwone.
To jest obecna konfiguracja autek.
Ta lista poświęcona jest sterowaniu silnikami. Pojazd wyposażony jest w cztery silniki połączone parami tak, że
każda para napędza dwa koła po każdej stronie (a zatem koła obracają się jak w czołgu -- koła po jednej stronie
mogą obracać się tylko w tą samą stronę).
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: mikrokontroler nie jest
w stanie dostarczyć wystarczająco dużo prądu, by poruszyć silnikiem..
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 przez stabilizator napięcia, utrzymujący
stałe napięcie 6V (dwa akumulatory połączone szeregowo dają maksymalnie ok. 8.4V -- to nieco za dużo dla silnika).
- 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