Neste post será apresentado como controlar o CLP Duino usando Python, construindo uma IDE que permite ligar e desligar os releś. Com isso é possível fazer uma automação residencial e ligar as lâmpadas ou outros equipamentos através do computador.
Código em Python
Abaixo é mostrado o código em python.
import sys
import serial
import argparse
import io
import time
import tkinter
from tkinter import *
root = Tk()
# COM4 deve ser modificado manulmente de acordo com a porta onde o Arduino está conectado
ser = serial.Serial('COM4',
baudrate = 9600,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
timeout = 1,
xonxoff = 0,
rtscts = 0)
ser.setDTR(False)
time.sleep(1)
ser.flushInput()
ser.setDTR(True)
# Função usada para enviar os dados pela USB
def RELE(end):
x = str(end) # Converte in para string
ser.write(x.encode()) # Envia a strig pela USB
# Função usada para sair da IDE e fechar a USB
def SAIR():
ser.close()
global root
root.quit()
root.destroy()
# Controle do Rele 1
ligaRele1 = Button(root, text = "liga Relé 1", command = lambda: RELE(1))
ligaRele1.grid(row=0, column=0)
ligaRele1 = Button(root, text = "Desliga Relé 1", command = lambda: RELE(2))
ligaRele1.grid(row=1, column=0)
# Controle do Rele 2
ligaRele1 = Button(root, text = "liga Relé 2", command = lambda: RELE(3))
ligaRele1.grid(row=0, column=1)
ligaRele1 = Button(root, text = "Desliga Relé 2", command = lambda: RELE(4))
ligaRele1.grid(row=1, column=1)
# Controle do Rele 3
ligaRele1 = Button(root, text = "liga Relé 3", command = lambda: RELE(5))
ligaRele1.grid(row=0, column=2)
ligaRele1 = Button(root, text = "Desliga Relé 3", command = lambda: RELE(6))
ligaRele1.grid(row=1, column=2)
# Controle do Rele 4
ligaRele1 = Button(root, text = "liga Relé 4", command = lambda: RELE(7))
ligaRele1.grid(row=0, column=3)
ligaRele1 = Button(root, text = "Desliga Relé 4", command = lambda: RELE(8))
ligaRele1.grid(row=1, column=3)
# Controle do Rele 5
ligaRele1 = Button(root, text = "liga Relé 5", command = lambda: RELE(9))
ligaRele1.grid(row=0, column=4)
ligaRele1 = Button(root, text = "Desliga Relé 5", command = lambda: RELE(10))
ligaRele1.grid(row=1, column=4)
# Controle do Rele 6
ligaRele1 = Button(root, text = "liga Relé 6", command = lambda: RELE(11))
ligaRele1.grid(row=0, column=5)
ligaRele1 = Button(root, text = "Desliga Relé 6", command = lambda: RELE(12))
ligaRele1.grid(row=1, column=5)
sair = Button(root, text = "Sair", command = lambda: SAIR())
sair.grid(row=2, column=5)
root.mainloop()
Um detalhe importante que deve ser observado quando o código for executado está relacionado com qual porta serial o CLP Duino está conectado, no código acima foi utilizado a “COM4”, e antes de executar o código é preciso consultar em qual porta o dispositivo está conectado e configurar de acordo, pois senão o código não será executado corretamente.
Na figura abaixo é mostrado como ficou a IDE após a execução do código:
Código do CLP Duino
Abaixo é mostrado o código em C para ser gravado no CLP Duino.
/*
Wantronics
como controlar o CLP Duino usando Python
05 / 01 / 2023
CLP Duino Nano Wantronics
*/
#define rele1 7
#define rele2 6
#define rele3 5
#define rele4 4
#define rele5 3
#define rele6 2
void setup() {
//Definindo as saídas de 1 a 6
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
pinMode (rele4, OUTPUT);
pinMode (rele5, OUTPUT);
pinMode (rele6, OUTPUT);
Serial.begin(9600);
}
void loop() {
while (Serial.available() == 0) {}
String serialUSB = Serial.readString();
serialUSB.trim();
// Liga ou desliga dos relés de acordo com o valor da String
if (serialUSB == "1") {
digitalWrite(rele1, HIGH);
}
if (serialUSB == "2") {
digitalWrite(rele1, LOW);
}
if (serialUSB == "3") {
digitalWrite(rele2, HIGH);
}
if (serialUSB == "4") {
digitalWrite(rele2, LOW);
}
if (serialUSB == "5") {
digitalWrite(rele3, HIGH);
}
if (serialUSB == "6") {
digitalWrite(rele3, LOW);
}
if (serialUSB == "7") {
digitalWrite(rele4, HIGH);
}
if (serialUSB == "8") {
digitalWrite(rele4, LOW);
}
if (serialUSB == "9") {
digitalWrite(rele5, HIGH);
}
if (serialUSB == "10") {
digitalWrite(rele5, LOW);
}
if (serialUSB == "11") {
digitalWrite(rele6, HIGH);
}
if (serialUSB == "12") {
digitalWrite(rele6, LOW);
}
}
Resultados
No vídeo abaixo é mostrado como ficou o funcionamento do CLP Duino Wantronics com o Python.
Conclusão
Neste possível verificar como controlar o CLP Duino usando Python acionando os relés do CLP Duino. Também é possível fazer outras aplicações, como enviar dados das entradas analógicas do CLP Duino para que o computador plote os dados em um gráfico. Isso é tudo, e até o próximo post.