O Arduino sempre foi uma plataforma de aprendizado/desenvolvimento poderosa e fácil de usar quando se trata de desenvolvimento de hardware de código aberto. No mundo moderno de hoje, todo hardware é alimentado por uma linguagem de programação de alto nível geral para torná-lo mais eficaz e fácil de usar. Um desses idiomas é o Python. O Python é uma linguagem de programação interpretada, orientada a objetos e de alto nível, com semântica dinâmica com estruturas de dados de alto nível, combinadas com tipagem dinâmica e ligação dinâmica, o que o torna muito atraente para o Desenvolvimento Rápido de Aplicativos.
Combinar o poder do Arduino e do Python abrirá portas para muitas possibilidades, já que o python tem uma produtividade aumentada com sua capacidade de interagir com outras plataformas como openCV, Matlab etc. Então, neste tutorial, aprenderemos o como podemos instalar o python em nosso computador e como usá-lo com o Arduino para alternar o LED integrado do Arduino.
Materiais requisitados:
- Arduino Uno (ou qualquer placa Arduino)
- Computador com conexão à Internet
Instalando o Python no seu computador:
Obviamente, o primeiro passo neste tutorial seria instalar o Python em nosso computador. As etapas mencionadas abaixo são aplicáveis apenas a usuários de Windows que executam SO de 32 ou 64 bits. O procedimento de instalação para MAC e Linux é diferente.
- Clique em 32-bit Python-2.7.9 e isso instalará o Python IDLE de 32 bits no seu computador. Não faça o download da versão de 64 bits ou das versões atualizadas, pois elas não fornecem suporte para as bibliotecas do Arduino. Mesmo se o seu computador estiver operando em 64 bits, você pode usar o próprio Python de 32 bits.
- Abra o arquivo exe baixado e siga as instruções. Não altere o diretório em que o python está sendo instalado. Será C: \ Python27 por padrão e deixará como tal.
- Enquanto a instalação ocorre, você pode receber um aviso do seu antivírus (se houver) nesse caso, clique em permitir.
É isso aí !, o python é instalado com sucesso em nosso computador. Você pode verificá-lo pesquisando por“Python IDLE”na caixa de pesquisa do Windows e abra-a.
Quando aberto, você deverá obter a seguinte tela. Essa janela é chamada de Python Shell e vamos chamá-la de “Python shell” a partir de agora.
Essa tela é chamada de Shell Python. Você pode codificar diretamente aqui e obter a saída na mesma tela ou criar um novo arquivo e escrever o programa lá e verificar o programa Aqui. Mais tarde entraremos nos detalhes da criação de um programa python, por enquanto, vamos verificar se o python está funcionando.
Para fazer isso, basta digitar “print (1 + 1)” e pressione enter. Você deve ver o resultado sendo impresso como mostrado abaixo.
Obtendo o PySerial em Python:
O próximo passo é instalar o pyserial. PySerial é um módulo de API Python usado para ler e gravar dados seriais no Arduino ou em qualquer outro microcontrolador.
Clique em Pyserial Windows para baixar o PySerial. O download resultante será um arquivo exe que pode ser instalado diretamente. Não altere nenhuma configuração durante a instalação. Deixe-o no diretório padrão e nas configurações padrão.
Agora, vamos verificar se o PySerial está instalado corretamente. Para fazer isso, abra o Python Shell novamente e digite
import serial. Se a biblioteca foi instalada com sucesso, você não deve receber nenhuma mensagem de erro, como mostra a figura abaixo. Se houver algum erro, publique-o na seção de comentários e tentaremos resolvê-lo.
Nosso primeiro programa Arduino Python:
Como dito anteriormente, estaremos controlando o LED integrado da placa Arduino usando o script Python. Vamos começar com o código do Arduino.
Programa para Arduino:
O programa completo para este Tutorial do Arduino python é apresentado no final desta página. Leia mais para saber como funciona.
Dentro da função setup inicializamos a comunicação serial em 9600 baud classifique e declare que usaremos o led embutido como saída e o abaixar durante o início do programa. Também enviamos uma mensagem de boas-vindas ao python via impressão serial, como mostrado abaixo:
void setup() { Serial.begin(9600); //initialize serial COM at 9600 baudrate pinMode(LED_BUILTIN, OUTPUT); //make the LED pin (13) as output digitalWrite (LED_BUILTIN, LOW); Serial.println("Hi!, I am Arduino"); }
Dentro da função loop , lemos os dados que está sendo fornecido em série e atribuindo o valor à variável “data”. Agora, com base no valor de esta variável ("dados") alternamos o led incorporado, como mostrado abaixo.
void loop() { while (Serial.available()){ data = Serial.read(); } if (data == '1') digitalWrite (LED_BUILTIN, HIGH); else if (data == '0') digitalWrite (LED_BUILTIN, LOW); }
Programa para Python:
O programa python completo para este tutorial é fornecido no final desta página. Leia mais para saber como escrever e usar o mesmo.
- Abra o seu Python Shell (Python IDLE) e clique em File-> New
- Isso abrirá um novo arquivo de texto onde você pode digitar seu programa.
- Antes de digitar qualquer coisa, vamos salvar o arquivo, pressionando Ctrl + S. Digite qualquer nome e clique em Salvar. Isso salvará automaticamente seu arquivo em ".py" extensão.
- Agora, digite o programa ou cole o código python fornecido no final desta página. A explicação para o mesmo é dada abaixo e, finalmente, execute o programa.
Em nosso programa, o primeiro passo seria importar a biblioteca serial e de tempo. A biblioteca serial, como foi dito anteriormente, será usada para ler e gravar dados seriais, e a biblioteca de tempos será usada para criar atrasos em nosso programa. Essas duas bibliotecas podem ser importadas em nosso programa usando as duas linhas a seguir:
import serial #Serial importado para comunicação serial import time #Necessário para usar funções de atraso
O próximo passo seria inicializar um objeto serial usando nossa biblioteca serial. Neste programa, nomeamos nosso objeto serial como “ArduinoSerial”. Nesta linha, devemos mencionar o nome da porta COM à qual nosso Arduino está conectado e a qual taxa de transmissão está operando, conforme mostrado abaixo.
ArduinoSerial = serial.Serial('com18',9600)
Nota: É muito importante mencionar o nome da porta COM correta. Pode ser encontrado usando o Gerenciador de dispositivos no seu computador.
Assim que o objeto serial for inicializado, devemos mantenha o programa por dois segundos para que a comunicação serial seja estabelecida. Isso pode ser feito usando a linha abaixo:
time.sleep(2)
Agora podemos ler ou escrever qualquer coisa de/para o nosso Arduino Board.
A seguinte linha irá lerá qualquer coisa vinda do Arduino e a imprimirá na janela do shell
print ArduinoSerial.readline()
Você também pode atribuir o valor a uma variável e usá-lo para cálculos.
A seguinte linha irá gravará o valor do parâmetro no Arduino Board.
ArduinoSerial.write('1')
Esta linha escreverá "1" para o Arduino. Você pode enviar qualquer coisa, de decimais a seqüências de caracteres, usando a mesma linha.
Agora, voltando ao nosso programa, dentro do loop while infinito, temos as seguintes linhas
var = raw_input() #get input do usuário print "you entered", var #print a entrada para confirmação if (var == '1'): #se o valor for 1 ArduinoSerial.write('1') #envia 1 print ("LED turned ON") time.sleep(1) if (var == '0'): #se o valor for 0 ArduinoSerial.write('0') #envia 0 print ("LED turned OFF") time.sleep(1)
A linha var = raw_input obterá qualquer valor digitado no script Shell e atribuirá esse valor à variável var.
Mais tarde, se o valor for 1, ele imprimirá "1". serialmente para o Arduino e, se 0, ele imprimirá "0" serialmente para o Arduino. O código do nosso programa Arduino (discutido acima) alternará o LED com base no valor recebido.
Depois que o programa completo estiver concluído, seu script deverá se parecer com isso abaixo
Agora clique em Executar -> Execute o Módulo ou pressione F5, isso poderá solicitar que você salve o programa e o inicie.
Controlando o LED com Python e Arduino:
O trabalho deste projeto é bastante direto. Carregue o programa no seu Arduino e verifique se ele está conectado à mesma porta COM mencionada no programa python. Em seguida, inicie o programa Python como mencionado acima.
Isso iniciará um script de shell python, como mostrado abaixo. A janela à esquerda é a janela do shell mostrando a saída e a janela à direita é o script que mostra o programa.
Como você pode ver, a string “Oi !, eu sou Arduino" inserida no programa Arduino é recebida pelo Python e exibida em sua janela de concha.
Quando a janela do shell pede para inserir valores, podemos inserir 0 ou 1. Se enviarmos 1, o LED na placa Arduino acenderá e se enviarmos 0, o LED em nossa placa Arduino se apagará. Mostrando uma conexão bem-sucedida entre o nosso Programa Arduino e o Python.
Existem dois programas fornecidos abaixo, um para ser carregado e executado no Arduino e o segundo no Python Shell no Windows.
Espero que você tenha entendido o projeto e tenha conseguido fazê-lo funcionar. Caso contrário, poste seu problema no comentário abaixo e teremos prazer em ajudá-lo. Em nosso próximo projeto, aprenderemos o que mais pode ser feito com o Python e o Arduino, explorando profundamente outros módulos python como Vpython, gamepython etc. Até então, fique atento ....
Código:
Programa para Arduino:
/*
*Código para piscar um LED usando Python
*/
*Código para piscar um LED usando Python
*/
int data;
void setup() {
Serial.begin(9600); //inicialize COM serial em 9600 baudrate
pinMode(LED_BUILTIN, OUTPUT); //faça o pino de LED (13) como saída
digitalWrite (LED_BUILTIN, LOW);
Serial.println("Oi!, eu sou o Arduino");
}
void loop() {
while (Serial.available()){
data = Serial.read();
}
Serial.begin(9600); //inicialize COM serial em 9600 baudrate
pinMode(LED_BUILTIN, OUTPUT); //faça o pino de LED (13) como saída
digitalWrite (LED_BUILTIN, LOW);
Serial.println("Oi!, eu sou o Arduino");
}
void loop() {
while (Serial.available()){
data = Serial.read();
}
if (data == '1')
digitalWrite (LED_BUILTIN, HIGH);
digitalWrite (LED_BUILTIN, HIGH);
else if (data == '0')
digitalWrite (LED_BUILTIN, LOW);
digitalWrite (LED_BUILTIN, LOW);
}
Programa Python para Windows:
#Programa para controlar o LED do Arduino a partir de Python
import serial #Serial imported for Serial communication
import time #Necessário para usar funções de atraso
ArduinoSerial = serial.Serial('com18',9600) #Criar objeto de porta serial chamado arduinoSerialData
time.sleep(2) #aguarde 2 segundos para que a comunicação seja estabelecida
import time #Necessário para usar funções de atraso
ArduinoSerial = serial.Serial('com18',9600) #Criar objeto de porta serial chamado arduinoSerialData
time.sleep(2) #aguarde 2 segundos para que a comunicação seja estabelecida
print ArduinoSerial.readline() #leia os dados seriais e imprima-os como linha
print ("Digite 1 para ligar o LED e 0 para desligar o LED")
print ("Digite 1 para ligar o LED e 0 para desligar o LED")
while 1: #Faça isso para sempre
var = raw_input() #obter entrada do usuário
print "you entered", var #imprimir a entrada para confirmação
if (var == '1'): #se o valor for 1
ArduinoSerial.write('1') #send 1
print ("LED ligado")
time.sleep(1)
if (var == '0'): #se o valor for 0
ArduinoSerial.write('0') #send 0
print ("LED desligado")
time.sleep(1)
print "you entered", var #imprimir a entrada para confirmação
if (var == '1'): #se o valor for 1
ArduinoSerial.write('1') #send 1
print ("LED ligado")
time.sleep(1)
if (var == '0'): #se o valor for 0
ArduinoSerial.write('0') #send 0
print ("LED desligado")
time.sleep(1)
Nenhum comentário:
Postar um comentário
Peço que use somente caixa baixa, não todo escrito em letra grande.