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!!!