Go Down

Topic: Problemas com serial.read() (Read 1 time) previous topic - next topic

AugustoSantos

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

bubulindo

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.
This... is a hobby.

AugustoSantos

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.

bubulindo

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?
This... is a hobby.

AugustoSantos

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?? :/

muito obrigado.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy