Laboratorium
Laboratorium z kursu Sterowniki robotów dotyczy budowania rozwiązań sprzętowo–programowych ze szczególnym uwzględnieniem aspektów robotycznych. Zakres laboratorium obejmuje:
- zapoznanie się z mikrokontrolerami ST,
- debugowanie kodu dla mikrokontrolera w systemie wbudowanym,
- wykorzystanie peryferiów mikrokontrolera takich jak: liczniki, ADC, DAC, kontroler pamięci DMA, I2C, SPI, USART, USB,
- obsługa przerwań,
- komunikacja z urządzeniami zewnętrznymi,
- sterowanie silnikami przy wykorzystaniu sterowników PID.
Przygotowanie do zajęć
Do każdych zajęć należy się przygotować minimum projekt w programie STM32CubeIDE do każdego z ćwiczeń w ramach laboratorium. Ponadto, jeśli zadanie wymaga wyliczenia wartości parametrów, określenia stałych czasowych itp. należy te obliczenia przygotować przed zajęciami. Dodatkowo zaleca się również przygotowanie szkieletu programu, który implementuje problematykę wskazanym w zadaniu do laboratorium.
Zadania w ramach laboratorium lab05 oraz lab06 wymagają przygotowania w szerszym zakresie, a mianowicie zapoznania się z dokumentacją techniczną układów oraz czujników, które będą dodatkowo wykorzystywane podczas laboratorium.
Zasady zaliczenia
- praca oceniana jest w trakcie zajęć, po których student otrzymuje ocenę. Ocena ta jest przyznawana zarówno za zrealizowane zadanie jak i odpowiedzi na pytania,
- w skład wchodzą raporty oddane w terminie maksymalnie do dwóch tygodni od końca ostatnich zajęć. Raport powinien zawierać opis realizacji wykonanego ćwiczenia oraz zadanie podane w trakcie zajęć laboratoryjnych (które może podwyższyć jak lub obniżyć uzyskaną ocenę),
- ocena końcowa z laboratorium to średnia arytmetyczna ze wszystkich otrzymanych ocen,
- dopuszcza się jedną nieobecność, przy czym nie zwalnia to z oddania laboratorium. Nieobecność lub poprawę laboratorium można zrealizować na każdych kolejnych zajęciach lub zajęciach odróbkowych. W uzasadnionych przypadkach dopuszcza się większą ilość nieobecności w szczególnych przypadkach, które są rozpatrywane indywidualnie,
- dopuszcza się możliwość wystąpienia kartkówek lub tzw. wejściówek, które dopuszczają do realizacji zajęć,
- niedopuszczalne są plagiaty jak również praca niesamodzielna. W przypadku ich wystąpienia ćwiczenie laboratoryjne jest niezaliczone na ocenę niedostateczną. Ponadto, dopuszcza się możliwość niezaliczenia kursu w przypadku rażącego naruszenia tego punktu. Praca może być poddana weryfikacji przez systemy antyplagiatowe,
- zrealizowane zadania należy umieszczać na eportalu. Zamieszczenie wszystkich zadań na eportalu jest warunkiem koniecznym do uzyskania pozytywnej oceny z ćwiczenia laboratoryjnego.
RemoteLab
Informacje na temat RemoteLaba można znaleźć na następujących stronach. Szczegółowa instrukcja jak połączyć się z serwerem zostanie przesłana za pomocą maila.
https://github.com/wdomski/remote-lab
Raport
Każdy przesłany raport powinien zawierać następujące informacje do każdego z realizowanych zadań na laboratorium:
- krótki opis czego dotyczyło zadanie,
- konfigurację wszystkich niezbędnych peryferiów mikrokontrolera,
- wyliczenia nastaw np. dla rejestrów liczników jeżeli takie peryferia są wykorzystywane,
- niezbędne fragmenty kodu, które pokazują jak dane zadanie zostało zrealizowane,
- wizualizację uzyskanych wyników na platformie RemoteLab (wyjście terminala konsoli szeregowej oraz wizualizację),
- rozwiązanie zadania domowego (jeśli takie się pojawiło, kod, wizualizacja),
- brak zadania domowego skutkuje punktami ujemnymi,
- przesłanie zadania z opóźnieniem skutkuje punktami ujemnymi.
Jeżeli w trakcie laboratorium są realizowane 3 zadania to powyższy opis powinien pojawić się do każdego zadania oraz do zadania domowego.
Eportal
https://eportal.pwr.edu.pl/course/view.php?id=6083
Zadania laboratoryjne
Poniżej została zawarta lista ćwiczeń laboratoryjnych. Do każdego ćwiczenia przygotowana została instrukcja z przykładowymi zadaniami do wykonania na laboratoriach. W trakcie laboratoriów zadania te mogą zostać zmodyfikowane dla każdej grupy laboratoryjnej.
Dodatkowo zadania laboratoryjne są opublikowane również na stronie
https://github.com/wdomski/SteRoL
Repozytorium to zawiera zadania przystosowane do wykonania na serwerach RemoteLab. Każda płytka deweloperska została wyposażona w nakładkę, której schemat dostępny jest poprzez poniższy link
https://github.com/wdomski/SteRoL/blob/develop/boards/Nucleo64-shield.pdf
Lab — BHP
Omówienie zasad zaliczenia oraz BHP.
Lab — wprowadzenie
Wprowadzenie do mikrokontrolerów ST na przykładzie płytki ewaluacyjnej NUCLEO-L476RG. Zapoznanie się z cyfrowymi wejściami/wyjściami ogólnego przeznaczenia. Wykorzystanie środowiska programistycznego IDE do edycji i budowy projektu, a także narzędzia ST-Link Utility do wgrywania firmware na mikrokontroler.
Instrukcja: sr_lab01.pdf
Lab — zaawansowane techniki debugowanie
Środowisko STM32CubeIDE, jako narzędzie do debugowania kodu źródłowego. Zapoznanie się z technikami przekierowywania wyjścia funkcji printf() na dwa różne interfejsy (USART oraz SWV). STM32CubeMonitor, jako narzędzie diagnostyczne do wizualizacji i modyfikacji pamięci mikrokontrolera w czasie rzeczywistym.
Instrukcja: sr_lab02.pdf
Lab — liczniki i przerwania
Obsług liczników w trzech podstawowych trybach pracy: generator podstawy czasu, generator sygnału PWM, wejście Input Capture. Obsługa przerwań oraz wykorzystanie funkcji zwrotnych.
Instrukcja: sr_lab03.pdf
Lab — ADC, DAC i DMA
Obsługa przetwornika ADC. Generowanie sygnału za pomocą przetwornika DAC. Prosta aplikacja generatora sygnałów z wykorzystaniem kontrolera DMA. Wizualizacja wyników za pomocą STMStudio.
Instrukcja: sr_lab04.pdf
Regulator PID
Instrukcja (regulator PID): sr_lab04b.pdf
Lab — SPI i I2C
Praktyczne aspekty komunikacji za pomocą SPI i I2C. Obsługa różnych modułów rozszerzeń (X-NUCLEO): komunikacja bezprzewodowa, sterowanie silnikami, obsługa czujników MEMS, itp.
Instrukcja: sr_lab05.pdf
Lab — SPI i I2C
Praktyczne aspekty komunikacji za pomocą SPI i I2C. Obsługa różnych modułów rozszerzeń (X-NUCLEO): komunikacja bezprzewodowa, sterowanie silnikami, obsługa czujników MEMS, itp.
Strojenie regulatora PID
Instrukcja: sr_lab05.pdf
Instrukcja (regulator PID): sr_lab04b.pdf
Lab — Raspberry Pi Pico
Instrukcja: sr_lab_pico_upython.pdf
Lab — termin odróbczy
Materiały dodatkowe
en.DM00334043 STM32 ST-LINK Utility for STM32 MCUs
en.CD00262073 STM32 ST-LINK utility software description, User manual
en.DM00103564 STM32 configuration and initialization C code generation
en.DM00104712 STM32CubeMX for STM32 configuration and initialization C code generation, User manual
en.DM00105918 STM32 Nucleo-64 board
en.DM00105823 STM32 Nucleo-64 board, User manual
Description of STM32L4 HAL and Low-layer drivers
en.CD00291613 STM Studio run-time variables monitoring and visualization tool for STM32 microcontrollers
en.CD00291015 Getting started with STM-STUDIO, User manual
en.DM00027105 ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32
en.DM00026748 ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32, User manual
en.DM00108832 STM32L476xx, Ultra-low-power ARM® Cortex®-M4 32-bit MCU+FPU, 100DMIPS, up to 1MB Flash, 128 KB SRAM, USB OTG FS, LCD, analog, audio
en.DM00083560 STM32L4x5 and STM32L4x6 advanced ARM®-based 32-bit MCUs, Reference manual
161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide (http://www.freertos.org/Documentation/RTOS_book.html)
FreeRTOS_Reference_Manual_V9.0.0 (http://www.freertos.org/Documentation/RTOS_book.html)
Moduły rozszerzeń:
en.brstm32ode STM32 Open Development Environment
en.DM00089896 LSM303C, Ultra-compact high-performance eCompass module: 3D accelerometer and 3D magnetometer
en.DM00125142 Getting started with X-NUCLEO-NFC03A1 NFC card reader board based on CR95HF for STM32 Nucleo, User manual
en.DM00154104 X-NUCLEO-6180XA1 proximity and ambient light sensor expansion board based on VL6180X for STM32 Nucleo, User manual
en.DM00168396 Getting started with the Sub-1 GHz expansion board based on SPSGRF-868 and SPSGRF-915 modules for STM32 Nucleo, User manual
en.DM00226187 Getting started with the X-NUCLEO-IHM07M1 motor driver expansion board based on the L6230 for STM32 Nucleo, User manual
en.DM00237629 Getting started with X-NUCLEO-IHM02A1; two-axis stepper motor driver expansion board based on L6470 for STM32 Nucleo, User manual
en.DM00245012 Getting started with X-NUCLEO-IDW01M1 Wi-Fi expansion board based on SPWF01SA module for STM32 Nucleo, User manual
en.DM00285104 X-NUCLEO-53L0A1 ranging and gesture detection sensor expansion board based on VL53L0X for STM32 Nucleo, User manual
en.DM00333132 Getting started with the X-NUCLEO-IKS01A2 motion MEMS and environmental sensor expansion board for STM32 Nucleo, User manual
TWR-MOTOR TWR-MOTOR — Moduł napędowy do zestawu Freescale Tower (źródło)
Opis wyprowadzeń modułu TWR-MOTOR:
kolor kabla | sygnał | PROTO |
czarny | GND | GND |
biały | +5V | +5V |
szary | TMR1 – enc B | A33 |
fioletowy | TMR0 – enc A | A34 |
niebieski | AIN1 – H-bridge | B21 |
zielony | AIN2 – H-bridge | B22 |
żółty | PWMA – H-bridge | A40 |
pomarańczowy | ||
czerwony | +3V3 | +3V3 |
brązowy | SHARP | B51 |
Dokumentacja dla modułów i układów z ćwiczenia lab06 i lab07:
kamodbar_spi dokumentacja modułu KAmodBAR-SPI
MPL115A1 czujnik ciśnienia
kamodexp1 dokumentacja modułu KAmodEXP1
MCP23S08 ekspander portów GPIO
DM00140895 dokumentacja czujnika LPS22HB — barometr
hts221 dokumentacja HTS221 — higrometr
lsm6dsl dokumentacja LSM6DSL — trójosiowy akcelerometr i trójosiowy żyroskop
lsm303agr dokumentacja LSM303AGR — trójosiowy akcelerometr i trójosiowy magnetometr