Jak zmaksymalizować czas pracy baterii w projektach Dual-Mode Wi-Fi/Bluetooth IoT

Przez: Stephen Evanczuk

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Projektanci urządzeń z zasilaniem bateryjnym połączonych z Internetem rzeczy (IoT) i innych połączonych produktów muszą spełniać sprzeczne wymagania dotyczące ciągłej łączności bezprzewodowej i wydłużenia czasu pracy baterii. Dalsze „rozciąganie” i tak już ograniczonych limitów mocy bierze się z rosnącego zapotrzebowania na łączność Bluetooth 5 i Wi-Fi w tym samym urządzeniu. Chociaż Wi-Fi i Bluetooth zawierają standardowe protokoły pomagające zmniejszyć zużycie energii, architektura łącząca podsystemy radiowe może zapewnić bardziej bezpośrednie wsparcie poprzez odciążenie zadań przetwarzania sieciowego dzięki mikrokontrolerowi niskiej mocy.

W niniejszym artykule nakreślono znaczenie łączności Dual-Mode Wi-Fi/Bluetooth oraz sposób, w jaki komplikuje ona projekty IoT. Następnie pokazano, w jaki sposób można wykorzystać płytkę rozwojową i związane z nią oprogramowanie firmy Cypress Semiconductor do tworzenia urządzeń Dual-Mode Wi-Fi/Bluetooth IoT o ciągłej łączności i dłuższym czasie pracy baterii.

Rosnące zapotrzebowanie na ciągłą łączność urządzeń Dual-Mode Wi-Fi/Bluetooth

Łączność Bluetooth jest uważana za standardowy wymóg dla wielu urządzeń IoT przeznaczonych do interakcji z użytkownikami za pośrednictwem smartfonów i innych urządzeń przenośnych z funkcją Bluetooth. Jednak w przypadku wielu zastosowań IoT, urządzenia te potrzebują połączenia Wi-Fi, aby uzyskać dostęp do bezprzewodowej sieci lokalnej (WLAN) i dalej do bezpośredniego połączenia z Internetem, lub aby współpracować z innymi urządzeniami równorzędnymi i systemami hostów w tej samej sieci.

Pod wieloma względami możliwość wydłużenia czasu pracy baterii byłaby o wiele prostsza, gdyby te urządzenia musiały łączyć się z siecią WLAN lub hostem Bluetooth tylko wtedy, gdy potrzebne jest przesyłanie danych lub innych komunikatów. Ponieważ aktywny cykl pracy wielu urządzeń IoT jest zazwyczaj niski, urządzenia te mogą wydłużyć czas pracy baterii, pracując głównie w trybie uśpienia o niskim poborze mocy i budząc się wystarczająco długo, aby wykonać pomiary czujników, zakończyć powiązane zadania przetwarzania i przesłać uzyskane dane przed powrotem do trybu niskiej mocy. Większość urządzeń IoT musi szybko reagować na asynchroniczne polecenia i dane przychodzące z urządzeń równorzędnych, systemów hostów i od użytkowników końcowych.

Urządzenia IoT muszą zapewniać ciągłość łączności, aby zachować responsywność na przychodzące dane tak, by mogły reagować w akceptowalnym czasie. Jeśli deweloperzy będą próbowali spełnić ten podstawowy wymóg metodą wielokrotnego budzenia urządzeń, aby odbierały dane przychodzące, ich bateria szybko się wyczerpie. W rzeczywistości odbiorniki radiowe w urządzeniach Wi-Fi z zasilaniem bateryjnym z reguły zużywają z czasem więcej energii niż nadajniki radiowe, pomimo większego zużycia energii związanego z pojedynczą operacją transmisji. Oczywiście, moc pobierana przez procesor główny urządzenia w każdej operacji odbiorczej dodaje jego własne, znaczne obciążenie do całego budżetu mocy. Na szczęście, standardy łączności bezprzewodowej definiują protokoły, które pozwalają deweloperom na zmniejszenie mocy przy jednoczesnym zachowaniu złudzenia ciągłej łączności.

W jaki sposób standardy łączności bezprzewodowej pomagają zmniejszyć zużycie energii

