Sending API packets to an XBee.

Jan 8, 2011 at 8:28pm

Sending API packets to an XBee.

Hi there,
Does anyone know how i would go about making a patch for getting API packet communication using an Xbee explorer with an xbee with coordinator api firmware loaded, to read data from 2 xbee end devices set up with AT commands.
Any information would be greatly appreciated, i am pretty stuck on this one
Many Thanks
Miles

#54290
Jan 9, 2011 at 10:59pm

If you don’t find any other solutions (but I hope you do as I would also like to delve into these things :D ), you can use Processing where, I am guessing, there are libraries and then use maxlink (http://jklabs.net/maxlink/) to communicate between Processing and max. It’s a long roundabout but it is better than nothing!

#195361
Jan 9, 2011 at 11:02pm

For the moment I really don’t know anything about the XBees but did you also try the [serial] object?

#195362
Jan 11, 2011 at 12:45am

At one point I spent some time working with XBee radios. You will want to get cozy with the serial object and parsing the data. Below is a simple patch I wrote to send AT messages to the Xbee board for configuration.

I don’t think I ever got so far as actually parsing the API messages coming from the board though. Would be nice to put my little box of Xbees to use eventually!

– Pasted Max Patch, click to expand. –
#195363
Jan 16, 2011 at 8:50pm

Thats a quality patch
thanks for that.
I’ve managed to see incoming data now through X-CTU,
but i can’t seem to find how to access it through max/msp
Thank you all for posting so quick and sorry for my late reply
Kind regards
Miles

#195364
Jan 18, 2011 at 3:19pm

i can now see the incoming data through [print] in the max window,
i just don’t know how to interpret the data stream.
its all a bit greek to me
many thanks
Miles

#195365
Jul 28, 2012 at 8:53pm

Did you figured out this?
i am trying to use xbees without any micro controller (arduino,funnel) with max. i found tutorial and AT commands to get 2 xbees talking together but i didn’t figured out how to get xbee value into max with the serial object or how to send value to control the digital out .
if you successed on this, please give some step or examples to follow.
thanks!

#195366
Jul 28, 2012 at 9:44pm

Hi freeka,

I used 2 XBees S1 and I know that once you pair them it is pretty easy from then on. If you have more than 2 or if you have XBee S2 it might be a bit more difficult to get them rolling. (Did you test them with the Arduino IDE Serial Monitor and they work?) One will send serial data and the other one will grab it.

– Pasted Max Patch, click to expand. –

Prior steps:

1. Select proper port (ex: a)
2. Type the right baud (ex:9600)

All the best,
ygreq

#195367
Jul 28, 2012 at 10:00pm

thanks for your reply !
til now the only situation i have been using xbee was with funnel or minibee.
configuring the xbee wasn’t really hard for this purpose ( baudrate, pan id and if you want it as coordinator or end device)
but now that i try to use the xbee as an end device without funnel or micro controller, everything get confusing.
i have been messing around with x-ctu on windows trying to follow this : http://fusion-artist.com/XBee/XBeeTutorial.htm
but when i come back to osx and tried to get the data inside max with the patched linked on the tutorial nothing is showing up.
i tried to look with with arduino IDE serial as well but nothing….
It would be nice of you, if you could describe me the exact configuration you had on both xbees and all the important steps you did to get it working :)
my goal at first would be to set a digital input on the xbee end device and receiving the information inside max.
i am on a macbook pro 10.7.4, i think the 2 xbees i use are from serie 1, the coordinator is plug on an usb xbee explorer, the end device is on usb explorer as well ( usb not plugged) and i do all my wiring on the pins of the explorer ( gnd, 3,3v, Di2)

merci beaucoup!

#195368
Jul 28, 2012 at 10:12pm

I really depends what you are really trying to achieve. You said, for example that you changed your OS. Did you install the FTDI chip driver for that usb xbee explorer?

I would recommend trying to get it working within the Arduino IDE before working inside Max.

#195369
Jul 28, 2012 at 10:23pm

yeah sure, what count for now is having something showing up on the serial monitor.
drivers might be ok on the both side windows/osx as i already used it with xbee plugged on funnel on osx ( i can choose the explorer in the serial port of the arduino ide) and as x-ctu was working on windows. i do think the problem really comes on the confinguration of the xbees.
(but we agree that arduino IDE would be only to use the serial monitor right?)

#195370
Jul 28, 2012 at 10:29pm

If you think you have problems with the configs that is what you should solve first. I would recommend using some microcontrollers and the SoftwareSerial.

#195371
Jul 28, 2012 at 10:31pm

AH! but that’s exactly my problem. its working perfect with microcontrollers. The problem only come when i try to use the xbee without micro controller.

#195372
Jul 28, 2012 at 11:09pm

i got it !

found a soft called moltosenso for osx, and it now works….

#195373
Jul 29, 2012 at 11:58am

I did a whole project with api mode xbees and ended up building an mxj object that did all the stuff. I’ve been meaning to give this away… Let me dig around the hard drive..

#195374
Jul 29, 2012 at 12:03pm

Here it is, you need to copy some files to your support directory to make RXTX work in mxj, it only works with named XBees so you need to give them names in XCTU or whatever you’re using to set them up. Works pretty reliably for me even at high baud rates but YMMV.

#195375
Jul 29, 2012 at 12:03pm

Damn it, just over the upload limit…

#195376
Jul 29, 2012 at 1:41pm

//////

#195377
Jul 29, 2012 at 2:01pm

http://crx091081gb.net/?p=460

I just blogged it, been meaning to for about a year, just really hate the internet.

#195378
Jul 29, 2012 at 2:07pm

Thank you!

so if i understand by saying” ADC_IO support can easily be added by fiddling the source code” you mean that as it is now, its done to be used with a microcontroller right?

#195379
Jul 29, 2012 at 2:17pm

It works fine with arduino’s on the other end, I’ve done a whole project with them

http://crx091081gb.net/?p=421

There I’m sending packets that control the LEDs and stuff and receiving packets that describe the knob twiddling. Works fine with up to ten and at baud rates of up to 57,600. Any faster and the arduinos can’t handle the serial buffer correctly, would probably need a really tight main loop to hit 115,200 reliably.

The ADC_IO thing is for people who sample directly on to the XBee and don’t use microcontrollers, there’s an XBee firmware that allows you to just wire up sensors direct and send the data back at a sample rate you set with some message. I never bothered implementing it cos I never needed it but I figured some people might want it so I thought I’d tell them where to look. It’s just a matter of handling those packets back from Andrew’s api in the source code I wrote, not a big task.

Hope it helps you.

#195380
Jul 29, 2012 at 2:23pm

Ok, in the meantime this is exactly what i try to achieve, using xbee without microcontrollers.
i tried this http://fusion-artist.com/XBee/XBeeTutorial.htm but no luck all the value i got from the serial are totally random.
“there’s an XBee firmware that allows you to just….” do you remember what firmware it is?

on the other hand, if i still understand you correctly, i could use for example two funnel FIO in same time by naming my xbee and using your mxj object?

and yes you help a lot! there is not so much going on about xbee and max/msp sadly…

#195381
Jul 29, 2012 at 3:37pm

Yeah I remember that page, you want it without microcontrollers? So you read the analogue data to a pin and send it back? Like this guy

http://www.faludi.com/2006/12/03/xbee-direct-io-with-adc/

The firmware will be in the list for your model in XCTU it’ll probably have a name with IO or ADC in it, then you just wire the sensor to the right pin, make sure it’s voltage is in the correct range for the XBee (you might need to wire something to vref) and it should start sending data back which you can pretty easily adapt my code to receive… Look for the part where mine handles incoming packets, it checks for type and does something for node discovery responses and something else for actual data, you need to add a response for ADC_IO packets and then send the data out of an outlet in the same way it does already.

Keep going you’re nearly there.

#195382
Jul 29, 2012 at 3:58pm

OLALALA! finally got it working with processing atleast using that lib
http://www.faludi.com/examples/xbee-api-library-for-processing/
(its actually the ame guy that you mentionned in your example just before)
, now i need to figure out what to do with the packet inside max/msp.

Note that there is no special firmware to do this , the version just need to be atleast version 10A1.

So now i basically need a serial object guru , that will help me to unpack all this mess, byte blabalbalbalbla

#195383
Jul 29, 2012 at 4:19pm

If you’re sending API data you’re better off adapting my external IMHO, doing it through the serial object is likely to be a pain, though if you’re only using one XBee it might not be so hard if all the packets are the same length, there’ll be a load of header data which you can discard and then the data you want probably split between two bytes (I think it sends 10 bit data from the ADC) just left shift the MSB and add it to the LSB et voila. Download the XBee API pdf off here and look for the ADC_IO packet description it’ll tell you which bytes to go for.

http://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CFMQFjAD&url=http%3A%2F%2Fcode.google.com%2Fp%2Fxbee-api%2Fsource%2Fbrowse%2Ftrunk%2Fdocs%2FXBee-802.15.4-manual.pdf%3Fr%3D233&ei=JGIVUP2BH6HX0QX99YCADg&usg=AFQjCNG5BZEgpqnk4atabrmE8_M4W8foCw&sig2=ZsVZCG1Xot2XR2_kR5cRpQ

But tbh if you’re only using one remote XBee to do ADC sampling and not sending anything back I’d just stick to serial mode and ditch API mode, there’s more overhead with API packets compared to serial. API mode is more useful for mesh networking where things can drop in and out and other funky stuff.

#195384
Jul 29, 2012 at 4:25pm

i am just in the first step, experimenting and trying but the final goal is to use 2 or 3 xbees without microcontroller that will talk to max. I will use some one xbee for input but the others will be pwm output, so it sounds like your external will be helpfull at some point!
But for some reason its not working on my machine. the mxj is greyed out. i puted the files as you described in the txt file. i am remember i already had this kind of problem with mxj but don’t remember how i fixed it.
i am on mac 10.7.4 using max 6.
Any idea?

#195385
Jul 29, 2012 at 4:37pm

Restart max? If Max was already running when you copied them then it won’t know the new jars have been added.

#195386
Jul 29, 2012 at 4:38pm

Awww i am more Keen than that to try new external, i already rebooted the computer 6 times :)

#195387
Jul 29, 2012 at 4:41pm

What does the max window say? It should list the jars it has access to and any trouble it’s having loading mxjs.

#195388
Jul 29, 2012 at 4:42pm

java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at XBee4Max.(XBee4Max.java:41)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
… 1 more
(mxj) unable to alloc instance of XBee4Max

#195389
Jul 29, 2012 at 4:51pm

Ah, whoops I forgot Andy’s api uses log4j, you just need to copy this jar in there as well. Your poor computer being restarted 6 times.

Attachments:
  1. log4j.jar
#195390
Jul 29, 2012 at 4:56pm

better but still not working.
this sounds like its coming from the src files i had to drop in my library. i puted it in the main library maybe i have to build a java folder in the users/library ????

java.lang.NoClassDefFoundError: com/rapplogic/xbee/RxTxSerialComm
at com.rapplogic.xbee.api.XBee.open(XBee.java:154)
at XBee4Max.open(XBee4Max.java:88)

restart count : 8

#195391
Jul 29, 2012 at 5:02pm

This looks like it’s having difficulty opening the serial port I remember this was a complete bitch when I first ported the library to a different machine, have you defo copied contents of the support folder to support?

You might have to copy them somewhere else too…. brb

#195392
Jul 29, 2012 at 5:06pm

Try copying the stuff from support into /Library/Java/Extensions see if that works…

#195393
Jul 29, 2012 at 5:12pm

it is already there, as you said in the txt file. but this is the only sot i puted these files.

“have you defo copied contents of the support folder to support?”

what do you mean?

#195394
Jul 29, 2012 at 5:20pm

Hmmm just meant have you definitely copied those files. Hang on a minute I’m being well stupid. You need this too doh.

Attachments:
  1. RXTXcomm.jar
#195395
Jul 29, 2012 at 5:26pm

ahahahaha. maybe we should link that topic to your blog then :)

i don’t have red error anymore. but i got a tiny error

XBee4Max: Cannot open port
XBee4Max: ERROR

i changed my /dev/tty.usb… and baudrate tho.
maybe reboot 9

i gotta run so i try later and let you know!

thanks for your great help i appreciate.

#195396
Jul 29, 2012 at 5:29pm

Will probably work now when you give it the right /dev/tty.usb——- just copy it out of Arduino. Will update blog, cheers for being a guinea pig! Let us know how you get on.

#195397
Nov 17, 2012 at 8:25pm

I don’t know if you noticed this. A bit late but nonetheless.

http://faludi.com/xbee/max/

#195398
Nov 20, 2012 at 2:56pm

Yes seen that one, when i was doing the research.
but thank you for point it again!
have a good day

#195399
Sep 17, 2013 at 9:07am

The XBee4Max external looks great! Can it send a simple on/off message to a mesh network of Xbees or does there need to be an Arduino on each node? I’m not receiving data into Max, just sending it out.

#265516

You must be logged in to reply to this topic.