Como controlar o CLP Duino usando Python

Como controlar o CLP Duino pela USB usando Python

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:

IDE python com Tkinter

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.