Simple XBee API implementation not working on propeller
Nicopowers
Posts: 12
Hi everyone,
I put together a VERY simple API implementation and I can not get it to work!!! I think this will serve as a very good example on how to setup a basic XBee API communication system using the propeller. I wrote codes for an XBee router and an XBee Coordinator. I do not know what I am doing wrong! I'm also going to attach the archived projects for each code, thank for UART help!
Router Code :
Coordinator Code :
I put together a VERY simple API implementation and I can not get it to work!!! I think this will serve as a very good example on how to setup a basic XBee API communication system using the propeller. I wrote codes for an XBee router and an XBee Coordinator. I do not know what I am doing wrong! I'm also going to attach the archived projects for each code, thank for UART help!
Router Code :
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 ' I/O and Baud rate for XBee comms XB_Rx = 2 XB_Tx = 1 XB_Baud = 9600 ' XBee addresses DL_Addr = 0 ' Send data to this address (base) OBJ XB : "XBee_Object" PUB Start ' Initialize Hardware Objects XB.Start(XB_RX, XB_TX ,0, XB_Baud) XB.Delay(5000) repeat ' Accept incoming in loop XB.API_Str(DL_Addr,string("Hello")) XB.Delay(5000)
Coordinator Code :
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 ' Set pins and Baud rate for XBee comms XB_Rx = 17 XB_Tx = 16 XB_Baud = 9600 ' Set pins and baud rate for PC comms PC_Rx = 31 PC_Tx = 30 PC_Baud = 9600 ' Set address of base unit MY_Addr = 0 OBJ XB : "XBee_Object" PC : "FullDuplexSerial" PUB Start ' Configure XBee & PC Comms PC.start(PC_Rx, PC_Tx, 0, 9600) XB.start(XB_Rx, XB_Tx, 0, 9600) XB.Delay(5000) PC.str(string("Coordinator in API mode ready at address:")) PC.dec(MY_Addr) PC.Tx(13) XB.Delay(5000) Repeat ProcessFrame Pub ProcessFrame | Temp '' Accepts incoming frame for data and diplay PC.Str(string("test")) XB.API_Rx ' wait for API data PC.Str(string("test2")) if XB.RxIdent == $81 ' If data identifier is a msg string ' Display source address PC.Str(string(13,"Data Received from address: ")) PC.DEC(XB.srcAddr) ' Display received string PC.Str(string(13,"Message String : ")) PC.str(XB.RxData) PC.str(string(13,"RF Signal strength: ")) PC.DEC(-XB.rxRSSI) ' Display RSSI level ' on sending unit PC.str(string(13,"------------------------------------------"))
Comments
You use the term "coordinator". Does that mean one of the XBees is in coordinator mode? What if you try it without coordinator mode?
The configuration I usually use is just the default configuration with the following changes: API mode, my desired baud rate, and (as just a (probably dumb) convention I have) the 16 bit address set to the bottom 16 bits of the 64 bit address printed on the bottom of the XBee (also the SH and SL values), but any other unique values should work. Make sure you tell each XBee to send to the 16 bit address of the other. You could also try setting the DH and DL of each XBee to the SH and SL of the other, but I don't think that matters with API mode. Unfortunately, that XBee object doesn't support 64 bit addressing.
What happens if you hook one XBee up to the Propeller and the other one to XCTU? Does XCTU show any packets coming in?
Also, I see that you have a FullDuplexSerial and an XBee object, which has another FullDuplexSerial. Once you get this working, you can save some cogs by using the modified XBee object that uses fullDuplexSerial4port that I posted in your other thread.
I'm not a moderator or anything, but is there a reason you didn't just post this in your other thread?
And the Router's Code :
The code appears to be looping in the XB.API_RX function where its waiting to receive data.