Raspberry Pi bez wątpienia zrewolucjonizował sposób, w jaki używamy jednopłytkowych komputerów (SBC), czyniąc mocne, a jednocześnie przystępne cenowo platformy rozwojowe dostępne dla hobbystów, edukatorów i inżynierów. Niektórzy mogą argumentować, że Arduino odegrało równie dużą rolę, ale realistycznie rzecz biorąc, działa ono na znacznie niższym poziomie, będąc przeznaczonym dla projektów opartych na mikrokontrolerach, a nie pełnoprawnych obliczeń.
To tutaj pojawia się Raspberry Pi Pico 2 W. Znajduje się ono dokładnie pomiędzy tymi dwoma światami – mikrokontroler z poważną mocą, wbudowaną łącznością bezprzewodową i wystarczającą ilością peryferiów, aby uszczęśliwić inżyniera. Nie uruchomi pełnego systemu operacyjnego Linux jak Pi 5, ale z dwurdzeniowymi procesorami Cortex-M33 i RISC-V, Bluetooth 5.2 oraz znacznie większą ilością RAM i pamięci flash niż typowe Arduino, oferuje poziom elastyczności, który czyni go atrakcyjnym wyborem dla systemów wbudowanych, aplikacji IoT i nie tylko.
W tym artykule przyjrzymy się, jak zacząć pracę z Raspberry Pi Pico 2 W i przejdziemy przez przykład, który prezentuje nowe możliwości wbudowanego Bluetooth.
Aby zacząć, będziemy używać MicroPython na Raspberry Pi Pico 2 W. Najpierw musisz pobrać bootloader UF2 ze strony internetowej Micropython. Teraz, przytrzymując przycisk BOOTSEL na urządzeniu Raspberry Pi Pico 2 W, podłącz je do komputera (za pomocą portu/kabla MicroUSB). Spowoduje to przekształcenie twojego urządzenia w urządzenie pamięci masowej (tak jak pendrive lub karta MicroSD pojawia się na twoim komputerze). Teraz skopiuj plik UF2 na urządzenie „pamięci” Raspberry Pi Pico 2 W, odłącz kabel USB i podłącz go ponownie. Używając ulubionego urządzenia terminala szeregowego, takiego jak PuTTY lub TeraTerm, połącz się z portem COM, który pojawi się dla twojego urządzenia, i powinieneś zostać przywitany przez interpreter powłoki MicroPython:
W Zaczynamy z MicroPython i Raspberry Pi Pico, użyliśmy Thonny IDE jako edytora do pisania kodu i ładowania urządzenia Raspberry Pi Pico 2 W. Z wprowadzeniem AI do edytorów kodu i rozszerzeń na każdym kroku, postanowiłem ustawić swoje środowisko na VSCode zamiast Thonny. Najważniejszą rzeczą do zrobienia na początku (oprócz instalacji VSCode) jest zainstalowanie oficjalnego rozszerzenia Raspberry Pi Pico (opublikowanego przez Raspberry Pi).
Po zainstalowaniu rozszerzenia, zobaczysz małą ikonę płytki Raspberry Pi Pico po lewej stronie okna VSCode (tak jak reszta rozszerzeń). Kliknij na nią, a następnie przejdź do „Nowy projekt MicroPython” pod „Ogólne”. Nadaj swojemu projektowi nazwę i ścieżkę, a następnie kliknij „Utwórz”.
Otworzy się nowy edytor z kilkoma plikami i powłoką MicroPython. Jednym z tych plików jest przykładowy plik Pythona mrugający diodą LED. Otwórz ten blink.py. W tym momencie będziesz chciał upewnić się, że twoje urządzenie Raspberry Pi Pico 2 W jest podłączone. Na samym dole edytora VSCode zobaczysz mały przycisk odtwarzania.
To uruchomi blink.py bezpośrednio na urządzeniu (poprzez wcześniejsze załadowanie go na urządzenie). W tym momencie powinieneś zobaczyć komunikat print i mrugającego LEDa:
Przycisk Uruchom zmienia się w przycisk Zatrzymaj, który zatrzymuje wykonanie kodu. Gdy potwierdzisz, że dioda LED mruga, jesteśmy gotowi, aby przejść do bardziej zaawansowanego przykładu.
Teraz, gdy potwierdziliśmy, że nasz Raspberry Pi Pico 2 W działa z MicroPython, zbadajmy jedną z jego najbardziej ekscytujących nowych funkcji — Bluetooth 5.2. Ten przykład przekształca twoje urządzenie Pico w skaner zbliżeniowy Bluetooth, zdolny do wykrywania pobliskich urządzeń bluetooth (takich jak smartfony) i określania ich siły sygnału (RSSI). Skrypt, bluetooth_scan.py, działa w dwóch trybach: Tryb Odkrywania, który skanuje wszystkie pobliskie urządzenia i wyświetla ich adresy MAC, oraz Tryb Śledzenia, w którym Pico ciągle monitoruje konkretne urządzenie, włączając diodę LED, gdy jest w bliskim zasięgu. Ten tryb śledzenia jest przydatny do wykrywania konkretnych urządzeń Bluetooth w pobliżu w czasie rzeczywistym, chociaż niektóre, jak urządzenia Apple, losowo zmieniają swoje adresy MAC ze względów prywatności.
Aby to osiągnąć, używamy API Bluetooth MicroPython, a konkretnie bluetooth.BLE(), aby zainicjować interfejs Bluetooth Pico. Skrypt nasłuchuje pakietów reklamowych Bluetooth Low Energy (BLE) za pomocą gap_scan(), który powtarzalnie skanuje przez określony czas i przetwarza wyniki za pomocą procedury obsługi zdarzeń (bt_irq). To podejście oparte na zdarzeniach pozwala Pico natychmiast reagować, gdy wykryte zostanie nowe urządzenie (pomyśl o „przerwaniach” w bardziej bezpośrednich podejściach do sprzętu). Urządzenia są filtrowane na podstawie ich RSSI (Received Signal Strength Indicator), co pomaga oszacować bliskość. Urządzenia bliższe zazwyczaj mają silniejsze sygnały (wyższe wartości RSSI, co przekłada się na mniej ujemne wartości dB), a urządzenia dalsze mają słabsze sygnały (czyli bardziej ujemną wartość dB). Tryb śledzenia porównuje wykryte adresy MAC z wcześniej zdefiniowanym celem i włącza wbudowaną diodę LED, gdy znajdzie dopasowanie. Parametry skanowania są starannie dobierane, aby zrównoważyć natychmiastową reaktywność z wydajnością CPU, zapobiegając przytłoczeniu Pico podczas ciągłego monitorowania sygnałów Bluetooth.
Aby uruchomić skrypt, wystarczy otworzyć bluetooth_scan.py i kliknąć przycisk Uruchom (jak widzieliśmy na przykładzie mrugania powyżej), aby pobrać adresy MAC pobliskich urządzeń.
Następnie zaktualizuj skrypt o konkretny adres MAC i przełącz się na tryb śledzenia, aby wykryć, kiedy urządzenie znajdzie się w zasięgu. Można to znaleźć w głównej funkcji na dole skryptu:
# Aby śledzić konkretne urządzenie (zastąp odkrytym adresem MAC)
# scanner = BLEScanner(mode="track", target_mac="aa:bb:cc:dd:ee:ff")
Parametry skanowania zostały zoptymalizowane, aby zapewnić responsywną detekcję bez blokowania innych operacji, co czyni to świetnym wprowadzeniem do skanowania Bluetooth i obsługi zdarzeń na Raspberry Pi Pico 2 W.
Raspberry Pi Pico 2 W to ekscytujący dodatek do świata rozwoju wbudowanego, osiągając idealną równowagę między elastycznością mikrokontrolera a mocą wbudowanej łączności bezprzewodowej. Dzięki MicroPython, zobaczyliśmy, jak łatwo jest zacząć, od mrugania diodą LED po wykorzystanie wbudowanego modułu Bluetooth 5.2 do wykrywania bliskości w czasie rzeczywistym. Zaimplementowany skaner bliskości Bluetooth wprowadza podstawowe pojęcia, takie jak skanowanie BLE, programowanie zdarzeniowe i analiza siły sygnału, demonstrując, ile można osiągnąć z tak minimalnym kodem.
Chociaż to był tylko podstawowy przykład, Pico 2 W otwiera całkowicie nowe możliwości dla aplikacji IoT, śledzenia w czasie rzeczywistym i automatyzacji bezprzewodowej. Niezależnie od tego, czy jesteś hobbystą eksperymentującym z peryferiami BLE, czy inżynierem rozwijającym systemy wbudowane nowej generacji, to małe urządzenie udowadnia, że jest mocarnym narzędziem w miniaturowym opakowaniu. I to jest dopiero początek — nadal jest Wi-Fi, optymalizacje niskiego poboru mocy i bardziej zaawansowane interakcje BLE do zbadania. Raspberry Pi Pico 2 W jest małe, ale ma poważną moc.
Aby zobaczyć repozytorium zawierające cały kod potrzebny do rozpoczęcia, odwiedź https://gitlab.com/embedded-designs/micropython-bluetooth-example.