Podczas normalnej pracy stacje odbiorcze Wi-Fi (STA) oszczędzają energię, wyłączając większość swojego podsystemu Wi-Fi. Ponieważ punkty dostępowe (AP) buforują ramki dla uśpionych STA, nie zachodzi utrata żadnych komunikatów. W ramach normalnych operacji zarządzania siecią punkty dostępowe regularnie przesyłają ramki beacon zawierające mapę bitową, zwaną TIM (ang. traffic indication map), która wskazuje, czy w punkcie dostępowym znajduje się ruch oczekujący na uśpioną stację STA. Punkty dostępowe (AP) przesyłają również okresowo ramkę beacon, która zawiera mapę DTIM (ang. delivery traffic indication map), która wskazuje, że w buforze są dostępne ramki typu broadcast i multicast. Oczekuje się, że stacje STA będą się regularnie budzić w ramach wartości okresu DTIM, która jest pewną wielokrotnością normalnego interwału ramki beacon. Sieć IoT skonfigurowana z wysoką wartością okresu DTIM umożliwiłaby urządzeniom w swojej sieci zmniejszenie zużycia energii, ponieważ mogłyby one dłużej pozostać uśpione przed wybudzeniem odbiornika, aby odebrać ramkę beacon wskazującą, że punkt dostępowy (AP) buforuje dla niego ramki. Jest to fundamentalne podejście będące podstawą standardu 802.11 o mechanizmach oszczędzania energii z funkcją odpytywania (polling), omówionego poniżej.

Technologia Bluetooth Low Energy (BLE) pozwala na zmniejszenie zużycia energii przez urządzenia poprzez optymalizację częstotliwości rozgłaszania i możliwość obciążenia Bluetooth. Zwiększając interwał rozgłaszania, urządzenia IoT mogą opóźnić działanie nadajnika, a zmniejszając obciążenie użytkowe, mogą skrócić czas trwania zdarzeń nadawczych. Oczywiście, nie każda aplikacja akceptuje długie interwały rozgłaszania lub minimalne obciążenia użytkowe. Na przykład, w urządzeniu audio lub pracującym w czasie rzeczywistym, długie interwały rozgłaszania oznaczają opóźnienie połączenia, które mogą niekorzystnie wpłynąć na zachowanie aplikacji jako całości.

Urządzenia peryferyjne mogą korzystać z innej funkcji BLE zwanej opóźnieniem podrzędnym, która pozwala urządzeniu peryferyjnemu na pomijanie zdarzeń połączenia. Podobnie jak w przypadku Wi-Fi DTIM, opóźnienie podrzędne BLE pozwala urządzeniom na pozostawanie w trybie niskiej mocy przez dłuższy czas. Zamiast po prostu zwiększać interwał połączenia, ten specjalny tryb pozwala urządzeniu peryferyjnemu na pomijanie zdarzeń połączenia z hostem, ale mimo to budzić się i wysyłać dane w razie potrzeby, bez dodatkowych opóźnień.

Obsługa łączności Dual-Mode i wydłużony czas pracy baterii

Metody te pomagają skrócić czas trwania i częstotliwość pracy przy pełnym obciążeniu w urządzeniach Wi-Fi i Bluetooth, ale deweloperzy mogą zrobić znacznie więcej, aby wydłużyć czas pracy baterii, wykorzystując możliwości sprzętowe i programowe przedstawione w zestawie CY8CKIT-062S2-43012 Wi-Fi BT Pioneer firmy Cypress Semiconductor. Poza przewodami połączeniowymi i kablem USB zestaw firmy Cypress zawiera płytkę PSoC 62S2 Wi-Fi BT Pioneer, która stanowi wszechstronną platformę rozwojową i jest w pełni funkcjonalnym systemem sprzętowym do wdrażania projektów IoT niskiej mocy. Dzięki oprogramowaniu i zestawowi firmy Cypress deweloperzy mogą natychmiast ocenić i sprawnie wdrożyć różne zaawansowane funkcje zarządzania energią.

