Bezprzewodowy system sterowania oświetleniem z protokołem ZigBee na STM32W
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:
- Podpięcie układu do portu USB komputera klasy PC.
- Sprawdzenie numeru przypisanego portu COM w menedżerze urządzeń.
- Uruchomienie konsoli CMD, poprzez Start -> Uruchom -> cmd
- 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.
- Wykonanie polecenia:stm32_flasher.exe –p COMx –f –r *.s37gdzie:
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.
void processReceivedPackets(void)
{
u8 i;
halGpioConfig(PORTA_PIN(3), GPIOCFG_OUT);
/* print out any packets that were received */
if(packetReceived == TRUE) {
if (rxPacket[8] == TYPE_SERIAL) {
for (i = 9; i <= rxPacket[0]; i++)
{
putchar(rxPacket[i]);
if(rxPacket[i] == '4')
{
halGpioSet(PORTA_PIN(3), 0);
putchar('i');
putchar('=');
putchar(i);
}
if(rxPacket[i] == '3')
{
halGpioSet(PORTA_PIN(3), 1);
putchar('k');
putchar('=');
putchar(i);
}
}
}
if (rxPacket[8] == TYPE_BUTTON) {
ledAction(rxPacket[9]);
}
/* The packet has been processed, so free the single entry queue up */
packetReceived = FALSE;
}
}
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’.


Nordic poszerza opcje rozwojowe serii nRF54L o płytkę nRF7002 EBII do łączności Wi-Fi 6
Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć 



