from machine import Pin, I2C, UART, Timer
import utime
import bmp280
# Configuração do Sensor Ultrassônico
TRIG = Pin(15, Pin.OUT)
ECHO = Pin(14, Pin.IN)
# Configuração do Buzzer
buzzer = Pin(16, Pin.OUT)
# Configuração do Bluetooth
uart = UART(0, baudrate=9600, tx=Pin(16), rx=Pin(17))
# Configuração do Sensor BMP280
i2c = I2C(0, scl=Pin(19), sda=Pin(18))
bmp = bmp280.BMP280(i2c)
# Função para medir distância
def measure_distance():
TRIG.low()
utime.sleep_us(2)
TRIG.high()
utime.sleep_us(10)
TRIG.low()
while ECHO.value() == 0:
signaloff = utime.ticks_us()
while ECHO.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
return distance
# Função para ler dados do BMP280
def read_bmp280():
temperature = bmp.temperature
pressure = bmp.pressure
return temperature, pressure
# Função para enviar dados via Bluetooth
def send_via_bluetooth(data):
uart.write(data + "\\n")
# Função para monitoramento
def monitor(t):
distance = measure_distance()
temperature, pressure = read_bmp280()
data = f"Distance: {distance:.2f} cm, Temp: {temperature:.2f} C, Pressure: {pressure:.2f} hPa"
send_via_bluetooth(data)
print(data) # Para debug via USB serial
if distance < 10: # Exemplo de alerta de proximidade
buzzer.high()
else:
buzzer.low()
# Configuração do Timer para leituras periódicas
timer = Timer()
timer.init(period=2000, mode=Timer.PERIODIC, callback=monitor)