Poza wieloma złączami interfejsów, przyciskami i diodami LED, płytka zestawu integruje urządzenie PSoC 5LP CY8C5868LTI-LP038, które umożliwia programowanie i debugowanie Cypress KitProg3 na płytce. W celu zapewnienia dodatkowej pamięci wewnętrznej firma Cypress integruje urządzenie 512 megabitowej (Mbit) pamięci flash typu NOR S25FL512S oraz ferroelektryczną pamięć o dostępie swobodnym (FRAM) o pojemności 4Mbit CY15B104 (ilustracja 1).

Schemat płytki PSoC 62S2 Wi-Fi BT Pioneer firmy Cypress (kliknij, aby powiększyć)Ilustracja 1: płytka PSoC 62S2 Wi-Fi BT Pioneer firmy Cypress zapewnia wszechstronny zestaw funkcji systemowych zbudowanych wokół modułu nośnego, który integruje mikrokontroler PSoC 6 oraz moduł łączności bezprzewodowej Wi-Fi/Bluetooth. (Źródło ilustracji: Cypress Semiconductor)

Sercem płytki jest moduł nośny integrujący mikrokontroler PSoC 6 firmy Cypress Semiconductor oraz moduł łączności bezprzewodowej z elementami pasywnymi Type 1LV LBEE59B1LV firmy Murata Electronics. Przełącznik częstotliwości radiowej (RF) i dwuzakresowa antena miniczipowa 2,45GHz/5GHz są uzupełnieniem urządzeń wspomagających.

Zaprojektowany specjalnie w celu wyeliminowania konwencjonalnego kompromisu pomiędzy wydajnością przetwarzania a zużyciem energii, mikrokontroler PSoC 6 integruje procesor Arm® Cortex®-M4 150MHz, który służy jako główny procesor aplikacji, oraz Arm Cortex-M0+ 100MHz, który obsługuje pracę przy niskim zużyciu energii. Oprócz zintegrowanej pamięci flash i statycznej pamięci o swobodnym dostępie (SRAM), mikrokontroler PSoC 6 zawiera silnik kryptograficzny, programowalne analogowe i cyfrowe urządzenia peryferyjne, obsługę czujników dotykowych CapSense oraz wiele interfejsów systemowych (ilustracja 2).

Schemat modułu nośnego płytki PSoC 62S2 Wi-Fi BT Pioneer firmy Cypress (kliknij aby powiększyć)Ilustracja 2: mikrokontroler PSoC 6 wbudowany w moduł nośny karty PSoC 62S2 Wi-Fi BT Pioneer firmy Cypress, wykorzystuje architekturę wielordzeniową, aby spełnić wymagania zarówno w zakresie przetwarzania danych aplikacji, jak i działania w czasie rzeczywistym przy niskiej mocy. (Źródło ilustracji: Cypress Semiconductor)

Moduł Murata LBEE59B1LV stanowi kompletny podsystem radiowy o wymiarach 10,0 x 7,2 x 1,4mm, w którym znajduje się urządzenie Wireless Internet Connectivity for Embedded Devices (WICED) Wi-Fi + Bluetooth CYW43012 firmy Cypress, zegar referencyjny i filtry (ilustracja 3).

Schemat modułu łączności bezprzewodowej w urządzeniu Type 1LV LBEE59B1LV firmy MurataIlustracja 3: moduł łączności bezprzewodowej w urządzeniu Type 1LV LBEE59B1LV firmy Murata to kompletny, wstępnie certyfikowany podsystem Wi-Fi + Bluetooth zbudowany na podstawie urządzenia WICED CYW43012 firmy Cypress. (Źródło ilustracji: Murata Electronics)

Moduł obsługuje łączność bezprzewodową 2,4GHz i 5GHz z Bluetooth 5.0 i Wi-Fi 802.11a/b/g/n. Ponadto, moduł pracuje w trybie zgodnym z 802.11ac, który obsługuje 256 kwadraturowych modulacji amplitudowych (QAM) 802.11ac dla kanałów 20MHz w paśmie 5GHz, oferując wyższą przepustowość i niższe zużycie na bit niż produkty 802.11n. Zaprojektowany do szybkich prac rozwojowych moduł Murata LBEE59B1LV jest wstępnie certyfikowany w wielu regionach, co eliminuje znaczne opóźnienia związane z próbami zgodności i certyfikacją.

W ramach modułu urządzenie WICED firmy Cypress integruje procesor Arm Cortex-M3 i Arm Cortex-M4 odpowiednio w podsystemach Wi-Fi i Bluetooth. Chociaż procesor Arm Cortex-M3 nie jest dostępny dla kodu klienta, wykorzystuje on oprogramowanie układowe firmy Cypress, które obsługuje operacje Wi-Fi oraz dodatkowe funkcje, w tym opisane poniżej funkcje odciążania. Procesor Arm Cortex-M4 w podsystemie Bluetooth uruchamia oprogramowanie układowe kontrolera Bluetooth, stos Bluetooth i profile. Ponadto rdzeń ten może uruchamiać kod klienta zaprogramowany za pomocą zestawu rozwojowego oprogramowania (SDK) WICED firmy Cypress.

Stosowanie metod oszczędzania energii w bezprzewodowych projektach IoT

Mikrokontroler PSoC 6 i moduł łączności bezprzewodowej zostały zaprojektowane tak, aby zminimalizować zużycie energii i posiadają wszechstronny zestaw trybów zasilania i możliwości redukcji mocy. Firma Cypress wspiera tę energooszczędną platformę sprzętową oferując uzupełnienie oprogramowania zaprojektowane w celu uproszczenia korzystania z funkcji oszczędzania energii w bezprzewodowych projektach IoT. Deweloperzy mogą na przykład z łatwością wdrożyć wspomnianą wcześniej metodę oszczędzania energii z funkcją odpytywania za pomocą niezależnej wbudowanej biblioteki Wi-Fi host driver (WHD).

Wystarczy, że wywołają funkcję interfejsu API WHD whd_wifi_enable_powersave(), aby włączyć funkcję oszczędzania energii z funkcją odpytywania oraz whd_wifi_disable_powersave(), aby później ją wyłączyć. Po włączeniu, stacja STA powiadamia punkt dostępowy (AP) o przejściu w stan uśpienia. Jak wspomniano wcześniej, punkt dostepowy (AP) buforuje wszelkie ramki przeznaczone dla uśpionych stacji STA i konfiguruje ramki beacon, aby wskazać, że ramki są dostępne. Kiedy stacja STA budzi się, aby sprawdzić ramkę beacon, rozpoczyna standardowy proces pobierania tych ramek.

Chociaż mechanizm oszczędzania energii jest przeznaczony dla stacji STA o niskich cyklach pracy, podobna metoda, zwana oszczędzaniem energii funkcji odpytywania, obsługuje stacje STA o wyższych wymaganiach dotyczących przepustowości. W tym przypadku stacja STA wysyła ramkę danych z funkcją zerową, która inicjuje transfer ramki z punktu dostępowego (AP).

Oszczędność energii z funkcją odpytywania i bez niej pozwala urządzeniom na ograniczenie pracy odbiorników, ale nie pomaga wyeliminować niepotrzebnych transakcji związanych z pracą w sieci. Na przykład, każda sieć, w tym sieć IoT WLAN, będzie prowadzić niepożądaną transmisję pakietów po podłączeniu do sieci zewnętrznej, w szczególności do publicznego Internetu. Możliwość odfiltrowania tych pakietów w ramach podsystemu komunikacyjnego bez angażowania głównego procesora urządzenia IoT pozwoliłaby procesorowi na pozostanie w trybie uśpienia o niskiej mocy.

Poza niepożądanymi pakietami, również standardowy ruch sieciowy może spowodować niepotrzebne wybudzanie głównego procesora. Na przykład, standardowy protokół ARP (ang. address resolution protocol) Wi-Fi wykorzystuje pakiety emisji w ramach funkcji mapowania adresu IP powiązanego z urządzeniem na adres MAC urządzenia. Ta operacja jest niezbędna do normalnego działania sieci WLAN, pozwalając urządzeniom na dotarcie do innych urządzeń w tej samej sieci, wykrycie duplikatów adresów IP i powiadomienie innych urządzeń o zmianie adresu IP z jakiegokolwiek powodu.

Pakiety żądań i odpowiedzi ARP mają tak zasadnicze znaczenie dla operacji sieciowych, że procesor główny urządzenia IoT może być przeciążony samym tylko przetwarzaniem żądań i odpowiedzi ARP. Jeśli interfejs WLAN urządzenia po prostu przekazuje żądania i odpowiedzi pomiędzy hostem a siecią, każde żądanie ARP wybudza hosta i to czasami zupełnie niepotrzebnie.

Natomiast moduł łączności bezprzewodowej firmy Murata ingeruje w tę wymianę, odciążając obsługę żądań ARP z mikrokontrolera PSoC 6. Gdy mikrokontroler PSoC 6 jest w inny sposób zaangażowany w swoją podstawową funkcję w ramach aplikacji IoT, zachowuje ona cykle procesora tak, by mógł on wykonywać działania w aplikacji. Jeśli mikrokontroler PSoC 6 znajduje się w trybie uśpienia, funkcja ta pomaga zmniejszyć ogólne zużycie energii urządzenia IoT. Przy włączonej funkcji odciążania ARP z automatyczną odpowiedzią urządzeń równorzędnych, moduł Murata wybudza mikrokontroler PSoC 6 tylko wtedy, gdy przychodzące żądanie ARP nie może zostać przetworzone przez wpisy zbuforowane w module Murata (ilustracja 4, po lewej).

Schemat funkcji odciążania ARP przechwytuje żądania ARP z sieci lub głównego procesora (kliknij, aby powiększyć)Ilustracja 4: przy włączonej funkcji odciążania ARP przechwytuje ona żądania ARP z sieci (po lewej) lub z głównego procesora (po prawej), automatycznie odpowiadając, gdy pamięć podręczna przetworzy żądanie (u góry), wybudzając procesor, gdy pamięć podręczna nie jest w stanie tego zrobić (u dołu). (Źródło ilustracji: Cypress Semiconductor)

To samo podejście może również pomóc zmniejszyć zużycie energii w sieci WLAN. Podczas normalnej pracy, moduł Murata może monitorować (snoop) ruch sieciowy i buforować pary IP:MAC z innych odpowiedzi ARP. Używając autoodpowiedzi hosta, moduł Murata może odpowiadać na żądania ARP z mikrokontrolera PSoC 6, wywołując podsystem radiowy tylko wtedy, gdy żądanie mikrokontrolera PSoC 6 nie może zostać zrealizowane w ramach pamięci podręcznej ARP (ilustracja 4, po prawej).

Prosta implementacja funkcji oszczędzania energii w oparciu o menu

Wdrożenie funkcji odciążania ARP przy użyciu zestawu Pioneer jest niezwykle proste. Narzędzie Cypress Device Configurator zawarte w zintegrowanym środowisku rozwojowym (IDE) urządzenia ModusToolBox (MTB) firmy Cypress umożliwia deweloperom wdrożenie tej funkcji za pomocą kilku opcji w menu. Firma Cypress dostarcza przygotowane pliki konfiguracyjne, które pozwalają deweloperom na szybki wybór różnych konfiguracji, w tym odciążanie ARP.

Korzystanie z narzędzia Device Configurator do jednoznacznego definiowania konfiguracji jest prawie tak samo proste. Deweloperzy używają opcji w menu narzędzi, aby włączyć wtyk wybudzania hosta, nazwać go (CYBSP_WIFI_HOST_WAKE) i ustawić parametry wtyków (ilustracja 5).

Wygląd narzędzia Device Configurator firmy Cypress (kliknij, aby powiększyć)Ilustracja 5: narzędzie Device Configurator firmy Cypress umożliwia deweloperom korzystanie z menu w celu ustawienia opcji oszczędzania energii dostępnych dzięki płytce Pioneer. (Źródło ilustracji: Cypress Semiconductor)

Na karcie Wi-Fi tego narzędzia deweloperzy mogą włączać wybudzanie hosta i ustawiać wtyk pod wcześniej wprowadzoną nazwą (CYBSP_WIFI_HOST_WAKE). Dodatkowe pozycje menu umożliwiają włączenie funkcji odciążania ARP, ustawienie funkcji automatycznej odpowiedzi urządzeń równorzędnych, włączenie wyszukiwania w sieci i ustawienia czasu wygaśnięcia wpisu w pamięci podręcznej (ilustracja 6).

