Problem RFBee and Firmata

Hello all

I am trying to control my arduino with the Firmata library using 2 RFBee v1.1.

Here is my target setup description:

  • A PC with Firmata client with a UARTSBEE (from seeedstudio) to connect a RFBee v1.1
  • An arduino with Standard Firmata Firmware and a RFBee v1.1
  • The two RFBees are working with default settings, in broadcast mode (I’ve successfully tested the communication with an Hello world sample)

First problem, RFBee cannot work with baudrate 57600 which is Firmata default baudrate.
Firmata works fine with 9600 and 115200 which are RFBee compliant baudrates.

What I do not understand is why Firmata@115200 does not work with two RFBees@115200 !??

Firmata@115200 and with USB works fine.
RFBees@115200 with Hello world works fine.
But I don’t manage to make thw whole thing work :frowning:
And it does not work with baudrate 9600 neither!

One solution could be to use RFBee with 57600 baurdarte, can the RFBee firmware be tweaked to use it?
If anyone has an idea it would be very usefull because I’m stuck :S

Thanks

hi~ actually, after initialize rfbee, you can initialize baudrate again, then you can use 57600 again .
eg:

rfBeeInit();
Serial.begin(57600);

Thank you for the answer.

I’ve just tested it with no success :frowning:
I have modified RFBee.ino to set
Serial.begin(57600);
I also use 57600 in my sample on my Uno.

Opening the /dev/tty.usbserial-A1017ICY with screen at 57600 gives me unprintable chars.
But i can see the right number of “???” every second but not the “Uno” string :frowning:

Am I missing something?
Have you ever tested RFBee@57600?

Thanks

hey~ I am sorry that I made a mistake, I had try 9600 ,38400 and 115200, all works fine~
it 's strange that It does work fine at 57600, I think it’s maybe RFBee use the Atmega168 internal crystal, which is unstable. :frowning:

I don’t think that the baudrate is the point in my problem.

The hello world works with RFBee link with both 115200 and 9600 baudrates.
Firmata works on USB link with both 115200 and 9600 baudrates.

But I cannot make firmata work with RFBee!
Does anyone knows enough the Firmware to explain that?

I tried to remove all extra string prints by rfbee firmware (like “ok”) not to mess with the firmata protocole, but without success…

seems that there’s some problem when rfbee communicate with firmate… or can you just use the rfbee as a arduino board , and send some data via uart, see if firmate can get it ?

I use StandartFirmata project as is, like a Firmware and it is quite big so I don’t know if RFBee chips have enough memory.
Plus merging the two firmwares into one is a little challenging as I’m an arduino beginner :slight_smile:

Firmata over UART works (on Uno/Leonardo) so I assume it will work on Atmega168…
But I will test it on a RFBee chip via its UART soon :wink:

Actually I had modified the rfbee firmware sometimes ago, maybe you can have a look at it ~ :smiley:
RFBee.zip (18.6 KB)

Thanks, I will test your RFBee lib ASAP :wink:

Could you tell me what are the changes from the google code version?

Searching for documentation, I saw a github project: github.com/robots/RFBee
Unfortunatly, I don’t know how to use it without the Arduino IDE (there is no .ino), as I said, I’m an arduino beginner :neutral_face:

my code is more easy to combine with other code ~ cu’z I add some useful API, such as sendDta(), and isDta(), and so on! :smiley:

of curse, it use Arduino IDE :wink:

I keep investigating and I just noticed something.

Using USB uart, the firmata firmware on the Uno waits for DTR to send its initialization string (the version + blahblah).
Using the RFBee link the initialization string is not sent so the communication doest not start.

Maybe you could or someone tell me if the DTR signal is used by the RFBee?
If the PC changes the DTR, does RFBee transmit the value to the other to set the value of the arduino uart?

I’m afraid only data are transmitted and no signal like DTR :frowning:

hey, sorry for the reply~ I was really busy this week~
does it any progress with you project?

I’ve been busy too, but I tried something and succeeded using Firmata@9600 over RFBee@9600 !!!

What I suspected in my last post seems to be right.
When it boots the Arduino (with Firmata FW) send its version over UART.
The client on the PC waits for this message to initialize and use DTR to reset the arduino.

When using RFBee, the PC client sends DTR to the RFBee and waits for the init string from Firmata.
But RFBee does not propagate the DTR so the Arduino does no reset and does not send the Init string.

I noticed it because when I switch on the Arduino AFTER launching the PC CLient, the client can see the Firmata over RFBee because the init string is sent over RFBee…

So my next step is to hack the Firmata client to init itself without the init string from the client.
Maybe you can give me more information about the DTR over RFBee?

Thanks for your interest :wink:

hey, I am glad that you solve it yourself!! :smiley:

Actually, it’s a shame that I don’t know much about Firmate or DTR!! :frowning:
anyway, when your project finished, I’ll glad that you share it to us~ :smiley: