Close

TinyLab: Bezdrátový modul XBee

V dnešním dílu seriálu článků o desce TinyLab se podíváme, jak konfigurovat a používat bezdrátové moduly XBee. I když je seriál věnovaný desce TinyLab, je popsaný postup použitelný i bez této desky.


Co je to XBee?

XBee je rodina různých bezdrátových zařízení, které poznáme podle typického tvaru desky. Jednotlivé modely se od sebe liší komunikační frekvencí, dosahem i podporovanými protokoly. Spojuje je ale snaha o jednoduchou bezdrátovou komunikaci zařízení s malým výkonem. TinyLab ve verzi Exclusive obsahuje dva XBee moduly S2C, takže je s jejich pomocí možné zprovoznit si například most mezi dvěma zařízeními. V našem případě si propojíme počítač a TinyLab.

Modul XBee v setu TinyLab

Modul XBee v setu TinyLab

Moduly XBee S2C používají komunikační protokol ZigBee (to pro nás není podstatné, ale hodí se vědět pro případný další průzkum). Díky tomu jsou moduly schopné vytvářet i poměrně rozsáhlé sítě propojených zařízení při zachování snadné konfigurace. Díky tomu je možná i komunikace mezi zařízeními, které na sebe přímo nevidí, ale leží mezi nimi prostředník, který může komunikaci zprostředkovat.

Poznámka: Dále si představíme konfiguraci, která se sice jeví jako dvoubodová, ale ve skutečnosti není problém připojit další zařízení. Postup přidání dalších zařízení bude použitelný téměř beze změn.

Mody zařízení

Zařízení XBee mohou vystupovat ve třech různých modech, které se liší v tom, jakou činnost zařízení při komunikaci v rámci sítě vykonává.

Možné topologie zařízení používající protokol ZigBee

Možné topologie sítě ZigBee
(zdroj: https://courses.p2pu.org/en/courses/831/content/1739/)

Koordinátor (Coordinator)

Zařízení v modu Koordinátor (na obrázku bíle) může být v síti pouze jedno. Koordinátor zajišťuje inicializaci sítě, vybírá zvolený komunikační kanál a ID sítě. Také se stará o adresování v síti a umožňuje ostatním zařízením připojit se do sítě. Obsahuje také buffer, ve kterém jsou uloženy zprávy pro spící zařízení v síti. Toto zařízení musí být spuštěné neustále a není možné jej uspat.

Router

Zařízení typu Router (zeleně) už může být v síti neomezeně (ale také žádné). Může se připojit do existujících sítí a také vystupovat jako prostředník při komunikaci ostatních zařízení s Koordinátorem (podporuje příjem a zasílání směrovacích zpráv). I router umí uchovávat zprávy pro případná spící koncová zařízení a musí být neustále spuštěný (nemůže přejít do režimu spánku).

Koncové zařízení (End-device)

Koncová zařízení slouží k příjmu a odesílání zpráv v síti. Nemohou vystupovat jako prostředník a mohou vstupovat do režimu spánku. Musí být vždy připojeny k routeru, nebo koordinátoru.

Konfigurace zařízení

Aby spolu moduly XBee mohly komunikovat, musíme nejdříve vše správně nastavit. Toto nastavení je sice možné provést přes sériovou linku pomocí AT příkazů, ale snadnější bude využít program XCTU od výrobce modulů. Po instalaci program spustíme. V kitu TinyLab najdeme sériový převodník pro XBee a modul do něj zasuneme (zkontrolujte orientaci modulu podle obrázku níže). Poté převodník přes USB připojíme k PC.

Sériový převodník pro XBee

Sériový převodník pro XBee

Vyhledání zařízení

XCTU

XCTU

Po spuštění programu XCTU klikneme na ikonu s lupou v levém horním rohu. Zobrazí se nabídka, ve které vyberte sériový port s připojeným převodníkem. Je to ten port, který v nabídce mizí a objevuje se společně s odpojováním a připojováním převodníku k USB (je nutné znovu kliknout na ikonu s lupou, aby se nabídka aktualizovala).

Výběr sériové linky

Výběr sériové linky

Nyní musíme nastavit, jakým způsobem se má na zvolené sériové lince prohledávat – jakou rychlostí s modulem komunikujeme apod. Nastavení zvolte podle obrázku níže.

Výběr parametrů sériové komunikace

Výběr parametrů sériové komunikace

Po stisknutí tlačítka „Finish“ je zahájeno prohledávání, které by mělo skončit nalezením připojeného modulu.

Vyhledávání modulu

Vyhledávání modulu

Nalezený modul XBee

Nalezený modul XBee

Vybrané zařízení by se nyní mělo objevit v levém sloupci hlavní obrazovky XCTU.

Přidaný modul XBee bez firmware

Přidaný modul XBee bez firmware

Moduly od výrobce nemají nahraný firmware. Proto se v poli Function zobrazuje „Not found in XCTU“. Nyní musíme do modulu nahrát firmware.

Nahrání firmware do XBee

Začneme tím, že klikneme na modul v levém sloupci programu. Zobrazí se hláška, jestli chceme stáhnout firmware z internetu.

V dalším kroku vybereme možnost „Install legacy firmware package“.

Po odsouhlasení se spustí stahování, které může trvat i několik minut.

Stahování firmware XBee

Stahování firmware

Po stažení se zobrazí seznam staženého firmware. Okno zavřeme kliknutím na „OK“.

Firmware pro různé moduly XBee

Firmware pro různé moduly

Když nyní v levém sloupci vybereme připojený modul, po krátkém načítacím dialogu se zobrazí jeho aktuální nastavení. Zmáčkneme tlačítko pro upgrade firmware.

Upgrade firmware XBee

Upgrade firmware

V nabídce vybereme firmware dle obrázku níže (popřípadě novější, pokud je dostupný).

Výběr firmware pro upgrade XBee

Výběr firmware pro upgrade

Po odsouhlasení by se měla objevit hláška o úspěšném nahrání software.

Úspěšně nahraný firmware

Úspěšně nahraný firmware

Nastavení modulů

Postup popsaný výše musíme provést pro oba moduly. Dále musíme jeden modul nakonfigurovat jako Konfigurátor a druhý jako Router. Po výběru modulu se v pravém sloupci zobrazí formulář, ve kterém musíme vyplnit správné hodnoty. Ty vyplňte podle následujících obrázků a poté pomocí ikony tužky s nápisem „write“ zapište změny do modulu.

Nastavení Koordinátoru XBee ZigBee

Nastavení Koordinátoru

Nastavení Routeru XBee ZigBee

Nastavení Routeru

Význam důležitých položek

  • PAN ID = adresa sítě
    • může být v rozsahu HEX: 0-FFFF
    • všechna zařízení v síti zde mají stejnou hodnotu
  • coordinator enable
    • uvádí zařízení do modu Coordinator
  • destination address low = cílová adresa
    • pokud je modul v modu koordinátor, nastavíme její hodnotu na FFFF = režim broadcast
    • pro router ji nastavíme na 0, což je výchozí adresa koordinátoru

Poznámka: V síťových technologiích je často nejvyšší adresa z rozsahu adres vyhrazena pro tzv. broadcast. Pokud odešleme data na broadcastovou adresu, jsou tato data odeslána do všech zařízení, která jsou připojena v síti. Přesně to v případě koordinátoru potřebujeme.

Po uložení nastavení už jsou oba moduly připravené pro vzájemnou komunikaci. Jeden z modulů zasuneme do slotu na desce TinyLab (vpravo uprostřed – viz úvodní fotka) a druhý necháme připojený k PC pomocí USB převodníku.

Ovládání Arduina na dálku

Nyní si napíšeme jednoduchý program, který bude vypínat a zapínat LED podle toho, co mu pošleme po sériové lince – když dostane znak ‚h‘, tak ji rozsvítí, pro ‚l‘ ji zhasne. Začneme tím, že přepneme přepínače na TinyLab do správné polohy. Přepínače u pinů 0 a 1 propojí sériovou linku Arduina s modulem XBee. Přepínač u pinu 13 zase připojí nejlevější LED k pinu 13. Pokud si chcete připomenout jak pracovat s LED, pojednává o tom tento článek.

TinyLab: Nastavení přepínačů pro používání LED a XBee

Nastavení přepínačů pro používání LED a XBee

Do Arduina nahrajeme následující program:

byte led = 13;

void setup() {
  Serial1.begin(9600);
  Serial.begin(9600);

  pinMode(led, OUTPUT);
}

void loop() {
  if(Serial1.available()){
    char c = Serial1.read();

    if(c == 'H' || c == 'h') digitalWrite(led, HIGH);
    else if(c == 'L' || c == 'l') digitalWrite(led, LOW);

    Serial.println(c);
  }
}

Arduino Leonardo, které tvoří jádro desky TinyLab, má dvě sériové linky. Ta označená Serial slouží ke komunikaci s PC, Serial1 je fyzicky vyvedená na piny 0 a 1 a je k ní připojen modul TinyLab.

Program dělá to, že pokud je dostupný nějaký znak po sériové lince, tak ho načte a podle jeho hodnoty rozsvěcuje či zhasíná LED na pinu 13. Navíc přijatý znak pošle do PC, takže si v sériovém monitoru můžeme zkontrolovat, jestli nám z XBee chodí nějaké znaky.

Nyní v programu XCTU klikneme na připojený modul a v pravém horním rohu na ikonu Konzole. Do levého bílého pole pak můžeme psát zprávy, které jsou okamžitě přenášeny do druhého modulu.

XCTU sériová konzole

XCTU sériová konzole

Na straně počítače nemusí být jen „hloupá“ textová konzole, ale třeba nějaká aplikace s grafickým rozhraním a tlačítkem pro ovládání LED. Taková se dá napsat třeba v prostředí Processing.


A to je pro dnešek vše. Napadne vás ještě nějaký projekt, který by se dal s moduly XBee postavit? Třeba bezdrátový teploměr, ovládání brány, …

Zdroj: https://alselectro.wordpress.com/2017/01/23/zigbee-xbee-s2c-how-to-configure-as-coordinator-router-end-device/

Zbyšek Voda

Zbyšek Voda

Už nějaký čas se zajímám o věci kolem Internetu věcí a otevřeného hardware a software. Tak jsem se také v roce 2010 dostal k Arduinu, pro které dodnes programuji a taky píšu články o práci s ním. Baví mě vymýšlet, jak staré věci používat novým způsobem.
Zbyšek Voda

Napsat komentář