Témakör: IoT
„1-wire” kommunikáció használata érzékelők csatlakoztatására IoT-végpontokhoz
Megjelent: 2021. augusztus 12.
Míg a dolgok internete (IoT) és az ipari IoT (IIoT) végpontjai általában helyi vezérlési területekkel rendelkeznek, egyeseknek olyan egyszerű érzékelőkhöz kell csatlakozniuk, amelyek több mint egy méterre vannak a gazda mikrovezérlő helyétől.
Az ilyen érzékelőkkel való egyszerű kommunikációra hagyományosan SPI vagy I2C soros interfészeket használnak. Mivel azonban a vezérlő algoritmusok egyre bonyolultabbá válnak és egyre több érzékelőt kell alkalmazni, a mikrovezérlőnek több SPI és I2C vonalat kell használnia az érzékelők eléréséhez. Ez bonyolítja a kábelezést, ami növeli a konfiguráció és a karbantartás költségeit, különösen a távolságok növekedésével.
Ez a cikk bemutatja a fejlesztőknek, hogyan használhatják a Maxim Integrated 1 vezetékes protokollját IoT-érzékelők csatlakoztatásához csupán egyetlen vezeték és földelés használatával. Tárgyalja az 1-wire protokoll előnyeit, beleértve az érzékelők hatótávolságának jelentős kiterjesztését, valamint a tápellátás és az adatok ugyanazon a vezetékeken keresztüli biztosítását. Ezután bemutat egy hídeszközt, amely az 1 vezetékes jeleket SPI vagy I2C jelekké alakítja, valamint egy szoftverrel ellátott fejlesztőkészletet, amely segít a tervezőknek az indulásban.
Az IoT- és IIoT-érzékelők egyre elterjedtebb használata
Az IoT- és az IIoT-hálózatok elterjedése a rendszerek és a gyártási folyamatok hatékonyabbá tételéről szól, mégpedig a funkcionalitás bővítésével együtt. Ez magába foglalja az érzékelőkkel történő adatgyűjtést is. Míg egy lakásban helyiségenként talán csupán egyetlen hőmérséklet-érzékelőt tartalmazó termosztát van, egy automatizált épületben vagy IIoT-hálózatban azonban számos hőmérséklet- és páratartalom-érzékelőt helyezhetnek el egyetlen helyiségben, az egész épületre vagy létesítményre vonatkozólag. Például a nyomásérzékelők mellett további érzékelők lehetnek a fűtés, szellőzés és légkondicionálás (HVAC) csatornáiban. A biztonsági rendszerek különböző típusú, több helyen is elhelyezhető érzékelőket is használhatnak.
A gyártó- és szállítószalag-rendszerekben is egyre gyakrabban használnak érzékelőket a folyamatok megfigyelésére és az adatok elemzési célú naplózására például azért, hogy nyomon követhessék, hogyan lehet energiát megtakarítani a rendszerek hatékonyabbá tételével, miközben a biztonságot is javítják.
Az ilyen alkalmazásokban leggyakrabban használt érzékelők a következők: környezeti érzékelők, beleértve a hőmérséklet-, a páratartalom- és a nyomásérzékelőket; vizuális érzékelők, beleértve a láthatófény- és a kapacitív közelítésérzékelőket; valamint helyzetérzékelők, beleértve a mikroelektromechanikus rendszerű (MEMS) gyorsulásmérőket, MEMS giroszkópokat és rezgésérzékelőket. A miniatürizálás és a MEMS-technológiák fejlődése olyan érzékelőket eredményezett, amelyek tokozása kisebb egy hüvelykujj körménél, és csak néhány száz mA áramot vesznek fel. A legtöbb ilyen érzékelő könnyen elérhető SPI vagy I2C kommunikációs interfészen keresztül, amelyek szinte minden mikrovezérlőben megtalálhatóak. Az ilyen egyszerű érzékelőkhöz való kapcsolódáskor nem praktikus egy teljes IoT- vagy IIoT-végpontot, illetve gyermekcsomópontot létrehozni csak a hőmérséklet mintavételezésére, ezért gyakran egyszerűbb és gyorsabb, ha csak az SPI vagy I2C kommunikációs vonalakat vezetjük el közvetlenül hozzájuk.
Egyes esetekben még mindig analóg érzékelőket használnak, például magas hőmérsékletű hőelemeket és bizonyos nyomásérzékelőket. Ezekben az esetekben a mikrovezérlő az érzékelő közelében lévő SPI vagy I2C analóg-digitális átalakítóhoz (ADC) kapcsolódik, amely az analóg érzékelőt helyben mintavételezi. Ezáltal elkerülhető az analóg érzékelők vonalain fellépő feszültségesés, ugyanakkor javul a pontosság.
Kapcsolódás távoli SPI és I2C érzékelőkhöz
A mikrovezérlő ezekkel az érzékelőkkel az SPI és I2C adatvonalak hatósugarát kiterjesztve kommunikál. Az I2C azonban legfeljebb egy méterig használható, és az SPI-nek is hasonló korlátai vannak. Ezenkívül a teljes duplex SPI négy vezetéket igényel, beleértve egyet-egyet a periféria kiválasztásához. Végeredményben négy SPI-periféria eléréséhez egy buszon hét vezetékre, plusz a tápellátásra és a földelésre, azaz összesen kilenc vezetékre van szükség. A félduplex I2C két vezetéket, valamint tápellátást és földelést igényel a perifériához, azaz összesen négy vonalat. Ugyanakkor a sok nagysebességű jel növeli az elektromágneses interferenciát (EMI), ami áthallásokat okozhat, ez pedig a jelek integritásának csökkenését eredményezi és rontja a rendszer megbízhatóságát.
Olyan megoldásra van tehát szükség, amely a minimumra csökkenti a táp- és adatvezetékek számát és egyszerűsíti a működést, miközben fenntartja a kompatibilitást a meglévő I2C és SPI érzékelőkkel. A Maxim Integrated, hogy megoldja a távoli érzékelőkhöz nagyobb távolságról, ugyanakkor csökkentett számú vezetékkel történő csatlakozás problémáját, kifejlesztette az 1-wire protokollt, amely a legtöbb SPI vagy I2C érzékelő csatlakoztatását egyetlen vezeték és egy földelés segítségével oldja meg. Ez a protokoll az SPI hat és az I2C négy vezetékének számát mindössze két vezetékre csökkenti, amelyek 100 m-es távolságig továbbítják az adatokat és a tápellátást.
Az 1-wire alkalmazása
Az 1 vezeték használatakor a távérzékelő egy „1-wire” típusú kommunikációs híddal rendelkezik, amely az 1 vezetékes protokollt az érzékelőhöz csatlakozó SPI- vagy I2C-kompatibilis jelekké alakítja. Mind az 1 vezetékes híd, mind az érzékelő tápellátása parazitamódon csak az 1 vezetékes jelről és egy földvezetékről történik. Ez lehetővé teszi az 1 vezetékes jelek kis helyigényű vezetését, ami a kisebb vezetékfelhasználás révén költségmegtakarítást eredményez.
Míg az SPI és az I2C külön órajelet használ, az 1 vezeték az órajelet az adatjelbe ágyazza. Az SPI egy adott perifériát egy külön perifériaválasztó jel segítségével címez, amíg az I2C egy 7 bites buszcímet használ, amelyet az adatvonalon továbbítanak; ehhez képest az 1 vezetékes technológia egy minden egyes kommunikációs hídra vonatkozóan fixen huzalozott 56 bites címet alkalmaz. Ez a szélesebb címzési tartomány nemcsak a buszon lévő egyedi perifériák számát növeli, hanem a biztonságot is, mivel a támadók számára nehezebbé teszi az 1 vezetékes buszon lévő periféria címének kitalálását.
Az 1 vezetékes perifériabuszon a szó mérete 8 bit. Egy mikrovezérlővel felépített 1 vezetékes busz-host képes az 1 vezetékes protokoll bit-bangolására, de egy egyszerű UART illesztő is támogatja, így lehetővé válik, hogy egy 8 bites mikrovezérlő is 1 bites busz-host legyen. Az 1 bites busz tartalmazhat SPI vagy I2C perifériákat, de mindkettőt egyszerre nem. Ez a következetesség megakadályozza a konfliktusokat és ütközéseket a buszon, ugyanakkor egyszerűsíti a protokollal való programozást.
Létező 1 vezetékes megoldások
Azon tervezők számára, akik SPI vagy I2C perifériához szeretnének csatlakozni 1 vezetékes buszon keresztül, a Maxim Integrated a DS28E18Q+T parancsszekvenszerrel ellátott 1-Wire-to-I2C/SPI hidat ajánlja (1. ábra).
1. ábra A DS28E18Q+T parancsszekvenszerrel ellátott 1-Wire-to-I2C/SPI híd egy 1 vezetékes busz IO és GND kivezetéseihez csatlakozik
(Kép: Maxim Integrated)
Az 1. ábrán látható, hogy a parazitateljesítményt az IO magas szintjénél veszik ki a buszból, és bocsátják rendelkezésre a perifériák táplálására a SENS_VDD kivezetésen keresztül. A híd puffereli és fordítja az 1 vezetékes parancsokat a megfelelő I2C vagy SPI parancsokra.
Az IO kivezetés és a GND az 1 vezetékes buszhoz csatlakozik, és az állapotgépével együtt a front-endre kerül. Minden eszközt egy 56 bites ROM ID azonosító azonosít, amely előtt egy 8 bites, 1 vezetékes családkód áll, amely a DS28E18Q+T verzióját jelöli. Ez lehetővé teszi egy adott DS28E18Q+T egyedi azonosítását a mikrovezérlő firmware-je által, így az elég rugalmasan tud reagálni az eszközcsaládban bekövetkező változásokra. A készülék 48 bites egyedi sorozatszámmal rendelkezik, amelyhez 8 bites ciklikus redundanciaellenőrző (CRC) kód tartozik.
A front-end a lefordított adatokat a parancsszekvenszer számára egy 144 bájtos parancspuffer segítségével küldi el, amely 128 bájtnyi IO buszról származó és 16 bájtnyi belső használatra szánt adatot tartalmaz. A parancsszekvenszer feldolgozza a parancsokat, és maximum 512 bájtnyi I2C vagy SPI parancsot képes tárolni a pufferében, hogy később elküldhesse a perifériának, ahelyett, hogy az 1 vezetékes busz egyenként dolgozná fel a parancsokat.
Ez az 512 bájtos puffer lehetővé teszi azt is, hogy a DS28E18Q+T koordinálja saját belső energiaellátásának viselkedését annak érdekében, hogy a perifériával való kommunikáció időzítése lehetővé tegye a parazita-energiaellátás fenntartását. A parancs-szekvenszer fenntartja ezt az időzítést, amikor utasításokat küld az I2C/SPI Master és GPIO vezérlőnek, amely úgy dolgozza fel az adatokat, hogy azok megfeleljenek az I2C és SPI szabványoknak.
A CEXT kivezetéshez egy 470 nF kapacitású külső kondenzátor csatlakozik, amely a DS28E18Q+T számára tartalék tápellátásra szolgál az 1 vezetékes busz működése közben. A csatlakoztatott perifériák számára a parazita-tápellátás a SENS_VDD kivezetésen áll rendelkezésre. SPI üzemmódban az SS#, MISO, MOSI és SCLK nevű négy kivezetés biztosítja a csatlakoztatott perifériával a teljes duplex kommunikációt. Az I2C üzemmód csak két, váltakozó funkciójú kivezetést használ, az SDA-t és az SCL-t. Az SPI üzemmódhoz szükséges SS# és MISO kivezetések I2C üzemmódban nem használatosak, így általános célú I/O-ként (GPIO) használhatók GPIOA és GPIOB alternatív funkcióval. Ez nagyobb rugalmasságot biztosít, amely felhasználható diagnosztikai LED-ek működtetésére az érzékelő helyén, vagy az érzékelő, illetve az ADC konfigurációs kivezetéseinek kezelésére az eszköz viselkedésének megváltoztatása céljából.
A Maxim Integrated DS28E18Q+T használatával egyetlen mikrovezérlő UART-ja mindössze két vezetéket alkalmazva kommunikálhat számos érzékelővel ugyanazon az 1 vezetékes plusz földbuszon; minden érzékelő egy DS28E18Q+T-hez csatlakozik, amely akár 100 m távolságra is lehet. Ez különösen hasznos lehet a fűtés, szellőzés és légkondicionálás (HVAC) rendszerei esetében, ahol így elegendő csupán két vezetéket keresztülvezetni egy levegőcsatornán a hőmérséklet és a páratartalom ellenőrzésére annak hossza mentén, minden egyes szellőzőnyílásnál. Ez javítja a rendszer hatékonyságát azáltal, hogy ellenőrzi az akadályok miatt esetlegesen keletkező meleg vagy hideg helyeket.
A fejlesztés és az 1-wire
Az 1 vezetékes protokollal való fejlesztés megkezdéséhez a Maxim Integrated a DS28E18EVKIT# fejlesztőrendszert kínálja. Ez egy hardverfejlesztő kártyából (2. ábra) és egy szoftverből áll.
2. ábra A Maxim DS28E18EVKIT# fejlesztőlap lehetővé teszi a fejlesztő számára az SPI vagy I2C perifériák egyszerű csatlakoztatását az 1 vezetékes buszhoz. A mellékelt szoftver a busz és a perifériák viselkedésének programozására és felügyeletére, valamint a mikrovezérlő eszközillesztői létrehozásának segítésére használható (Kép: Maxim Integrated)
A fejlesztőkártya lehetővé teszi a fejlesztő számára a DS28E18Q+T programozását és felügyeletét. Fejlesztési célokra a kártyához egy USB adapter tartozik, amely a kártyát egy Windows számítógép USB portjához csatlakoztatja. A fejlesztőnek a fejlesztés segítésére le kell töltenie és futtatnia kell a fejlesztőkészlethez tartozó DS28E18EVKIT# szoftvert. Amint az a 3. ábrán látható, a kiértékelő szoftver lehetővé teszi a DS28E18Q+T és a hozzá csatlakoztatott perifériák programozását és felügyeletét.
A szoftver parancsokat tud küldeni a DS28E18Q+T fejlesztőkártyának, és konfigurálni tudja azt cél SPI vagy I2C perifériaként. Képes kiválasztani a periféria címtartományát, és fel tudja tölteni az 512 bájtos parancsszekvenszer-memóriát a végrehajtandó perifériaparancsokkal. A szoftver segíteni tud a célmikrovezérlő UART illesztőprogramjainak konfigurálásában is, ezért nem kell az 1 vezetékes kommunikációs protokoll minden részletét megtanulni. A fejlesztők saját alkalmazásukban is használhatják a fejlesztőkártyát, ezzel megtakaríthatják az érzékelő-csomópont kiépítésével és konfigurálásával járó időt és ráfordítást.
3. ábra A DS28E18EVKIT# kiértékelő szoftver lehetővé teszi a fejlesztő számára, hogy a kártyán levő DS28E18Q+T-t az USB adapter segítségével konfigurálja és figyelemmel kísérje annak viselkedését. Az 512 bájtos parancsszekvenszer-memória feltölthető adatokkal, majd elküldhető a perifériának az érzékelési művelet végrehajtása céljából
(Kép: Maxim Integrated)
Összegzés
Ahogy az IoT- és IIoT-rendszerek egyre több érzékelővel bővülnek, az érzékelők kábelezése egyre bonyolultabbá és költségesebbé válik, különösen a távolságok növekedésével. Az érzékelők áramellátása szintén olyan probléma, amely megnehezítheti az érzékelőhálózat létrehozását. Amint azt bemutattuk, a Maxim Integrated 1-wire protokollja és a hozzá tartozó hardver egyszerűbbé és hatékonyabbá teheti az érzékelőhálózathoz való csatlakozást azáltal, hogy az adatátvitelt és a tápellátást egyetlen vezetéken, valamint a földelésen keresztül biztosítja.
Szerző: Rolf Horn – Alkalmazástechnikai mérnök, Digi-Key Electronics
Digi-Key Electronics
www.digikey.hu