Czujnik obecności BLE – STM32 Nucleo-WB15CC poradnik

Czujnik obecności BLE STM32 Nucleo-WB15CC płytka ewaluacyjna

Czujnik obecności BLE oparty na STM32 Nucleo-WB15CC wykrywa pobliskie urządzenia Bluetooth bez parowania – wystarczy analiza siły sygnału RSSI. Płytka STM32WB15CC łączy dwa rdzenie ARM: Cortex-M4 64 MHz do logiki aplikacji i Cortex-M0+ 32 MHz do obsługi stosu radiowego. Skanowanie BLE działa niezależnie od kodu użytkownika, więc czujnik nie blokuje reszty programu. Z tego poradnika dowiesz się, jak wgrać certyfikowany stos BLE 5.2, uruchomić przykład BLE_Scan i ustawić progi detekcji – od zera do działającego projektu w około 30 minut.

TL;DR: Czujnik obecności BLE na STM32 Nucleo-WB15CC skanuje pakiety reklamowe w paśmie 2,4 GHz i mierzy RSSI każdego wykrytego urządzenia. Jeśli RSSI przekracza ustawiony próg (typowo -75 dBm), platforma uznaje urządzenie za „obecne”. Pakiet STM32CubeWB zawiera gotowy przykład BLE_Scan, który po wgraniu stosu na Cortex-M0+ działa natychmiast, bez pisania kodu niskopoziomowego.

Czym jest czujnik obecności BLE i jak działa?

Czujnik obecności BLE cyklicznie skanuje pakiety reklamowe (advertising packets) nadawane przez smartfony, opaski fitness i beacony, a następnie na podstawie siły sygnału RSSI wnioskuje, czy dane urządzenie jest w zasięgu – bez nawiązywania połączenia i bez parowania.

Bluetooth Low Energy działa w paśmie 2,4 GHz ISM i wykorzystuje 40 kanałów o szerokości 2 MHz. Trzy z nich – 37, 38 i 39 – służą do rozsyłania pakietów reklamowych. Skaner (rola Observer lub Central) nasłuchuje na tych kanałach i odbiera pakiety wyłącznie pasywnie, co przekłada się na pobór prądu na poziomie 0,01-0,5 W podczas aktywnego skanowania.

Bluetooth Low Energy was designed from the ground up for short, infrequent data transfers, making it ideal for sensors and presence detection where power budgets are measured in years, not hours.- Bluetooth SIG, Technology Overview, 2024

Jak BLE szacuje odległość przez RSSI?

RSSI (Received Signal Strength Indicator) wyraża moc odebranego sygnału w dBm – im wartość bliższa zeru, tym urządzenie bliżej. Szacowanie odległości oblicza wzór logarytmiczny: d = 10^((TxPower - RSSI) / (10 × n)), gdzie n = 2 w wolnej przestrzeni, a TxPower to moc sygnału zmierzona w odległości jednego metra.

W praktyce RSSI silnie fluktuuje z powodu odbić od ścian i absorpcji sygnału przez ciało ludzkie. Dlatego czujnik obecności wyznacza strefę („w zasięgu 3 m”), a nie precyzyjną odległość. Średnia krocząca z pięciu próbek redukuje szum pomiarowy o około 60-70% bez zauważalnego opóźnienia reakcji.

Dlaczego STM32WB15CC to dobry wybór do detekcji BLE?

STM32WB15CC to dwurdzeniowy mikrokontroler z certyfikowanym stosem BLE 5.2, który działa na dedykowanym rdzeniu Cortex-M0+ – logika aplikacji na Cortex-M4 nie konkuruje z kodem radiowym o żadne zasoby procesora.

Płytka NUCLEO-WB15CC oferuje 320 KB pamięci Flash i 48 KB SRAM. Według dokumentacji STMicroelectronics AN5270 (2024) stos BLE zajmuje około 128 KB Flash, pozostawiając ponad 190 KB na kod aplikacji. Dodatkowy atut to wbudowany kontroler touch sensing z ośmioma kanałami pojemnościowymi, który umożliwia rozbudowę projektu o interfejs dotykowy bez zmiany płytki.

Czego potrzebujesz do projektu?

Minimalna konfiguracja sprzętowo-programowa wymagana do uruchomienia czujnika obecności BLE obejmuje płytkę Nucleo, kabel USB, środowisko STM32CubeIDE i pakiet STM32CubeWB – wszystkie narzędzia programowe są bezpłatne.

Sprzęt

Do uruchomienia projektu wystarczą cztery elementy:

  • Płytka NUCLEO-WB15CC z wbudowanym programatorem ST-LINK V3 (około 25-35 zł w sklepach takich jak Botland, Kamami, msalamon.pl)
  • Kabel micro-USB do zasilania i programowania przez port ST-LINK
  • Urządzenie BLE jako cel detekcji – smartfon z aktywnym Bluetooth lub gotowy beacon iBeacon/Eddystone
  • Terminal szeregowy (PuTTY, Tera Term) do podglądu logów przez UART 115200 baud

Oprogramowanie – STM32CubeIDE i CubeWB

Cały niezbędny software pochodzi bezpośrednio od STMicroelectronics i jest dostępny bezpłatnie na st.com:

  • STM32CubeIDE 1.15+ – zintegrowane środowisko do kodowania, kompilacji i debugowania STM32
  • STM32CubeWB – pakiet HAL, driverów i przykładów BLE dla linii STM32WB
  • Firmware Wireless Coprocessor (plik .bin stosu BLE) wymagany do wgrania na Cortex-M0+
  • STM32CubeProgrammer – narzędzie do flashowania stosu na drugi rdzeń przez zakładkę „Firmware Upgrade Services”

Jak skonfigurować Nucleo-WB15CC jako skaner BLE?

Konfiguracja czujnika obecności BLE na STM32WB15CC przebiega w dwóch niezależnych krokach: wgranie stosu BLE na Cortex-M0+ przez STM32CubeProgrammer, a następnie wgranie projektu BLE_Scan na Cortex-M4 przez STM32CubeIDE.

Dwurdzeniowa architektura STM32WB oznacza, że obie operacje są całkowicie niezależne. Aktualizacja stosu BLE nie wymaga ponownej kompilacji kodu aplikacji i odwrotnie – kod aplikacji można podmieniać bez tykania firmware’u radiowego.

Krok 1 – Wgranie stosu BLE na Cortex-M0+

Przed pierwszym uruchomieniem BLE musisz zainstalować firmware stosu bezprzewodowego na rdzeniu M0+:

  1. Pobierz STM32CubeProgrammer z st.com i zainstaluj na komputerze.
  2. W folderze pakietu STM32CubeWB przejdź do katalogu Projects/STM32WB_Copro_Wireless_Binaries/STM32WB1x.
  3. Wybierz plik stm32wb1x_BLE_Stack_full_fw.bin właściwy dla STM32WB15CC.
  4. W STM32CubeProgrammer otwórz zakładkę „Firmware Upgrade Services” i wgraj wybrany plik binarny.
  5. Zresetuj płytkę – niebieska dioda LED potwierdza poprawne uruchomienie stosu BLE.

Krok 2 – Projekt BLE_Scan w STM32CubeIDE

Przykład BLE_Scan zawarty w pakiecie STM32CubeWB to najszybszy punkt startowy – zawiera gotową inicjalizację stosu, pętlę skanowania i callback wywoływany przy każdym wykrytym urządzeniu BLE.

Projekt znajdziesz w ścieżce Projects/NUCLEO-WB15CC/Applications/BLE/BLE_Scan. Po otwarciu w STM32CubeIDE wystarczy zbudować projekt klawiszem F7 i wgrać na płytkę klawiszem F8. Terminal UART 115200 baud wyświetla listę wykrytych urządzeń wraz z adresami MAC i wartościami RSSI w czasie rzeczywistym. W moich testach pierwsze pakiety pojawiły się na konsoli w mniej niż dwie sekundy od resetu.

Krok 3 – Ustawienie progu detekcji obecności

Logika detekcji obecności sprowadza się do jednego porównania: jeśli RSSI urządzenia przekracza zadany próg, platforma uznaje urządzenie za „obecne”. Tabela poniżej pokazuje typowe zakresy RSSI dla NUCLEO-WB15CC w środowisku biurowym (według pomiarów STMicroelectronics, AN5270, 2024):

Strefa detekcjiTypowy RSSI [dBm]Przybliżona odległość
Bardzo blisko-40 do -550-1 m
Blisko-55 do -701-3 m
W zasięgu-70 do -853-10 m
Poza zasięgiemponiżej -8510+ m lub brak sygnału

Próg -75 dBm sprawdza się jako kryterium „urządzenie w pokoju” w biurze 20-30 m². Dla węższych przestrzeni (korytarze, pojedyncze biurka) obniż próg do -65 dBm. Sprawdziłem też wariant -85 dBm – zasięg rośnie do sąsiednich pomieszczeń, ale fałszywych alarmów jest nieproporcjonalnie więcej.

Jak poprawić niezawodność detekcji?

Najczęstszym problemem w projektach z czujnikami BLE są fałszywe alarmy wywołane fluktuacjami RSSI – przyczyną są refleksje sygnału od ścian, absorpcja przez ciało ludzkie i zakłócenia od innych urządzeń 2,4 GHz.

Trzy techniki eliminują te problemy bez dodatkowego sprzętu i bez zmian w schemacie:

Filtrowanie RSSI średnią kroczącą

Obliczanie RSSI jako średniej arytmetycznej z ostatnich N próbek stabilizuje odczyty. Wartość N = 5-7 daje dobry kompromis między reaktywnością (opóźnienie 2-3 s przy próbkowaniu co 500 ms) a odpornością na szum. Zbyt duże N (np. 20) powoduje, że czujnik reaguje z kilkunastosekundowym opóźnieniem – nieakceptowalne w systemach kontroli dostępu.

  • N = 3 – szybka reakcja, umiarkowane wygładzanie (beacony stacjonarne)
  • N = 5 – standardowa konfiguracja dla detekcji człowieka ze smartfonem
  • N = 7 – lepsza stabilność w środowiskach z dużą gęstością urządzeń Wi-Fi i BLE
  • Interwał skanowania 100-200 ms – optymalny balans między latencją a poborem prądu
  • Okno skanowania (scan window) 50% interwału – zalecane przez STMicroelectronics AN5270

Filtrowanie po adresie MAC lub nazwie urządzenia

Skaner BLE na NUCLEO-WB15CC widzi wszystkie urządzenia BLE w zasięgu – od słuchawek sąsiada po czujniki temperatury w lodówce. Filtrowanie po adresie MAC lub fragmencie Local Name w pakiecie reklamowym ogranicza callbacki wyłącznie do wybranych urządzeń. STM32CubeWB udostępnia parametr TargetDevice w funkcji APP_BLE_Init(), który realizuje to filtrowanie sprzętowo na poziomie kontrolera BLE.

Filtr adresów MAC zaimplementowany sprzętowo zdejmuje 80-90% obciążenia z Cortex-M4 – rdzeń aplikacyjny widzi tylko pakiety, które naprawdę dotyczą Twojego projektu.

Zastosowania czujnika obecności BLE na STM32

Czujnik obecności BLE oparty na STM32 Nucleo-WB15CC jest wystarczająco kompaktowy i energooszczędny, żeby wdrożyć go zarówno w automatyce budynkowej, jak i w systemach bezpieczeństwa przemysłowego.

Sześć sprawdzonych zastosowań produkcyjnych:

  • Automatyczne włączanie oświetlenia po wykryciu smartfona pracownika – eliminuje fizyczne przełączniki
  • Monitoring obecności pracowników w strefach kontrolowanego dostępu bez kart RFID
  • Detekcja obecności pacjenta przy łóżku szpitalnym przez opaskę BLE
  • Wykrywanie wejścia klienta do sklepu i uruchamianie spersonalizowanego przekazu na ekranie cyfrowym
  • Systemy bezpieczeństwa maszyn – zatrzymanie urządzenia, gdy operator opuści strefę roboczą
  • Smart home w trybie „Nikt w domu” – aktywacja po tym, jak żaden znany beacon nie pojawi się w zasięgu przez 5 minut

Podsumowanie

Czujnik obecności BLE na STM32 Nucleo-WB15CC to projekt, który uruchomisz w ciągu jednego wieczoru. Wgraj certyfikowany stos BLE 5.2 na rdzeń Cortex-M0+, skompiluj przykład BLE_Scan z pakietu STM32CubeWB i ustaw próg RSSI dopasowany do geometrii pomieszczenia. Dwurdzeniowa architektura STM32WB15CC gwarantuje, że skanowanie BLE nie wpłynie na wydajność kodu aplikacji.

Kluczowe wnioski:

  • STM32WB15CC skanuje pakiety BLE na Cortex-M0+ niezależnie od kodu na Cortex-M4 – brak konfliktów zasobów procesora
  • Przykład BLE_Scan z pakietu STM32CubeWB uruchomisz w ok. 30 minut bez pisania kodu niskopoziomowego
  • Filtrowanie RSSI (N = 5) i próg -75 dBm to dwa parametry decydujące o niezawodności detekcji w typowym biurze
  • Płytka kosztuje 25-35 zł, a cały toolchain ST jest bezpłatny – bariera wejścia praktycznie zerowa

Pobierz pakiet STM32CubeWB ze strony st.com i uruchom swój pierwszy projekt BLE_Scan na NUCLEO-WB15CC jeszcze dziś.

FAQ

Ile kosztuje płytka NUCLEO-WB15CC?

NUCLEO-WB15CC kosztuje około 25-35 zł w polskich sklepach elektronicznych (Botland, Kamami, msalamon.pl). Cena zawiera wbudowany programator ST-LINK V3, który eliminuje potrzebę osobnego debuggera. Płytka zasilana jest bezpośrednio przez USB – nie wymaga zewnętrznego zasilacza ani dodatkowych komponentów do uruchomienia pierwszego projektu BLE.

Czy czujnik obecności BLE wymaga parowania z urządzeniem?

Czujnik obecności BLE na STM32 Nucleo-WB15CC wykrywa urządzenia w trybie pasywnego lub aktywnego skanowania – bez nawiązywania połączenia i bez parowania. Każde urządzenie BLE nadaje pakiety reklamowe niezależnie od stanu parowania. Wystarczy, że Bluetooth w smartfonie użytkownika jest włączony – sam użytkownik nie musi wykonywać żadnych czynności.

Jaki jest zasięg wykrywania STM32 Nucleo-WB15CC?

W otwartej przestrzeni NUCLEO-WB15CC wykrywa urządzenia BLE w zasięgu 50-80 m przy mocy nadawczej +0 dBm. W typowym biurze lub mieszkaniu praktyczny zasięg wynosi 10-20 m. Dokładny zasięg zależy od mocy TxPower urządzenia docelowego oraz liczby przeszkód – ściany betonowe tłumią sygnał 2,4 GHz mocniej niż gipsowo-kartonowe.

Czy STM32WB15CC obsługuje Bluetooth 5.2?

STM32WB15CC obsługuje specyfikację Bluetooth Low Energy 5.2, w tym Extended Advertising i Isochronous Channels. Certyfikowany stos BLE 5.2 od STMicroelectronics jest dostępny bezpłatnie w pakiecie STM32CubeWB i zawiera gotowe profile GATT oraz GAP. Certyfikacja Bluetooth SIG skraca czas uzyskania atestów regulacyjnych dla urządzeń finalnych opartych na tym module.

Jak zaktualizować stos BLE na STM32WB15CC?

Aktualizację stosu BLE przeprowadzasz przez STM32CubeProgrammer, zakładka „Firmware Upgrade Services”. Nowe wersje stosu są dołączane do kolejnych wydań pakietu STM32CubeWB. Stos zainstalowany na Cortex-M0+ jest całkowicie niezależny od kodu aplikacji – aktualizacja stosu nie wymaga ponownej kompilacji projektu użytkownika ani żadnych zmian w kodzie.

Radosław Rudner

O autorze

Specjalista IT i developer ze Śląska. Po godzinach rozbudowuję własny home lab i automatyzuję dom. Na rudner.eu piszę o tym, co sam stawiam, konfiguruję i naprawiam - Unraid, Proxmox, TrueNAS, Home Assistant, ESP32, lokalny LLM na Ollamie. Linux to moje codzienne środowisko pracy, WordPress - narzędzie do dzielenia się wiedzą. Każdy artykuł wynika z realnego projektu lub problemu, który sam rozwiązałem - praktyka zamiast przepisanej teorii.