Skuteczna łączność z czujnikami w punktach końcowych IoT z użyciem komunikacji 1-Wire

Przez: Bill Giovino

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

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).

Schemat mostka Maxim Integrated DS28E18Q+T 1-Wire-to-I²C/SPI z sekwencerem poleceń (kliknij, aby powiększyć)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.

Wygląd płytki ewaluacyjnej DS28E18EVKIT# firmy MaximIlustracja 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 oprogramowania ewaluacyjnego DS28E18EVKIT# firmy Maxim Integrated (kliknij, aby powiększyć)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.

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 Bill Giovino

Bill Giovino

Bill Giovino is an Electronics Engineer with a BSEE from Syracuse University, and is one of the few people to successfully jump from design engineer, to field applications engineer, to technology marketing.

For over 25 years Bill has enjoyed promoting new technologies in front of technical and non-technical audiences alike for many companies including STMicroelectronics, Intel, and Maxim Integrated. While at STMicroelectronics, Bill helped spearhead the company’s early successes in the microcontroller industry. At Infineon Bill orchestrated the company’s first microcontroller design wins in U.S. automotive. As a marketing consultant for his company CPU Technologies, Bill has helped many companies turn underperforming products into success stories.

Bill was an early adopter of the Internet of Things, including putting the first full TCP/IP stack on a microcontroller. Bill is devoted to the message of “Sales Through Education” and the increasing importance of clear, well written communications in promoting products online. He is moderator of the popular LinkedIn Semiconductor Sales & Marketing Group and speaks B2E fluently.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey