Skip to content

Instantly share code, notes, and snippets.

@hktechn0
Created June 26, 2019 09:17
Show Gist options
  • Save hktechn0/90c2b011aceef5171bd811aa7a79dc88 to your computer and use it in GitHub Desktop.
Save hktechn0/90c2b011aceef5171bd811aa7a79dc88 to your computer and use it in GitHub Desktop.
import bleio
import board
import digitalio
import time
import binascii
import microcontroller
# User service UUID: Change this to your generated service UUID
USER_SERVICE_UUID = "91E4E176-D0B9-464D-9FE4-52EE3E9F1552"
# User service characteristics
WRITE_CHARACTERISTIC_UUID ="E9062E71-9E62-4BC6-B0D3-35CDCD9B027B"
NOTIFY_CHARACTERISTIC_UUID = "62FBD229-6EDD-4D1A-B554-5C4E1BB29169"
# PSDI Service UUID: Fixed value for Developer Trial
PSDI_SERVICE_UUID = "E625601E-9E55-4597-A598-76018A0D293D"
PSDI_CHARACTERISTIC_UUID = "26E2B12B-85F0-4F3F-9FDD-91D114270E6E"
def ble_uuid(str_uuid):
return bleio.UUID(binascii.unhexlify(WRITE_CHARACTERISTIC_UUID.replace("-", "")))
pin_led = digitalio.DigitalInOut(board.RED_LED)
pin_led.switch_to_output(False)
pin_sw = digitalio.DigitalInOut(board.SWITCH)
pin_sw.switch_to_input(digitalio.Pull.UP)
# Create characteristic and service.
write_characteristic = bleio.Characteristic(ble_uuid(WRITE_CHARACTERISTIC_UUID), write=True)
notify_characteristic = bleio.Characteristic(ble_uuid(NOTIFY_CHARACTERISTIC_UUID), notify=True)
user_service = bleio.Service(ble_uuid(USER_SERVICE_UUID), [write_characteristic, notify_characteristic])
psdi_characteristic = bleio.Characteristic(ble_uuid(PSDI_CHARACTERISTIC_UUID), read=True)
psdi_service = bleio.Service(ble_uuid(PSDI_SERVICE_UUID), [psdi_characteristic], secondary=True)
# Create a peripheral and start it up.
periph = bleio.Peripheral([user_service, psdi_service])
periph.start_advertising()
psdi_characteristic.value = microcontroller.cpu.uid
while not periph.connected:
# Wait for connection.
pass
while periph.connected:
pin_led.value = bool(write_characteristic.value[0])
sw_value = not pin_sw.value
if bool(notify_characteristic.value[0]) != sw_value:
print(sw_value)
notify_characteristic.value = bytes([1 if sw_value else 0])
time.sleep(0.1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment