Bezprzewodowy system sterowania oświetleniem z protokołem ZigBee na STM32W

W artykule opisano projekt prostego systemu łączności bezprzewodowej do sterowania oświetleniem z poziomu stacji roboczej. W projekcie tym stacją bazową jest komputer PC, sieć radiowa jest zgodna z protokołem ZigBee, natomiast sterowanym obwodem oświetlenia jest żarówka o mocy 5 W.

Konfiguracja sprzętowa

Do stworzenia sieci radiowej wykorzystano mikrokontrolery STM32W. Mikrokontrolery te mają możliwość realizacji bezprzewodowej transmisji danych zgodnej z protokołem ZigBee dzięki zintegrowanemu w układzie transceiverowi IEEE802.15.4.

Aby zrealizować projekt przy niskim nakładzie kosztów, zdecydowano się na użycie taniego zestawu startowego dla mikrokontrolerów STM32W o nazwie STM32W-RFCKIT (rysunek 1). Składa się on z dwóch modułów:

  • MB950 remote application board,
  • MB951 USB dongle.

Każdy z tych modułów jest wyposażony w mikrokontroler STM32W.

 

Rys. 1. Zestaw STM32W-RFCKIT

Rys. 1. Zestaw STM32W-RFCKIT

 

Konfigurację sprzętową zaprojektowanego systemu zobrazowano na rysunku 2.

 

Rys. 2. Schemat połączenia układu.

Rys. 2. Schemat połączenia układu.

 

Rys. 3. Zdjęcie modułu MB950 z podłączonym obwodem oświetlenia

Rys. 3. Zdjęcie modułu MB950 z podłączonym obwodem oświetlenia

 

Zasada działania systemu

Użytkownik steruje systemem z poziomu aplikacji komputerowej. Interfejsem USB aplikacja komunikuje się z modułem MB951. Wysyłane przez aplikację komendy sterują działaniem modułu powodując wysyłanie ramek radiowych o określonej treści. Moduł MB950 odbiera te ramki i zgodnie z ich zawartością wystawia stan logiczny ‘0’ lub ‘1’ na wyprowadzeniu PA3. Wyprowadzenie to steruje tranzystorem, który wywołując przepływ lub brak przepływu prądu zwiera lub rozwiera styki przekaźnika, tym samym włączając lub wyłączając obwód oświetlenia – żarówkę.

Oprogramowanie

Kluczowym elementem projektu jest odpowiednie oprogramowanie modułów, jak również napisanie aplikacji ułatwiającej obsługę całego systemu z poziomu komputera klasy PC.

Wykorzystane narzędzia:

  • IAR Embedded Workbench for ARM (EWARM) v6.30 Kickstart- edycja i kompilacja kodu modułów ZigBee (darmowa wersja po rejestracji) [1],
  • stm32w_flasher- wgrywanie aplikacji na moduły ZigBee (program dostępny na stronie producenta w paczce ‘ST SimpleMAC-1.1.0’ wraz z przykładowymi aplikacjami) [2],
  • SerialPort Terminal (RS-232 Serial COM Port) – program na licencji ‘open source’, na bazie którego została stworzona okienkowa aplikacja do obsługi sterowania [3],
  • Microsoft Visual C# 2010 Express- używany do edycji i kompilacji programu SerialPort [4].

Oprogramowanie modułu MB951 USB dongle

Na powyższy moduł należy załadować przykładową aplikację z pakietu ‘ST SimpleMAC-1.1.0’ (dostępny na stronie producenta i w załączniku do artykułu) o nazwie ‘talk.s37’. Instrukcja jak to zrobić znajduje się poniżej.

Do flashowania układów wykorzystywany jest program ‘stm32w_flasher’ z pakietu ‘ST SimpleMAC-1.1.0’.

Procedura:

  1. Podpięcie układu do portu USB komputera klasy PC.
  2. Sprawdzenie numeru przypisanego portu COM w menedżerze urządzeń.
  3. Uruchomienie konsoli CMD, poprzez Start -> Uruchom -> cmd
  4. Przejście za pomocą konsoli do folderu, w którym znajduje się aplikacja ‘stm32w_flasher’
    • domyślnie: C:\Program Files\STMicroelectronics\ST SimpleMAC-1.1.0\STM32W108\utilities
    • należy pamiętać o uprzednim skopiowaniu do powyższego folderu aplikacji z rozszerzeniem .s37, którą chcemy załadować do modułu.
  5. Wykonanie polecenia:

    stm32_flasher.exe –p COMx –f –r *.s37

    gdzie:
    COMx – pod ‘x’ wstawiamy numer portu, do którego podłączone jest urządzenie
    *.s37 – nazwa aplikacji, która ma być załadowana do modułu

Wgrany program umożliwia odbiór i wysyłanie ramek radiowych ZigBee. Tu wykorzystana została tylko funkcjonalność wysyłania ramek. Proces wysyłania przebiega następująco: mikrokontroler STM32W oczekuje na odbiór danych z komputera (przez interfejs USB działający jako wirtualny port COM), po odbiorze danych konwertuje je do postaci ramki radiowej i wysyła w eter.

Oprogramowanie modułu MB950 remote application board

