Jak uniknąć błędów podczas projektowania na potrzeby IoT

Tworzenie nowego urządzenia, gotowego do pracy w instalacjach IoT, może wiązać się z wyzwaniami trudnymi nawet dla doświadczonych projektantów. Niezależnie czy sprawa dotyczy urządzenia noszonego na ciele, gadżetu z zakresu automatyki domowej czy inteligentnego czujnika używanego w procesie przemysłowym, istnieje wiele pułapek, które tylko czekają na nieostrożnego inżyniera, ale których da się uniknąć dzięki starannemu planowaniu.

W niniejszym artykule przyglądamy się niektórym z tych problemów. Wskazujemy co się może zdarzyć i jak tego uniknąć. Warto zwrócić uwagę, że koncentrujemy się na urządzeniach krańcowych, takich jak czujniki, aktuatory i routery, a nie na aspektach dotyczących samej infrastruktury IoT – komunikacji na dużą odległość przez Internet i zasobów do przetwarzania danych w chmurze. Problemy wiążące się z tymi tematami są nieco odmienne.

Sukces urządzenia krańcowego w systemie Internetu Rzeczy, mierzony od samego wdrożenia, aż do końca jego pracy, zależy nie tylko od dobrego projektu i produkcji, ale też od adekwatnej instalacji, konfiguracji i konserwacji. Trzeba pamiętać o regularnym wymienianiu baterii, jeśli jest to potrzebne oraz o wprowadzaniu niezbędnych aktualizacji oprogramowania.

Zaczynamy nasze porady od początkowego etapu, czyli planowania, a następnie przejdziemy do omówienia problemów, które mogą się pojawić w trakcie projektowania, produkcji i instalacji urządzeń krańcowych w IoT.

Planowanie projektu

Z badań firmy Cisco, przeprowadzonych w maju 2017 roku, wynika że 60% inicjatyw w świecie IoT zatrzymuje się na etapie koncepcji i tylko 26% firm dochodzi do wniosku, że ich pomysły przeistoczą się w sukces. Co więcej, 1/3 ze wszystkich ukończonych projektów nie jest uznawana za udane.

W ramach postu na blogu „IoT Agenda” w serwisie Tech Target, autor sugeruje że przyczynami porażki może być nowy, nieprzetestowany model biznesowy i brak sprawdzonych strategii. Zamiast rzucać się na projekty IoT, firmy mogą uniknąć porażki poprzez podejście stopniowe, w którym testowanie swoich koncepcji może odgrywać ważną rolę. I choć szybkie skalowanie projektu by pokonać konkurencję może być kuszące, zespoły mogą osiągnąć znacznie lepsze rezultaty poprzez testowanie swoich pomysłów na małych przykładach, a następnie poprzez korzystanie ze zdobytej wiedzy i zmienianie projektu zanim przejdzie się do masowego wdrożenia.

Wyzwaniem dla zespołu będzie też sytuacja, w której konieczne jest nauczenie się zbyt wielu technik na potrzeby jednego projektu. Może to powodować opóźnienia i niedotrzymywanie terminów z powodu inżynierów, którzy koncentrują się na czym innym niż powinni. I o ile wyłożenie odpowiednich środków z budżetu oraz zatrudnienie wystarczająco dużego zespołu jest niezbędne, równie ważne jest upewnienie się, że zespół ten ma odpowiedni zestaw umiejętności.

W rzeczywistości, projekty IoT wymagają posiadania pracowników o jednych z najtrudniejszych do znalezienia na rynku kompetencjach. Gdy zapytano specjalistów od Internetu Rzeczy o to, jakie umiejętności są najbardziej potrzebne do osiągnięcia sukcesu w IoT i o które z nich najtrudniej na rynku pracy, w pierwszej kolejności wskazano analizę danych i znajomość technik Big Data (75% i 35%), następnie tworzenie oprogramowania do systemów wbudowanych (71% i 33%), a na trzecim miejscu bezpieczeństwo IT (68% i 31%).

Jednym ze sposobów poradzenia sobie z tymi problemami może być uproszczenie procesu rozwoju produktu na tyle, na ile to możliwe, poprzez skorzystanie ze środowisk deweloperskich, takich jak ekosystem Raspberry Pi. Przykładowo, materiały na temat Raspberry Pi, dostępne w firmie Farnell, obejmują zestawy startowe, takie jak pokazano na rysunku 1., płytki deweloperskie, zgodne z wymaganiami regulatorów zajmujących się komunikacją bezprzewodową, płytki rozszerzeń, obudowy, kable, złącza i inne akcesoria – a wśród nich także moduły audiowizualne. Produkty te pozwalają zmniejszyć problemy związane z samą podstawową integracją i skoncentrować się na kluczowych elementach aplikacji tak szybko, jak to tylko możliwe.

Raspberry Pi 3 Model B+

Ilustracja 1: Zestaw startowy Raspberry Pi 3 Model B+

Zgodność ze standardami

Na krańcach systemu IoT może znajdować się mieszanina różnych urządzeń, podłączonych do routera lub bramki, które zajmują się komunikacją pomiędzy wszystkimi tymi urządzeniami, a dalszą infrastrukturą IoT. Dlatego też w artykule w serwisie Network World rekomenduje się, by projektanci wybrali platformę IoT, która jest w stanie obsługiwać mieszane protokoły na potrzeby zbierania danych. Do listy protokołów, jakie warto uwzględnić należą m.in. OPC-UA, BACNET i MODBUS oraz niektóre nowsze standardy, takie jak ZeroMQ, ZigBee, BLE i Thread. Tak samo ważne jest, by platforma była modularna w swoim wsparciu protokołów, umożliwiając dostosowanie obecnych oraz stworzenie nowych sposobów komunikacji z elementami sieci.

Bardziej szczegółowe informacje na temat problemów ze standardami IoT można znaleźć w projekcie 2413 organizacji IEEE, zatytułowanym „A standard for an Architectural Framework for the IoT”. Przedstawiciele IEEE tak komentują ten temat:

„Przewiduje się, że Internet Rzeczy (IoT) będzie jednym z najbardziej znaczących czynników rozwoju na różnych rynkach technologicznych. Większość aktualnych czynności standaryzujących ogranicza się do bardzo specyficznych dziedzin i w efekcie tworzy oddzielne, często redundantne względem siebie ‘wyspy’ środowisk. Środowisko, jakie definiuje nowy standard będzie promowało interakcje pomiędzy różnymi obszarami zastosowań, pomagało we współpracy pomiędzy systemami oraz zwiększało ich kompatybilność funkcjonalną. Będzie tym samym dalej napędzać wzrost rynku IoT. Przyjęcie takiego ujednoliconego podejścia do tworzenia systemów IoT zredukuje fragmentację rynku i stworzy masę krytyczną, na którą składać się będą działania wielu firm i organizacji na całym Świecie.”

Który procesor wybrać?

Sukces większości produktów IoT zależy od posiadania dokładnie takiej mocy obliczeniowej, jaka jest potrzebna. Oczywiście, niewystarczająca moc sprawi, że urządzenie nie będzie w stanie realizować zadanej aplikacji. Jednakże jeśli procesor jest zbyt potężny, może to spowodować inne problemy, związane z powierzchnią płytki drukowanej, chłodzeniem, poborem mocy i kosztem.

Jednym ze sposobów na dobranie odpowiedniego procesora do aplikacji jest przejrzenie rozległej rodziny procesorów, takich jak ARM Cortex, które zostały poniekąd zaprojektowane z myślą o aplikacjach IoT, począwszy od sensorów, a kończąc na serwerach. Zostało to pokazane na rysunku 2.

Rdzeń Cortex-A32 dla wbudowanych aplikacji IoT jest skalowalny i wstecznie kompatybilny ze starszymi układami. To ważne, bo sprawia że projektant będzie miał pewność, że jego produkt będzie dalej ewoluował i będzie mógł w przyszłości być konkurencyjny lub korzystać z nowych możliwości technologicznych. Wspomniany rdzeń został przygotowany z myślą o aplikacjach przemysłowych, medycznych, automatyce domowej i urządzeniach noszonych na ciele. Jest w stanie pracować pod kontrolą wielu systemów operacyjnych, a w tym systemów czasu rzeczywistego (RTOS) i z powiązanym firmwarem oraz z różnymi narzędziami deweloperskimi. Ponadto jest dostępny w układach wytwarzanych przez wielu producentów. Oferuje także o 25% wyższą sprawność energetyczną względem rdzenia Cortex-A7.

Rdzenie z rodziny Cortex-M oferują następny wybór możliwości:

Cortex-M0: Najmniejszy zestaw funkcji i mocy obliczeniowej,

Cortex-M0+: Najwyższa sprawność energetyczna,

Cortex-M3: Równowaga pomiędzy zużyciem energii a wydajnością,

Cortex-M4: Mikrokontrolery z dodatkowymi obwodami, interfejsami i funkcjami DSP,

Cortex-M7: Najwyższa wydajność.

Najnowsze rdzenie ARM z rodziny Cortex-M: układy Cortex-M23 i Cortex-M33 bazują na sukcesie innych Corteksów i wprowadzają technikę ARM TrustZone, umożliwiającą bezpieczne odizolowanie procesów, nawet w najmniejszych procesorach. A tak, jak to podkreślamy w niniejszym artykule, bezpieczeństwo jest jednym z kluczowych aspektów IoT.

Procesory ARM

Ilustracja 2: Procesory z rdzeniami ARM przeznaczone są do różnorodnych aplikacji IoT

Procesory konfigurowalne: W niektórych aplikacjach, takich jak urządzenia noszone na ciele, uzyskanie odpowiedniego stosunku pomiędzy mocą a wydajnością może być na tyle dużym wyzwaniem, że konieczne staje się użycie silnie konfigurowalnego, rozszerzalnego i energooszczędnego układu. Mikrokontrolery tego typu można dostosować pod kątem wewnętrznej architektury (określić liczbę rejestrów, przerwań, nadać priorytety przerwaniom, itp.), by uzyskać dokładną równowagę pomiędzy wydajnością a pobieraną mocą.

Układ Synopsys DesignWare ARC EM4 ma zaawansowaną, konfigurowaną architekturę RISC i został zaprojektowany tak, by pomóc pokonać problem energochłonności i niewystarczającej mocy obliczeniowej w systemach IoT i innych aplikacjach. Podzespół ten można zoptymalizować za pomocą konfigurowalnych, sprzętowych rozszerzeń, dostosowując go do konkretnej aplikacji czujnikowej. Na przykład tak, by obniżyć pobór mocy lub całkowite zużycie energii.

Typowe opaski do fitnessu, monitorują liczbę wykonanych kroków, przebyty biegiem dystans, tętno serca, spalone kalorie i jakość snu. Procesor ARC EM4 mógłby być użyty do filtrowania i przetwarzania danych z różnych sensorów, a następnie przekazywania ich przez transceiver Bluetooth. Jest w stanie równocześnie zarządzać zużyciem mocy i obsługiwać funkcje systemowe urządzenia.

Wybór pamięci i ich rodzaje

Popularyzacja urządzeń IoT przyspieszyła ewolucję technologii pamięci i innych komponentów. W efekcie na rynku dostępnych jest wiele różnych rodzajów pamięci. Dokonanie odpowiedniego wyboru zależy od priorytetów konkretnego projektu. Na blogu Jaxenter, poświęconym programowaniu w języku Java, przeanalizowano ten temat, wymieniając m.in. następujące czynniki:

Koszt. Jest to czynnik istotny w każdym projekcie. Im droższa będzie wybrana pamięć, tym droższe będzie urządzenie dla klienta. Równowagę pomiędzy kosztem a wydajnością należy dostosować w odniesieniu do warunków rynkowych.

Rozmiar. Większość urządzeń IoT jest małych, więc także i zastosowane komponenty muszą być małe. Ilość przestrzeni potrzebna na pamięć powinna zostać ograniczona do minimum, gdyż im większa powierzchnia zajmowana przez instalowane układy, tym wyższy koszt.

Pobór mocy. Większość urządzeń IoT pracuje z zasilaniem bateryjnym lub z akumulatorami ładowanymi za pomocą technik zbierania energii z otoczenia. Dlatego ważnym jest by wziąć pod uwagę moc pobieraną przez wybraną pamięć i wybrać taką opcję, która zużywa najmniejszą ilość mocy i wymaga najniższego napięcia. Zarówno w trybie aktywnego użytkowania, jak i w czasie spoczynku.

Czas uruchamiania. Użytkownicy oczekują szybkiej pracy urządzeń, dlatego pamięć powinna umożliwiać szybkie uruchamianie sprzętu. Zaimplementowanie techniki uruchamiania kodu bezpośrednio w pamięci, bez potrzeby kopiowania jej zawartości do oddzielnej kości EEPROM skraca czas uruchamiania systemu oraz zmniejsza łączne koszty, gdyż zapotrzebowanie na RAM w mikrokontrolerze maleje.

Wzięcie pod uwagę tych wszystkich aspektów pozwoli dokonać odpowiedniego wyboru pamięci dla urządzenia IoT. Ale jakie są dostępne opcje?

Tradycyjna, zewnętrzna pamięć Flash: Jest niedroga, niezawodna i nadaje się do wielu zastosowań. Cechuje się wysoką gęstością upakowania danych i możliwością wykonywania kodu bezpośrednio z niej, bez pobierania zbyt dużej mocy. Pamięć Flash dzieli się na dwa rodzaje: NOR Flash i NAND Flash. NOR pozwala na wykonywanie w niej kodu (technika XIP), ale NAND już nie. NAND lepiej się nadaje do aplikacji wymagających przetwarzania dużych ilości danych, a więc do urządzeń noszonych na ciele, które potrzebują niedrogiej, pojemnej pamięci. Tymczasem NOR Flash jest używana przede wszystkim do urządzeń takich jak odbiorniki GPS lub czytniki elektroniczne, które nie potrzebują tak dużej ilości pamięci.

Wbudowana pamięć Flash: Pamięć eFlash, zaprezentowana na rysunku 4., staje się coraz bardziej popularna w urządzeniach IoT, które przechowują krytyczne dane i kod. Niektórzy eksperci przewidują, że eFlash stanie się najbardziej popularnym typem pamięci w Internecie Rzeczy, a to za sprawą jej wysokiej wydajności i gęstości upakowania danych, które umożliwiają jej pracę w większości aplikacji opartych o mikrokontroler. Można ją bardzo elastycznie stosować i może być programowana także po instalacji urządzenia w terenie.

Pamięć MCP: Układy MCP (Multi Chip Package) to takie, w których w jednej obudowie zintegrowane są CPU, GPU, pamięć operacyjna i pamięć nieulotna. Obecnie podzespoły MCP są powszechnie stosowane w smartfonach i tabletach, ale oferują większą wydajność i lepsze upakowanie układów realizujących poszczególne funkcje na potrzeby urządzeń IoT. Trwają prace nad przygotowaniem podzespołów MCP, które pobierałyby mniej mocy, ale cechowałyby się tym samym poziomem swobody użytkowania i możliwości obliczeniowych.

Karty MMC. Wbudowane karty MMC (Embedded Multi-Media Card – eMMC) cechują się dużą pojemnością i rozsądną ceną, a jednocześnie świetną wydajnością i niskim poborem mocy. W kartach tych stosuje się specjalnie zaprojektowane sterowniki, pozwalające na lepszą integrację ich w poszczególnych aplikacjach. Tak naprawdę, wydajność eMMC jest bardzo wysoka, gdyż układy te mogą jednocześnie obsługiwać wiele zadań, efektywnie zwiększając szybkość dostępu do danych o nawet 30%. Karty te cechują się też wyższym poziomem bezpieczeństwa, gdyż rozszerzają funkcję zwykłej ochrony przed zapisem, uniemożliwiając użytkownikowi nadpisanie danych bez wcześniejszej autoryzacji.

Wymagania co do firmware’u

Urządzenia IoT pracują pod kontrolą programu zapisanego w firmwarze. Według serwisu Particle, sukces firmware’u zależy od wielu czynników i umiejętności:

  • Zbudowania stabilnej architektury firmware’u, która jest skalowalna i dobrze udokumentowana, przy jednoczesnym wykorzystaniu profesjonalnych narzędzi i języków takich jak C i C++.

  • Zaprojektowania na potrzeby określonych systemów, opartych o mikrokontroler o małym poborze mocy, niewielkiej ilości pamięci, braku mechanizmów zarządzania pamięcią i braku bezpośrednich interfejsów użytkownika, takich jak klawiatury czy wyświetlacze.

  • Zaprojektowania pod kątem stabilności i obsługi błędów, uwzględniając przy tym takie techniki jak watchdogi, timery, algorytmy korekcji błędów i automatyczne przywracanie pracy po wystąpieniu błędu systemowego.

  • Zwrócenia dużej uwagi na wejścia i wyjścia – a w tym na źródła danych z sensorów, cyfrowe przetwarzanie sygnałów, lokalną kompresję i przechowywanie danych.

  • Minimalizacji poboru mocy poprzez napisanie firmware’u, który pozwala urządzeniu wchodzić w tryb uśpienia i pobierać faktyczne, wymagane minimum energii.

  • Optymalizacji przepustowości transmisji komórkowej z urządzenia do chmury.

  • Stałego przeglądania oprogramowania i jego aktualizacji przez łącze bezprzewodowe, by zwiększyć stabilność i funkcjonalność zainstalowanych już urządzeń (pozwala to zwiększyć wartość urządzeń, bez konieczności modyfikacji sprzętu).

Zarządzanie firmwarem

Powyżej wspomnieliśmy o konieczności zapewniania regularnych aktualizacji firmware’u dla urządzeń krańcowych IoT. Wyobraźmy sobie wielki targ, na którym rozmieszczono urządzenia rozgłaszające informacje o oferowanych produktach. Dostęp do tych urządzeń może nie być łatwy, a ich liczba może sprawiać, że niemożliwe staje się przeprogramowanie ich wszystkich pojedynczo, gdy już zostały zainstalowane. Dlatego gdy powstaje nowa funkcja, lub wykrywany jest błąd w oprogramowaniu, które wymagają ponownego wgrania oprogramowania, możliwość zdalnego, bezprzewodowego zainstalowania firmware’u pozwala zaoszczędzić dużo czasu.

W artykule w serwisie Embedded Computing Design zidentyfikowano trzy podstawowe powody, dla których urządzenia powinny wspierać mechanizm aktualizacji OTA (Over-The-Air):

  • Rozległe instalacje różnorodnych urządzeń: Liczba urządzeń, a nawet samych typów urządzeń, odgrywa bardzo ważną role w sieciach rozproszonych. Zestandaryzowany interfejs OTA zapewnia możliwość wykorzystania tej samej architektury w wielu urządzeniach w sieci. Przykładem może być inteligentne oświetlenie na stadionie: nawet jeśli silne światła skierowane na murawę i światła na korytarzach mocno różnią się parametrami, standardowy interfejs OTA z użyciem BLE może być wykorzystany w jednych i drugich.
  • Zmieniające się wymagania i nowe funkcje: Internet Rzeczy rozwija się i szybko zmienia rynek, w efekcie czego regularnie powstają nowe wymagania względem produktów i tworzone są nowe funkcje. Zagrożenia bezpieczeństwa i prywatności są jednymi z najsilniejszych czynników, napędzających te zmiany. Aby ochronić się przed nowymi atakami wirusowymi, firmware można wzbogacać o poprawki oraz o bardziej bezpieczne algorytmy, a staje się to możliwe właśnie dzięki aktualizacjom OTA.
  • Krytyczna potrzeba skrócenia czasu wprowadzenia produktu na rynek: IoT mają bardzo krótkie cykle projektowania i przez to nieustannie trzeba wprowadzać innowacyjne i nowoczesne funkcje. Najczęściej spotykanym podejściem jest zaprojektowanie sprzętu na wyrost, tak by mógł on spełniać potrzeby ewoluującego rynku przez dłuższy czas. Bezprzewodowe, zdalne aktualizacje pozwalają na wdrażanie rozwiązań fazami. Przykładowo, początkowy projekt termostatu może zostać szybko przygotowany i wdrożony, tak by używał tylko czujnika temperatury. Następnie za pomocą aktualizacji można włączyć w nim obsługę czujnika wilgotności. Należy przy tym zaznaczyć, że podejście to wymaga dobrego przemyślenia sprzętu i zaplanowania przyszłych aktualizacji oprogramowania już w fazie ustalania architektury sprzętowej projektu.

Jednakże implementacja OTA może też wiązać się z problemami, których zespoły rozwijające produkty powinny być świadome. Przykładowo, dążenie do masowego wdrożenia produktu może zachęcić dział marketingu do bazowania swoich działań na oprogramowaniu, które da się zaktualizować w przyszłości, a które może nie być wystarczająco przetestowane ani zoptymalizowane w momencie wprowadzenia urządzenia na rynek.

Dodatkowo, częste aktualizacje mogą być źle postrzegane przez użytkowników końcowych. Zespoły tworzące rozwiązania powinny starannie zastanowić się nad konsekwencjami takich decyzji i nałożyć ograniczenia na OTA, tak by nie nadużywać tej funkcji.

Zarządzanie oprogramowaniem aplikacyjnym

W ekosystemie IoT, pierwszeństwo dotarcia z produktem na rynek jest bardzo ważnym celem, który często jest osiągany kosztem bezpieczeństwa, jakości i niezawodności.

Wg serwisu Information Age, organizacje powinny przyjąć cztery ważne praktyki podczas rozwijania oprogramowania na potrzeby IoT, by spełnić potrzeby klientów, uniknąć wpadek i osiągnąć sukces:

Przeglądanie kodu: Odpowiednie przeglądanie kodu i powtarzanie testów musi być priorytetowe. Producenci muszą informować o tym zespoły tworzące oprogramowanie i żądać bardziej restrykcyjnej polityki monitorowania jakości oprogramowania.

Wysoka złożoność aplikacji IoT czyni oprogramowanie podatnym na uchybienia z zakresu bezpieczeństwa i inne na usterki.

Jedna zła transakcja pomiędzy aplikacją a sensorem może spowodować całkowity błąd systemu. Firmy po prostu nie mogą sobie na to pozwolić.

Ocenianie oprogramowania: Ciągłe wdrożenia w nowoczesnym, połączonym ze sobą świecie, to normalna sprawa. Aktualizacje pojawiają się non-stop i często są publikowane nawet kilka razy dziennie.

Odpowiedzialność za zapewnienie jakości oprogramowania, które wchodzi w interakcje z urządzeniami IoT jest większe niż kiedykolwiek. Jeśli oprogramowanie nie jest stale monitorowane, a jego kod oceniany, błędy są niemalże gwarantowane.

Odpowiedzialność: Kadra zarządzająca musi wziąć odpowiedzialność za zapewnienie jakości. Jakikolwiek producent, który nie prowadzi szeregu analiz potrzebnych do śledzenia ryzyka związanego czy to z niezawodnością, bezpieczeństwem czy z wydajnością, zaniedbuje swoją odpowiedzialność przed klientami i innymi firmami, które są zależne od tego producenta.

Zarząd powinien dawać przykład i komunikować bezpośredni związek pomiędzy jakością oprogramowania i bezpieczeństwem. Jest to w najlepszym interesie zarządu, gdyż podatności bezpieczeństwa spowodowane słabej jakości kodem lub błędnymi decyzjami odnośnie architektury systemu mogą być najdroższymi do naprawienia.

Wsparcie dla idei: Oprócz wymienionych powyżej, musi nastąpić zmiana kulturalna, która pozwoli na szerzenie wiedzy na temat nowych standardów. W procesie tym powinni wspólnie uczestniczyć projektanci i kadra zarządzająca.

Jak dotąd podjęto znaczące kroki, tworząc inicjatywy dla producentów i działów IT, by stale monitorowali jakość swojego oprogramowania.

W 2015 roku, Grupa OMG (Object Management Group) zatwierdziła zestaw globalnych standardów, zaproponowanych przez Konsorcjum Na Rzecz Jakości Oprogramowania IT (CISQ – Consortium for IT Software Quality), by wesprzeć firmy w precyzyjnym określeniu i osiąganiu celów w zakresie jakości oprogramowania.

Zarządzanie mocą

Jak największa minimalizacja poboru mocy przez układ SoC to niemal zawsze priorytet dla projektantów urządzeń końcowych, szczególnie jeśli dany sprzęt jest zasilany bateryjnie lub musi polegać na zbieraniu energii z otoczenia. Nadmierny pobór mocy spowoduje zbyt szybkie wyczerpanie baterii lub akumulatora i może spowodować problemy z przegrzewaniem.

Publikacja przygotowana przez Sparsha Mittala z Future Technology Group w USA i zatytułowana „Przegląd technik zwiększania sprawności energetycznej we wbudowanych systemach obliczeniowych” opisuje zestaw technik, które pozwalają zmniejszyć pobór mocy:

  • Zmniejszenie napięcia – a w tym wykorzystanie procesorów zasilanych dwoma napięciami, dynamiczne skalowanie napięcia zasilania oraz obniżanie napięcia.
  • Redukcja częstotliwości taktowania – a w tym taktowanie z częstotliwością niższą niż nominalna oraz dynamiczne jej skalowanie.
  • Redukcja pojemności – a w tym omówienie coraz bardziej zintegrowanych obwodów, które pozwalają zastąpić ścieżki na płytce PCB, pomiędzy dwoma układami, za pomocą metalizacji w układzie scalonym, cechującej się relatywnie małą pojemnością i łączącej dwie sekcje pojedynczego scalaka; Dodatkowo, omówienie dielektryków o małej stałej dielektrycznej itp.
  • Techniki takie, jak bramkowanie zegara i praca globalnie asynchroniczna z lokalnie synchroniczną (GALS), które mogą posłużyć jako sposób na zmniejszenie pojemności rozładowywanej i ładowanej w każdym cyklu zegara, lub jako metoda na lokalne zmniejszenie częstotliwości taktowania niektórych sekcji układu scalonego.
  • Różnorodne techniki zmniejszające przełączanie sygnałów – liczby sytuacji, gdy procesor sięga do zewnętrznych magistral danych, kodowanie przesyłanych danych, takie jak kodowanie Graya lub protokoły mocy.
  • Poświęcanie gęstości upakowania tranzystorów na rzecz zwiększenia częstotliwości.
  • Nakładanie warstw przewodzących ciepło wewnątrz CPU.
  • Ponowne wykorzystanie energii zgromadzonej w kondensatorach (zamiast pozbycia się jej poprzez emisję ciepła w tranzystorach) – a w tym obwody adiabatyczne i obwody logiczne odzyskujące energię.
  • Optymalizacja kodu maszynowego – poprzez implementację opcji optymalizacyjnych w kompilatorze, które układają harmonogramy dla grup instrukcji wykorzystujących te same komponenty tak, by znacząco zmniejszyć moc procesora potrzebną do działania aplikacji.

Projekt anteny

Projekt anteny to kolejna dziedzina, w której wymagania stają się coraz większe ze względu na aplikacje IoT. Zarówno dostępna przestrzeń, jak i moc maleją, więc konieczne staje się kompensowanie tych ograniczeń poprzez coraz lepsze projekty anten. W przeciwnym razie niezawodność komunikacji bezprzewodowej urządzenia spadnie. Problem ten często się nasila w wyniku ekstremalnych interferencji i obecności innych układów emitujących fale elektromagnetyczne w bliskim otoczeniu.

Artykuł w serwisie Microwaves&RF opisuje, w jaki sposób balansowanie kosztem, rozmiarem, wysiłkiem projektowym i złożonością produkcji modułów IoT czyni decyzje inżynierskie odnośnie projektowania znacznie bardziej wyzywającymi. Typowe topologie anten stosowanych w IoT, obejmują wszelkiego rodzaju konstrukcje, począwszy od ścieżek na płytce drukowanej, do anten wbudowanych w układy scalone. Każda z topologii anten, zaprezentowanych na rysunku 6 wiąże się z innymi korzyściami i wadami, które zostały wymienione, by pomóc projektantom modułów IoT podejmować właściwe decyzje, odpowiednie do danej aplikacji.

Bezpieczeństwo urządzeń krańcowych

Urządzenia krańcowe IoT, tak jak każdy inny sprzęt podłączony do sieci, wymagają ochrony przed hakowaniem i innymi cyberatakami. Do potencjalnych problemów należą ochrona krytycznych zasobów, bezpieczne implementacje kryptograficzne, bezpieczne zdalne aktualizacje firmware’u, ochrona własności intelektualnej firmware’u i bezpieczne debuggowanie. Ochrona ta może być zapewniona na poziomie warstwy sprzętowej – w procesorze.

Przykładowo, rdzenie Cortex-M33 i Cortex-M23 oraz wszystkie rdzenie Cortex-A obsługują technologię ARM TrustZone, która zapewnia bezpieczne podstawy sprzętowe już w samym SoC. TrustZone to szeroko rozpowszechniona, wysokiej klasy technologia bezpieczeństwa, wykorzystywana m.in. w smartfonach z najwyższej półki. O ile obejmuje instrukcje kryptograficzne, potrzebne do efektywnej autentykacji i zabezpieczeń, rdzeń Cortex-A32 może także współpracować z układami rodziny TrustZone CryptoCell-700, które pozwalają sprzętowo przyspieszyć operacje kryptograficzne i obsłużyć zaawansowane funkcje bezpieczeństwa.

Wyładowania elektrostatyczne (ESD)

Niektóre z komponentów, używane w elektronice, są wrażliwe na statyczne ładunki elektryczne i mogą łatwo ulec uszkodzeniu podczas rozładowywania takich ładunków (ESD). Dotknięcie takiego podzespołu, punktu lutowniczego, lub pobliskiego elementu przewodzącego, przez osobę na której zgromadził się ładunek, może spowodować zniszczenie układu poprzez przepływ prądu przez ścieżkę do wrażliwego komponentu. Warto przy tym zauważyć, że ładunki o napięciu do 3000 V, jakie mogą uszkodzić niektóre podzespoły, nie są w ogóle odczuwane przez człowieka.

Problemy mogą być także spowodowane innymi zjawiskami elektrycznymi, związanymi z dopływem niepożądanej energii. Przykładowo, skoki napięcia mogą pojawić się podczas używania narzędzi lutowniczych, aparatury pomiarowej i innego osprzętu zasilanego elektrycznie. Urządzenie powinno być zaprojektowane tak, by zapobiec niepożądanym wyładowaniom elektrycznym.

W celu zapobiegania obu opisanym powyżej zjawiskom powinno się zorganizować bezpieczne strefy pracy, które będą redukowały ryzyko wystąpienia skoków napięć i wyładowań elektrycznych. Zagadnienie to podsumowuje artykuł firmy Circuit Technology Center Inc., opisując metody używania i przechowywania podzespołów, które należy stosować w bezpiecznych strefach:

  • Zmontowane płytki drukowane musza być przenoszone i używane tylko w odpowiednio wyznaczonych do tego obszarach.
  • Wyznaczone obszary muszą być okresowo sprawdzane, by zapewnić ich stałą ochronę. Do spraw, do których należy przywiązać największą uwagę należą:
    • odpowiednie metody uziemiania,
    • odprowadzanie ładunków z powierzchni roboczych,
    • odprowadzanie ładunków z podłóg,
    • wykorzystanie dmuchaw jonizujących.
  • Z wyznaczonych przestrzeni roboczych należy usunąć wszelkie obiekty powodujące powstawanie ładunków elektrostatycznych, a w tym wszelkiego rodzaju styropian, obiekty winylowe, plastikowe, tkaniny i podobne.
  • Przestrzenie robocze muszą być utrzymane w porządku i czystości. Aby zapobiec zanieczyszczeniu zmontowanych płytek, nie można zezwalać pracownikom na jedzenie lub palenie w obszarze roboczym.
  • W trakcie, gdy nie są używane, wrażliwe komponenty i płytki muszą być przechowywane w ekranowanych torebkach lub pudełkach. Istnieją trzy rodzaje materiałów chroniących przed wyładowaniami elektrostatycznymi:
    • ekrany elektrostatyczne – zapobiegają przenikaniu ładunków elektrostatycznych przez opakowanie,
    • materiały antystatyczne – chronią przed powstawaniem ładunków elektrostatycznych,
    • opakowania rozładowujące – dodatkowe opakowania, mające na tyle dużą przewodność, by rozładować wszelkie gromadzące się ładunki.
  • Gdy pracownik dotyka zmontowanej płytki, musi być odpowiednio uziemiony za pomocą jednego z następujących sposobów:
    • opaski na nadgarstku, podłączonej do uziemienia,
    • dwóch podeszw uziemiających, odprowadzających ładunki z obu stóp do odpowiednio przygotowanej podłogi.
  • Zmontowane płytki powinny być dotykane na krawędziach. Należy unikać dotykania obwodów lub komponentów (rysunek 3).
  • Komponenty powinny być również podnoszone za krawędzie, jeśli tylko jest to możliwe. Należy unikać dotykania ich wyprowadzeń.
  • Należy zabronić stosowania jakichkolwiek kremów do rąk zawierających silikon, gdyż mogą utrudnić lutowanie lub klejenie. Na rynku dostępne są płyny do rąk, specjalnie przygotowane, by zapobiec zanieczyszczaniu płytek drukowanych.
  • Ustawianie płytek drukowanych, jedna na drugiej, powinno być unikane, by zapobiec szkodzeniom fizycznym. Warto użyć specjalnych tacek i szafek z szynami do przechowywania płytek.
Zawsze podnoś płytki drukowane za krawędzie

Ilustracja 3: Zawsze podnoś płytki drukowane za krawędzie – źródło: Circuit Technology Center

Wnioski

Internet Rzeczy to wciąż nowy fenomen i jako taki tworzy mnóstwo okazji do projektowania nowych produktów na potrzeby automatyki domowej, przemysłu oraz aplikacji medycznych i wielu innych. Jako swoista nowinka, jest atrakcyjny dla wielu firm, także tych które mają małe doświadczenie. To sprawia, że na wielu płaszczyznach pojawia się ryzyko popełnienia błędów – począwszy od planowania projektu i jego zarządzania, przez dobór sprzętu, przygotowanie oprogramowania aplikacyjnego i firmware’u, a kończąc na wdrożeniu i konfiguracji.

W niniejszym artykule przyjrzeliśmy się cyklowi życia produktu i związanym z nim problemom, podkreślając potencjalne ryzyko i wskazując, jak go uniknąć.

Źródła

https://newsroom.cisco.com/press-release-content?articleId=1847422

https://internetofthingsagenda.techtarget.com/blog/IoT-Agenda/Four-keys-to-failure-How-IoT-projects-crash-and-burn

https://www.networkworld.com/article/3247801/internet-of-things/the-top-5-user-requirements-of-iot-edge-platforms.html

https://standards.ieee.org/develop/project/2413.html

https://www.arm.com/files/pdf/20160830_03_ARM_CPU_Solutions_for_IoT_PhillipBurr.pdf

http://www.electronicdesign.com/communications/iot-requires-new-type-low-power-processor

https://jaxenter.com/iot-memory-overview-options-131270.html

https://blog.particle.io/2018/04/03/the-five-domain-experts-you-need-to-build-an-iot-device

http://www.embedded-computing.com/embedded-computing-design/over-the-air-firmware-upgrades-for-internet-of-things-devices

http://www.information-age.com/4-practices-iot-software-development-123461868

https://www.academia.edu/4186102/A_survey_of_techniques_for_improving_energy_efficiency_in_embedded_computing_systems

http://www.mwrf.com/passive-components/5-antenna-topologies-squeeze-iot-modules

https://www.arm.com/about/newsroom/new-ultra-efficient-arm-cortex-a32-processor-expands-embedded-and-iot-portfolio.php

http://www.circuitrework.com/guides/2-1.html

Jak uniknąć błędów podczas projektowania na potrzeby IoT - Data publikacji: 4 września 2018 r. przez Farnell