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.