Perl – Comunicação serial com Arduino

ArduinoPythonComSerialTopo

Continuando os posts sobre comunicação serial com o Arduino utilizando varias linguagens hoje vou trabalhar com Perl, muitas pessoas não conhecem principalmente quando comento com desenvolvedores Windows :), não é meu forte em desenvolver projetos longos mas com pequenos scripts e algo que irá processar uma quantidade grande de dados ele se sai/saiu muito bem, vamos lá então…

Primeiramente o ambiente utilizado será Linux :) novidade né! Bom, para este exemplo precisaremos do Device::SerialPort como não é trivial ele vir junto vamos verificar se possuímos este Modulo.

Como é a primeira vez que nessa VM eu uso algo com Perl, eu não tenho o Device::SerialPort, então vamos instalar que pode ser feito de duas maneiras:

Primeira maneira a la estilo how-to:

Segunda maneira e a que eu prefiro :) baixar o modulo do cpan e compilar, vamos ver :)

O procedimento acima para construir o modulo pode ser visulizado no arquivo README, onde peguei as informações sobre compilar e instalar o modulo mas ocultei aqui a saída, sobre o make test no meu deu alguns erros porque ele usou o ttyS1 e o meu ftdi esta usando ttyS2 mas enfim, nesta etapa não importaria e atenção ao usar sudo make install ou usar permissão de super-usuário para instalar o modulo, e vamos ver novamente se o modulo esta instalado agora.

Mas no nosso script Perl também tem uma etapa que irá checar se o modulo esta OK, caso a mensagem “Device::SerialPort nao encontrado!” for exibida ao executar o script verifique os passos acima pois o modulo não foi encontrado.

Vamos ao nosso código agora:

Vamos testar nosso código, meu device USB é /dev/ttyS2, meu baudrate 9600 e o caractere a ser enviado é o ‘t’:

A tela acima esta funcionando como previsto, caso você ver algo como abaixo:

Provavelmente o /dev/ttyS2 não é o correto, substitua pelo correto do seu device, agora caso o baudrate ou o carácter a ser enviado estiver incorreto a mensagem “Aguardando recebimento dos dados…” ficara aparecendo direto, além do mais o firmware que estou usando para o Arduino é o clássico default para todos desta serie de comunicação serial, caso precisar aqui esta o link.

Não abordei aqui a linguagem em Perl em si, o foco foi trabalhar comunicação serial com ela, então a parte de repetição, condicional, argumentos, variáveis e declarações eu abstrai, mas uma pesquisa rápida no google deve resolver, não sou um desenvolvedor Perl Expert mas sempre digo que Perl é linguagem de macho, não é tão amigável iniciar e tem umas particularidades punk.

Não se limite a apenas as funções passadas, é o básico para funcionar, mas o modulo é extenso e possui N possibilidades e recursos para ajudar.

Bom pessoal, fico por aqui espero ter ajudado com mais esta etapa e até a próxima!

Referências

http://search.cpan.org/~cook/Device-SerialPort-1.002/SerialPort.pm
http://playground.arduino.cc/Interfacing/PERL

Share Button

CC BY-NC-SA 4.0 Perl – Comunicação serial com Arduino by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • Pedro Zorzenon Neto

    Oi Cleiton,

    Eu sempre usei comunicação serial em Perl “na raça”, só abrindo o tty e lendo/gravando nele. Mas no meu caso, eu deixava a comunicação configurada (bps/flowcontrol/etc) na inicialização do sistema.

    Gostei do exemplo usando o Device SerialPort. Bem útil, principalmente para quem quer ler com timeout.

    Gostei também quando você cita que Perl é pra macho hahaha.

    Abraço,

    • Sei que você gostou mais quando falei que era pra macho hehehe, as duas vezes que precisei implementar comunicação serial com Perl usei SerialPort e se comportou bem legal, na raça mesmo e abrir o device e manipular foi só em C mesmo em Linux.
      Quando você diz “eu deixava a comunicação configurada (bps/flowcontrol/etc) na inicialização” você configurava no /etc/inittab ou de outra maneira?
      Sobre Perl não vou nem pensar em discutir com você, já esta anos-luz a minha frente ;)

      Abraço Pedro.

  • Mimi

    oi, sou estudante, tive algumas duvidas ainda pela sua tutorial de como funciona a comunicaçao

    • Olá Mimi, em qual pate do artigo você teve duvida?

      • Mimi

        Então, tenho que receber e mandar informações da lp Perl pro Arduino. E se funciona programar só em Perl ou terei q usar C tbm no Arduino
        😂É q to começando do zero e meu conhecimento é bem vago em Perl, e acho pouca informações na rede.
        Obrigado pela atenção.

        • Bom, primeiro recomendaria fazer o que você precisa no Arduino e pode testar direto pela IDE enviando e recebendo comandos/informações via serial. Após isso, validando que esta funcionando você parte para implementar a comunicação serial em alguma outra linguagem para interagir com o Arduino.
          Uma duvida, porque tem que ser em Perl? Se você esta começando não seria uma linguagem tão amigável para iniciantes.
          Abraço

          • Mimi

            Bom foi determinado essa lp, n tive muita escolha, ela é bem simples, apesar de n ter encontrado muito conteúdo sobre uso com o Arduino, o programa feito em C eu já possuo, mas necessito fazer as alterações pra comunicação, ende a lp e o Arduino.😐