Problemas com serial.read()

Olá pessoal, tudo bem?

Sou novo no Arduino e to passando mals pedaços com ele tentando fazer comunicação Xbee em 2 hops.
Gostaria muito da colaboração de vocês para eu conseguir terminar meu projeto final. Ficarei muito grato pela atenção e ajuda galera!

Então, o que eu estou tentando fazer é enviar pacote de um arduino para o outro estaticamente em hops. São no total de 3 arduinos.
Estou tendo problemas na comunicação dos 2 primeiros, se conseguir resolver isso, o 3º hop acho que fica fácil. Note que todos os 3 arduinos tem uma identificação, no caso (1), (2), (3).
Em poucas palavras, to tentando enviar um pacote de um arduino com XbeeShield (todos possuem) neste formato (2#1#0#) -> (Hostdestino, HostOrigem, hop).

Mas, como disse to tendo problema em um método da minha biblioteca chamado recebeBeacon, que está abaixo:

Beacon Service::recebeBeacon(short id) {

Beacon beacon;
String msg;

while(Serial.available() > 0) {
byte temp = Serial.read();
msg = msg + (char) temp;
}
Serial.flush();

if (msg.length() > 0) {
beacon = converteStringParaBeacon(msg);
delay(1000);
Serial.flush();

if (verificaMensagemBeacon(beacon,id)) {
return beacon;
}
}
return beacon;
}

Meu arduino (1) envia o pacote com (2#1#0#), ta ok!
void loop() {

//Send beacon com Dest(2), Source(1), Hop(0)
beacon = Beacon(2,1,0);
service.enviaBeacon(beacon);
delay(2000);

}
Mas, quando o arduino (2) pega a mensagem, além da mensagem vir, vem um monte de lixo. Olhem a figura anexada para vocês terem uma ideia.

recebendo...
void loop() {

recebe = service.recebeBeacon(1);
delay(2000);

//recebe.getDhost(), recebe.getShost(), recebe.getSALTO() são do tipo short, não sei se o problema ta aqui!!!

beacon = Beacon(recebe.getDhost(), recebe.getShost(), recebe.getSALTO());
Serial.println(service.converteBeaconParaString(beacon));

delay(2000);
}

Fui claro pessoal? O que vocês acham?

Muito obrigado pela atenção!!!

Algumas questões:

  • Já experimentaste comunicacão entre o computador e o Arduino com as Xbees?

  • Configuraste as XBee? Isso é bastante parecido com o que eu tinha nas minhas. Depois de as configurar, funcionam bem.

Olá amigo, obrigado pela atenção.

Então, o que eu estou fazendo é usar tres cabos seriais, do tipo de cabo de impressora, um em cada arduino.
Os tres arduinos tem um skield Xbee, mas eles estao conectados no computador. Faço a comunicação assim, para depois poder usar eles com pilha!!
Não configurei Xbee, você teve problema parecido? Pode me explicar como fez?

abs e muito obrigado.

De repente não me lembro, não. :\

Eu passei por estes tutoriais para o fazer:

http://www.ladyada.net/make/xbee/configure.html
https://sites.google.com/site/xbeetutorial/xbee-introduction/zigbee_setup
http://www.embedded.arch.ethz.ch/xbee-setup.pdf

Eu lembro que na altura passei um bom bocado de tempo e acabei por ler o manual para ver exactamente o que cada parâmetro queria dizer. Talvez valha a pena porque facilita. O que me aconteceu foi que elas precisam dum setup que supostamente viria de fábrica, mas näo vinha. Elas estavam brancas.

Já agora, tens a certeza que não é um problema de bauds?

Olá amigão,

Então não é problema de bauds, já usei a 19200 e 9600 e a 19.200 acontece a mesma coisa.
Nunca mexi nessa parte de configuração. Vou tentar ler estes tutoriais que você me passou? Não lembra mesmo o que você fez?? :confused:

muito obrigado.