Systemy dla Internetu Rzeczy (52). Projekt Multi Sensor dla zestawu czujnikowego CC1352R LaunchPad SensorTag

Systemy dla Internetu Rzeczy (52). Projekt Multi Sensor dla zestawu czujnikowego CC1352R LaunchPad SensorTag

Zestaw czujnikowy CC1352 LaunchPad SensorTag (LPSTK) firmy Texas Instruments jest ciekawą konstrukcją. Stanowi połączenie cech zestawu startowego LaunchPad oraz modułu czujnikowego. W zestawie CC1352R LPST został zastosowany procesor komunikacyjny CC1352R firmy Texas Instruments należący do platformy SimpleLink. Na płytce drukowanej nie ma sprzętowego układu debugującego ale są złącza rozszerzeń standardu BOOSTXL oraz cztery scalone czujniki niskiej mocy: wilgotności względnej i temperatury, oświetlenia otoczenia, trzyosiowy czujnik ruchu oraz czujnik magnetyczny. Dla zestawu CC1352R LPSTK zostały przygotowane trzy przykładowe projekty. Pierwszy projekt o nazwie Multi Sensor umożliwia komunikację BLE ze smartfonem i jest fabrycznie zaprogramowany do procesora zestawu.

Zestaw zawiera: płytkę układu umieszczoną w czarnej obudowie z czerwoną osłoną, 10-żyłowy kabel SWD (ARM) do złącz debugowych JTAG, przegubową antenę prętową ze złączem SMA dla pasma Sub 1 GHz, dwa kabelki z wtyczkami na złącza typu goldpin oraz LPSTK-CC1352R Quick start guide [5]. Zestaw nie zawiera baterii rozmiaru AAA oraz zestawu startowego SimpleLink CC1352R wireless MCU LaunchPad development kit (LAUNCHXL-CC1352R1) rekomendowanego do debugowania.

Układ scalony procesora komunikacyjnego CC1352R1 (U1) został zastosowany w standardowej konfiguracji pracy [2]. Do niego są dołączone rezonatory kwarcowe: głównego zegara systemowego 48 MHz (Y2) oraz zegara RTC 32,768 kHz (Y1). Zestaw zawiera cztery scalone czujniki niskiej mocy: wilgotności względnej i temperatury HDC2080, oświetlenia otoczenia OPT3001, trzyosiowy czujnik ruchu ADXL362 oraz czujnik magnetyczny DRV5032 (z zastosowaniem efektu Halla). Dokładne omówienie zestawu zostało zamieszczone w poprzednim artykule tej serii [S33]. Zasilanie można doprowadzić poprzez kabel portu JTAG. Odpowiednie będą dwie baterie rozmiaru AAA, ale istnieje możliwość zastosowania również baterii CR2032. Na płytce drukowanej znajdują się dwa złącza 20-pinowe zgodne ze standardem BOOSTXL. Umożliwia to dołączanie standardowych modułów rozszerzeń platformy SimpleLink. Zestaw jest dostarczany z domyślenie zainstalowanym oprogramowaniem o nazwie Multi Sensor [9]. Umożliwia ono komunikację z zastosowaniem protokołu BLE, ze smartfonem z aplikacją SimpleLink Starter dostępną na system iOS i Android.

Ogólne omówienie zasobów platformy SimpleLink [1] jest zamieszczone w dokumencie Deep dive into the tools and development kits of the SimpleLink MCU platform [6]. W poszukiwaniu informacji dotyczących zestawu CC1352R LaunchPad SensorTag najbardziej przydatna jest strona produktu [4]. Zgromadzone są na niej informacje i odnośniki do wielu dokumentów: z opisem ogólnym, ze wsparciem sprzętowym i programowym, z opisem wersji i dostępności układów, z przykładowymi projektami z jego wykorzystaniem, oraz wiele innych. Rozmieszczenie sygnałów i napięć na złączach standardu BOOSTXL z sygnałami wyprowadzeń I/O procesora zestawu CC1352R LaunchPad SensorTag jest pokazane w dokumencie LPSTK-CC1352R Quick start guide [5]. Pliki konstrukcyjne płytki i schematu zestawu LPSTK są zamieszczone w zbiorze LPSTK-CC1352R Design Files [7] dostępnym ze strony [4]. Zasoby programowe i opisy są zamieszczone w pakiecie programowym SimpleLink CC13x2 and CC26x2 software development kit (SDK) [8]. Rozszerzeniem pakietu SDK jest pakiet SimpleLink Academy zawierający ćwiczenia praktyczne [9].

Opis zestawu CC1352R LPSTK, omówienie budowy, pierwsze eksperymenty z komunikacją BLE ze smartfonem, opis aktualizacji poprzez radio oraz debugowania jest zamieszczony na stronie SimpleLink Academy w warsztacie LPSTK-CC1352R LaunchPad SensorTag Out of Box Experience (z drugą nazwą Meet the SimpleLink LPSTK-CC1352R LaunchPad SensorTag Development Kit) [9]. Na portalu TI w sekcji szkoleń są zamieszczone bardzo przydatne prezentacje wideo. W prezentacji LaunchPad SensorTag kit out-of-box experience została pokazana praca z zestawem CC1352R LPSTK prosto z pudełka [12]. Przykłady różnych sposobów zastosowania zestawu CC1352R LPSTK zostały pokazane w prezentacji TI wireless sensor kit [14]. W prezentacji Flexible power options for LPSTK-CC1352R: Soldering coin cell battery holder jest pokazane jak zamontować koszyczek baterii CR2032 do płytki drukowanej zestawu [13].

Zasilanie

Płytka zestawu CC1352R LPSTK jest zasilana napięciem 3 V, typowo z dwóch baterii rozmiaru AAA wkładanych w dolnej części obudowy zestawu. Ich napięcie jest dołączane do złącza P4 (oznaczenie PWR) na płytce drukowanej (rysunek 1). Jest możliwość zasilania płytki również z baterii CR2032. W tym celu można na dolnej stronie płytki drukowanej zalutować pojemnik na baterię CR2032 [13]. Napięcie z obu źródeł doprowadzone jest do złącza P5 (oznaczenia: AAA, Coin) w postaci trzech wyprowadzeń typu goldpin 2 mm. Pozwala to na wybór źródła zasilania zworką. Wybrane napięcie jest podawane na wyłącznik SW3 (oznaczenie PWR) umieszczony na górnej krawędzi płytki drukowanej. Ma on dwie pozycje oznaczone jako: ON i OFF.

Rysunek 1. Układ zasilania zestawu czujnikowego LPSTK-CC1352R [4]

Następnie napięcie wejściowe jest podawane na wejście układu scalonego przełącznika elektronicznego TPS22910A (U7). Układ jest stale włączony i przy małej rezystancji przewodzenia – 61 mΩ, pracuje jako aktywne zabezpieczenie przed podaniem wejściowego napięcia o odwrotnej polaryzacji. Układ zabezpiecza też przed spadkiem napięcia wejściowego poniżej 1,2 V. Napięcie wyjściowe VDD z układu przełącznika jest dołączone do układów scalonych wszystkich czujników, pamięci Flash oraz diod LED. Napięcie VDD, poprzez dławik FL1 jest też podawane na wyprowadzenia VDDS głównego zasilania układu scalonego procesora komunikacyjnego CC1352R1 (U1) (akceptuje napięcie z zakresu 1,8…3,8 V). Jest też wyprowadzone na złącze standardu BOOSTXL (J2.1) oraz JTAG (P2.1). Oznacza to możliwość pobierania zasilania zestawu bezpośrednio ze złącza JTAG (bez baterii). Typowym źródłem zasilania jest debuger JTAG dostarczający napięcia o odpowiednich parametrach dla bezpiecznej pracy procesora CC1352R1.

Zasilanie domeny cyfrowej (VDDR) oraz modułu radiowego (VDDR_RF) jest realizowane w standardowej konfiguracji z wewnętrzną przetwornicą DC/DC i zewnętrznym dławikiem L1 [7].

Należy zwrócić uwagę na sposób podłączenia nóżki J2.1 z oznaczeniem 3V3 na złączu rozszerzeń standardu BOOSTXL. Jest ona dołączona do napięcia VDD płytki, czyli za układem TPS22910A (U7), praktycznie bezpośrednio do procesora. Przy dołączeniu zewnętrznego zasilania (bez zasilania ze złącza portu JTAG P2, P3) oznacza to brak zabezpieczenia oraz konieczność spełnienia wszystkich warunków zasilania procesora, np. odpowiedniej prędkości narastania napięcia po jego podaniu. W praktyce jest to bardzo trudne i może powodować blokowanie pracy procesora. Lepszym sposobem podania zewnętrznego zasilania jest dołączenie go do złącza baterii BT1 lub bezpośrednio do pinu P5.2 złącza wyboru zasilania, po zdjęciu zworki.

Port JTAG

Cztery sygnały portu JTAG oraz sygnał wyprowadzenia RESET procesora CC1352R1 (U1) są doprowadzone do łącza JTAG (P2) typu ARM o 10 szpilkach. Sygnały te są również dostępne na łączu J3 standardu BOOSTXL. Dodatkowo trzy sygnały są doprowadzone do pola lutowniczego dla łącza P3.

Anteny

Dopasowanie systemu antenowego ma decydujący wpływ na jakość pracy układu komunikacji radiowej, szczególnie przy bardzo małych mocach. Tor Sub 1 GHz jest dołączony do gniazdka antenowego J1 typu SMA (oznaczenie Sub-1GHz). Tor 2,4 GHz jest dołączony do anteny A1 (oznaczenie 2,4 GHz) zrealizowanej bezpośrednio na płytce drukowanej. Zaletą anteny PCB jest niska cena oraz dobra jakość (po dokładnym zweryfikowaniu działania kolejnych wersji płytki drukowanej). Na płytce drukowanej jest też zamontowane gniazdko radiowe P1 (typu uSMA). Po przelutowaniu kondensatora C11 w pole C9 (zaraz obok) będzie ono dołączone do wyjścia układu TR1.

Wejście RESET procesora CC1352R1

Na wejściu RESET procesora CC1352R1 dołączony jest standardowy układ z kondensatorem 100 nF oraz rezystorem 100 kΩ dołączonym do zasilania VDDS. Wejście jest też doprowadzone do złącza JTAG (P2) oraz złącza rozszerzeń J3.10 (oznaczenie LP RST).

Złącza rozszerzeń w standardzie BOOSTXL

Sposób rozmieszczenia sygnałów wyprowadzeń układu CC1352 na złączach standardu BOOSTXL zestawu LPSTK dobrze pokazuje rysunek w dokumencie [5]. Na złączach J2 oraz J3 jest udostępnionych 26 wyprowadzeń wejścia-wyjścia (GPIO) układu scalonego CC1352R1 oznaczanych jako „DIOxx”, gdzie xx to numery od 01 do 31.

Numery te są wydrukowane na płytce obok poszczególnych wyprowadzeń złącz. Wyprowadzone jest też połączenie do nóżki Reset procesora. Sygnały łącza JTAG są również doprowadzone poprzez cztery rezystory. Jednak dwa rezystory nie są fabrycznie zainstalowane. Rozmieszczenie sygnałów i napięć zestawu LPSTK jest (prawie) zgodne z płytką zestawu CC13x2R1 LaunchPad [S15]. Jedyna różnica polega na braku napięcia 5 V na wyprowadzeniu J2.2.

Oprogramowanie dla zestawu CC1352R LaunchPad SensorTag

Zestaw LPSTK-CC1352R jest zgodny programowo z zestawem CC13x2R1 LaunchPad [S15]. Umożliwia to zastosowanie do niego wielu dotychczas dostępnych projektów. Oprogramowanie dla zestawu CC1352R LPSTK jest dostarczane w ramach pakietu programowego SimpleLink CC13x2 and CC26x2 software development kit (SDK) (Ver 5.20.00.52) [8] wraz z instalowaną najnowszą wersją pakietu SimpleLink Academy [9]. Specjalnie dla zestawu CC1352R LPSTK zostały przygotowane trzy przykładowe projekty. Zestaw jest dostarczany z fabrycznie zainstalowanym programem o nazwie Multi Sensor [9]. Program obsługuje transmisję bezprzewodową Bluetooth LE ver.5.0. Program Multi Sensor umożliwia komunikację z zastosowaniem protokołu BLE pomiędzy zestawem CC1352R LPSTK oraz smartfonem z aplikacją SimpleLink Starter (dostępną na system iOS [16] i Android [15]). Jego opis znajduje się w pliku README.html w folderze projektu Multi Sensor [3].

Szczególną zaletą zestawu CC1352R LPSTK jest możliwość jednoczesnej transmisji dwuzakresowej z różnymi protokołami komunikacyjnymi. Nową wersję oprogramowania z nowym protokołem transmisji można załadować bezprzewodowo podczas pracy programu Multi Sensor z aplikacją SimpleLink Starter.

Drugi projekt programowy umożliwia pracę dwuzakresową zestawu CC1352R LPSTK z protokołem BLE (2,4 GHz) oraz z protokołem IEEE 802.15.4 (Sub 1 GHz). Trzeci projekt dotyczy zastosowania komunikacji z protokołem BLE oraz Zigbee [9]. Porównanie konfiguracji sieci bezprzewodowych tworzonych z zastosowaniem zestawu CC1352R LPSTK jest omówione w dokumencie [11].

Dołączanie zestawu czujnikowego LPSTK-CC1352R do komputera

W celu debugowania pracy zestawu CC1352R LPSTK trzeba do łącza JTAG (P2) dołączyć debuger sprzętowy [9]. Może to być debuger standardu XDS110. Najprościej można wykorzystać debuger XDS110 znajdujący się na płytce zestawu CC13x2R1 LaunchPad. W zestawie CC1352R LPSTK załączony jest kabel „ARM 10-pin JTAG” oraz dwa kabelki z wtyczkami na szpilki goldpin. Zastosowanie ich do połączenia płytek obu zestawów umożliwia programowanie, debugowanie oraz komunikację poprzez UART.

Dołączenie debugera XDS110 zestawu CC13x2R1 LaunchPad do zestawu CC1352R LPSTK zostało pokazane na zdjęciu tytułowym. W celu przygotowania zestawów do pracy należy wykonać następujące czynności:

  1. Na płytce zestawu CC13x2R1 LaunchPad zdejmij wszystkie zworki na złączu izolacyjnym (podwójny grzebień poziomo w środku płytki);
  2. Dołącz jedną wtyczkę kabla ARM 10-pin JTAG do złącza XDS110 OUT na płytce zestawu CC13x2R1 LaunchPad;
  3. Dołącz drugą wtyczkę tego kabla do złącza JTAG zestawu CC1352R LPSTK;
  4. Dołącz jedną wtyczkę szarego kabelka do pinu RXD zestawu CC13x2R1 LaunchPad a drugą wtyczkę do pinu RX (J2.12) zestawu CC1352R LPSTK;
  5. Dołącz jedną wtyczkę białego kabelka do pinu TXD zestawu CC13x2R1 LaunchPad a drugą wtyczkę do pinu TX (J2.13) zestawu CC1352R LPSTK;
  6. Otwórz Windows Device Manager. Kliknij prawym klawiszem myszki na ikonkę Windows 10 w lewym dolnym rogu i z podręcznego menu wybierz Device Manager;
  7. Dołącz zestaw CC13x2R1 LaunchPad kablem USB do komputera;
  8. Dioda LED na zestawie LaunchPad powinna się zaświecić;
  9. W oknie Windows Device Manager powinny pojawić się nowe linie;

Kasowanie całej pamięci Flash układu CC1352R1

