Sensor Hub BoosterPack (BOOSTCL-SENSHUB) firmy Texas Instruments jest płytką rozszerzeń przeznaczoną dla zestawów ewaluacyjnych LaunchPad ze złączem rozszerzeń typu BoosterPack XL [1]. Płytka nadaje się szczególnie do pracy z zestawem ewaluacyjnym Tiva C Series TM4C123G LaunchPad (EK-TM4C123GXL) [18].
Płytka umożliwia tworzenie i prototypowanie rozwiązań wymagających obliczeń zmiennoprzecinkowych razem z detekcją ruchu i parametrów otoczenia. Płytka Sensor Hub BoosterPack jest mocowana na złączach rozszerzeń BoosterPack XL (fotografia 1) znajdujących się na górze płytki zestawu LaunchPad [2].
Płytka Sensor Hub BoosterPack jest dodatkowo wyposażona w standardowe złącze rozszerzeń (EM – extension module) transmisji radiowej przeznaczone do dołączenia modułu transmisji bezprzewodowej [20]. Na płytce jest miejsce do zamontowania kwarcu 32.768 kHz (Y1). Dokładny opis płytki rozszerzeń jest zamieszczony w dokumencie [4]. Zawiera on pełny schemat płytki zestawu ewaluacyjnego. Dostępne są bardzo rozbudowane strony tematyczne w ramach TI Wiki [19].
Dla obsługi płytki jest opracowana nowa biblioteka TiwaWare Sensor Library zawierająca sterowniki dla łatwego rozszerzenia aplikacji o obsługę czujników [12].
Płytka rozszerzeń Sensor Hub BoosterPack udostępnia następujące urządzenia peryferyjne (rysunek 2, rysunek 3):
- Czujnik bezdotykowego pomiaru temperatury TMP006 (Texas Instruments).
- Dziewięcio-osiowy czujnik ruchu MPU-9150 (InvenSensor).
- Czujnik ciśnienia atmosferycznego BMP180 (Bosch).
- Czujnik oświetlenia otoczenia i podczerwieni ISL29023 (Intersil).
- Czujnik wilgotności SHT21 (Sensiron).
- Dioda LED dla użytkownika.
- Dwa przyciski dla użytkownika.
- Złącza rozszerzeń z sygnałami wyprowadzeń I/O procesora.
- Standardowe złącze rozszerzeń (EM) transmisji radiowej do dołączenia modułu transmisji bezprzewodowej.
- Zasilanie: 2,7...5,5 V, typowo 3,3 V ze złącza BoosterPack XL.
- Wymiary: 5,08 cm×3,81 cm×1,587 cm.
Przyciski
Przycisk SW1 jest dołączony jednym końcem do masy oraz drugim do kondensatora 100 nF i rezystora podciągającego 10 kΩ oraz do wyprowadzenia PUSH_BUT_ GPIO0 (J3.6) złącza rozszerzeń BoosterPack XL. Jeśli wyprowadzenie procesora jest skonfigurowane jako wejście to przyciśnięcie SW1 powoduje wymuszenie na nim niskiego poziomu logicznego.
Jednak taka konfiguracja jest potencjalnie niebezpieczna. Jeśli wyprowadzenie procesora zostanie skonfigurowane jako wyjście (np. omyłkowo) to przyciśnięcie przycisku SW1 może spowodować uszkodzenie modułu GPIO dołączonego do tego wyprowadzenia lub uszkodzenie całego układu scalonego. Bezpieczniejszym rozwiązaniem jest zastosowanie rezystora (co najmniej 100 Ω) szeregowo dołączonego do wyprowadzenia procesora.
Przycisk SW2 jest tak samo dołączony jednym końcem do masy oraz drugim do kondensatora 100 nF i rezystora podciągającego 10 kΩ oraz do wyprowadzenia PUSH_BUT_GPIO1 (J3.7) złącza rozszerzeń BoosterPack XL.
Diody LED
Sygnał z wyprowadzenia LED_GPIO (J3.5) jest dołączony przez rezystor 100 Ω do diody LED (D2). Druga dioda (D1) jest dołączona do napięcia zasilania 1,8 V
Zasilanie
Typowo płytka Sensor Hub BoosterPack jest zasilana napięciem 3,3 V z wyprowadzenia J1.1 złącza rozszerzeń BoosterPack XL. Napięcie to jest doprowadzone do regulatora LDO TPS75118 dostarczającego napięcia 1,8 V dołączonego do wyprowadzeń RF_PART2.1/3/5 złącza rozszerzeń (EM) transmisji radiowej (rys. 2).
9-osiowy czujnik ruchu MPU-9150
Najciekawszym układem scalonym płytki Sensor Hub BoosterPack jest scalony czujnik ruchu MPU9150 (InvenSensor), który zawiera w jednej obudowie: 3-osiowy akcelerometr, 3-osiowy żyroskop, 3-osiowy kompas (magnetometr) oraz procesor DMP (Digital Motion Processor) i termometr cyfrowy [6].
Układ MPU-9150 ma budowę typu SiP (System in Package), gdzie łączy układ MPU-6050 (InvenSensor) zawierający 3-osiowy żyroskop i 3-osiowy akcelerometr, procesor DMP oraz układ AK8975 (Asahi Kasei Microdevices Corporation) zawierający 3-osiowy cyfrowy kompas (rys. 4).
Żyroskop został zrealizowano w technologii MEMS i charakteryzuje się następującymi parametrami:
- Trzy osie X, Y, Z.
- Trzy przetworniki ADC 16 bitów, osobno dla każdego kanału, umożliwiające jednoczesne próbkowanie.
- Regulowany zakres: ±250, ±500, ±1000 oraz ±2000°/s (131 LSBs/dps), kalibrowany fabrycznie.
- Programowalny cyfrowy filtr dolnoprzepustowy.
- Wbudowany układ do wykonywania testu działania, sterowany programowo.
Akcelerometr został zrealizowano w technologii MEMS i charakteryzuje się następującymi parametrami:
- Trzy osie X, Y, Z.
- Trzy przetworniki ADC 16 bitów, osobno dla każdego kanału, umożliwiające jednoczesne próbkowanie.
- Regulowany zakres: : ±2g, ±4g, ±8g oraz ±16g.
- Detekcja orientacji i stuku.
- Programowalny cyfrowy filtr dolnoprzepustowy.
- Wbudowany układ do wykonywania testu działania, sterowany programowo.
Kompas został zrealizowany w technologii monolitycznej z wykorzystaniem efektu Halla i charakteryzuje się następującymi parametrami:
- Trzy osie X, Y, Z.
- Trzy przetworniki ADC 13 bitów, osobno dla każdego kanału, umożliwiające jednoczesne próbkowanie.
- Zakres pomiaru: ±1200 mT (0,3 mT na LSB).
- Programowalny cyfrowy filtr dolnoprzepustowy.
- Wbudowany układ z wewnętrznym źródłem magnetycznym do wykonywania testu działania sterowany programowo.
Procesor DMP (Digital Motion Processor) - wbudowany w układ procesor typu DSP. Wykonuje łączenie synchronicznie próbkowanych danych ze wszystkich czujników oraz cyfrowego pomiaru temperatury do postaci pakietu danych zapisywanych do pamięci FIFO (1024 B). Procesor wykonuje oprogramowanie firmowe MotionFusion oraz oprogramowanie kalibracyjne pracujące w czasie pomiarów. Umożliwia to wyeliminowanie błędów rozsynchronizowania czasowego danych oraz dryftu długoterminowego. Procesor udostępnia również analizę gestów.
Interfejs standardu I²C może pracować jako master lub powtarzać sygnał szyny głównej. Do tego portu można dołączyć kolejny czujnik, np. ciśnienia. Procesor DMP potrafi obsłużyć inicjalizację i odbiór danych z tego czujnika.
Wejście synchronizacji FSYNC pozwala na wykorzystanie MPU-9150 w układach stabilizacji obrazu i modułach GPS.
Czujnik ma małe wymiary 4 mm×4 mm×1 mm i obudowę LGA24. Napięcie zasilania wynosi 2,4...3,46 V przy poborze prądu 8 mA (tryb uśpienia całego układu) i 4,25 mA (pełna praca wszystkich elementów). Układ wytrzymuje udar do 10000 g.
Układ MPU-9150 obsługuje łącze komunikacyjne w standardzie I²C (fast 400 kHz). Przestrzeń adresowa ustawiana stanem wejścia ADR0 zaczyna się od 7-bitowego adresu 1101000b na szynie I²C. Zarówno odczyt jak i zapis do układu jest wykonywany z pojedynczymi bajtami danych poprzedzonymi adresem rejestru lub w trybie blokowym. Po odczycie blokowym danych z FIFO układ może wejść w stan uśpienia.
Czujnik pomiaru bezdotykowego temperatury TMP006
Kolejny ciekawy układ na płytce to scalony czujnik pomiaru bezdotykowego temperatury TMP006 (Texas Instruments) [5]. Wykonuje on pośredni oraz bezpośredni pomiar temperatury. Pomiar pośredni wykorzystuje detekcję promieniowania podczerwonego. Czujnik temperatury obiektu używa termostosu (thermopile) do absorbowania energii w zakresie podczerwieni emitowanej przez obiekt podlegający pomiarowi. Zmiany napięcia termostosu określają temperaturę obiektu. Pomiar bezpośredni temperatury (otoczenia) jest wykonywany przez wbudowany w strukturę układu scalonego czujnik półprzewodnikowy. Jest on powiązany z otoczeniem poprzez przewodzenie temperatury przez wyprowadzenia (kulki) obudowy.
Czujnik ma małe rozmiary 1,6 mm×1,6 mm×0,65 mm i obudowę WCSP-8. Typowe zasilanie to 3,3 V (wersja B - 1,8 V) przy poborze prądu 0,5 mA (tryb uśpienia) i 240 mA (tryb pomiaru ciągłego). Układ TMP006 obsługuje łącze komunikacyjne w standardzie I²C (fast 400 kHz oraz high-speed do 3,5 MHz). Przestrzeń adresowa ustawiana stanem wejść ADR0/1 zaczyna się od 7-bitowego adresu 1000000b na szynie I²C. Każdy układ zawiera dwa rejestry identyfikacji: producenta oraz układu. Zarówno odczyt jak i zapis do układu jest wykonywany z pojedynczymi bajtami danych poprzedzonymi adresem rejestru. Bieżący adres rejestru jest pamiętany, co umożliwia powtarzalny odczyt jego zawartości. Uzyskanie wartości pomiaru obejmuje odczyt dwóch bajtów temperatury otoczenia oraz dwóch bajtów napięcia z czujnika temperatury obiektu. W celu otrzymania temperatury obiektu należy odczytane dane należy wymnożyć przez współczynniki w dosyć złożony sposób.
Czujnik wilgotności SHT21
Scalony czujnik wilgotności SHT21 (Sensiron) wykonuje pomiary względnej wilgotności powietrza oraz pomiar temperatury [8]. Odczyt wilgotności jest realizowany poprzez pomiar pojemnościowy. Do pomiaru temperatury został zastosowany półprzewodnikowy czujnik diodowy (band gap). Dodatkowo układ zawiera wzmacniacz analogowy, przetwornik a/c, pamięć OTP i cyfrową jednostkę obliczeniową.
Czujnik ma małe rozmiary 3 mm×3 mm×1,1 mm i obudowę DFN6. Typowe zasilanie to 3 V (2,1...3,6 V) przy poborze prądu 0,15 mA (tryb uśpienia) i 300 mA (tryb pomiaru). Pomiar wilgotności względnej (RH) może być wykonywany z rozdzielczością (wybieraną programowo) 8/10/11/12 bitów. Pomiar temperatury (T) może być wykonywany z rozdzielczością (wybieraną programowo) 11/12/13/14 bitów. Domyślnie rozdzielczość jest ustawiona na 12/14 bitów RH/T. Układ wykonuje pomiar napięcia zasilania i gdy spadnie ono poniżej 2,25 V ustawiany jest bit stanu "End of battery" w rejestrze użytkownika. Układ zawiera wbudowany grzejnik, który pozwala zwiększyć temperaturę wewnętrzną czujnika o ok. 0,5...1,5°C. Jest on przeznaczony do wykonywania testu funkcjonowania - przy wzroście temperatury wilgotność względna maleje. Grzejnik można włączyć poprzez ustawienie bitu "Enable on-chip heater" w rejestrze użytkownika. Każdy czujnik jest indywidualnie testowany i kalibrowany oraz zawiera elektroniczny kod identyfikacji, który może być odczytany przez użytkownika.
Układ SHT21 obsługuje łącze komunikacyjne w standardzie I²C (fast 400 kHz). Wszystkie układy scalone SHT21 mają ten sam 7-bitowy adres na szynie 1000000b. Układ obsługuje kilka poleceń: wystartuj pomiar T, wystartuj pomiar RH, odczytaj rejestr użytkownika, wpisz do rejestru użytkownika oraz wykonaj Reset programowy. Reset programowy powoduje ponowne odczytanie danych kalibracyjnych z pamięci OTP, ustawia wartości domyślne w rejestrze użytkownika ( z wyjątkiem bitu włączania grzejnika) oraz wykonuje procedurę inicjalizacji układu.
Są dwa tryby pracy komunikacji z układem podczas obsługi pomiaru:
- Tryb Hold Master - po wystartowaniu pomiaru układ SHT21 wymusza poziom niski na linii SCL. Zdjęcie poziomu niskiego sygnalizuje zakończenie wykonywania pomiaru.
- Tryb No Hold Master - po wystartowaniu pomiaru układ SHT21 odpowiada NACK na wysłanie bajtu adresu na szynie I²C aż do zakończenia wykonywania pomiaru.
Wysyłane dane są uzupełniane o 2 bity statusu oraz o bajt CRC.
Po włączeniu zasilania układu, gdy napięcie osiągnie poziom 2,1...3,6 V, gdy na wejściu SCL jest poziom wysoki to układ po czasie ok. 15 ms wchodzi w stan uśpienia. Jest to stan domyślny działania układu, gdy nie wykonuje on pomiaru lub obsługi transmisji. W stanie uśpienia układ reaguje na polecenia na szynie I²C.
Czujnik ciśnienia atmosferycznego BMP180
Scalony czujnik ciśnienia atmosferycznego BMP180 (Bosch) wykonuje pomiar barometryczny [9]. Układ jest zrealizowany z czujnikiem piezoceramicznym, co zapewnia wysoką rozdzielczość, liniowość i długoterminową stabilność termiczną. Układ zawiera wewnętrzny przetwornik analogowo- cyfrowy z układem cyfrowym sterowania z pamięcią EEPROM do zapisu danych kalibracyjnych do kompensowania offsetu, wpływu temperatury i innych zależności na wartość pomiaru.
Układ może pracować w jednym z czterech trybów, co pozwala na dobranie poboru mocy, czasu przetwarzania i dokładności (nadpróbkowanie) przetwarzania. Układ charakteryzuje się bardzo dobrą dokładnością ±0,12 hPa (±1 m), rozdzielczością 0,01 hPa oraz bardzo niskim poziomem szumów 0,02 hPa (0,17 m) dla pomiaru ciśnienia (16 do 19 bitów). Pomiar temperatury jest wykonywany z dokładnością ±0,5°C i rozdzielczością 0,1°C (16 bitów).
Czujnik ma małe wymiary 3,6 mm×3,8 mm×0,93 mm i obudowę LGA7. Typowe zasilanie to 2,5 V (1,62...3,6 V) przy poborze prądu 3 mA (tryb ultra niskiej mocy) i 650 mA (podczas przetwarzania), 5 mA w trybie standardowym dla pracy 1 pomiar/sekundę.
Układ BMP180 obsługuje łącze komunikacyjne w standardzie I²C (fast 400 kHz oraz high-speed do 3,5 MHz). Przestrzeń adresowa zaczyna się od 7-bitowego adresu 1110111b na szynie I²C. Układ obsługuje odczyt blokowy, co umożliwia odczytanie podczas jednej transmisji danej 2-bajtowej lub 3-bajtowej.
Czujnik oświetlenia otoczenia i podczerwieni ISL29023
Scalony czujnik oświetlenia otoczenia i podczerwieni ISL29023 (Intersil) wykonuje pomiar poziomu oświetlenia [7]. Układ zawiera dwie matryce fotodiod. Jedna mierzy oświetlenie w zakresie światła widzialnego ALS (Ambient Light Sensing) z charakterystyką spektralną zbliżoną do ludzkiego oka i z bardzo dobrym tłumieniem podczerwieni. Druga matryca wykonuje pomiar w zakresie podczerwieni (IR).
Układ zawiera pojedynczy przetwornik analogowo-cyfrowy w technologii balansowania ładunku z integracją. W zależności od ustawionego czasu integracji rezultat przetwarzania reprezentuje rozdzielczość 4/8/12/16 bitową. Dobranie czasu przetwarzania pozwala na usunięcie zakłóceń migotania 50 Hz i 60 Hz.
Układ może pracować w jednym z pięciu trybów:
- Jednokrotny pomiar ALS, zapamiętanie rezultatu i powrót do stanu uśpienia.
- Jednokrotny pomiar IR, zapamiętanie rezultatu i powrót do stanu uśpienia.
- Ciągły pomiar ALS i ciągłe aktualizowanie rejestru wyniku.
- Ciągły pomiar IR i ciągłe aktualizowanie rejestru wyniku.
- Stan uśpienia.
Tryb jednokrotny jest włączany po otrzymaniu polecenia pomiaru jednokrotnego. Tryb ciągły jest włączany po otrzymaniu polecenia pomiaru ciągłego. Układ ma 8 rejestrów 8-biowych. Dwa służą do zadawania poleceń, dwa przechowują rezultat ostatniego pomiaru, kolejne dwie pary rejestrów zawierają progi dla zgłaszania sygnału przerwania.
Układ SL29023 może pracować w jednym z czterech zakresów czułości. Dla pomiaru ALS mają one zakresy 1/4/16/64 tysięcy Lux. Podobna zmiana czułości występuje dla pomiaru IR. Układ ISL29023 może pracować z zasilaniem z zakresu 2,25...3,63 V) przy poborze prądu 0,01 mA (tryb uśpienia) i 70 mA (tryb pomiaru). Po włączeniu zasilania działa układ POR (Power On Reset) i układ wchodzi w stan uśpienia. Jest to stan domyślny działania układu gdy nie wykonuje on pomiaru lub obsługi transmisji. W stanie uśpienia układ reaguje na polecenia na szynie I²C. Układ ISL29023 obsługuje łącze komunikacyjne w standardzie I²C (fast 400 kHz).
Wszystkie układy scalone ISL29023 mają ten sam 7-bitowy adres na szynie 1000100b. Zarówno odczyt jak i zapis do układu może być wykonywany pojedynczymi bajtami lub w trybie blokowym (z automatycznym zwiększaniem adresu rejestru). Odczytane surowe dane należy wymnożyć przez współczynnik zależny od zakresu czułości i rozdzielczości. Osobne współczynniki są dla danych pomiaru ALS oraz IR.
Złącze rozszerzeń BoosterPack XL
Płytka Sensor Hub BoosterPack jest wykonana w standardzie 40-to wyprowadzeniowym XL Interface [3]. Po obu bokach płytki zainstalowane są cztery złącza rozszerzeń, 10-cio wyprowadzeniowe J1, J2, J3 i J4 standardu 2,54 mm. Są one zainstalowane na powierzchni dolnej płytki (złącza żeńskie). Złącza J1 i J2 są umieszczone na lewym i prawym brzegu płytki. Złącza J3 i J4 są umieszczone obok nich po stronie wewnętrznej.
Płytka Sensor Hub BoosterPack jest mocowana na złączach rozszerzeń BoosterPack XL (złącza męskie) znajdujących się na górze płytki zestawu LaunchPad. Rozmieszczenie sygnałów na łączach J1 i J2 jest kompatybilne z zestawem ewaluacyjnym Tiva C Series TM4C123G LaunchPad [2]. Do scalonych czujników dołączone są tylko sygnały łącza I²C: I²C_SDA (J2.6) oraz I²C_SCL (J2.7). Pozostałe sygnały są dołączone do wyprowadzeń złącza rozszerzeń (EM) transmisji radiowej. Dokładne omówienie rozłożenia sygnałów na wszystkich złączach jest zamieszczone w [3].
Płytka Sensor Hub BoosterPack może być dołączona do każdego zestawu ewaluacyjnego ze złączem rozszerzeń typu BoosterPack XL [11]. Jednak tylko dla zestawu ewaluacyjnego Tiva C Series LaunchPad dostępna jest biblioteka sterowników do obsługi czujników [12].
Moduły rozszerzeń transmisji bezprzewodowej
Do wyprowadzeń złącza rozszerzeń (EM) płytki Sensor Hub BoosterPack można dołączać różne moduły transmisji bezprzewodowej [4]. Ciekawym wyborem jest moduł CC2533EMK, ponieważ w ramach pakietu programowego TivaWare jest udostępniony przykładowy projekt ‘airmouse’ przystosowany do wykorzystania transmisji bezprzewodowej [20].
Oprogramowanie narzędziowe
Do tworzenia oprogramowania pracującego na zestawie ewaluacyjnym TM4C123G LaunchPad z dołączoną płytką Sensor Hub BoosterPack można zastosować jedno z czterech zintegrowanych środowisk programowych: Code Composer Studio (Texas Instruments), Sourcery CodeBench (Mentor Embedded), IAR Embedded Workbench (IAR) lub Keil uVision (ARM) [4]. Wiele przykładowych projektów wymaga zastosowania do budowania projektu pełnych wersji środowiska programowego.
Najłatwiej zainstalować darmowe pełne środowisko CCSv5 lub CCSv6. Jego aktualną pełną wersję CCSv5.5 lub CCSv6.0 można bezpłatnie pobrać z witryny internetowej http://goo.gl/mdRs9L firmy Texas Instruments. Jako ścieżkę instalacyjną należy wybrać domyślnie c:ti.
Następnie należy pobrać i zainstalować pakiet programowy TivaWare for the EK-TM4C123GXL firmy Texas Instruments [12]. Po uruchomieniu pliku SW-TM4C-2.0.1.11577.exe jako ścieżkę instalacyjną należy wybrać domyślnie c:ti. Pakiet zostanie zainstalowany w folderze C:tiTivaWare_C_ Series-2.0.1.11577 (lub z nowszym numerem wersji).
Dostępny jest darmowy sterownik do pobrania z portalu TI [10]. Pobrany plik spmc016.zip należy wypakować do foldera na dysku komputera PC. Najbardziej odpowiedni jest folder, w którym jest zainstalowany CCS. Typowo jest to c:ti. Zostanie utworzony nowy folder C:tistellaris_icdi_drivers zawierający potrzebne sterowniki.
Po pierwszym dołączeniu zestawu ewaluacyjnego TM4C123G LaunchPad do komputera PC zostanie rozpoznane urządzenie kompozytowe. W menadżerze urządzeń systemu Windows zostaną pokazane trzy pozycje o tej samej nazwie: "In-Circuit Debug Interface". W systemie Windows 7 kliknij prawym klawiszem na pierwszą linię. Wybierz "Aktualizuj oprogramowanie sterownika". W opcjach wyszukiwania wskaż ścieżkę do zainstalowanych wcześniej sterowników. Powtórz te same postępowanie dla pozostałych dwóch linii.
Następnie można pobrać i zainstalować darmowy program LM Flash Programmer [4]. Plik LMFlashProgrammer_1613. zip należy rozpakować. Na koniec należy uruchomić plik instalacyjny LMFlashProgrammer.msi i zainstalować program w domyślnej lokalizacji.
Pakiet programowy TivaWare
Pakiet programowy TivaWare for C Series zawiera kompletne oprogramowanie potrzebne do tworzenia kodu dla procesorów serii TM4C123x oraz TM4C129x [12]. Pakiet jest darmowy i kod jego bibliotek jest umieszczony w pamięci ROM każdego procesora [14]. Oprogramowanie jest zrealizowane w języku C i umożliwia łatwe debugowanie i rozwój. Pakiet TivaWare zawiera różne biblioteki: Peripheral, USB, Graphics, Sensor, przykładowe projekty oraz zestaw dokumentacji [12]. Przykładowe projekty przeznaczone są dla obsługi zestawów uruchomieniowych i ewaluacyjnych oraz modułów peryferyjnych procesorów [15].
Po zainstalowaniu pakietu TivaWare (w domyślnej lokalizacji) dostępny jest duży zbiór projektów dla zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [14].
Dla płytki Sensor Hub BoosterPack projekty są umieszczone w osobnym folderze [16] w ścieżce projektów przykładowych [23].
Warsztaty
Bardzo ciekawą pomocą dla każdego, który zaczyna pracować z procesorami rodziny Tiva są ćwiczenia warsztatowe Getting Started with the TIVA C Series TM4C123G LaunchPad dostępne bezpłatnie na stronie Wiki TI [17]. Dostępny jest komplet materiałów: podręcznik uczestnika kursu, slajdy prezentacji, pliki źródłowe do ćwiczeń oraz kompletny zapis wideo kursu. Ćwiczenia obejmują większość zagadnień potrzebnych do programowania procesorów rodziny Tiva.
Dwa ćwiczenia są wykonywane z użyciem zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad z dołączoną płytką Sensor Hub BoosterPack. W pierwszym ćwiczeniu używany jest projekt ‘airmouse’ a w drugim projekt ’light_isl29023’.
Przykładowe projekty dla płytki Sensor Hub BoosterPack
Projekty przykładowe dla zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad z dołączoną płytką Sensor Hub BoosterPack są dostępne w folderze projektów przykładowych pakietu TivaWare [23]. Dostępnych jest 6 kompletnych projektów, każdy dla czterech środowisk programowych: Code Composer Studio (Texas Instruments), Sourcery CodeBench (Mentor Embedded), IAR Embedded Workbench (IAR) oraz Keil uVision (ARM) [16]. Najłatwiej jest zastosować darmowe pełne środowisko CCS. Użycie środowiska CCS do ładowania i debugowania projektów przykładowych zostało omówione w artykule EP5/14 [21].
Przykładowe projekty można załadować do zestawu i uruchomić z zastosowaniem programu LM Flash Programmer.
Każdy program przykładowy wysyła informacje poprzez port szeregowy układu procesorowego typu UART. Aby je wykorzystać należy na komputerze PC najpierw zidentyfikować numer wirtualnego portu COM. W tym celu należy kliknąć prawym klawiszem myszy na Mój komputer (np. w menu Start). Wybrać Właściwości a następnie Sprzęt oraz Menedżer urządzeń. Na liście Porty (COM i LPT) należy znaleźć port o nazwie Stellaris Virtual Serial Port (COMxx), gdzie xx jest numerem.
Programy przykładowe były uruchamiane z obsługą komunikacji na PC przez program PuTTY (do pobrania darmowo ze strony http://www.putty.org/). Poprawna praca wymaga ustawienia parametrów komunikacji 115200 8N1. Po uruchomieniu programu PuTTY wybierz typ połączenia Serial a następnie wpisz poprawny numer portu COMxx oraz szybkość transmisji i kliknij Open.
Programowanie procesora
Przykładowe projekty pakietu TivaWare zawierają gotowe pliki binarne do programowania procesora [16]. Do programowania projektu (np. humidity_sht21) można zastosować program LM Flash Programmer [4].
- Nałóż płytkę Sensor Hub BoosterPack na złącze rozszerzeń BoosterPack XL zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad. Zwróć uwagę aby przyciski na obu płytkach były po tej samej stronie.
- Ustaw przełącznik SW3 (PWR Select) zestawu TM4C123G LaunchPad w prawej pozycji "DEBUG". Kablem USB podłącz gniazdko USB Micro-B "DEBUG" zestawu do wolnego portu USB komputera PC. Upewnij się, że środowisko CCSv5 nie jest uruchomione i dołączone do zestawu.
- Uruchom program LM Flash Programmer.
- Na zakładce Configuration w polu Quick Set wybierz zestaw TM4C123G LaunchPad.
- Na zakładce Program kliknij na Browse i wskaż plik binarny *.bin wybranego projektu w osobnym folderze (np. humidity_ sht21ccsDebug humidity_sht21. bin) w ścieżce projektów przykładowych (patrz wyżej).
- Wybierz opcję Erase Necessary Page oraz Verify After Program oraz Reset MCU After Program. (rys.5)
- Kliknij na przycisk Program. Po zakończeniu pracy zostanie na pasku stanu wyświetlona informacja Verify Complete - Passed.
Po zakończeniu programowania procesora M4C123GH6PMI zestawu i wykonaniu procedury Reset dioda RGB LED zacznie błyskać co 1 sekundę (z wyjątkiem projektu ‘airmouse’). Oznacza to, że inicjalizacja procesora i zestawu została zakończona i aplikacja przykładowa pracuje poprawnie [16].
Obsługa czujnika wilgotności SHT21
Przykładowy projekt humidity_sht21 zastosowania biblioteki Sensor Library do obsługi scalonego czujnika wilgotności SHT21 (Sensiron) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [16].
Plik binarny projektu znajduje się w folderze humidity_ sht21ccsDebughumidity_sht21.bin w ścieżce projektów przykładowych [23].
Po wykonaniu programowania procesora i dołączeniu terminala znakowego (PuTTY) do wirtualnego portu zostanie wypisany (co 1 sek.) rezultat pomiaru wilgotności względnej (%) i temperatury (°C).
SHT21 Example
Humidity 33.283 Temperature 25.394
Humidity 33.207 Temperature 25.394
Humidity 33.169 Temperature 25.394
Obsługa czujnika oświetlenia otoczenia i podczerwieni ISL29023
Przykładowy projekt light_isl29023 pokazuje zastosowanie biblioteki Sensoror Library do obsługi scalonego czujnika oświetlenia otoczenia i podczerwieni ISL29023 (Intersil) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad.
Plik binarny projektu znajduje się w folderze light_ isl29023ccs Debuglight_isl29023.bin w ścieżce projektów przykładowych [23].
Po wykonaniu programowania procesora i dołączeniu terminala znakowego (PuTTY) do wirtualnego portu zostanie wypisany (co 1 sek.) rezultat pomiaru oświetlenia otoczenia ALS.
ISL29023 Example
Visible Lux: 24.383
Visible Lux: 24.063
Visible Lux: 24.047
Nie jest wykonywany pomiar poziomu podczerwieni.
Obsługa czujnika pomiaru bezdotykowego temperatury TMP006
Przykładowy projekt temperature_tmp006 pokazuje zastosowanie biblioteki Sensoror Library do obsługi scalonego czujnika pomiaru bezdotykowego temperatury TMP006 (Texas Instruments) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [16].
Plik binarny projektu znajduje się w folderze temperature_ tmp006ccsDebugtemperature_tmp006.bin w ścieżce projektów przykładowych [23].
Po wykonaniu programowania procesora i dołączeniu terminala znakowego (PuTTY) do wirtualnego portu zostanie wypisany (co 1 sek.) rezultat pomiaru temperatury otoczenia (°C) oraz napięcia z czujnika temperatury obiektu konwertowanego do temperatury obiektu (°C).
TMP006 Example
Ambient 25.187 Object 26.044
Ambient 25.187 Object 25.923
Ambient 25.187 Object 26.252
Obsługa czujnika ciśnienia atmosferycznego BMP180
Przykładowy projekt pressure_bmp180 pokazuje zastosowanie biblioteki Sensoror Library do obsługi scalonego czujnika ciśnienia atmosferycznego BMP180 (Bosh) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [16].
Plik binarny projektu znajduje się w folderze pressure_ bmp180ccsDebug pressure_bmp180.bin w ścieżce projektów przykładowych (patrz wyżej).
Po wykonaniu programowania procesora i dołączeniu terminala znakowego (PuTTY) do wirtualnego portu zostanie wypisany (co 1 sek.) rezultat pomiaru temperatury (°C), ciśnienia atmosferycznego (hPa) oraz wysokości nad poziomem (w metrach) w odniesienia do poziomu morza (1013.25hPa).
MP180 Example
Temperature 25.573 Pressure 100275.416 Altitude 87.752
Temperature 25.579 Pressure 100256.528 Altitude 89.337
Temperature 25.579 Pressure 100259.480 Altitude 89.089
Obsługa dziewięcio-osiowego czujnika ruchu MPU9150
Przykładowy projekt compdcm_mpu9150 pokazuje zastosowanie biblioteki Sensoror Library do obsługi scalonego czujnika ruchu MPU9150 (InvenSensor) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [16].
Plik binarny projektu znajduje się w folderze compdcm_ mpu9150ccsDebug compdcm_mpu9150.bin w ścieżce projektów przykładowych [23].
Po wykonaniu programowania procesora i dołączeniu terminala znakowego (PuTTY) do wirtualnego portu zostanie wypisany (co 1 sek.) surowe dane z wszystkich dziewięciu osi czujników, przeliczone dane do kątów Euler-a oraz dane przeliczone do kwaternianu obrotów.
MPU9150 Raw Example
MPU9150 9-Axis Simple Data Application
Example
X | Y | Z
Accel | 0.069 | 0.108 | 9.354
Gyro | 0.030 | 0.017 | 0.009
Mag | 6.000 | 22.200 | 49.200
Roll | Pitch | Yaw
Eulers | 0.739 | 0.285 | 283.998
Q1 | Q2 | Q3 | Q4
Q | 0.787 | 0.003 | 0.005 | 0.615
Obrót typowo jest mierzony w odniesieniu do jednej z 3 osi: Y odchyłu (yaw), Z skoku (pitch) lub X obrotu (roll).
Obsługa myszy "Air Mouse"
Przykładowy projekt airmouse pokazuje zastosowanie biblioteki Sensoror Library do obsługi scalonego czujnika ruchu MPU9150 (InvenSensor) na płytce Sensor Hub BoosterPack dołączonej do zestawu ewaluacyjnego Tiva C Series TM4C123G LaunchPad [16]. Pobrane dane są wykorzystane do detekcji ruchu i gestów. Następnie generowane są zdarzenia standardowej myszy i klawiatury komputerowej.
Plik binarny projektu znajduje się w folderze airmouse ccsDebug airmouse.bin w ścieżce projektów przykładowych [23].
Żyroskop jest podstawowym czujnikiem pomiarowym. Akcelerometr jest użyty jako odniesienie do orientacji w osiach X i Z (w poziomie). Magnetometr służy do wyliczenia kierunku odniesienia dla osi Y (w pionie). Ruchy myszą są określane przez osie X i Z. Prędkości obrotowe i przyspieszenia są używane do interpretacji gestów. Dane są wyliczane 100 razy na sekundę [17].
Praca z aplikacją projektu airmouse wymaga trochę innego postępowania niż w przypadkach opisanych powyżej.
- Po standardowym zaprogramowaniu procesora należy odłączyć kabel USB od gniazdka USB Micro-B "Debug" zestawu.
- Ustaw przełącznik SW3 (PWR Select) zestawu TM4C123G LaunchPad w lewej pozycji "DEVICE".
- Kablem USB podłącz gniazdko USB Micro-B "DEVICE" zestawu do wolnego portu USB komputera PC.
- Naciśnij przycisk "RESET: na płytce zestawu.
- Komputer PC rozpozna nowe urządzenie i zainstaluje dla niego standardowe sterowniki myszy. Dioda RGB zaświeci jeden raz dłużej a potem będzie nieregularnie szybko błyskać.
- Otwórz przeglądarkę internetową lub duży plik pdf. Ustaw myszką kursor w okolicach środka okna aplikacji.
- Uchwyć komplet płytek tak, że kabel USB będzie po prawej a przyciski znajdą się u góry pod twoimi palcami.
- Delikatnie przechyl płytkę w górę i w dół. Kursor zmienia położenie zgodnie z kierunkiem pochylenia.
- Delikatnie przechyl płytkę w lewo i prawo. Ponownie położenie kursora podąża za pochyleniem.
- Można używać przycisków jak w standardowej myszce. Przycisk SW2 zestawu LaunchPad działa jako przycisk lewy, a przycisk SW1 jako prawy.
- W pozycji poziomej, obrót w prawo działa jak "PAGE UP" a obrót w lewo jak "PAGE DOWN".
- W pozycji poziomej, szybki ruch w przód powoduje zmniejszenie powiększenia ("Zoom out") a szybki ruch w tył powoduje zwiększenie powiększenia.
Są jeszcze inne rozpoznawane gesty jak np. szybki ruch do góry symuluje przyciśnięcie kombinacji klawiszy ALT+TAB.
Dokąd zmierzasz w Google Glass?
Ciekawy projekt pozyskania Google Glass a następnie rozmontowania (i złożenia) go na elementy został pokazany w sieci [22]. Po dotarciu na poziom elastycznych PCB okazało się, że za orientację odpowiada scalony układ MPU-9150 (InvenSensor) dziewięcio-osiowego czujnika ruchu. Ten sam, który znajduje się na płytce rozszerzeń Sensor Hub BoosterPack firmy Texas Instruments. Z jej użyciem można już teraz poeksperymentować z zaawansowanymi technikami identyfikacji ruchu i gestów.
Henryk A. Kowalski
kowalski@ii.pw.edu.pl
Literatura
[1] Sensor Hub BoosterPack BOOSTXL-SENSHUB, http://goo.gl/B8OyXr
[2] Tiva C Series TM4C123G LaunchPad Evaluation Kit User’s Manual, 15 Apr 2013, SPMU296
[3] BOOSTXL-SENSHUB BoosterPack Getting Started Guide 24 Apr 2013 SPMU295
[4] BOOSTXL-SENSHUB Sensor Hub BoosterPack User Manual 24 Apr 2013 SPMU290
[5] TMP006 Infrared Thermopile Sensor in Ultra Small Chipscale Package, Texas Instruments
[6] MPU9150 Nine-Axis (Gyro + Accelerometer + Compass) MEMS MotionTracking Device, InvenSense
[7] ISL29023 Integrated Digital Light Sensor with Interrupt, Intersil
[8] SHT21 Digital Humidity Sensor (RH&T), Sensirion
[9] BMP180 pressure sensor, Bosch Sensortec
[10] Stellaris ICDI Drivers, SPMU287C
[11] Lift-off with the LaunchPad Ecosystem, 23 Apr 2014, SLAT152
[12] TivaWare, Tiva C Series LaunchPad Evaluation Board Software, SW-EK-TM4C123GXL
[13] TivaWare Sensor Library, USER’S GUIDE, October 08, 2013 (SW-TM4C-SENSORLIB-UG-2.0.1.11577.pdf)
[14] EK-TM4C123GXL Firmware Development Package, USER’S GUIDE, October 08, 2013 (SW-EK-TM4C123GXLUG- 2.0.1.11577.pdf)
[15] TivaWare Peripheral Driver Library, USER’S GUIDE, October 08, 2013 (SW-TM4C-DRL-UG-2.0.1.11577.pdf)
[16] EK-TM4C123GXL-BOOSTXL-SENSHUB Firmware Development Package, USER’S GUIDE, October 08, 2013, (SW-EK-TM4C123GXL-BOOSTXL-SENSHUBUG- 2.0.1.11577.pdf)
[17] Getting Started with the TIVA C Series TM4C123G LaunchPad, Workshop, Revision 1.22, November 2013
[18] Tiva C Series TM4C123G LaunchPad ,TI Wiki
[19] Getting Started with the Tiva C Series TM4C123G LaunchPad, TI Wiki
[20] Wireless Air Mouse Guide, TI Wiki
[21] Henryk A. Kowalski, Zestaw ewaluacyjny Tiva C Series TM4C123G LaunchPad, Elektronika Praktyczna 6/2014
[22] Co jest w środku Google Glass? http://goo.gl/r5oYUZ
[23] Ścieżka projektów przykładowych C:tiTivaWare_C_ Series-2.0.1.11577examplesboardsek-tm4c123gxl-boostxl-senshub