47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# Basic example for using the BLE Connect UART
|
|
# To use, start this program, and start the Adafruit Bluefruit LE Connect app.
|
|
# Connect, and then select UART. Any text received FROM the connected device
|
|
# will be displayed. Periodically, text is sent TO the connected device.
|
|
|
|
import time
|
|
from adafruit_ble import BLERadio
|
|
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
|
|
from adafruit_ble.services.nordic import UARTService
|
|
|
|
SEND_RATE = 10 # how often in seconds to send text
|
|
|
|
ble = BLERadio()
|
|
uart_server = UARTService()
|
|
advertisement = ProvideServicesAdvertisement(uart_server)
|
|
|
|
count = 0
|
|
while True:
|
|
print("WAITING...")
|
|
# Advertise when not connected.
|
|
ble.start_advertising(advertisement)
|
|
while not ble.connected:
|
|
pass
|
|
|
|
# Connected
|
|
ble.stop_advertising()
|
|
print("CONNECTED")
|
|
|
|
# Loop and read packets
|
|
last_send = time.monotonic()
|
|
while ble.connected:
|
|
# INCOMING (RX) check for incoming text
|
|
if uart_server.in_waiting:
|
|
raw_bytes = uart_server.read(uart_server.in_waiting)
|
|
text = raw_bytes.decode().strip()
|
|
# print("raw bytes =", raw_bytes)
|
|
print("RX:", text)
|
|
# OUTGOING (TX) periodically send text
|
|
if time.monotonic() - last_send > SEND_RATE:
|
|
text = "COUNT = {}\r\n".format(count)
|
|
print("TX:", text.strip())
|
|
uart_server.write(text.encode())
|
|
count += 1
|
|
last_send = time.monotonic()
|
|
|
|
# Disconnected
|
|
print("DISCONNECTED")
|