Files
WaterTank/sensors.py
2026-06-16 13:02:06 +02:00

57 lines
1.6 KiB
Python

from machine import Pin, ADC
import time
from hx710b import HX710B
class Sensors:
def __init__(self):
self.hx = HX710B(dout_pin=0, sck_pin=1)
print("Using calibration:", self.hx.zero_offset, self.hx.scale_factor)
self.pressure = 0.0
self.tank_full_kpa = 13.72
self.tank_full = False
self.tank_percent = 0.0
self.tare_btn = Pin(9, Pin.IN, Pin.PULL_UP)
self._tare_lock = False
self.test_pin0 = Pin(20, Pin.OUT) # Green
self.test_pin1 = Pin(21, Pin.OUT) # Blue
self.test_pin2 = Pin(22, Pin.OUT)
self.cpu_adc = ADC(4)
def read_pressure(self):
#self.test_pin2.on()
self.pressure = self.hx.read_kpa()
#self.test_pin2.off()
return self.pressure
def read_pressure_avg(self, alpha=0.2):
new = self.hx.read_kpa()
if not hasattr(self, "pressure"):
self.pressure = new
else:
self.pressure = (alpha * new) + ((1 - alpha) * self.pressure)
return self.pressure
def set_tank_full(self):
self.tank_full_kpa = self.pressure
self.tank_full = True
self.tank_percent = 100.0
print("Tank FULL set at", self.tank_full_kpa)
def check_buttons(self):
if self.tare_btn.value() == 0 and not self._tare_lock:
self._tare_lock = True
time.sleep_ms(200)
self.set_tank_full()
elif self.tare_btn.value() == 1:
self._tare_lock = False
def cpu_temp(self):
v = self.cpu_adc.read_u16() * 3.3 / 65535
return 27 - (v - 0.706) / 0.001721