sábado, 13 de abril de 2013

Explicação do funcionamento do sistema de comunicação e seguranças implementadas

Depois de uma semana com a expectativa que seria instalado e testado no carro o sistema desenvolvido,  não passou disso mesmo apenas expectativa, a falta de alguma material para conclusão desta parte do meu projeto foi uma das condicionantes. Espero para a semana ter o material todo para finalizar esta parte, enquanto isso não acontece, vou "pegar" na monitorização do AtlasCar que explicarei no próximo post.
Voltando ao que me fez escrever este post, uma breve descrição do sistema a ser implementado.
O sistema é constituído por:
               - 1 Arduíno Mega
               - 1 Arduíno Fio
               - 2 Xbee PRO S2B

O Arduíno Mega será instalado no AtlasCar enquanto o Fio será acoplado ao comando da Xbox, atualmente usado para controlo do carro. Os dois comunicam através dos módulos Xbee, comunicação sem fios.
Tratando-se de um sistema de segurança as mensagens trocadas entre os dois sistemas (Carro e comando), têm de conter algumas redundâncias e verificações de chegada de mensagem. A mensagem trocada entre sistemas tem o seguinte formato:

       - Comando -> Carro : "0x02 Hello %d e-stop %d bat %d CRC16 0x03".
       - Carro -> Comando : "0x02 %d %s %d %d %d CRC16 0x03".

Explicando agora o que cada mensagem contém, começando pela mensagem envia pelo comando, que faz com que seja tomada uma ação no Carro. A mensagem é iniciada com o caráter 2, em seguida é introduzida uma string, o primeiro %d é um contador que é incrementado cada vez que o programa do Arduíno é executado, string e-stop, estado do e-stop 15-resume; 25-pause; 35-stop, string bat, o valor da entrada analógica onde se encontra um divisor resistivo ligado à bateria, um CRC16 calculado a partir da mensagem "Hello %d e-stop %d bat %d" e por fim o carácter 3 que termina a mensagem a ser enviada para o carro.
Sistemas de segurança implementados:
Só por si as mensagens já contêm um CRC16 (verificação cíclica redundante/ cyclic redundancy check) que é um verificador de erro na mensagem, pois se algum caráter se perder na comunicação e a mensagem chegar corrompida ao destino não pode ser tomada  qualquer tipo de ação, para isso o calculo do CRC é efetuando antes da mensagem ser enviada e quando chega ao destino, e só se os CRC's forem iguais é que é tomada alguma ação, se a comunicação for perdida, e considera-se perdida se ao fim de 3 segundos (pode ser configurado este tempo) não for recebida nenhuma "boa mensagem", isto acontece tanto do lado do comando como no carro, se isto acontecer o utilizador tem de ser avisado, no carro caso a comunicação seja perdida o PAUSE é ativado no comando as luzes que indicam o estado do E-Stop ficam todas acesas. Nas mensagens trocadas foi inserido um contador para que o CRC mude sempre que uma mensagem nova é enviada, pois a string sobre a qual é calculado muda com o contador.


Nenhum comentário:

Postar um comentário