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, чтобы обмениваться данными.