Moduł Pimoroni MSA301 3DoF Motion Sensor z 3-osiowym akcelerometrem

Pimoroni to brytyjska firma elektroniczna zajmująca się sprzedażą komponentów oraz płytek rozwojowych, w tym Raspberry Pi, Arduino, micro:bit oraz wielu innych. Projektuje i produkuje także własne moduły elektroniczne oraz zestawy ewaluacyjne, takie jak najnowsza płytka Pico LiPo z mikrokontrolerem RP2040 oraz możliwością zasilania z akumulatora. Pimoroni wyrobiło sobie znaczną renomę na terenie Wielkiej Brytanii, o czym świadczy fakt, że jest to jeden z oficjalnych dystrybutorów Raspberry Pi w ojczyźnie tego komputera.

Od jakiegoś czasu moduły rozszerzeniowe tej firmy są dostępne również w Polsce. Sklep internetowy Kamami.pl nawiązał współpracę z brytyjską firmą, czego efektem jest wprowadzenie do oferty szerokiego zakresu interesujących płytek rozszerzeniowych. Są wśród nich m.in. matrycowe wyświetlacze LED, kamery termiczne, enkodery, wzmacniacz termopar, a także rozmaite czujniki. Większość tego typu modułów komunikuje się za pomocą standardowych magistral I2C czy SPI. Bez problemu można je więc wykorzystać w projektach opartych o Arduino, Raspberry Pi, STM32 Nucleo czy podobnych platformach.

Moduł Pimoroni z 3-osiowym akcelerometrem MSA301

Jednym z takich modułów jest MSA301 3DoF Motion Sensor Breakout z akcelerometrem MSA301 produkowanym przez Memsensing Microsystems. Sensor oferuje przełączalny zakres pomiarowy ±2g/±4g/±8g/±16g. Oferuje opcję pomiarów ciągłych z częstotliwością od 1 do 500 Hz. Rozdzielczość pomiaru wynosi do 14 bitów. Komunikuje się za pomocą interfejsu I2C, a także oferuje jedno wyjście przerwań.

Rys. 1. Moduł Pimoroni MSA301 3DoF Motion Sensor Breakout

Sam moduł można zasilać napięciem z zakresu od 2 V do 5 V. Zawiera także zabezpieczenie przed odwrotną polaryzacją zasilania. Adres urządzenia na magistrali I2C to 0x26. Płytka ma wymiary 19 x 19 x 3 mm.

Do modułu dołączono dwa złącza szpilkowe: męskie proste 1×5 oraz żeńskie kątowe 1×5. Oba można przylutować do otworów na płytce i w ten sposób wyprowadzić porty czujnika np. na płytkę stykową.

Połączenie z płytką Arduino

W dalszej części artykułu zaprezentuję prosty przykład działania czujnika MSA301 na platformie Arduino. Jako moduł bazowy wykorzystam Cytron Maker Uno w pełni zgodny z Arduino Uno. Aby skomunikować oba komponenty należy połączyć ze sobą odpowiednie wyprowadzenia magistrali I2C oraz dołączyć zasilanie do modułu z czujnikiem. We względu na szeroki zakres napięć można wybrać jedno z dwóch napięć dostępnych na płytce Arduino, 3,3 V lub 5 V. Ja wybrałem napięcie 3,3 V.

Dokładny sposób połączenia zaprezentowano w poniższej tabeli oraz fotografii.

Tabela 1. Połączenie czujnika MSA301 z Arduino

MSA301 3DoF Motion Sensor Breakout Cytron Maker Uno
SDA SDA
SCL SCL
GND GND
2-5V 3.3V

Rys. 2. Moduł z czujnikiem MSA301 podłączony do płytki Cytron Maker Uno

Przykład działania kodu

Teraz zaprezentuję prosty przykład działania czujnika MSA301 na platformie Arduino. Program będzie cyklicznie pobierał z sensora dane o przyspieszeniu we wszystkich trzech osiach, a następnie wypisze je na porcie szeregowym.

Na początek należy skorzystać z odpowiedniej biblioteki. Pimoroni udostępnia wiele kodów przykładowych oraz bibliotek na swoim profilu w portalu github. Niestety większość z nich jest przeznaczona na platformę Raspberry Pi. W związku z tym skorzystamy z biblioteki Adafruit przeznaczonej na podobny moduł z oferty tego producenta.

Biblioteka jest dostępna na stronie https://github.com/adafruit/Adafruit_MSA301. Należy ją pobrać w formie archiwum zip. Następnie należy dodać bibliotekę do platformy za pomocą opcji w menu Dodaj Bibliotekę .ZIP. Dodatkowo należy zainstalować biblioteki Adafruit Sensor oraz Adafruit BusIO w ten sam standardowy sposób.

Na początku kodu dołączamy wszystkie niezbędne biblioteki oraz inicjujemy obiekt klasy Adafruit_MSA301.

W funkcji setup uruchamiamy port szeregowy i ustawiamy pętlę, która sprawia, że kod zacznie pracę dopiero po włączeniu konsoli szeregowej.

Następnie inizjalizowane jest połączenie z czujnikiem MSA301. W przypadku, gdy czujnik nie zostanie znaleziony, kod wypisze ostrzeżenie i „zawiesi się” w pętli nieskończonej. Aby ponownie wtedy uruchomić program należy zresetować płytkę.

W następnej kolejności konfigurowane są ustawienia czujnika. Konfiguracja jest następująca: częstotliwość pomiarów: 15,63 Hz, tryb poboru energii: normalny, pasmo pomiaru: 15,63 Hz, zakres: ±2g, rozdzielczość: 14 bitów.

 

W pętli głównej programu następuje odczyt danych i wypisanie ich na port szeregowy. Następnie tworzony jest obiekt danych Sensor, który umożliwia normalizację danych. Natomiast w ostatnim kroku te dane są wypisywane ponownie, tym razem skonwertowane do jednostki m/s2.

Pełen kod jest dostępny w sekcji „Do pobrania”. Efekt działania kodu zaprezentowano na poniższym zrzucie ekranu.

Rys. 3. Efekt działania kodu do obsługi czujnika MSA301 na Arduino

Moduł MSA301 3DoF Motion Sensor Breakout, a także inne moduły produkcji Pimoroni znajdziesz w ofercie sklepu Kamami.pl

O autorze