Stacja pogodowa na KA-Nucleo-F411CE i KA-Nucleo-Weather, część 2

 

Uwaga! Pierwsza część artykułu jest dostępna pod adresem.

Aby wyświetlić dane z czujnika w prosty sposób na komputerze można wykorzystać program STM Studio, który służy do wizualizacji danych z mikrokontrolera w czasie rzeczywistym poprzez debugger. Umożliwia on odczytanie zmiennych z programu w mikrokontrolerze i wyświetlenie ich w postaci wykresu liniowego, słupkowego lub tabeli.

W celu skonfigurowania odczytu za pomocą STM Studio należy uruchomić program. Wygląda on jak na rysunku 20.

Rys 20. Okno programu STM Studio do wizualizacji danych z mikrkokontrolera

Kolejnym krokiem jest załadowanie zmiennych z pliku wykonywalnego dla mikrokontrolera. W tym celu należy z menu File wybrać opcję Import Variables. W oknie które wyskoczy należy otworzyć plik .elf który znajduje się w folderze workspace/nazwa_projektu/Debug. Po wybraniu pliku pojawi się długa lista zmiennych, z której należy wybrać te, które aktualnie są potrzebne do celów wizualizacji.

Uwaga: wizualizować można tylko zmienne globalne!

W tym przypadku jest to zmienna tempX.

Rys 21. Okno wyboru zmiennych do wizualizacji w programie STM Studio

Po zaznaczeniu zmiennych należy nacisnąć przycisk Import oraz zamknąć okno. W oknie głównym pojawi się nowa pozycja na liście, którą będzie właśnie wybrana zmienna. Następnie należy zaznaczyć zmienne które chcemy wizualizować, kliknąć prawym przyciskiem myszy na nie i wybrać Send To -> VarViever1.

 

Rys 22. Okno wyboru zmiennych do wizualizacji w programie STM Studio

Kolejnym krokiem jest zmiana trybu wyświetlania na tabelę. Aby tego dokonać należy w dolnej części programu w części Display zmienić wartość VarViewer1 as: Curve na Table. Ostatnim krokiem jest wybranie interfejsu debuggera, z którym połączony jest mikrokontroler. W przypadku tej płytki jest to ST-Link SWD. Po skonfigurowaniu programu należy nacisnąć zielony trójkąt który rozpocznie odczyt zmiennych z mikrokontrolera. W poniższym przykładzie widać odczyt temperatury z czujnika, który wskazuje 26,5°C:

Rys 23. Okno odczytu danych z czujnika temperatury w programie STM Studio

Jak widać, czujnik został poprawnie uruchomiony i odczytany. Aby odczytać pozostałe czujniki należy postępować analogicznie jak z tym zwracając szczególną uwagę na instrukcje i zalecenia zawarte w notach katalogowych układów.

Obsługa diody RGB

Oprócz czujników i joysticka (który obsługuje się jak zwykły przycisk) na płytce ekspandera znajduje się bardzo jasna dioda RGB, która może zostać wykorzystana m.in. jako efektowna lampka. Aby sekwencyjnie zapalać kolejne kolory wystarczy ustawiać w programie odpowiedni pin odpowiedzialny za dany kolor.

Funkcją odpowiedzialną za ustawianie pinu w określony stan jest funkcja HAL_GPIO_WritePin(), która przyjmuje trzy parametry: strukturę określającą port, numer pinu oraz stan w jakim ma się znaleźć pin ( SET lub RESET).

Aby skonfigurować wyjścia i nadać pinom etykiety należy otworzyć ponownie  program STM32CubeMX i skonfigurować mikrokontroler wiedząc, że dioda podłączona jest jak na rysunku 24.

Rys 24. Fragment dokumentacji płytki KA-NUCLEO-Weather przedstawiający schemat podłączenia diody RGB

 

Wyprowadzenia mikrokontrolera po konfiguracji zostały przedstawione na rysunku 25.

Rys 25. Wyprowadzenia mikrokontrolera po konfiguracji pinów diody RGB

Po wygenerowaniu zaktualizowanego kodu można rozpocząć programowanie diody.

Uwaga: Należy pamiętać o usunięciu dodanych symboli, które nie są otoczone apostrofami (opisane wcześniej).

Aby zapalać i gasić konkretne kolory w pętli wystarczy dla każdego koloru zastosować poniższy schemat (umieszczony w pętli głównej programu):

  • ustaw pin od koloru x w stan niski
  • poczekaj określony czas
  • ustaw pin od koloru x w stan wysoki

Kod wykonujący powyższe czynności został przedstawiony na rysunku 26.

Rys 26. Kod obsługi kolejnych kolorów diody RGB

O wiele bardziej efektowne jest płynne przechodzenie między kolorami, dzięki czemu dioda jest w stanie świecić na więcej niż 3 składowe kolory. Aby mieszać kolory bazowe niezbędne jest wykorzystanie timerów oraz sygnału PWM do sterowania diodą. Aby skonfigurować odpowiedni timer oraz sygnał PWM przez niego generowany należy w pierwszej kolejności sprawdzić do jakich kanałów którego timera przypisane są katody diody. Można to sprawdzić w dokumentacji zestawu lub w programie STM32CubeMX. Wystarczy kliknąć na pin odpowiadający danemu kolorowi i sprawdzić, czy widnieje tam opcja TIMx_CHy, gdzie x oznacza numer timera a y konkretny kanał PWM timera. W przypadku zestawu firmy KAMAMI dioda podłączona jest następująco:

  • RGB R: TIM3_CH1
  • RGB G: TIM3_CH2
  • RGB B: TIM3_CH3

Wynika z tego, że należy skonfigurować timer3 oraz kanały 1,2 oraz 3. W tym celu należy zmienić tryb pinów na ten związany z konkretnymi kanałami (opcje jak powyżej) a następnie rozwinąć menu TIM3 i w każdym z 3 kanałów wybrać opcję PWM Generation CHy.

Rys 27. Konfiguracja timera oraz sygnałów PWM dla diody RGB

Następnie należy przejść do zakładki Configuration oraz nacisnąć przycisk TIM3.