SR — Laboratorium

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 kablasygnałPROTO
czarnyGNDGND
biały+5V+5V
szaryTMR1 – enc BA33
fioletowyTMR0 – enc AA34
niebieskiAIN1 – H-bridgeB21
zielonyAIN2 – H-bridgeB22
żółtyPWMA – H-bridgeA40
pomarańczowy  
czerwony+3V3+3V3
brązowySHARPB51

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