Moduł ten wymaga załadowania odpowiednio zmodyfikowanej aplikacji ‘talk.s37’. Modyfikacja wprowadza obsługę dodatkowego pinu odpowiedzialnego za włączenie i wyłączanie oświetlenia. Po analizie schematu elektrycznego modułu MB950 wybrano pin PA3, który nie znalazł zastosowania w aplikacji talk, jednakże świetnie nadawał się do zastosowania w omawianym projekcie.

Zmiany w źródłowym kodzie zostały dokonane w funkcji processReceivedPackets(void), odpowiedzialnej za odbieranie pakietów przesyłanych z innego urządzenia. Funkcja to zastała poszerzona o warunki logiczne odpowiedzialne za ustawianie stanu wysokiego oraz niskiego na pinie PA3. Zmodyfikowane ciało tej funkcji zaprezentowano w listingu 1.

 

Listing 1.

 

Powyższy kod zawiera obsługę tylko jednego zewnętrznego obwodu oświetlenia. W celu uzyskania obsługi większej liczby elementów, należy powielić instrukcję warunkową
i odpowiednio zmienić pola zaznaczone żółtym kolorem.

Oprogramowanie do komputera PC

Celem maksymalnego ułatwienia korzystania z zestawu zastosowano program z interfejsem graficznym użytkownika. Podstawę dla niego stanowiła aplikacja ‘SerialPort Terminal’ rozpowszechniana w postaci otwartego kodu.

 

Rys. 4. Oryginalna aplikacja ‘SerialPort Terminal’.

Rys. 4. Oryginalna aplikacja ‘SerialPort Terminal’.

 

Aplikacja została zmodyfikowana w środowisku programistycznym Microsoft Visual C# 2010 Express, tak aby interfejs użytkownika sprowadzał się jedynie do przycisków z wyborem miejsca zapalenia/zgaszenia światła (z systemowego punktu widzenia, jest to wybór modułu, który zareaguje  załączy/wyłączy światło, w przypadku zastosowania ich w liczbie większej niż jeden) i niezbędnym wyborze portu dla podłączonego modułu nadawczego. W opisywanym projekcie zastosowano dwa moduły odbiorcze.

 

Rys. 5. Zmodyfikowana aplikacja ‘SerialPort Terminal’.

Rys. 5. Zmodyfikowana aplikacja ‘SerialPort Terminal’.

 

Widoczne na rysunku 5 ustawienia portu szeregowego COM są wymagane przez zastosowane moduły komunikacji bezprzewodowej. Konieczna jest jedynie zmiana numeru zmapowanego portu COM „COM Port” w zależności od numeru przypisanego w komputerze.

Dokonywanie zmian w programie w środowisku Microsoft Visual C# 2010 Express jest bardzo proste ze względu na możliwość graficznej edycji. Zbędne elementy szybko usunąć można poprzez ich zaznaczenie i przyciśnięcie klawisza ‘Delete’ na klawiaturze. Następnie z odpowiedniego menu wybrać można elementy do wstawienia. W tym przypadku potrzebnych będzie kilka przycisków (tak zwanych button’ów). Kluczowym elementem projektu jest dodanie do klawiszy funkcji, jakie będą wykonane po ich naciśnięciu. Z poziomu kodu wywołanie pożądanego działania, które zaimplementowane będzie w pliku Terminal.cs aplikacji, powinno wyglądać tak jak na listingu 2 i 3.

 

Listing 2. Przypisanie funkcjom funkcjonalności wysłania bajtu przez port szeregowy

 

Listing 3. Przypisanie funkcji do przycisków aplikacji

 

Jak łatwo można się domyślić, wybór odpowiedniego urządzenia, które jest odpowiedzialne za załączanie/wyłączanie oświetlenia w danym pomieszczeniu odbywa się poprzez wysłanie odpowiedniej wartości bajtu i sprawdzenie przez moduł (ten do którego adresowana była wiadomość) w prostej pętli ‘if’, czy odebrana wartość odpowiada wykonaniu przez niego działania włączenia czy wyłączenia oświetlenia.

Załączone kody źródłowe

W załączniku do artykułu dostępne są kompletne kody źródłowe umożliwiające odtworzenie oprogramowania opisanego systemu. Aby to zrobić, należy w pierwszej kolejności uruchomić plik instalacyjny ST SimpleMAC-1.1.0.0-STM32W108.exe, co spowoduje:

  • rozpakowanie pod wskazaną ścieżką przykładowych aplikacji producenta,
  • zainstalowanie wymaganych sterowników.

Następnie należy podmienić oryginalny plik talk.c na zmodyfikowany przez autorów.

Bibliografia

[1] Strona internetowa firmy IAR Systems, na której można pobrać środowisko EWARM http://www.iar.com/Service-Center/Downloads/

[2] Strona internetowa firmy ST, na której można pobrać aplikację Simple MAC http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/st_zigbee_simplemac.zip

[3] Strona internetowa, na której można pobrać kod źródłowy programu Terminal http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx

[4] Strona internetowa, na której można pobrać  środowisko Visual C# http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express

Autorami projektu i artykułu są studenci Wydziału Elektroniki Politechniki Wrocławskiej:
Dominik Mirowski
Norbert Mazurkiewicz
Michał Kryściak

Do pobrania