You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.6 KiB
Python

"""
This modul implements a simple serial connection to the ZS-040 and will echo out to the console
any messages it receives. This board is a Bluetooth SPP (Serial Port Protocol) module.
When powered on the device will broadcast as BT-05 by default. Default passwords are usually 1234 or 0000.
"""
from select import select
from machine import Pin, UART
class ZS040:
def __init__(
self,
uart_id,
tx_pin,
rx_pin,
state_pin,
baudrate=38400,
bits=8,
stop=1,
parity=None,
):
self.uart = UART(
uart_id,
baudrate=baudrate,
bits=bits,
stop=stop,
parity=parity,
)
self.state_pin = Pin(state_pin, Pin.IN)
def read(self, nbytes=None):
return self.uart.read(nbytes)
def readline(self):
return self.uart.readline()
def write(self, buf):
self.uart.write(buf)
def any(self):
return self.uart.any()
@property
def state(self):
return self.state_pin.value()
@classmethod
def from_config(cls, pin_config):
return cls(
uart_id=pin_config["bluetooth"]["uart_id"],
tx_pin=pin_config["bluetooth"]["tx_pin"],
rx_pin=pin_config["bluetooth"]["rx_pin"],
state_pin=pin_config["bluetooth"]["state_pin"],
)
# while True:
# if BT_STATE_PIN.value():
# if uart.any():
# data = uart.read(1)
# print(data.decode("utf8"))
# else:
# print("No data. Sleeping")
# else:
# print("No Bluetooth device paired.")
# sleep_ms(500)