ESP32 BLE micropython

MicroPython для ESP32 поддерживает Bluetooth Low Energy (BLE) и может использоваться для создания приложений, которые соединяют несколько ESP32-устройств через BLE.

Чтобы начать работу с BLE в MicroPython на ESP32, вам понадобится модуль “bluetooth”. Вот простой пример кода, демонстрирующий, как установить соединение BLE между двумя ESP32-устройствами:

ESP32 A:

import bluetooth

# Установка имени и роли устройства
bluetooth.set_advertisement(name='ESP32 A', service_uuid=b'12345678-1234-5678-1234-56789abcdef')

# Инициализация BLE
bluetooth.start()

# Создание сервера GATT
server = bluetooth.GATTServer()

# Регистрация характеристики
characteristic = server.register_characteristic(uuid=b'12345678-1234-5678-1234-56789abcdef', properties=bluetooth.CHAR_READ | bluetooth.CHAR_WRITE)

# Обработчик запросов на чтение характеристики
def read_callback(client_address):
    return b'Hello from ESP32 A'

# Обработчик запросов на запись характеристики
def write_callback(client_address, value):
    print('Received:', value)

characteristic.set_read_callback(read_callback)
characteristic.set_write_callback(write_callback)

while True:
    pass

ESP32 B:

import bluetooth

# Установка имени и роли устройства
bluetooth.set_advertisement(name='ESP32 B', service_uuid=b'12345678-1234-5678-1234-56789abcdef')

# Инициализация BLE
bluetooth.start()

# Создание клиента GATT
client = bluetooth.GATTClient()

# Подключение к серверу GATT
client.connect()

# Получение характеристики по UUID
characteristic = client.characteristic_by_uuid(b'12345678-1234-5678-1234-56789abcdef')

# Чтение значения характеристики
value = characteristic.read()
print('Read:', value)

# Запись значения характеристики
characteristic.write(b'Hello from ESP32 B')

while True:
    pass

В этом примере оба ESP32-устройства устанавливают соединение по BLE. Устройство ESP32 A выступает в роли сервера GATT, регистрирует характеристику для чтения и записи, и обрабатывает запросы от клиента. Устройство ESP32 B выступает в роли клиента GATT, подключается к серверу GATT, читает значение характеристики и записывает новое значение.

Вы можете использовать подобный подход для создания соединения между несколькими ESP32-устройствами по BLE. Обратите внимание, что вам может потребоваться добавить дополнительные функции для обработки разрыва соединения, повторного подключения и другие функции.

вы можете расширить функциональность, чтобы установить соединение между несколькими ESP32-устройствами по BLE. Для этого вы можете использовать подход на основе маяков (beacons) или простого сканирования устройств.

Вот пример, который демонстрирует, как один ESP32 (A) будет отправлять маяки BLE, а другой ESP32 (B) будет сканировать и обнаруживать эти маяки:

ESP32 A (отправляющий маяки):

import bluetooth
import time

# Установка имени и роли устройства
bluetooth.set_advertisement(name='ESP32 A', service_uuid=b'12345678-1234-5678-1234-56789abcdef')

# Инициализация BLE
bluetooth.start()

while True:
    # Отправка маяка
    bluetooth.send_beacon(b'12345678-1234-5678-1234-56789abcdef', b'Hello from ESP32 A')
    
    # Пауза между отправкой маяков
    time.sleep(1)

ESP32 B (сканирующий и обнаруживающий маяки):

import bluetooth

# Установка имени и роли устройства
bluetooth.set_advertisement(name='ESP32 B', service_uuid=b'12345678-1234-5678-1234-56789abcdef')

# Инициализация BLE
bluetooth.start()

while True:
    # Сканирование маяков
    beacons = bluetooth.scan_beacons(b'12345678-1234-5678-1234-56789abcdef')
    
    # Обработка обнаруженных маяков
    for beacon in beacons:
        print('Received Beacon:', beacon)
    
    # Пауза между сканированиями
    time.sleep(1)

В этом примере ESP32 A отправляет маяки с определенным UUID, а ESP32 B сканирует и обнаруживает эти маяки. В цикле сканирования ESP32 B получает список обнаруженных маяков и может обработать их по своему усмотрению.

Обратите внимание, что в этом примере используется отправка и сканирование маяков, что является одним из способов установления соединения между ESP32-устройствами по BLE. В зависимости от ваших конкретных требований, вы можете использовать и другие методы, такие как установка соединения между клиентом и сервером GATT, чтобы обмениваться данными.

Оставьте комментарий