sensor data
This commit is contained in:
118
sensor/sensorCollector.py
Normal file
118
sensor/sensorCollector.py
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
import serial
|
||||
import serial.tools.list_ports
|
||||
import pandas as pd
|
||||
import os
|
||||
from pynput import keyboard
|
||||
from datetime import datetime
|
||||
from time import sleep
|
||||
import sys
|
||||
import numpy as np
|
||||
|
||||
#import termios
|
||||
import tkinter as tk
|
||||
|
||||
|
||||
# COMPORT = "/dev/cu.usbmodem11301"
|
||||
COMPORT = "COM9"
|
||||
SAMPLES = 100
|
||||
SENSOR = 2 #0 is taped sensor, 1 is non-taped sensor. s
|
||||
|
||||
# print([port.device for port in serial.tools.list_ports.comports()])
|
||||
arduino = serial.Serial()
|
||||
|
||||
class App:
|
||||
|
||||
def map(self, analog, sensor):
|
||||
|
||||
#0 is taped, 1 is nontaped
|
||||
A = -8.976076325826309
|
||||
K = 913.5463710698101
|
||||
B = 0.29767471011439534
|
||||
C = 5.6686184386250025
|
||||
v = 0.3627635461289861
|
||||
|
||||
if (sensor == 1):
|
||||
A = -4.831976283950702
|
||||
K = 885.9877001844566
|
||||
B = 0.2793284618109283
|
||||
C = 3.8852507844119217
|
||||
v = 0.2389935455347361
|
||||
|
||||
if (sensor == 2):
|
||||
A = -9.824360913609562
|
||||
K = 871.4744633266955
|
||||
B = 0.2909366235093304
|
||||
C = 4.3307594408159495
|
||||
v = 0.2822807132259202
|
||||
|
||||
if (sensor == 3):
|
||||
A = -13.891292062248292
|
||||
K = 990.6819962477331
|
||||
B = 0.16376045588859353
|
||||
C = -0.074904004740735
|
||||
v = 0.17727132893449118
|
||||
|
||||
#IMPORTANT: FOR SENSOR 3, INDUCTION SENSOR OUTPUTS VOLTAGE > 6 v
|
||||
#SO WE USED NEW VOLTAGE DIVIDER: 220 OHMS, 550 OHMS
|
||||
y = float(analog)
|
||||
#print(y)
|
||||
real = C - (1.0 / B) * np.log((( (K - A) / (y - A) ) ** v) - 1.0)
|
||||
return real
|
||||
|
||||
def __init__(self):
|
||||
self.running = True
|
||||
self.paused = True
|
||||
self.collecting = False
|
||||
self.arduino = serial.Serial(port=COMPORT, baudrate=115200, timeout=5)
|
||||
|
||||
def run_machine(self):
|
||||
with keyboard.Listener(on_press=self.on_press) as listener:
|
||||
while self.arduino.is_open and self.running:
|
||||
try:
|
||||
data = self.arduino.readline().decode(errors='ignore')
|
||||
except:
|
||||
print("Triggered Termination")
|
||||
break
|
||||
if self.paused:
|
||||
|
||||
sleep(0.1)
|
||||
msg = input("type 'c' to show data, type 'p' to pause, type 'esc' to pause: ").strip()
|
||||
self.arduino.write(bytes(msg, 'utf-8'))
|
||||
self.collecting = False
|
||||
if (msg == 'c'):
|
||||
self.collecting = True
|
||||
self.paused = False
|
||||
elif (msg == 'q'):
|
||||
self.running = False
|
||||
sleep(0.5)
|
||||
|
||||
elif self.collecting:
|
||||
try:
|
||||
data = self.arduino.readline().decode(errors='ignore')
|
||||
data = data.strip()
|
||||
print(data)
|
||||
distance = self.map(data, SENSOR)
|
||||
print(distance, "mm")
|
||||
# distance holds sensor values
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("Triggered Termination")
|
||||
break
|
||||
|
||||
listener.stop()
|
||||
arduino.close()
|
||||
return
|
||||
|
||||
def on_press(self, key):
|
||||
try:
|
||||
if key.char == 'p':
|
||||
self.paused = True
|
||||
|
||||
except:
|
||||
if key == keyboard.Key.esc:
|
||||
print("pausing program")
|
||||
self.pause = True
|
||||
|
||||
app = App()
|
||||
app.run_machine()
|
||||
Reference in New Issue
Block a user