Zainstalowany fabrycznie na zestawie CC1352R LPSTK program Multi Sensor używa specjalnego programowego bootloadera o nazwie Boot Image Manager (BIM) [9]. Jest on umieszczony w pamięci Flash w obszarze niedostępnym podczas zwykłego programowania kodu. Może on utrudniać lub nawet uniemożliwiać uruchomienie innych programów. Aby go usunąć z pamięci Flash należy użyć programu UniFlash w najnowszej wersji [10]. Po uruchomieniu i połączeniu programu UniFlash z zestawem należy w linii Configured Device kliknąć na more inf. Następnie należy kliknąć na Read Device Info. W oknie pokazywana jest wersja układu scalonego (wersja produkcyjna to E (2.1) oraz rozmiar jego pamięci RAM i Flash. Jeśli trzeba skasować całą pamięć Flash należy wykonać poniższe kroki:

  • na liście po lewej stronie okna programu należy wybrać Settings & Utilities a następnie w sekcji Manual Erase kliknąć na przycisk Erase Entire Flash,
  • w oknie Console zostaną wyświetlone informacje o rezultatach wykonywanej operacji.

Na koniec zamykamy program UniFlash.

Programowanie projektu Multi Sensor

Programowanie wymaga zastosowania projektu Multi Sensor oraz projektu BIM offchip w odpowiedniej kolejności.

  1. Uruchom program Code Composer Studio – dwuklik na ikonkę CCS;
  2. W oknie Workspace Launcher wpisz ścieżkę z nazwą: C:\home_dir\work_MultiSensor;
  3. Nie zaznaczaj “Use this as the default …”;
  4. Kliknij OK;
  5. Obserwuj prawy dolny róg okna. Czekaj, aż wszystkie moduły środowiska Eclipse zostaną załadowane. Niestety, nie ma informacji o zakończeniu pracy;
  6. W oknie Getting Started kliknij na Resource Explorer;
  7. Jeśli zostanie wyświetlone okno dialogowe odnośnie plików cookie kliknij przycisk akceptacji;

Po tych czynnościach zostanie otworzona zakładka Resource Explorer.

Krok 1A: Importuj projekt bim_offchip do CCS

  1. W zakładce TI Resource Explorer rozwiń ścieżkę: Software → SimpleLink CC13x2 26x2 SDK – 5.20.00.52 → Examples → Development Tools → CC1352 LaunchPad → bim → bim_offchip → No RTOS → CCS Compiler → bim_offchip;
  2. Kliknij w prawym oknie na ikonkę Import ;
  3. Obserwuj prawy dolnym róg ekranu. Czekaj, aż wszystkie operacje zostaną wykonane (szczególnie indeksowanie). Niestety, nie ma informacji o zakończeniu pracy.

Krok 1B: Importuj projekt multi_sensor do CCS

  1. W zakładce TI Resource Explorer rozwiń ścieżkę: Software → SimpleLink CC13x2 26x2 SDK – 5.20.00.52 → Examples → Development Tools → CC1352 LaunchPad → BLE-Stack → multi_sensor → TI-RTOS → CCS Compiler → multi_sensor;
  2. Kliknij w prawym oknie na ikonkę Import ;
  3. Czekaj, aż wszystkie operacje zostaną wykonane (szczególnie indeksowanie).

Krok 2: Buduj wszystkie projekty

  1. Z menu wybierz Project → Clean;
  2. W oknie Clean kliknij przycisk Clean;
  3. Czekaj, aż w oknie Console zostanie wyświetlona informacja Build Finished i zakończy pracę aplikacja Indexer;
  4. W oknie Console pokazywane są teraz informacje dotyczące budowania projektu jądra bim_offchip_CC1352R1_LAUNCHXL_nortos_ccs.out;
  5. W oknie Project Explorer zaznacz projekt multi_sensor i sprawdź w oknie Console czy wygenerowany został plik kodu multi_sensor_CC13XR1_LAUNCHXL_tirtos_ccs.out.

Krok 3: Zdefiniuj Debugger Configuration

W oknie Project Explorer rozwiń drzewo projektu multi_sensor_CC13XR1_LAUNCHXL_tirtos_ccs oraz gałąź targetConfigs. Plik konfiguracji sprzętowej CC1352R1F3.ccxml file jest już zdefiniowany i ustawiony jako Active/Default

Krok 4A: Debuguj projekt bim_offchip

  1. W oknie Project Explorer zaznacz projekt bim_offchip;
  2. W oknie Project Explorer kliknij prawym klawiszem myszki na projekt bim_offchip_CC1352R1_LAUNCHXL_nortos_ccs (Uwaga, to musi być projekt bim_offchip);
  3. Z podręcznego menu wybierz: Debug As → Code Composer Debug Session;
  4. Czekaj, aż kursor zostanie ustawiony na pierwszej linii kodu funkcji main();
  5. W perspektywie CCS Debug zakończ sesję debugową – kliknij na ikonkę Terminate ;
  6. Czekaj aż aplikacja powróci do perspektywy CCS Edit.

Krok 4B: Debuguj projekt multi_sensor

  1. W oknie Project Explorer zaznacz projekt multi_sensor_CC13XR1_LAUNCHXL_tirtos_ccs. (Uwaga, to musi być projekt multi_sensor);
  2. Kliknij na ikonkę Debug ;
  3. Czekaj, aż kursor zostanie ustawiony na pierwszej linii kodu funkcji main().

Dołączanie terminala znakowego do zestawu LPSTK

  1. W oknie Windows Device Manager sprawdź numer portu przydzielonego dla XDS110 Class Application/User UART (COMxx);
  2. Uruchom aplikację PuTTY;
  3. Wybierz Connection type jako Serial (po prawej stronie okna);
  4. W polu parametru Speed wpisz 115200 baud;
  5. W polu parametru Serial wpisz numer przydzielonego portu COMxx;
  6. W oknie Category rozwiń linię Window → Colours;
  7. Zaznacz Use system colours;
  8. Kliknij na przycisk Open;
  9. Rozciągnij okno aplikacji PuTTy prawie na całą szerokość ekranu;

Uwaga, nie odłączaj zestawu C1352R1 LaunchPad SensorTag od komputera w czasie pracy aplikacji PuTTy.

Wgląd i działanie projektu multi_sensor

  1. W oknie edycyjnym pliku main.c zobacz sekwencję inicjalizacji;
  2. Kliknij na ikonkę Resume ;
Rysunek 2. Informacje aplikacji Multi Sensor podczas rozpoczęcia pracy

Niebieska dioda LED na płytce zestawu LPSTK zaczyna błyskać. Oznacza to uruchomienie trybu rozgłaszania komunikacji BLE. W oknie aplikacji PuTTy wyświetlany jest log pracy kodu projektu multi_sensor. Aplikacja inicjalizuje serwisy oraz ustawia wartości i charakterystyki tych serwisów. Na koniec aplikacja uruchamia rozgłaszanie. Podawany jest też adres sieciowy zestawu LPSTK (rysunek 2).

Wymagania wstępne dotyczące oprogramowania

Boot Image Manager (BIM) jest załadowany na ostatniej stronie pamięci Flash. Domyślnie jest to „bezpieczny” BIM. Podczas bootowania i inicjalizacji aplikacji mają miejsce następujące czynności związane z BIM i zewnętrzną pamięcią Flash:

  • RESET – BIM uruchamia obraz kodu z wewnętrznej pamięci Flash (rysunek 2). BIM sprawdza, czy w zewnętrznej pamięci Flash istnieje fabryczny obraz kodu. Jeśli nie istnieje, to bieżący obraz zostanie skopiowany do zewnętrznej pamięci Flash i oznaczony jako obraz fabryczny. Jeśli nie ma żadnego obrazu kodu to procesor zostaje wprowadzony w stan standby.
  • BTN-1 + BTN-2 + RESET – sprawdzana jest kombinacja przycisków BTN-1 i BTN-2. Jeśli oba przyciski zostaną przytrzymane przez 5 sekund podczas wykonywania operacji RESET to zewnętrzna pamięć Flash zostanie skasowana (rysunek 3). Nie jest to zalecane chyba, że użytkownik ma możliwość wpisania nowego obrazu BIM/multi_sensor do pamięci Flash.
  • BTN1 + RESET – sprawdzany jest lewy przycisk BTN-1. Jeśli zostanie przytrzymany podczas przyciśnięcia przycisku RESET, po upłynięciu 5-sekundowego limitu czasowego, to uruchomiony obraz zostanie oznaczony jako nieprawidłowy i uruchomi się w BIM (rysunek 4). Ma to na celu przywrócenie (przepisanie) przez BIM obrazu fabrycznego do wewnętrznej pamięci Flash.
Rysunek 3. Kasowanie zewnętrznej pamięci Flash

Podczas, gdy jedna z kombinacji przycisków BTN jest przytrzymywana podczas resetowania, diody LED będą migać naprzemiennymi kolorami. Jeśli przyciski zostaną zwolnione podczas 5-sekundowego limitu czasu, urządzenie będzie kontynuowało normalne uruchamianie. Po uruchomieniu aplikacji oba przyciski będą działać normalnie.

Rysunek 4. Przywracanie obrazu fabrycznego do wewnętrznej pamięci Flash

UWAGI:

  • Po skasowaniu zewnętrznej pamięci Flash nie zaleca się wykonywania procedury przywracania BTN-1 + RESET, ponieważ spowoduje to pozostawienie Boot Image Manager bez prawidłowego obrazu w wewnętrznej pamięci Flash i bez obrazu fabrycznego w zewnętrznej pamięci Flash. W tym momencie należy użyć debuggera, takiego jak XDS110, aby wpisać nowy wewnętrzny obraz do urządzenia;
  • Podczas uruchamiania kodu za pomocą IDE jak CCS (w przeciwieństwie do uruchamiania kodu po operacji RESET), BIM w ogóle się nie uruchomi. Jeśli zostanie wykonana operacja RESET (np. polecenie CPU Reset lub przycisk RESET) podczas sesji debugowania, BIM (jeśli jest obecny) zostanie uruchomiony i może zastąpić w pamięci wewnętrznej Flash aktualny obraz kodu obrazem fabrycznym. Dalsze debugowanie nie będzie możliwe.
  • Rozgłaszanie

Po uruchomieniu LPSTK rozpocznie rozgłaszanie z użyciem dwóch zestawów: rozgłaszanie Legacy (Connectable Scannable Advertisements) oraz rozgłaszanie dalekiego zasięgu (Coded PHY) z kodowaniem S2 [S19]. Niebieska dioda LED zacznie migać, wskazując, że urządzenie pracuje z rozgłaszaniem. Połączenie można nawiązać za pomocą dowolnego zestawu rozgłaszania. Aplikacja multi_sensor obsługuje tylko jedno połączenie, więc oba zestawy zostaną wyłączone po nawiązaniu połączenia. Gdy połączenie zostanie zerwane, oba zestawy zostaną ponownie uruchomione.

Połączenie

Po wykonaniu połączenia zestawu LPSTK do węzła Central sieci standardu Bluetooth 5 niebieska dioda przestanie migać, a zielona dioda LED zostanie wyłączona. Gdy urządzenie wykona połączenie, adres urządzenia (Peer address) zostanie wyświetlony w konsoli (rysunek 5).

Rysunek 5. Informacje programu Multi Sensor po połączeniu z węzłem Central

Komunikaty logu będą następnie pokazywać dane odczytane z różnych czujników. Przy odłączeniu od sieci BLE obsługa czujników zostanie wyłączona i oba zestawy rozgłaszania zostaną ponownie uruchomione (rysunek 6).

Rysunek 6. Sekwencja odłączenia zestawu LPSTK od sieci BLE

GATT

W dokumencie Readme [3] jest dokładnie omówione to, jak komunikować się bezprzewodowo z różnymi usługami GATT dostępnymi w projekcie multi_sensor. Z perspektywy aplikacji interfejs do tych usług jest wyabstrahowany przez wspólny moduł Sensors. Ten moduł automatycznie udostępni usługi GATT dla każdego czujnika, gdy czujnik zostanie pomyślnie zainicjowany podczas resetowania. Jeśli z jakiegoś powodu czujnik nie zostanie zainicjowany, usługa nie będzie dostępna.

Szybkie prototypowanie z aplikacją mobilną

Zestaw CC1352R LPSTK może zostać dołączony poprzez łącze radiowe standardu Bluetooth LE do urządzenia mobilnego (smartfon/tablet) lub innego z obsługą tego standardu. Opis i odnośniki są zamieszczone na stronie LPSTK-CC1352R LaunchPad SensorTag Out of Box Experience [9]. Oprócz odpowiedniej aplikacji SimpleLink Starter firmy Texas Instruments można używać aplikacji LightBlue lub BLEScanner. Postępowanie przy uruchamianiu komunikacji z urządzeniem mobilnym przebiega następująco:

  1. Pobierz darmową aplikację komunikacyjną dla swojego urządzenia mobilnego obsługującego transmisję bezprzewodową Bluetooth LE ver.4.0 (lub nowszą);
  2. Z portalu Apple App Store pobierz aplikację TI SimpleLink Starter dla urządzeń z systemem operacyjnym iOS 10.0 i nowszym (iPhone i iPad) [16];
  3. Z portalu Google Play pobierz aplikację SimpleLink Starter dla urządzeń z systemem operacyjnym Android 5.0 i nowszym [15];
  4. Włącz zasilanie zestawu CC1352R LPSTK. Niebieska dioda LED zaczyna błyskać. Sygnalizuje to, że zestaw CC1352R LPSTK jest w stanie rozgłaszania;
  5. Uruchom aplikację komunikacyjną na swoim urządzeniu mobilnym. Może to wymagać włączenia na urządzeniu radia Bluetooth;
  6. W głównym oknie aplikacji wyszukaj na liście swój zestaw CC1352R LPSTK widoczny jako Multi-Sensor (rysunek 7a). Typowo, zestaw umieszczony blisko ma największą wartość RSSI (najwięcej kresek identyfikacji poziomu sygnału). W celu ponownego wyszukania dostępnych urządzeń BLE należy przeciągnąć po ekranie z góry na dół.
Rysunek 7. (abcd) Przykładowe ekrany aplikacji SimpleLink Starter

Po wybraniu zestawu pojawia się okno robocze prezentujące bieżące wartości odczytu z zestawu (rysunek 7b). Niebieska dioda LED zestawu CC1352R LPSTK przestaje błyskać i świeci na zielono. Oznacza to, że zestaw jest w stanie komunikacyjnym „połączony”. Aplikacja pokazuje bieżący poziom RSSI, informacje o zestawie, poziom wilgotności i naładowania baterii (zasilania) oraz odczyt stanu przycisków. Aplikacja umożliwia również włączanie i wyłączanie diod LED (czerwona i zielona) zestawu (rysunek 7c). Aplikacja pokazuje na bieżąco odczyty trójosiowego akcelerometru. Wiele odczytów może być pokazywanych w postaci dokładnych wykresów danych (rysunek 7d). Aplikacja umożliwia także dołączenie do chmury obliczeniowej różnych dostawców: IBM Watson, Dweet.io, Microsoft Azure lub własnej realizacji oraz aktualizację zdalną (OAD) oprogramowania zestawu.

Dynamiczny pomiar poboru prądu z zastosowaniem debugera XDS110

Po zaprogramowaniu procesora zestawu CC1352R LPSTK kodem programu Multi Sensor można robić pomiary prądu zasilania. Najlepiej wykonywać pomiary dynamiczne w trakcie pracy programu. Do tego można użyć debugera XDS110 lub urządzenie zewnętrzne. Wykonanie dynamicznego pomiaru poboru prądu z zastosowaniem debugera XDS110 znajdującego się na płytce zestawu CC13x2R1 LaunchPad wymaga wykonania specjalnej konfiguracji połączeń:

  1. Odłącz taśmę od złącz JTAG;
  2. Odłącz przewody od pinów RX i TX;
  3. Dołącz jedną wtyczkę pierwszego kabelka do pinu GND (P4.21, na górze) zestawu CC13x2R1 LaunchPad a drugą wtyczkę do pinu GND (J2.4) zestawu CC1352R LPSTK;
  4. Dołącz jedną wtyczkę drugiego kabelka do pinu 3V3 (P4.17, na górze, sygnał TRGET_VDD) zestawu CC13x2R1 LaunchPad a drugą wtyczkę do pinu VDD (J2.1) zestawu CC1352R LPSTK.

Dynamiczny pomiar pobor prądu z zastosowaniem debugera XDS110 jest obsługiwany przez technologię EnergyTrace w środowisku programowym Code Composer Studio i jest dokładnie omówiony w artykule [S16]. Następnie:

  1. Dołącz zestaw CC13x2R1 LaunchPad kablem USB do komputera;
  2. Wystartuj środowisko CCS i poczekaj na zakończenie sprawdzania aktualizacji;
  3. W perspektywie CCS Edit kliknij na pasku menu na przycisk EnergyTrace Technology;
  4. Kliknij na przycisk Proceed;
  5. Zostanie otworzona perspektywa CCS Debug i w niej zostanie otworzone okno EnergyTrace Technology z zakładkami wykresów Power i Energy (rysunek 8). Okna zakładek mozna przeciągać do innych miejsc okna perspektywy w celu ich jednoczesnego oglądania.
  6. Przeciągnij zakładkę Current do pozycji powyżej zakładki EnergyTrace Technology;
  7. Kliknij na przycisk Start trace collection.
Rysunek 8. Dynamiczny pomiar prądu z użyciem EnergyTrace firmy Texas Instruments

Rozpocznie się zbieranie danych. Przycisk zmieni się na  Stops trace collection umożliwiając zatrzymanie akwizycji. Na pasku stanu (pod paskiem menu) wyświetlane jest odliczanie czasu: „Timer … 10” (aż do zera). W oknie zakładki Current rysowany jest na bieżąco wykres prądu. Po zakończeniu zbierania danych w oknie zakładki EnergyTrace Profile są pokazywane obliczone dane z cały czas zbierania próbek. Zbierane daną mają bardzo dużą rozdzielczość czasową. Dlatego użyteczne informacje mogą być widoczne po rozciągnięciu wykresu.

Na rysunku 8 zostało pokazane okno aplikaci EnergyTrace z wynikiem pomiaru poboru prądu przez zestaw CC1352R LPSTK z działającym programem multi_sensor w trybie rozgłaszania. Na zakładce EnergyTrace Technology pokazywane są wyniki obliczeń dla czasu pomiaru, szczególnie wartości średnie, minimalne i maksymalmne. Wykres prądu na zakładce Current jest skalowany w nA. Widoczne są dwa poziomy średnie poboru prądu: podczas świecenia diody LED ok. 3,2 mA oraz bez świecenia ok. 1,7 mA (spoczynkowy). Szpilki prądowe odpowiadają cyklicznej pracy układu podczas rozgłaszania BLE. Dokładnie jest to omówione w artykule [S30].

Dynamiczny pomiar poboru prądu z zastosowaniem zestawu PPK2 firmy Nordic Semiconductor

W tym roku firma Nordic Semicoductor udostępniła układ Power Profiler Kit II (PPK2), który może mierzyć i dostarczać prądy od 200 nA do 1 A [17]. PPK2 jest zasilany za pomocą standardowego złącza USB 5 V. Układ może pracować w trybie pomiaru (jako amperomierz), a także w trybie trybie źródła zasilania z pomiarem. PPK2 posiada zaawansowaną analogową jednostkę pomiarową o wysokim dynamicznym zakresie pomiarowym. Pozwala to na dokładne pomiary zużycia energii w całym zakresie typowym dla wbudowanych aplikacji o niskim poborze mocy. Rozdzielczość waha się w zakresie od 100 nA do 1 mA w zależności od zakresu pomiarowego i jest wystarczająco wysoka, aby wykryć małe skoki, co często występuje w systemach zoptymalizowanych pod kątem małej mocy.

Rysunek 9. Dynamiczny pomiar prądu z użyciem układu PPK2 firmy Nordic Semiconductor

Zestaw PPK2 jest obsługiwany przez aplikację Power Profiler działającą w ramach platformy nRF Connect for Desktop. Aplikacja Power Profiler może wyświetlać w tym samym oknie zarówno średnie czasy akwizycji, jak i zdarzenia (cyfrowe) o wysokiej rozdzielczości. Zmierzone dane można wyeksportować do dalszej obróbki. Na rysunku 9 zostało pokazane okno aplikacji Power Profiler z wynikiem pomiaru poboru prądu przez zestaw CC1352R LPSTK z działającym programem multi_sensor w trybie rozgłaszania. Pokazywane wartości są zmierzone tylko dla próbek pokazywanych w oknie. Pokrętłem myszki można zmienić skalę czasową wykresu (minimum ∆ 500 µs). Wyświetlanie wartości prądu może być wykonywane z rozdzielczością czasową do 10 µs (maksymalna rozdzielczość próbkowania). Widoczne są dwa poziomy średnie poboru prądu: podczas świecenia diody LED 3,25 mA oraz bez świecenia 1,72 mA (spoczynkowy). Wartości pomiarowe za cały czas pomiaru (60 s): 2,85 mA (średnia) i ładunek 148,54 mC. Dane pomiarowe uzyskane z użyciem układu EnergyTrace (XDS110) oraz PPK2 są zgodne.

Dosyć wysoki poziom prądu spoczynkowego wynika z niezbyt optymalnego zorganizowania pracy aplikacji, np. ciągłego działania portu UART.

Podsumowanie

Zestaw czujnikowy CC1352R LaunchPad SensorTag LPSTK jest bardzo udaną próbą rozszerzenia funkcjonalności zestawów uruchomieniowych typu LaunchPad o obsługę czujników podstawowych parametrów otoczenia. Bardzo dobrym pomysłem jest zachowanie zgodności standardu złączy rozszerzeń pomiędzy nimi. Wyposażenie LPSTK w koszyczek na baterie daje możliwość samodzielnej pracy zestawu w sposób typowy dla IoT. Pewną wadą zastosowanego rozwiązania układowego jest brak możliwości łatwego wyłączenia zasilania układów scalonych czujników. Można to zrobić poprzez wylutowanie rezystorów 0 Ω wstawionych szeregowo w doprowadzenie zasilania. Z drugiej strony układy można wprowadzić w stan niskiego poboru mocy: OPT3001 0,3-0,4 µA, HDC2080 50 nA oraz ADXL362 10 nA, oprócz układu DRV5032 1,6 µA.

Pracę z zestawem LPSTK bardzo ułatwia wpisana do procesora aplikacja fabryczna multi_sensor. Razem z aplikacją mobilną SimpleLink Starter daje to możliwość szybkiego rozpoczęcia prób działania IoT z zastosowaniem transmisji BLE. Pewnym ograniczeniem jest możliwość pracy aplikacji SimpleLink Starter tylko z jednym zestawem LPSTK. Bardzo dużym ułatwieniem jest możliwość aktualizacji kodu poprzez transmisję BLE bezpośrednio z aplikacji SimpleLink Starter. To nie koniec zalet stosowania LPSTK. Dwa kolejne projekty fabryczne umożliwiają pracę zestawu jednocześnie w dwóch pasmach radiowych z dwoma różnymi protokołami BLE oraz IEEE802.15.4/Zigbee. Wszystkie projekty umożliwiają bezpieczną aktualizację zdalną (OAD) oprogramowania zestawu poprzez transmisję BLE.

W trakcie pracy z zestawem LPSTK pewnym problemem jest aplikacja BIM. Obecność w pamięci wewnętrznej Flash procesora i pamięci zewnętrznej Flash zestawu LPSTK jednocześnie dwóch obrazów kodu stwarza kłopoty z identyfikacją, który kod jest aktywny. Tym bardziej, że w aplikacji SimpleLink Starter nie działa odczyt wersji oprogramowania. Dodatkowo komplikuje sytuację automatyczne kopiowanie kodu pomiędzy pamięciami przez BIM. Praktycznie uniemożliwia on też debugowanie programu wcześniej wpisanego do wewnętrznej pamięci Flash procesora.

Henryk A. Kowalski
Instytut Informatyki
Politechnika Warszawska

Wybrane pozostałe artykuły kursu Systemy dla Internetu Rzeczy:
[S15] Zestaw CC1352R1 LaunchPad, EP 5/2018
[S16] Dynamiczne monitorowanie prądu zasilania układu SoC, EP 6/2018
[S19] Bezpieczeństwo transmisji z protokołem Bluetooth Low Energy, EP 10/2018
[S30] Praca z jednoczesną komunikacją radiową BLE 5 oraz IEEE 802.15.4, EP 10/2019
[S33] Zestaw czujnikowy LPSTK – CC1352R LaunchPad SensorTag, EP 1/2020

Literatura:
[1] Wireless connectivity products, Texas Instruments, https://bit.ly/2VHt4U5
[2] CC1352R SimpleLink multi-band wireless MCU, Texas Instruments, http://bit.ly/35tHuqc
[3] Sensor README, Texas Instruments, file:///C:/ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/examples/rtos/CC1352R1_LAUNCHXL/ble5stack/multi_sensor/README.html
[4] SimpleLink multi band CC1352R wireless MCU Launchpad SensorTag kit LPSTK-CC1352R, Texas Instruments, http://bit.ly/38GI1ar
[5] LPSTK-CC1352R Quick start guide, 26 Nov 2019, Texas Instruments, http://bit.ly/35sTOr0
[6] Deep dive into the tools and development kits of the SimpleLink MCU platform (SWAY002B), Adrian Fernandez, Henry Wiechman, 25 Sep 2019, Texas Instruments, http://bit.ly/2YR1oJn
[7] LPSTK-CC1352R Design Files ZIP, 15 Oct 2019, Texas Instruments, http://bit.ly/38Eicrr
[8] SimpleLink CC13x2 and CC26x2 software development kit (SDK) (Ver. 5.20.00.52), Texas Instruments, https://bit.ly/3lVCiGT
[9] LPSTK-CC1352R LaunchPad SensorTag Out of Box Experience (Meet the SimpleLink LPSTK-CC1352R LaunchPad SensorTag Development Kit), SimpleLink Academy, Texas Instruments, http://bit.ly/2st7tQ4
[10] UniFlash, Version: 6.3.0, 25 Apr 2021, Texas Instruments, http://bit.ly/2tfQzom
[11] Innovate, accelerate and connect across frequency bands and protocols with the SimpleLink MCU platform, Adrian Fer, Nov 6, 2019, Texas Instruments, https://bit.ly/2XoKRzJ
[12] 3.23 Connect: LaunchPad SensorTag kit out-of-box experience, Video 5:02, November 3, 2019, Texas Instruments, http://bit.ly/34rjCCp
[13] Flexible power options for LPSTK-CC1352R: Soldering coin cell battery holder, Video 3:32, November 3, 2019, Texas Instruments, http://bit.ly/35lY7nP
[14] Develop. Connect. Expand. TI wireless sensor kit, Video 0:53, November 3, 2019, Texas Instruments, http://bit.ly/38Hwjwj
[15] Simplelink Starter, Texas Instruments Inc., Android 5.0 i nowszy, Version: 5.7.5, 16 czerwiec 2020, Google Play, http://bit.ly/2tk14Ub
[16] TI SimpleLink Starter, Texas Instruments, iPhone (Requires iOS 10.0 or later.), Version 5.9, App Store, https://apple.co/3yHLlid
[17] Power Profiler Kit II, Nordic Semicondutor, https://bit.ly/3saXXMc
Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2021

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje lipiec 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich sierpień 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów