Skuteczna łączność z czujnikami w punktach końcowych IoT z użyciem komunikacji 1-Wire
Przekazane przez: Północnoamerykańscy redaktorzy DigiKey
2021-06-17
Chociaż powszechne jest, że punkty końcowe Internetu rzeczy (IoT) i przemysłowego IoT (IIoT) mają zlokalizowane obszary kontrolne, niektóre muszą łączyć się z prostymi czujnikami, które są oddalone o więcej niż jeden metr od lokalizacji kontrolera hosta. Tradycyjnie do łatwej komunikacji z tymi czujnikami wykorzystywane są interfejsy szeregowe SPI lub I²C. Jednak ponieważ algorytmy sterowania stają się coraz bardziej skomplikowane i trzeba wdrożyć więcej czujników, mikrokontroler musi wykorzystywać więcej linii SPI i I²C, aby dotrzeć do tych czujników. Powoduje to wzrost złożoności oprzewodowania, co zwiększa koszty konfiguracji i konserwacji, szczególnie w miarę zwiększania się odległości.
Artykuł demonstruje deweloperom, jak wykorzystać protokół 1-Wire firmy Maxim Integrated do ekonomicznego połączenia z czujnikami IoT przy użyciu tylko jednego przewodu plus masa. Omówione zostaną zalety protokołu 1-Wire, w tym znaczne zwiększenie zasięgu czujnika oraz zapewnienie zasilania i danych za pomocą tych samych przewodów. Następnie zostanie przedstawione urządzenie mostkowe, które konwertuje sygnały 1-Wire na SPI lub I²C oraz zestaw rozwojowy z oprogramowaniem ułatwiającym deweloperom rozpoczęcie pracy.
Coraz szersze zastosowanie czujników IoT oraz IIoT
Rozwój sieci IoT oraz IIoT ma na celu zwiększenie sprawności systemów i procesów produkcyjnych przy jednoczesnym rozszerzeniu funkcjonalności. Wiąże się to z gromadzeniem danych z użyciem czujników. Podczas gdy w domu może znajdować się w pokoju jeden termostat, który zawiera czujnik temperatury, w zautomatyzowanym budynku lub sieci IIoT można umieścić wiele czujników temperatury i wilgotności w danym pomieszczeniu oraz w całym budynku lub obiekcie. Na przykład dodatkowe czujniki można umieścić w kanałach grzewczych, wentylacyjnych i klimatyzacyjnych (HVAC) obok czujników ciśnienia. Systemy bezpieczeństwa mogą również wykorzystywać różne rodzaje czujników, umieszczone w wielu punktach.
W systemach produkcji i systemach przenośników taśmowych obserwuje się również wzrost wykorzystania czujników do monitorowania procesów i rejestrowania danych w celu analizy, na przykład jak oszczędzać energię poprzez zwiększanie sprawności systemów, przy jednoczesnej poprawie bezpieczeństwa.
Najpopularniejsze czujniki do tych zastosowań to czujniki mierzące warunki środowiskowe, w tym temperaturę, wilgotność i ciśnienie; czujniki wizualne, w tym czujniki światła widzialnego i pojemnościowe czujniki zbliżeniowe; oraz czujniki położenia, w tym przyspieszeniomierze, żyroskopy i czujniki drgań oparte na systemach mikroelektromechanicznych (MEMS). Miniaturyzacja i postęp w technologiach MEMS doprowadziły do powstania czujników w obudowach mniejszych niż paznokieć kciuka, które pobierają zaledwie kilkaset miliamperów (mA). Większość z tych czujników jest łatwo dostępna przez interfejsy komunikacyjne SPI lub I²C, które można znaleźć w prawie każdym mikrokontrolerze. W przypadku interfejsów do tych prostych czujników budowanie całego punktu końcowego IoT lub IIoT lub węzła podrzędnego tylko do próbkowania temperatury może być niepraktyczne, więc często prostsze i szybsze jest po prostu poprowadzenie linii komunikacyjnych SPI lub I²C bezpośrednio do nich.
W niektórych przypadkach nadal stosuje się czujniki analogowe, takie jak termopary wysokotemperaturowe i niektóre czujniki ciśnienia. W tych przypadkach mikrokontroler współpracuje z przetwornikiem analogowo-cyfrowym (ADC) SPI lub I²C w lokalizacji czujnika, który próbkuje analogowy czujnik lokalnie. W ten sposób unika się spadków napięcia na liniach czujników analogowych, co poprawia dokładność.
Łączenie się z odległymi czujnikami SPI i I²C
Mikrokontroler komunikuje się z tymi czujnikami poprzez zwiększenie zasięgu linii danych SPI i I²C. Jednak interfejs I²C jest ograniczony do zasięgu jednego metra lub mniej, a SPI ma podobne ograniczenia. Ponadto SPI z pełnym dupleksem wymaga czterech wtyków, w tym indywidualnego wyboru urządzenia peryferyjnego dla każdego z nich. W rezultacie, aby dotrzeć do czterech urządzeń peryferyjnych SPI na magistrali potrzeba siedmiu wtyków, plus zasilanie i masa, co daje w sumie dziewięć wtyków. Półdupleksowy I²C wymaga dwóch pinów, plus zasilanie i masa do urządzenia peryferyjnego, co daje w sumie cztery linie. Jednocześnie wiele szybkich sygnałów zwiększa zakłócenia elektromagnetyczne (EMI), które mogą generować przesłuchy, powodując zmniejszenie integralności sygnału i obniżenie niezawodności systemu.
Potrzebne jest rozwiązanie, które minimalizuje oprzewodowanie zasilania i danych oraz upraszcza obsługę, zachowując jednocześnie kompatybilność z istniejącymi czujnikami I²C i SPI.
Aby rozwiązać problem łączenia się z odległymi czujnikami na większe odległości przy jednoczesnym zmniejszeniu liczby przewodów, firma Maxim Integrated opracowała protokół 1-Wire, który łączy się z większością czujników SPI lub I²C za pomocą jednego przewodu plus masa. Protokół redukuje liczbę sześciu przewodów SPI i czterech używanych przez I²C, do zaledwie dwóch przewodów, które przenoszą zarówno dane, jak i zasilanie na odległość do 100m.
Zastosowanie interfejsu 1-Wire
W przypadku korzystania z protokołu 1-Wire zdalny czujnik posiada mostek komunikacyjny 1-Wire, który konwertuje protokół 1-Wire na kompatybilne sygnały SPI lub I²C, które współpracują z czujnikiem. Zarówno mostek 1-Wire, jak i czujnik są pasożytniczo zasilane przez sam sygnał 1-Wire plus linię masy. Umożliwia to prowadzenie sygnałów 1-Wire w ograniczonych przestrzeniach, co pozwala na obniżenie kosztów dzięki zastosowaniu mniejszej ilości przewodów.
Chociaż zarówno SPI, jak i I²C używają sygnałów z dedykowanego zegara, protokół 1-Wire osadza zegar w sygnale danych. SPI adresuje konkretne urządzenie peryferyjne za pomocą oddzielnego sygnału wyboru dla każdego urządzenia peryferyjnego, podczas gdy I²C używa 7-bitowego adresu magistrali przesyłanego wzdłuż linii danych. Dla porównania, 1-Wire używa 56-bitowego adresu, który jest wbudowany w każdy mostek komunikacyjny z osobna. Ten szerszy zakres adresowania nie tylko zwiększa liczbę unikalnych urządzeń peryferyjnych na magistrali, ale także zwiększa bezpieczeństwo, ponieważ utrudnia napastnikowi odgadnięcie adresu urządzenia peryferyjnego na magistrali 1-Wire.
Wielkość słowa na magistrali peryferyjnej 1-Wire wynosi 8 bitów. Host mikrokontrolera z magistralą 1-Wire może przesyłać bity przez protokół 1-Wire, ale jest on również obsługiwany przez prosty sterownik UART. Dzięki temu nawet 8-bitowy mikrokontroler może być hostem magistrali 1-bitowej. Magistrala 1-bitowa może obejmować urządzenia peryferyjne SPI lub I²C, ale nie oba rodzaje jednocześnie. Taka spójność zapobiega konfliktom i kolizjom na magistrali i upraszcza programowanie w oparciu o protokół.
Rzeczywiste rozwiązania oparte na 1-Wire
Projektantom poszukującym interfejsu do urządzeń peryferyjnych SPI lub I²C za pośrednictwem magistrali 1-Wire firma Maxim Integrated oferuje mostek DS28E18Q+T 1-Wire-to-I²C/SPI z sekwencerem poleceń (ilustracja 1).
Ilustracja 1: mostek DS28E18Q+T 1-Wire-to-I²C/SPI z sekwencerem poleceń łączy się z magistralą 1-Wire za pomocą wtyków wejścia-wyjścia (IO) oraz masy (GND). (Źródło ilustracji: Maxim Integrated)
Nawiązując do ilustracji 1, zasilanie pasożytnicze jest pobierane z magistrali, gdy wtyk wejścia-wyjścia (IO) jest w stanie wysokim i udostępniane na wtyku SENS_VDD do zasilania urządzenia peryferyjnego. Mostek buforuje i tłumaczy komendy 1-Wire na odpowiednie komendy I²C lub SPI.
Wtyki wejścia-wyjścia (IO) i masy (GND) są podłączone do magistrali 1-Wire i są wysyłane do układu front-end z jego maszyną stanów. Każde urządzenie jest identyfikowane za pomocą 56-bitowego identyfikatora ROM ID, poprzedzonego 8-bitowym kodem grupy 1-Wire, który określa wersję mostka DS28E18Q+T. Pozwala to na unikalną identyfikację konkretnego mostka DS28E18Q+T przez oprogramowanie układowe mikrokontrolera, dzięki czemu jest on na tyle elastyczny, że może uwzględniać wszelkie zmiany w grupie urządzeń. Urządzenie posiada 48-bitowy unikalny numer seryjny z 8-bitowym kodem cyklicznej kontroli nadmiarowej (CRC).
Układ front-end wysyła przetłumaczone dane do sekwencera poleceń przy użyciu 144-bajtowego bufora poleceń, który zawiera 128 bajtów danych z magistrali wejścia-wyjścia (IO) i 16 bajtów do użytku wewnętrznego. Sekwencer poleceń przetwarza polecenia i może przechowywać do 512 bajtów poleceń I²C lub SPI w swoim buforze, aby później wysłać je do urządzenia peryferyjnego, zamiast przetwarzać pojedynczo polecenia przez magistralę 1-Wire.
Ten 512-bajtowy bufor pozwala także mostkowi DS28E18Q+T koordynować swoje wewnętrzne zachowanie w zakresie zasilania, tak aby synchronizacja komunikacji z urządzeniami peryferyjnymi pozwalała na utrzymanie zasilania pasożytniczego. Sekwencer poleceń utrzymuje tę synchronizację, gdy wysyła instrukcje do kontrolera nadrzędnego I²C/SPI i kontrolera wejścia-wyjścia ogólnego przeznaczenia (GPIO), który przetwarza dane tak, aby były zgodne ze standardami I²C i SPI.
Do wtyku CEXT podłączony jest zewnętrzny kondensator 470nF, który działa jako rezerwa zasilania dla mostka DS28E18Q+T podczas pracy z magistralą 1-Wire. Zasilanie pasożytnicze jest dostępne dla podłączonego urządzenia peryferyjnego na wtyku SENS_VDD. W przypadku pracy w trybie SPI cztery wtyki SS#, MISO, MOSI i SCLK zapewniają komunikację w trybie pełnego dupleksu z podłączonym urządzeniem peryferyjnym. Praca w trybie I²C wykorzystuje tylko dwa wtyki z alternatywnymi funkcjami linii danych (SDA) i linii zegara szeregowego (SCL). Wtyki SS# i MISO do obsługi SPI są nieużywane przy pracy w trybie I²C i dlatego mogą być używane jako wejście-wyjście ogólnego przeznaczenia (GPIO) z alternatywną funkcją GPIOA i GPIOB. Zapewnia to większą elastyczność, która może być wykorzystana do włączania diagnostycznych diod LED w miejscu montażu czujnika lub do zarządzania wtykami konfiguracyjnymi na czujniku lub przetworniku ADC w celu zmiany zachowania urządzenia.
Dzięki zastosowaniu mostka DS28E18Q+T firmy Maxim Integrated pojedynczy układ UART w mikrokontrolerze może komunikować się za pomocą tylko dwóch przewodów z wieloma czujnikami na tej samej magistrali 1-Wire plus masa. Każdy czujnik jest podłączony do mostka DS28E18Q+T, który może znajdować się w odległości do 100m. Może to być szczególnie przydatne w systemach klimatyzacji i wentylacji, gdzie tylko dwa przewody mogą być poprowadzone przez kanał powietrzny w celu monitorowania temperatury i wilgotności na całej jego długości przy każdym otworze wentylacyjnym. Poprawia to sprawność systemu poprzez monitorowanie punktów gorących lub zimnych, które mogą być spowodowane przez przeszkody.
Projektowanie pod kątem 1-Wire
Aby rozpocząć pracę z protokołem 1-Wire, można skorzystać z systemu ewaluacyjnego DS28E18EVKIT# oferowanego przez firmę Maxim Integrated. Składa się on z płytki rozwojowej sprzętu (ilustracja 2) i oprogramowania.
Ilustracja 2: płytka ewaluacyjna DS28E18EVKIT# firmy Maxim pozwala deweloperowi na łatwe łączenie urządzeń peryferyjnych SPI lub I²C z magistralą 1-Wire. Dołączonego oprogramowania można używać do programowania i monitorowania zachowania magistrali i peryferiów. Może ono również pomóc w generowaniu sterowników urządzeń mikrokontrolera. (Źródło ilustracji: Maxim Integrated)
Płytka ewaluacyjna pozwala deweloperowi na programowanie i monitorowanie układu DS28E18Q+T. Dla celów rozwojowych płytka jest dostarczana z adapterem USB, który łączy ją portem USB w komputerze z systemem Windows. Deweloper musi pobrać i uruchomić oprogramowanie zestawu ewaluacyjnego DS28E18EVKIT#, wspomagające prace rozwojowe. Jak widać na ilustracji 3, oprogramowanie ewaluacyjne umożliwia programowanie i monitorowanie układu DS28E18Q+T oraz dołączonych do niego urządzeń peryferyjnych.
Ilustracja 3: oprogramowanie ewaluacyjne DS28E18EVKIT# pozwala deweloperowi skonfigurować wewnętrzny układ DS28E18Q+T za pośrednictwem adaptera USB i monitorować jego zachowanie. 512-bajtowa pamięć sekwencera poleceń może zostać wypełniona danymi, a następnie przesłana do urządzenia peryferyjnego w celu wykonania operacji na czujniku. (Źródło ilustracji: Maxim Integrated)
Oprogramowanie może wysyłać polecenia do płytki ewaluacyjnej DS28E18Q+T i konfigurować ją pod kątem docelowego urządzenia peryferyjnego SPI lub I²C. Może ono wybrać zakres adresowy urządzeń peryferyjnych i wypełnić 512-bajtową pamięć sekwencera poleceń poleceniami do wykonania przez urządzenie peryferyjne. Oprogramowanie może również być pomocne w konfiguracji sterowników UART dla docelowego mikrokontrolera, oszczędzając deweloperowi wysiłku związanego z poznawaniem wszystkich szczegółów protokołu komunikacyjnego 1-Wire. Deweloper może również wykorzystać płytkę ewaluacyjną we własnym zastosowaniu, oszczędzając czas i wysiłek związany z budową i konfiguracją węzła czujnikowego.
Podsumowanie
W miarę jak systemy IoT i IIoT wzbogacają się o kolejne czujniki, ich oprzewodowanie staje się coraz bardziej skomplikowane i kosztowne, szczególnie w miarę zwiększania się odległości. Kolejnym problemem, który może skomplikować konfigurację sieci czujników, jest przesyłanie zasilania do czujników. Protokół 1-Wire i powiązany z nim sprzęt firmy Maxim Integrated może ułatwić i usprawnić połączenie z siecią czujników, dostarczając dane i zasilanie za pomocą tylko jednego przewodu plus masa.
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.



