Olá, hoje nós iremos fazer uma comunicação entre o IDLE do Python 2.7.
Para comunicarmos com a porta serial através do Python, é preciso baixar a biblioteca serial.py, segue o link:
https://pypi.python.org/pypi/pyserial
Descompacte na pasta do python, localize a pasta através do prompt de comando e digite:
python setup.py install
Para testar se foi instalado corretamente basta abrirmos a o python no prompt do DOS, digitando python e depois import serial. (Veja abaixo)
Se não apresentar nenhuma mensagem de erro, a instalação foi feita corretamente.
Segue abaixo o circuito feito no proteus:
O Simulino do Arduino Uno você encontrará em: http://blogembarcado.blogspot.com.br
Temos que fazer algumas configurações no componente COMPIM, utilizar largura de banda:9600 e a porta COM1 (estou usando a COM 1 aqui para o Simulino e COM 2 para o objeto Serial do Python)
Para fazer esta ligação entre Python e Simulino, precisamos de um software que gere portas COM virtuais.
Utilizaremos o Virtual Serial Port Emulator (link: http://www.baixaki.com.br/download/free-virtual-serial-ports-emulator.htm)
Após instalá-lo, geramos as portas virtuais:
Escolha 'pair' para fazer com que tudo que aconteça numa porta ocorra na outra, aqui estou a utilizar COM1 e COM2.
Vídeo:
Código feito para o Arduino:
int led_biby = 13;
int led_blue = 12;
int led_yellow = 11;
int led_red = 10;
char var;
void setup(){
pinMode(led_biby, OUTPUT);
pinMode(led_blue, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_red, OUTPUT);
Serial.begin(9600);
}
void loop(){
digitalWrite(led_biby, LOW);
digitalWrite(led_blue, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_red, LOW);
if(Serial.available()>0){
var = Serial.read();
switch (var){
case 'a':
digitalWrite(led_biby, HIGH);
Serial.print("Led Biby is on");
delay(300);
break;
case 'b':
digitalWrite(led_blue, HIGH);
Serial.print("Led Blue is on");
delay(300);
break;
case 'y':
digitalWrite(led_yellow, HIGH);
Serial.print("Led Yellow is on");
delay(300);
break;
case 'r':
digitalWrite(led_red, HIGH);
Serial.print("Led Red is on");
delay(300);
break;
default:
break;
}
}
}
Código feito no Python:
#importa a biblioteca serial encontrada no endereço: https://pypi.python.org/pypi/pyserial
import serial
#cria-se um objeto com o nome arduino que se comunicará com o proteus
arduino_uno = serial.Serial()
#define qual porta COM arduino será conectado (Estou utilizando windows)
arduino_uno.port = 1
#define qual o timeout para comunicação entre o idle do python e o simulino
arduino_uno.timeout = 2
#começa a comunicação
arduino_uno.open()
ligar_led='e'
#loop para comunicação
while(ligar_led!='s'):
ligar_led = raw_input('Informe qual led queres ligar (a, b, y ou r) para sair informe s: ')
arduino_uno.write(ligar_led)
print(arduino_uno.readall()+'\n\n')
#fecha comunicaçao
arduino_uno.close()