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

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

Zestaw uruchomieniowy KA-Nucleo-F411CE z mikrokontrolerem STM32F411CE firmy KAMAMI wraz z ekspanderem KA-Nucleo-Weather zawierającym czujniki środowiskowe, tj. czujniki wilgotności, natężenia światła, temperatury oraz ciśnienia atmosferycznego umożliwia badanie aktualnych warunków otoczenia, przez co idealnie nadaje się na budowę domowej stacji pogodowej. Oprócz wyżej wymienionych czujników na płytce ekspandera znajduje się 4-pozycyjny joystick z przyciskiem oraz dioda RGB.

Początek przygody – konfiguracja środowiska

Zaczynamy od przygotowania środowiska programistyczne (IDE), w którym tworzony będzie kod sterujący działaniem całego układu. W poniższych przykładach wykorzystane zostało darmowe środowisko System Workbench for STM32. Jest to środowisko oparte o Eclipse, dzięki czemu jest łatwo konfigurowalne oraz proste w obsłudze. Po zainstalowaniu System Workbench for STM32 (w skrócie SW4STM32) można przystąpić do pracy. Aby w jak najprościej i najprzyjemniej wkroczyć w świat mikrokontrolerów STM32 warto skorzystać z bibliotek HAL i narzędzia STM32CubeMX. Dzięki wykorzystaniu tego narzędzia od ST można „wyklikać” całą konfigurację mikrokontrolera i wygenerować kompletny projekt, dzięki czemu można skupić się na pisaniu kodu związanego z konkretnym zadaniem zamiast trudzić się w konfiguracji samego STM-a, która może przyprawić początkującego o niemały ból głowy.

Ekspander firmy KAMAMI zawiera czujniki, które są podłączone do mikrokontrolera za pomocą magistrali I²C. Aby skonfigurować ten interfejs, należy w programie STM32CubeMX utworzyć nowy projekt. W tym celu należy wybrać opcję New Project, a następnie wybrać mikrokontroler STM32F411CEU, jak na zrzucie na rysunku 1.

Rys 1. Zrzut ekranu z tworzenia nowego projektu w programie STM32CubeMX

Po wybraniu odpowiedniego układu ukaże się okno jak na rysunku 2.

Rys 2. Zrzut ekranu z tworzenia nowego projektu w programie STM32CubeMX po wybraniu układu STM32F411CEU

Aby uruchomić interfejs I²C, należy rozwinąć menu I²C1, a następnie wybrać z menu kontekstowego tryb I²C. Spowoduje to podświetlenie pewnych wyprowadzeń w środkowej części programu, co świadczy o wybraniu funkcji I²C dla tych pinów.

Rys 3. Zrzut ekranu z tworzenia nowego projektu w programie STM32CubeMX po wybraniu trybu I²C

Następnym krokiem, który należy wykonać, jest konfiguracja interfejsu. W zakładce Configuration pojawiła się opcja I²C1, po wybraniu której pokaże się okno konfiguracji tego interfejsu:

Rys 4. Okno konfiguracji interfejsu I²C

W tym przykładzie pozostaniemy przy częstotliwości zegara 100kHz oraz 7-bitowym adresie urządzeń. Kolejnym krokiem jest włączenie przerwań w kontrolerze NVIC poprzez zaznaczenie obydwu checkboxów w zakładce NVIC Settings. Po tej krótkiej konfiguracji interfejs będzie gotowy do użycia zaraz po wygenerowaniu kodu.

Aby mieć możliwość interakcji z układem należy skonfigurować joystick lub przycisk tak, aby była możliwa jego obsługa z poziomu kodu. W tym celu wracamy do ekranu głównego i patrząc na dokumentację dostarczoną przez KAMAMI można dostrzec, że przycisk USER odłączony jest do pinu PB12 (rysunek 5).

Rys 5. Fragment dokumentacji płytki KA-NUCLEO-F411CE przedstawiający schemat podłączenia przycisku do procesora

Po kliknięciu lewym przyciskiem myszy na pin PB12 pojawi się menu, w którym należy wybrać GPIO_Input, dzięki czemu pin ten będzie skonfigurowany jako wejście. Przycisk jest fizycznie podciągnięty do zasilania, więc nie ma potrzeby ustawiania wewnętrznego podciągnięcia w mikrokontrolerze. Aby nadać etykietę przyciskowi, którą będzie można posługiwać się w kodzie należy kliknąć prawym przyciskiem myszy na pinie i wybrać  Enter User Label. Po nadaniu przyciskowi etykiety Button sytuacja wygląda jak na rysunku 6.

Rys 6. Nadanie przyciskowi etykiety Button

Analogicznie należy postąpić w przypadku konfiguracji joysticka z tą różnicą, że pinów do konfiguracji będzie więcej.