\subsection{Protocolo de Comunicações}

Através de uma mensagem estruturada enviada para o master é possível estabelecer conexão entre o operador e qualquer unidade. Desta forma, é possível controlar e monitorizar todo o robô. Como referido, a comunicação entre o operador e a unidade master é feita por uma comunicação linha série RS232 e a comunicação entre a unidade master e as restantes é feita por I$^2$C.

Uma vez que a comunicação entre as unidades é realizada por I$^2$C, e o endereçamento das mesmas é manual, o protocolo de comunicações permite a operação de um máximo de 16 controladores. O módulo master faz a ligação entre a comunicação linha série e a comunicação I$^2$C, estabelecendo assim uma ponte entre o operador e o destinatário da mensagem enviada.

O protocolo de comunicações desenvolvido baseia-se uma estrutura de 2 \textit{bytes}. O primeiro \textit{byte} define o tipo de mensagem e o endereço de destino. O segundo byte contém a informação a ser transmitida. O modo de funcionamento principal do protótipo é por pedido (\textit{request mode}), podendo também ser utilizada uma transmissão contínua (\textit{continuous mode}).

A tabela \ref{tab:request} resume a mensagem de pedido do funcionamento nesse tipo de modo. A tabela \ref{tab:answer} resume a mensagem de resposta ao pedido realizado pelo operador. No modo de funcionamento contínuo, é enviada uma mensagem do mesmo tipo da resposta do modo de funcionamento por pedidos.

\begin{table}[ht]
\centering
\caption{Protocolo de comunicações: mensagem de pedido}
\begin{tabular}{l l l l } 
\hline 
\textbf{Byte} & \textbf{Bit} & \textbf{Função} & \textbf{Valor}\\
\hline
byte 0 & bit 0 & tipo de pedido  & 0 - pergunta \\
     & &                 & 1 - comando  \\
\hline
byte 0 & bit 1 a 4  & endereço de unidade & 0000 (0) - primeira unidade \\
    &  &                 & 0001 (1)- segunda unidade  \\
    &  &                 & 1111 (16)- ultima unidade  \\
\hline
byte 0 & bit 5 a 7 & endereço do dispositivo & 000 (0) - motor esquerdo\\
    &  &                 & 001 (1) - motor direito  \\
    &  &                 & 010 (2) - motor elevação \\
    &  &                 & 011 (3) - sensor temperatura\\
    &  &                 & 100 (4) - sensores de inclinação/orientação\\
    &  &                 & 101 (5) - sensores de proximidade\\
    &  &                 & 110 (6) - alteração do modo de funcionamento\\
    &  &                 & 111 (7) - reservado\\
\hline
byte 1 & bit 0 a 4 & valor do comando & \\
\hline
byte 1 & bit 5 a 7 & indicação de byte 1 & 111\\
\hline
\end{tabular}
\label{tab:request}
\end{table}

 
\begin{table}[ht]
\centering
\caption{Protocolo de comunicações: mensagem de resposta}
\begin{tabular}{l l l l} 
\hline 
\textbf{Byte} & \textbf{Bit} & \textbf{Função} & \textbf{Valor}\\
\hline
byte 0 & bit 0 a 7 & verificação de pedido & byte 0 do pedido\\
\hline
byte 1 & bit 0 a 4 & valor do resposta &  \\
\hline
byte 1 & bit 5 a 7 & indicação de byte 1 & 111\\
\hline
\end{tabular}
\label{tab:answer}
\end{table}
