Xbee

Fra Åpen sone for eksperimentell informatikk
Gå til: navigasjon, søk

Xbee brukes for kommunikasjon mellom; Arduino og PC, og Arduino og Arduino. Og er veldig enkle å bruke da denbruker Serial for å kommunisere. Så bruker du standardoppsettet så vil kommandoen "Serial.println("Hello Universe");" sende strenge"Hello Universe" til alle enheter som lytter på Serial i den samme baudraten som deg (standar er 9600). Dessverre vil strengen bli konvertert til byte og de vil sannsyneligvis ikke skjønne hva du har sendt. Derfor er det viktig at det du sender er i byte slik at mottaker vet hvordan den skal tolke meldingen. Derfor er Xbee veldig fin til å bruke for å kommunisere med bruk av enkle kommandoer. For eksempel brukes Xbee til å sende styre signaler (f = forward, b = backward...) til en belterobot i prosjektet Prosjekt:White wanderer.

Som sagt så sender en Xbee-enhet meldingen til alle som er "koblet" til samme Serial-baudrate. Dette kan heldigvis løses med å stille inn Xbee-enhetene du skal bruke til å kun kommunisere med hverandre. Ser mer om dette i "konfigurasjons kommander" lenger ned.

Innhold

Eksempel kode

En Xbee

Med kun en Xbee kan du sende serial-kommandoer via Arduino sitt "Serial Monitor" via USBen.

void setup()
{
  Serial.begin(9600)
  pinMode(13, OUTPUT);
}
 
void loop()
{
   if (Serial.available() > 0) 
    {
      char value = Serial.read();
      if(value == 'H')
        digitalWrite(13, HIGH);
      else if(value == 'L')
        digitalWrite(13, LOW);
    }
}

To Xbee

Har du to kort kan du bruke koden fra forrige avsnitt på en Xbee, mens den andre bruker denne koden. Det som vil skje er at den andre Xbee-enheten vil sende ut 'H' og 'L' med ett sekunds mellomrom. Og som sagt i forrige avsnitt så vil den første enheten lytte etter 'H' og 'L' og deretter skru av en lysdiode koblet til pin 13.

void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('W');
  delay(1000);
}

Adressering

For å få to spesifikke enheter til å kommunisere (uten at alle kan plukke opp signalene) må man konfigurere nettverks id'en, kanalen, og destinasjonsen.

  • If a module's DH is 0 and its DL is less than 0xFFFF (i.e. 16 bits), data transmitted by that module will be received by any module whose 16-bit address MY parameter equals DL.
  • If DH is 0 and DL equals 0xFFFF, the module's transmissions will be received by all modules.
  • If DH is non-zero or DL is greater than 0xFFFF, the transmission will only be received by the module whose serial number equals the transmitting module's destination address (i.e. whose SH equals the transmitting module's DH and whose SL equals its DL).

Again, this address matching will only happen between modules on the same network and channel. If two modules are on different networks or channels, they can't communicate regardless of their addresses.

PS: Husk å lagre konfigurasjonen med "ATWR"!

Konfigurasjons kommandoer

For å konfigurere Xbee-enheten må du sende tre pluss symboler ("+++") og det trenger å være minst ett sekund før og etter symbolene (dette gjelder også linjeskift og vognretur). Hvis du har gjort dette riktig vil du få tilbake "OK". Da kan du skrive inn følgende kommandoer med "AT" foran |Hayes command set. All forandring du gjør må også lagres med bruk av "ATWR".

Kommando Beskrivelse Gyldig verdi(er) Standarverdi
ID The network ID of the Xbee module. 0 - 0xFFFF 3332
CH The channel of the Xbee module. 0x0B - 0x1A 0X0C
SH and SL The serial number of the Xbee module (SH gives the high 32 bits, SL the low 32 bits). Read-only. 0 - 0xFFFFFFFF (for both SH and SL) different for each module
MY The 16-bit address of the module. 0 - 0xFFFF 0
DH and DL The destination address for wireless communication (DH is the high 32 bits, DL the low 32). 0 - 0xFFFFFFFF (for both DH and DL) 0 (for both DH and DL)
BD The baud rate used for serial communication with the Arduino board or computer.
  • 0 (1200 bps)
  • 1 (2400 bps)
  • 2 (4800 bps)
  • 3 (9600 bps)
  • 4 (19200 bps)
  • 5 (38400 bps)
  • 6 (57600 bps)
  • 7 (115200 bps)
3 (9600 baud)
RE Restore factory default settings (note that like parameter changes, this is not permanent unless followed by the WR command).
WR Write newly configured parameter values to non-volatile (long-term) storage. Otherwise, they will only last until the module loses power.
CN Exit command mode now. (If you don't send any commands to the module for a few seconds, command mode will timeout and exit even without a CN command.)

Note: although the valid and default values in the table above are written with a prefix of "0x" (to indicate that they are hexadecimal numbers), the module will not include the "0x" when reporting the value of a parameter, and you should omit it when setting values.

Ting å huske på

  • Xbee sender kun bytes.
  • Noen andre kan ha konfigurert dem, så alltid dobbelsjekk at innstillingene er slik du vil ha dem.
  • Husk å flikk om bryteren mellom hver gang du skal laste opp kode. DLINK betyr kommunikasjon via USB, mens den andre knappen betyr at Xbee-enheten kan kommunisere via Serial. Hvis du glemmer å flikke bryteren over og prøver så å laste opp kode, vil den som oftes bruke lang tid før den finner ut at den ikke får lastet opp koden, også gi deg en feilmelding om at noe ikke er synkronisert.

Eksterne lenker

Personlige verktøy
Navnerom

Varianter
Handlinger
Navigasjon
Kategorier
Verktøy