Como Coletar Dados Usando Python e Arduino

Como Coletar Dados Usando Python e Arduino

Neste post vamos ver como coletar dados usando Python e Arduino e gravar esses dados em um arquivo, para que possa ser utilizado para obter alguma informação importante.

Esse projeto pode ser usado como datalogger para coletar dados, como a intensidade luminosa de uma sala, temperatura e humidade, pode ser usado para monitorar o tempo de vida de uma bateria e muito mais.

No vídeo a seguir mostro os detalhes sobre dos dois códigos:

No vídeo a seguir mostro a coleta dos valores lidos de um circuito retificador de onda completa em ponte, e mostro o gráfico obtido:

Código para o Arduino

Abaixo é mostrado o código para ser gravado no Arduino.

/*
     Wantronics
     Projeto: Como Coletar Dados Usando Python e Arduino
     08 / 10 / 2023
*/

int AD = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    AD = analogRead(A0);
    Serial.println (AD);
}

No caso apresentado foi utilizado o Arduino, mas podem ser utilizados outros microcontroladores com comunicação serial.

Código em Python

Abaixo é apresentado o código em Python para coletar dados da porta USB, e escrever esses dados no arquivo.

import serial
import time
from tkinter import *

root = Tk()

liga = 0

try:
    myFile = open("tabela.csv", "x")
except:
    myFile = open("tabela.csv", "w")

# 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 sair da IDE e fechar a USB
def SAIR():
        ser.close()
        myFile.close()
        global root
        root.quit()
        root.destroy()

def Gravar(x):
    liga = x
    if liga != 0:
        myFile = open("tabela.csv", "a")
        for i in range(0, 10000):        # Quantidade de amostras
            line = ser.readline()
            valor = line.decode()
            myFile.write(valor)

gravarDados = Button(root, text = "Grava Dados", command = lambda: Gravar(1))
gravarDados.grid(row=0, column=0)

pararDados = Button(root, text = "Para Gravação", command = lambda: Gravar(0))
pararDados.grid(row=0, column=1)

sair = Button(root, text = "Sair", command = lambda: SAIR())
sair.grid(row=0, column=2)

Conclusão

Neste post vimos como coletar dados usando Python e Arduino, e como isso pode ser usado para obter informações de sensores ou sinais que possam nos interessar, e gravar os dados obtidos em um arquivo. O projeto pode ser melhorado utilizando componentes com uma capacidade de amostragem maior, e o código que é utilizado no microcontrolador também pode ser melhorado, enviando dados apenas quando necessário.

Isso é tudo pessoal, e até o próximo post.