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