Arduino Linux Terminal
Arduino Linux Terminal
Arduino Linux Terminal
Dias atrás, alguns membros do grupo pergutaram se era possível comandar o arduino através
do terminal do linux. Sei de algumas formas de fazer isso, desenvolvi esse documento para
demonstrar como acender um simples led pelo terminal. Utilizarei o seguinte scketch carregado no
arduino para os testes:
int Led = 8;
void setup() {
Serial.begin(9600);
pinMode(Led, OUTPUT);
}
void loop() {
if (Serial.available()){
char Option = Serial.read();
if (Option == 'L') {
digitalWrite(Led,HIGH);
Serial.println("- Led Ligado.");
}
if (Option == 'D') {
digitalWrite(Led,LOW);
Serial.println("- Led Desligado.");
}
}
Serial.flush();
}
Este scketch consiste em iniciar uma serial no arduino em 9600 bps, ler os dados dessa
serial, enviando-os para uma variável chamada Option e testar o valor da variável Option. Se a
mesma for igual à letra l maiúscula, ligar o led e for igual à letra d maiúscula, desligar o led. A cada
interação a serial devolve se o led foi ligado ou desligado.
Se desejar visualizar o funcionamento antes de continuar, pode abrir o serial monitor da IDE
e testar.
Depois de carregar esse scketch no arduino, montem o seguinte circuito numa protoboard.
Os materiais necessários são um led de qualquer cor e um resistor nos valores indicados:
Após os passos anteriores executados, plugue o arduino na porta USB e execute o comando
dmesg no terminal do linux.
O mesmo deverá retornar o seguinte resultado:
Note que na última linha, temos o valor tty do dispositivo conectado na porta USB do PC.
No meu caso, temos ttyACM0, isso é importante para o andamento do procedimento. Devemos ter
em mente que esse é o valor que devemos indicar para abrir a comunicação com o arduino.
Agora, devemos executar o comando cat > /dev/ttyACM0 no terminal do linux. Note que o
valor do tty é utilizado para indicar o device que será acessado pelo comando cat. Feito isso, já
estamos comandando o arduino.
Teclando “L”, podemos conferir o led ligando e teclando “D” podemos conferir o led
desligando. Com o comando cat, podemos enviar comandos para o arduino, mas, não conseguimos
receber os dados da serial com a indicação do estado do led, ficando apenas a conferência visual do
processo. Para sairmos do comando cat, devemos teclar control + c. Esse é o exemplo mais simples
de controle via terminal no Linux.
O comando minicom abre uma comunicação serial padrão entre o dispositivo indicado e o
PC. A sintaxe do comando pede que indiquemos a velocidade da comunicação serial e o dispositivo
a ser controlado pelo PC. Novamente utilizaremos o valor do tty para apontar para o device que
representa o arduino e utilizaremos a velocidade da serial, no nosso caso, 9600 bps.
Para iniciarmos a comunicação, devemos digitar no terminal do linux, o comando minicom
-b 9600 -D /dev/ttyACM0.
O comando minicom, abre uma janela onde, apenas teclando “L”, ligamos o led e recebemos
imediatamente a resposta da serial com a indicação de que o led está ligado. Do mesmo modo,
teclando “D”, desligamos o led e recebemos a resposta da serial com a indicação de que o led está
desligado. Para abandonar a janela do minicom devemos teclar control + A, e teclar X. Depois é só
confirmar a saída na janelinha que abrirá.
A vantagem do minicom é que ele envia comandos e recebe dados da serial do arduino de
modo transparente.
3) ENVIANDO CARACTER DIRETO DO TERMINAL DO LINUX PARA O ARDUINO:
Esta solução não é muito “ortodoxa”. Ela funciona, mas, vejo pouca aplicação. Talvez sirva
de opção para debugar alguma solução que utilize o terminal do linux. Enfim, trata-se de enviar os
caracteres para o arduino diretamente do terminal do linux, mas, para isso funcionar a serial deve
estar aberta. Eu utilizo essa solução só para debugar meus códigos de teste pela serial.
Para demonstrar, devemos abrir o serial monitor, como se fôssemos utiliza-lo normalmente
através da IDE do arduino. Com o serial monitor aberto, devemos digitar no terminal o comando
echo -e “L” > /dev/ttyACM0 para enviar “L” maiúsculo e acender o led, recebendo a resposta no
serial monitor. E digitar echo -e “D” > /dev/ttyACM0 para enviar “D” maiúsculo e desligar o led,
recebendo a resposta no serial monitor.
As pessoas que entendem de shell do linux, podem criar scripts de comando, comandando o
arduino através deles.
Bom, foi isso que preparei. Espero que ajude as pessoas que perguntaram sobre o terminal
do linux + arduino. Lembrando que minhas limitações são claras e muitos poderão achar simples ou
banal o quê fiz aqui, mas, a intenção era a melhor de todas, ou seja, ajudar os que menos sabem.
Se alguém puder evoluir este documento e tornar mais didático ou importante, agradeço
também.
Arthur Alves