Can Arduino speak to Xbee without a shield?

I have a couple of Arduino’s setup to handle serial communications that work well together. I want them to communicate wirelessly via Xbee modules but, I neither have or can afford the shields now. Instead, I tried to use a voltage divider (10k between Arduino’s TX and junction with 15K to ground to Xbee’s DIN) and the Xbee doesn’t “see” a thing. Any insight on how to accomplish Xbee integration without a shield?

Have been looking at how to get a “minimal” setup to hookup Xbee to a microcontroller. I saw a schematic for an easy looking “shield-less” connection on pg. 202 of “Making Things Talk” (great book BYW) but I can’t get that to work.

So its clear, I do have p2p/controller-to-controller xbee communication working. I’ve tried some different shields and have only had luck using the Adafruit xbee shield. The Libelium thing looks great, but can’t get it to handle receipt of data.

I’ll bet the Sparkfun equivalent shield works well too, but it would be great to understand why a shield is needed at all! The later Arduino modules have a 3.3v power supply and (clearly) can read serial TTL on the Tx/rx pins. Not sure why you can’t just by a cheap pinout and hook it up and make it go.

Could it be that xbee puts out so-called “CMOS” voltage levels on TTL serial and Arduino is expecting standard 5v TTL?

Sort of thought of that while posting…

I’ll try it and report back.

3.3V Arduinos can talk to Xbee directly. For 5V, you need level converters in both directions.

So clearly I needed to do the logic level conversion, but the “minimal” xbee setup still doesn’t work for me.

Has anyone else tried this with success?

Specifically I am:

(*) Using the Sparkfun xbee breakout board

(*) Using the Sparkfun logic level converter [both are cool]

(*) Hooking the 5v power from Arduino to the “Hi” side of the converter

(*) Hooking the 3v3 power from Arduino to the “Lo” side of the converter

(*) And on the xbee I am:

Hooking the same 3v3 from Ard. to Vcc on xbee

Ground on Ard. to gnd on xbee

Dout and Din on xbee to converter (low side)

(*) Finally, hooking hi side converted values to Tx and Rx on Arduino

I know i’ve got the right settings on the xbee plus the right arduino code since my Adafruit shield works fine receiving a regular beat of signals from another xbee.

I’ve hooked up a Saleae logic reader on the Dout line and i’ve got flatline.

All the voltages check out fine (i.e. the “flatline” signals are at the expected hi levels relative to their voltages.)

Maybe that’s too much detail…

Anyway, I’m asking if anyone has gotten a shieldless super-basic arduino-to-xbee hookup to work.

:?

I’m not sure exactly why this matters, but connecting the RTS pin to ground got the whole thing working.

Yes, of course you need the voltage conversion and the Sparkfun logic level converter (BOB-08745) is exactly what’s needed.

Of course you also need the right xbee configuration, but that wasn’t my problem.

For whatever reason, my setup required RTS to be grounded. That might be a result of the settings i made on my xbee. The postings i’ve seen on other boards say different things about the need to ground RTS, so I’m not entirely sure what’s needed for anyone else’s project.

Anyway, looks like i’ve got a functional xbee-to-arduino hookup without a shield.

Anyone know why grounding RTS helps? This particular test I’m running, i am receiving lots of data and sending none…if that helps.

So the reason I needed to ground RTS was that I (mistakenly) setup the XBee that way. The DIO6 setting (AT command is “D6”) was set to 1.

Leaving it at zero (like I should have done) makes it no longer necessary to ground RTS.

Yes, i know…obvious…well at least obvious once i’ve read the manual.

:oops:

Just writing this up so that if anyone else gets stuck in this way, they can find this post and get unstuck.