Crie sistemas supervisórios com Arduino UNO e Processing: Primeiros passos

Aprenda neste artigo os primeiros passos para a criação de supervisórios com Arduino UNO e Processing, simulando o Arduino UNO no Proteus/ISIS.
supervisórios

Este artigo pretende ser o primeiro de uma sequência voltada para o desenvolvimento de supervisórios utilizando o Arduino UNO juntamente com o Processing para atender as mais diversas necessidades. Neste momento será apresentado um conteúdo introdutório para que o leitor entenda qual é a nossa proposta inicial contendo informações de maneira bastante didática explicando como os elementos que serão exibidos em seguida interagem entre si e ainda o desenvolvimento de um primeiro e simples supervisório utilizado para mostrar ao usuário o estado de um led por exemplo.

Para aqueles que não conhecem, o Processing é uma linguagem de programação de código aberto e possui ambiente de desenvolvimento integrado (IDE) podendo ser utilizado principalmente neste caso para apresentar algumas noções básicas de programação de computador em um contexto visual e para servir como um elemento adicional em diversos tipos de projetos, como por exemplo, de eletrônica, automação e outros.

Por fim, deve-se ressaltar que este artigo é perfeitamente reproduzível utilizando um Arduino UNO real, no entanto realizaremos esta proposta simulando o Arduino UNO no Proteus/ISIS devido ao fato de que dessa maneira é possível apresentar o conhecimento para aqueles que desejam assim fazer, além de proporcionar um material com imagens mais claras e de fácil compreensão.

Hardware – Conectando os componentes do projeto

A seguir são apresentados os componentes utilizados no Proteus, assim como o esquema de ligação dos mesmos.

Componentes necessários

supervisórios com arduino: componentes utilizados
Figura 1 – Componentes utilizados

Para realizar a simulação do Arduino UNO no Proteus/ISIS utilizando a placa virtual, o led e o resistor mostrados na figura anterior, recomenda-se que o leitor acesse o material que disponibilizamos à cerca dos passos iniciais sobre este tipo de procedimento (Manual para simulação do Arduino no Proteus). O componente restante (COMPIM) é um bloco utilizado para estabelecer a comunicação serial entre algum elemento existente no Proteus/ISIS com outro exterior ao software.

Diagrama esquemático das ligações

supervisórios com arduino
Figura 2 – Esquema de ligação dos componentes para simulação da comunicação serial

Para realizar a simulação em questão basta fazer as ligações conforme a figura anterior, ou seja, o led utilizado foi conectado ao pino 11 (pino arbitrário) por meio de um resistor, enquanto os pinos referentes aos TX e RX (responsável pelo envio e recebimento dos dados via comunicação serial) foram ligados aos pinos correspondentes do bloco COMPIM.

Antes de prosseguirmos com o código, algumas configurações devem ser alteradas nas propriedades do COMPIM conforme a figura 3, a seguir. No campo onde está localizada a primeira seta deve-se colocar a porta COM que estará sendo representada pelo bloco. Neste momento foi utilizada a porta COM10 (esta opção não aparece, portanto basta escrever no campo “COM10”), enquanto as outras duas setas estão relacionadas com a taxa de transmissão de dados utilizadas, utilizaremos 9600.

supervisórios com arduino
Figura 3 – Configurações do COMPIM

Observação: O leitor deve sentir-se livre para escolher a porta COM que bem entender. Como o exposto neste artigo diz respeito à uma simulação, foi criada uma porta COM virtual, utilizando o software VSPE, que pode ser encontrado em www.eterlogic.com (porém pode-se utilizar outro que cumpra a mesma função). Na sequência disponibilizamos uma figura contendo os passos correspondentes para criação das portas COM virtuais que serão utilizadas.

Primeiramente deve-se clicar no ícone correspondente à criação de um novo dispositivo conforme o número 1 assinalado. Em seguida, basta selecionar a opção Pair de acordo com o número 2 e por fim escolher quais portas COM o leitor deseja conectar (neste caso COM10 e COM11, que será utilizada pelo Processing.

supervisórios com arduino:
Figura 4 – Criação de um par virtual de portas COM utilizando VSPE

Desenvolvimento dos códigos – Arduino e Processing

No decorrer desta seção serão explicados todos os passos utilizados para o desenvolvimento do projeto proposto, isto é, os códigos serão comentados de modo que todo conhecimento aplicado seja facilmente compreendido. Como este artigo exige que existam 2 códigos diferentes e que interagem entre si, tanto o código do Arduino UNO quanto o código do Processing serão divididos em algumas partes para facilitar o entendimento desejado. Primeiramente será explicado o código utilizado no Arduino UNO e na sequência o código do Processing.

Código do Arduino

No bloco de configuração do Arduino UNO temos primeiramente o uso da diretiva #define para associarmos a palavra LED ao pino 11 do mesmo. Em seguida dentro da função setup() realiza-se a definição do modo de operação do pino 11 como saída através da função pinMode() e a inicialização da comunicação serial utilizando a função begin() (o número utilizado como parâmetro desta função está relacionado à velocidade de transmissão de dados, observe que este valor deve ser o mesmo tanto no COMPIM quanto no Processing).

Posteriormente temos o bloco principal, onde a interação propriamente dita acontece entre as dois elementos. Neste ponto encontra-se a função loop() cujo conteúdo consiste em primeiramente acionar o led em questão (através da função digitalWrite()) e posteriormente enviar o número 1 através da porta serial. Esse estado é mantido por um segundo. Em seguida o mesmo led acionado anteriormente é apagado (novamente utilizando a função digitalWrite()) e o número 0 é enviado desta vez pela porta serial, assim como o passo anterior. Este estado é mantido por um segundo seguido pelo reinício do ciclo.

Código do Processing

No bloco de configuração do Processing deve-se primeiramente importar a biblioteca responsável pela comunicação serial através do comando import seguido do nome da biblioteca em questão e em seguida cria-se o objeto do tipo serial com o nome porta, para manipular a porta desejada.

Assim como o Arduino UNO o Processing também possui em sua programação uma função setup() que funciona da mesma maneira, isto é, seu conteúdo é executado uma única vez e ao início do programa. Sendo assim, primeiramente define-se o tamanho da tela que será criada através da função size() onde o primeiro parâmetro está relacionado à largura enquanto o segundo determina a altura da mesma. Em seguida atribui-se a porta COM virtual criada (COM11) ao objeto do tipo Serial criado anteriormente, utilizando uma taxa de transmissão de 9600 assim como todos os outros elementos.

A função draw() é análoga à função loop() existente no Arduino UNO, no entanto esta “redesenha” a tela criada de acordo com os elementos que estão inseridos dentro desta função. Primeiramente deve-se verificar se existe algum dado para ser lido na porta serial através da função available() e caso este dado exista, uma estrutura condicional if() cujo argumento é a função read() (responsável por realizar a leitura de dados da porta serial) verifica se o dado em questão corresponde ao número 1 ou não.

Partindo do suposto de que o dado é de fato o número 1, utiliza-se a função fill() que será responsável por preencher (pintar) uma eventual forma geométrica que venha a ser feita em seguida (os argumentos desta função foram as componentes RGB da cor verde). Neste caso, a forma em questão é um círculo formado a partir da função ellipse(), cujos argumentos são as posições do ponto central (x e y respectivamente), largura e altura. Em contrapartida, caso o dado em questão seja o número 0, a função fill() estabelece que a próxima forma geométrica deve ser preenchida de branco e em sequência uma circunferência é desenhada sobre a anterior.

A figura 5 exibe o resultado do projeto desenvolvido nesse artigo:

supervisórios com arduino
Figura 5 – Funcionamento do projeto

Esperamos que você tenha gostado deste conteúdo, sinta-se à vontade para sugestões, críticas ou elogios. Deixe seu comentário abaixo.

Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
wendeu silverio
wendeu silverio
07/12/2015 10:04

Uma outra maneira é controlar o Arduino diretamente pelo Processing (ou openFrameworks, Python, etc) através do protocolo Firmata – http://playground.arduino.cc/Interfacing/Processing

Daniel Madeira
Daniel Madeira
Reply to  wendeu silverio
07/12/2015 13:05

Sim! Um dos nossos próximos artigos será sobre isso!

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H