Obraz dodatkowych kart menu w narzędziu Device Configurator firmy CypressIlustracja 6: korzystając z dodatkowych kart menu w narzędziu Device Configurator firmy Cypress, deweloperzy mogą włączyć odciążanie ARP oraz specyficzne funkcje, takie jak automatyczna odpowiedź urządzeń równorzędnych. (Źródło ilustracji: Cypress Semiconductor)

Po zapisaniu konfiguracji, deweloperzy po prostu generują pliki źródłowe, budują zmodyfikowany projekt i programują płytkę Pioneer. Korzystając z podobnej procedury, mogą też skonfigurować moduł Murata w celu odciążenia filtrowania pakietów Wi-Fi i zająć się innymi popularnymi typami operacji sieciowych. To samo podejście pozwala nawet urządzeniu IoT wykonywać protokół kontroli transmisji (TCP) utrzymania aktywności Wi-Fi niezbędny do utrzymania łączności Wi-Fi - wszystko bez wybudzania głównego procesora urządzenia IoT.

W normalnych warunkach pracy w sieci WLAN, klient i serwer główny utrzymują połączenia TCP poprzez wymianę pakietów utrzymania aktywności. Jeśli którakolwiek ze stron tej wymiany nie otrzyma odpowiedzi po kilku próbach, kończy ona połączenie. Nawet w urządzeniach IoT z ograniczeniem mocy, procesor główny musi nieustannie wybudzać się, aby uczestniczyć w tej wymianie lub używać jeszcze większej ilości energii do ciągłego nawiązywania połączeń.

Podobnie jak w przypadku odciążania ARP, deweloperzy mogą korzystać z narzędzia Device Configurator, aby włączyć funkcję odciążania utrzymania aktywności protokołu kontroli transmisji (TCP). Po włączeniu tej funkcji, moduł Murata automatycznie wykonuje protokół utrzymania aktywności bez wybudzania mikrokontrolera PSoC 6 (ilustracja 7).

Schemat urządzenia WLAN automatycznie wykonującego protokół utrzymania aktywności (kliknij, aby powiększyć)Ilustracja 7: kiedy funkcja odciążania utrzymania aktywności protokołu kontroli transmisji (TCP) jest włączona, moduł łączności bezprzewodowej (urządzenie WLAN) automatycznie wykonuje protokół utrzymania aktywności, pozwalając głównemu procesorowi na pozostanie w trybie uśpienia o niskiej mocy. (Źródło ilustracji: Cypress Semiconductor)

Chociaż firma Cypress zaleca korzystanie z narzędzia Device Configurator jako najłatwiejszej drogi wdrożenia, deweloperzy mogą również ręcznie implementować funkcje oszczędzania energii platformy Cypress, takie jak odciążanie ARP, filtrowanie pakietów, odciążanie utrzymania aktywności protokołu kontroli transmisji (TCP) i inne.

Podstawą obu podejść jest oprogramowanie pośredniczące asystenta niskiej mocy (LPA) firmy Cypress, które obsługuje funkcje oszczędzania energii dla Wi-Fi, Bluetooth a także mikrokontrolera PSoC 6 orazinne funkcje poza wymienionymi w niniejszym artykule.

Po zdefiniowaniu konfiguracji przez dewelopera za pomocą menu lub poprzez ręczne dodanie kodu konfiguracyjnego, oprogramowanie układowe LPA działa w sposób przejrzysty dla aplikacji, automatycznie synchronizując wykorzystanie funkcji sprzętowych i możliwości oprogramowania o niskiej mocy.

Podsumowanie

Potrzeba ciągłej łączności bezprzewodowej i wydłużonego czasu pracy baterii w urządzeniach IoT stawia przed projektantami sprzeczne wymagania, które dodatkowo są utrudniane przez konieczność obsługi zarówno sieci Wi-Fi, jak i technologii Bluetooth. Jak widać, poprzez łączenie podsystemu radiowego zdolnego do odciążania zadań przetwarzania sieci z mikrokontrolerem o niskiej mocy, zestaw CY8CKIT-062S2-43012 Wi-Fi BT Pioneer firmy Cypress Semiconductor pozwala projektantom spełnić wymagania w zakresie łączności bezprzewodowej IoT i niskiej mocy.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Informacje o autorze

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey