I've got two XBees that I am having trouble getting to communicate. I have one hooked up to a de-chiped Duemilanove with reset to GND and an XBee explorer regulated with DIN to RX, DOUT to TX.
XCTU sees the XBee and I already updated the firmware to 10EC and +++ returns OK, but ATSH, ATDH and other commands return nothing.
Just wondering on what specific things I may be forgetting in configuring the XBees.
I've already looked through numerous guides that haven't really helped in covering the basics.
Ultimately, I want to have 2 Xbees able to communicate through Serial.println();'s and Serial.read();
Edit: Uno + XBee Shield && Duemilanove + XBee Explorer Regulated - both series 1
I've got two XBees that I am having trouble getting to communicate.
Oh, those kind. That's certainly useful information.
Can you share any more details about them? Height, weight, color, density? Even more useful would be what kind they are and how you have configured them.
but ATSH, ATDH and other commands return nothing.
So, use the other tab, and see what values these attributes already have.
Just wondering on what specific things I may be forgetting in configuring the XBees.
You haven't told us anything yet, so it could be just about anything.
Ultimately, I want to have 2 Xbees able to communicate through Serial.println();'s and Serial.read();
All you need then, is to configure them properly, and attach them to the Arduino properly. Duct tape doesn't work too well.
I considered the specifics to be fairly default in terms of first time uses for Xbees.
I can successfully update and change/write different fields properly to the Xbee but I'd like to make sure full and proper communication is working if it is possible to test that at this level.
All you need then, is to configure them properly, and attach them to the Arduino properly. Duct tape doesn't work too well.
I am looking for how to do this and verification that how I have it connected is correct to rule out the possibility of it being the cause of no connectivity.
I have two fully working sketches that print commands via Serial.println("");
Flow: telnet command received > process command > perform subroutine on command > send serial command > wait for receive of serial command > perform action.
If I use the Serial Monitor to send the commands locally it works fine. I left the Xbee's stock as it states that they should communicate by default being on the same channels and such. I am mostly looking to see why this communication is not happening but also get a better handle on how to st up and configure XBees.
I realize I could just program them both and try the basic sketches but I'm sure at this point some of the fields aren't set up properly.
Series 1 is the important factor. The only values that need to be set are PAN ID, MY, and DL. The rest of the fields should be left alone. Set PAN ID to the same value on both radios. Set MY on one to DL of the other (the exact value doesn't matter, so use 1 and 2. Set MY and DL on one to 1 and 2). Set MY of the other to DL of the first (On the second one, set MY and DL to 2 and 1, respectively).
I am looking for how to do this and verification that how I have it connected is correct
I presume that "this" refers to configuring the XBees. How you have them connected is still a mystery.
Which shield is attached to the Uno? How is the XBee explorer connected? The standard USB to mini-USB cable?
PaulS:
Series 1 is the important factor. The only values that need to be set are PAN ID, MY, and DL. The rest of the fields should be left alone. Set PAN ID to the same value on both radios. Set MY on one to DL of the other (the exact value doesn't matter, so use 1 and 2. Set MY and DL on one to 1 and 2). Set MY of the other to DL of the first (On the second one, set MY and DL to 2 and 1, respectively).
Ok, I will set them up in that way and test. In terms of software interfacing, does API need to be enabled or is that for additional functionality?
I am looking for how to do this and verification that how I have it connected is correct
I presume that "this" refers to configuring the XBees. How you have them connected is still a mystery.
physical and software connections. I note below how they are connected and given the successful command transition I believe I have them connected properly now. From my understanding, I need to switch the DIN to TX and DOUT to RX when the arduino chip is in for serial commands being sent from the arduino to be received by the xbee and sent through the antenna.
Which shield is attached to the Uno? How is the XBee explorer connected? The standard USB to mini-USB cable?
Uno to the shield set to UART, DIO5 pin flashes a lot.
DM to explorer regulated (non-USB breakout board) - DIN set to RX, DOUT set to TX, 5v and GND pinned to arduino without a chip (to act as FTDI usb controller for serial interfacing to the computer)
I got the XCTU terminal to work, turns out the first message "+++" requires DTR and RTS to be checked at the top but for other commands after this, it needs to be unchecked as carriage returns are needed on the end of each line.
Edit: I configured things as described but with AP set to 1 (API enabled) and I'm not getting anything on the receiving unit. The sending unit's DIN light flashes when I send a telnet command to the unit but no lights turn on for the receiving unit. Should go (client.read > perform command > serial print > xbee transmits > receive unit gets serial string > performs command)
does API need to be enabled or is that for additional functionality?
It is for additional functionality.
From my understanding, I need to switch the DIN to TX and DOUT to RX when the arduino chip is in for serial commands being sent from the arduino to be received by the xbee and sent through the antenna.
You said you had a USB Explorer. Use this to program each XBee, and leave the UNO alone (with chip installed). You still haven't answered the question about which shield you have.
DIO5 pin flashes a lot.
How do you know this? There is no visual indication that this is happening.
The sending unit's DIN light flashes when I send a telnet command to the unit but no lights turn on for the receiving unit. Should go (client.read > perform command > serial print > xbee transmits > receive unit gets serial string > performs command)
It would be a lot better to write a simple sketch for the Arduino to read and echo any serial data received. Connect one XBee to the PC, and open the Serial Monitor. Type stuff, and hit the Send button. The sending XBee's board's TX light should flash as it sends the data. The receiving XBee's shield's RX light should flash as it receives the data. The receiving XBee's shield's (as well as the Arduino's) RX light should flash as it sends the data back out. The PC's XBee's board's RX light should flash as it receives data, which should appear in the Serial Monitor.
Forget about telnet or anything else until this works.
From my understanding, I need to switch the DIN to TX and DOUT to RX when the arduino chip is in for serial commands being sent from the arduino to be received by the xbee and sent through the antenna.
You said you had a USB Explorer. Use this to program each XBee, and leave the UNO alone (with chip installed). You still haven't answered the question about which shield you have.
How do you know this? There is no visual indication that this is happening.
I know this because the Xbee shield noted above has an LED attached to the DIO5 pin.
The sending unit's DIN light flashes when I send a telnet command to the unit but no lights turn on for the receiving unit. Should go (client.read > perform command > serial print > xbee transmits > receive unit gets serial string > performs command)
It would be a lot better to write a simple sketch for the Arduino to read and echo any serial data received. Connect one XBee to the PC, and open the Serial Monitor. Type stuff, and hit the Send button. The sending XBee's board's TX light should flash as it sends the data. The receiving XBee's shield's RX light should flash as it receives the data. The receiving XBee's shield's (as well as the Arduino's) RX light should flash as it sends the data back out. The PC's XBee's board's RX light should flash as it receives data, which should appear in the Serial Monitor.
Forget about telnet or anything else until this works.
I know this because the Xbee shield noted above has an LED attached to the DIO5 pin.
Sparkfun's stuff is generally pretty good, but the "information" on their site often lacks clarity (or any resemblance to reality). The LED that is flashing for you is the Associate LED. It blinks at (supposedly) different rates to indicate when the XBee is paired with another XBee, or is seeking another XBee to pair with.
The USB explorer and the XBee Explorer Regulated serve the same purpose. The USB Explorer is easier to connect to the PC, since it comes with a mini USB connecter and cable. Use that device to program the XBees, and leave the UNO as delivered (with chip in place).
Sparkfun's stuff is generally pretty good, but the "information" on their site often lacks clarity (or any resemblance to reality). The LED that is flashing for you is the Associate LED. It blinks at (supposedly) different rates to indicate when the XBee is paired with another XBee, or is seeking another XBee to pair with.
That is interesting, I was not aware of the functionality. It blinks more than I would ever be able to keep track of but could I monitor this pin via an analogRead(); to check the supposed status?
Do I need to do anything with the RO or PR AT commands?
RO:
Packetization Timeout.
Set/Read number of character times of inter-character delay required before transmission.
Set to zero to transmit characters as they arrive instead of buffering them into one RF packet.
Seems like more of a preference.
PR:
Pull-up Resistor Enable.
Set/Read bitfield to configure internal pull-up resistor status for I/O lines
Bitfield Map:
bit 0 - AD4/DIO4 (pin11)
bit 1 - AD3 / DIO3 (pin17)
bit 2 - AD2/DIO2 (pin18)
bit 3 - AD1/DIO1 (pin19)
bit 4 - AD0 / DIO0 (pin20)
bit 5 - RTS / AD6 / DIO6 (pin16)
bit 6 - DTR / SLEEP_RQ / DI8 (pin9)
bit 7 - DIN/CONFIG (pin3)
Bit set to “1” specifies pull-up enabled; “0” specifies no pull-up
Do I need to do anything with the RO or PR AT commands?
Depends on what the module(s) are doing. If just sending/receiving data, no. If you are connecting switches or sensors to them, maybe PR needs to be set.