• UFRJ Nautilus

Comunicação interna de um AUV

Atualizado: 22 de fev.

Sistemas eletrônicos tendem a serem compostos por diversas partes. Dentro de qualquer carro moderno temos pelo menos um computador de bordo, sistemas de ignição, frenagem, injeção de combustível, sistema de entretenimento, direção assistida. Computadores desktop apresentam diversas placas e peças, das quais você já pode ter ouvido falar: Placa-mãe, processador, placa de vídeo, HD, Drive DVD e outros. Isto é necessário para a evolução natural dos nossos sistemas, nem todos os componentes podem realizar bem todas as funções, então especializamos alguns para certas tarefas. Na Nautilus isto não é diferente, nosso novo AUV "Lua" possui muitas placas novas e funções inéditas na nossa equipe, todas especializadas para maior eficácia de nosso robô.

Mas, isto introduz um problema que devemos resolver. O sistema inteiro tem de estar "na mesma página" e trabalhar em conjunto para conseguir realizar qualquer trabalho útil. Então precisamos introduzir métodos e protocolos de comunicação entre componentes bem diferentes. Temos algumas opções para isso, com suas vantagens e desvantagens. Num computador, seu Disco Rígido guarda seu Sistema Operacional e outros arquivos, quando o computador determina que necessita de algum destes arquivos, ele faz uma requisição ao seu disco, que busca o arquivo e o devolve. Essa comunicação é geralmente feita pela interface SATA, que significa Serial Advanced Technology Attachment, e portanto se dá de modo serial. Comunicação serial significa que as informações necessárias vão ser transmitidas bit por bit e depois reconstruídas em ordem no destino. Uma vantagem deste tipo de sistema é a quantidade menor de contatos, que diminui custos e simplifica todo o projeto. A principal desvantagem é a relativa lentidão, mas em operações menos temporalmente sensíveis, isto é uma troca vantajosa. Nos carros, a interface serial CANbus já é padrão da indústria há várias décadas, sendo uma opção muito robusta. A outra opção que temos é a comunicação paralela, que apesar de exigir muitos contatos e cuidado no projeto, permite comunicação extremamente rápida, como é o caso de boa parte da comunicação interna na placa mãe de um computador moderno. Esse tipo de comunicação geralmente se dá por um BUS que transmite em múltiplos de 8 bits (1 byte) simultâneos.

Na Nautilus, nossa aplicação consiste na comunicação entre os sensores, motores, atuadores e nosso computador de bordo. A solução que utilizamos é o protocolo I2C, que é um bus serial comumente utilizado na integração de microcontroladores (assunto que já foi abordado num post anterior em nosso blog). Cada uma de nossas placas se conecta aos dois trilhos do I2C passando pelo Backplane (Serve como uma "placa-mãe" do nosso robô) permitindo que todos os microcontroladores do robô possam se comunicar entre si. Também está conectado ao bus o nosso computador de bordo, que vai fazer "pedidos" aos componentes individuais, que irão responder com a informação devida, ou realizar a ação requisitada. Pra isso, nossa equipe de software está desenvolvendo programas individuais para cada microcontrolador e o computador de bordo, que sabem o endereço lógico de todos os componentes conectados ao bus, e sabe como interpretar todas as informações e pedidos recebidos.

O fluxo de dados se dá da seguinte maneira: No mesmo cabo que vem a energia da bateria, transmitimos as informações de saúde da bateria (temperatura, corrente instantânea, tensão atual), e esta informação é lida pelo microcontrolador do backplane, que se comunica pelo I2C. Nossos sensores de pressão (interna e externa) registram os valores atuais e fornecem este dado quando necessário ao computador. Nossos hidrofones registram os pings na piscina que depois de certa manipulação, também são repassados ao computador. pelo I2C. Com todos estes dados, e a visão das câmeras (que estão ligadas diretamente no computador) o robô decide sua próxima ação, e novamente pelo I2C repassa ordens aos motores, braço mecânico, solta-bolinhas ou lança-torpedos. Assim ele pode decidir em fazer uma movimentação específica e ativar um atuador, se locomover para uma posição nova, ou até emergir imediatamente em caso de problemas técnicos.

Resumindo, a comunicação entre componentes é o que permite o surgimento de sistemas complexos, com partes extremamente especializadas nas suas tarefas. Um sistema robusto evita falhas de integração e facilita muito a operação de qualquer máquina, por isso escolha sempre com cuidado o tipo de protocolo que você vai utilizar, e sempre consulte outros casos que utilizaram o mesmo protocolo.


Escrito por Augusto Lauande

0 comentário

Posts recentes

Ver tudo