16 de mar de 2013

Enviar comandos via serial no Linux

Utilizando um conector DB9 para RS232, um adaptador RS232-USB, é possível enviar uma mensagem do seu computador para um dispositivo, no Ubuntu.

Primeiro, vamos às configurações necessárias. Ao espetar um adaptador serial-USB numa das portas USB, é criado um arquivo na pasta /dev/ do Linux. Você pode conferir qual o arquivo através do seguinte comando:
  1. ls /dev/ttyUSB* -l
  2. >> crw-rw---- 1 root dialout 1880 Mar 16 21:11 /dev/ttyUSB0
Com o comando a seguir, você configura parâmetros como quantidade de bits e velocidade para comunicação direta, via shell.
  1. sudo stty -F /dev/ttyUSB0 57600 cs8 -cstopb -parity -icanon min 1 time 1 eol ^D
E libere permissões para o acesso à porta serial (sem esse comando, haverá erro de "bash: /dev/ttyUSB0: Permissão negada")
  1. sudo chmod 660 /dev/ttyUSB0
Para enviar uma mensagem de teste, use o comando echo:
  1. echo 'Consegui' >/dev/ttyUSB0
Você será capaz de obter a mensagem enviada na outra ponta da comunicação serial, seguida dos caracteres de CARRIAGE RETURN e NEW LINE (\r e \n).

Agora, para uma comunicação mais eficiente, visualizando-se as mensagens enviadas e devolvidas, é utilizado o minicom. É a alternativa que encontrei ao bom Hercules SETUP utility para fazer essa mesma função no Windows.
  1. sudo apt-get install minicom
Como padrão, ele tentará acessar a porta tty8, para mudar esse e outros parâmetros, dê os seguintes comandos:
sudo su (entre com a senha de super usuário)
minicom -s (diálogo de configuração do minicom)

Abre o seguinte diálogo:


Selecione Configuração da porta serial, e digite as opções desejadas para poder editar (por exemplo, digite "A" para mudar a porta tty8 para ttyUSB0 e "E" para mudar a velocidade para 57600 (como estava com 115200, simplesmente apertei B para selecionar a próxima opção, e caí no 57600).P

Pressione "B"
Aperte o Enter para sair dos sucessivos diálogos, por fim salve selecionando "Salvar configuração como dfl". Depois disso, se selecionar Sair, o diálogo se fecha, mas é aberto o próprio Minicom. Se selecionar Sair do Minicom, voltamos ao terminal.

Para entrar com qualquer comando no Minicom, você deve apertar ctrl+a e, depois, a opção desejada. Por exemplo, para fechar ctrl+a e, depois, x. Para ajuda, ctrl+a e z.

Se você fizer um teste simples, com uma porta RS232 com os pinos de Rx e Tx conectados (teste loopback), como na imagem abaixo, você deve obter o texto digitado duplicado (se echo estiver ativado, o que é verdade por padrão). Aqui, só consegui fazer funcionar depois que desativei o controle por hardware e enviei um line feed.

Teste loop back para RS232 com adaptador para UART

Enviar linefeed

Nenhum comentário:

Quem sou eu

Raphael Fernandes
Carioca, Brasileiro, Estudante de Robótica
Hiperativo, Imperativo
Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
Musicalmente falando, sou assim.

Related Posts Plugin for WordPress, Blogger...

Veja também...