Ардуино сканер блютуз

Начало работы с ESP32 Bluetooth в Arduino IDE

ESP32 поставляется не только с Wi-Fi, но также с Bluetooth и Bluetooth Low Energy (BLE). Этот пост представляет собой краткое введение в BLE с ESP32. Сначала рассмотрим, что такое BLE и для чего его можно использовать, а затем рассмотрим некоторые примеры с ESP32, используя Arduino IDE. Для простого введения мы создадим сервер ESP32 BLE и сканер ESP32 BLE, чтобы найти этот сервер.

Представляем Bluetooth с низким энергопотреблением

Что такое Bluetooth с низким энергопотреблением?

Bluetooth Low Energy, сокращенно BLE, представляет собой энергосберегающий вариант Bluetooth. Основное применение BLE — передача небольших объемов данных на короткие расстояния (низкая пропускная способность). В отличие от Bluetooth, который всегда включен, BLE постоянно находится в спящем режиме, за исключением случаев, когда устанавливается соединение.

Это заставляет его потреблять очень мало энергии. BLE потребляет примерно в 100 раз меньше энергии, чем Bluetooth (в зависимости от варианта использования).

Кроме того, BLE поддерживает не только двухточечную связь, но также широковещательный режим и mesh сеть.

Взгляните на таблицу ниже, которая сравнивает BLE и Bluetooth более подробно.

Благодаря своим свойствам, BLE подходит для приложений, которым необходимо обмениваться небольшими объемами данных. Например, BLE отлично подходит для фитнеса, трекинга, маячков и домашней автоматизации.

BLE сервер и клиент

С Bluetooth Low Energy, есть два типа устройств: сервер и клиент. ESP32 может действовать как клиент или как сервер.

Сервер объявляет о своем существовании, чтобы его могли найти другие устройства, и содержит данные, которые клиент может прочитать. Клиент сканирует близлежащие устройства и, когда находит сервер, который ищет, он устанавливает соединение и прослушивает входящие данные. Это называется двухточечной связью.

Как упоминалось ранее, BLE также поддерживает широковещательный режим и mesh сеть:

  • Режим широковещания: сервер передает данные всем подключенным клиентам;
  • mesh сеть: все устройства сопряжены, это соединение многие ко многим.

Несмотря на то, что настройки широковещательной и mesh сети можно реализовать, они были разработаны совсем недавно, поэтому в настоящее время для ESP32 не так много примеров.

GATT расшифровывается как Generic Attributes и определяет иерархическую структуру данных, которая предоставляется подключенным устройствам BLE. Это означает, что GATT определяет способ, которым два устройства BLE отправляют и получают стандартные сообщения. Понимание этой иерархии важно, потому что это облегчит понимание того, как использовать BLE и писать свои приложения.

BLE Сервис

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

Каждый сервис содержит хотя бы одну характеристику или может также ссылаться на другие сервисы. Сервис — это просто набор информации, например показания датчиков. Существуют предопределенные службы для нескольких типов данных, определенных SIG (Специальная группа по интересам Bluetooth), таких как: уровень заряда батареи, артериальное давление, частота сердечных сокращений, шкала веса и т. д. Здесь можно проверить другие сервисы.

Характеристика BLE

Характеристика всегда принадлежит сервису, и именно там фактические данные содержатся в иерархии. Характеристика всегда имеет два атрибута: объявление характеристики (которое предоставляет метаданные о данных) и значение характеристики.

Кроме того, за значением характеристики могут следовать дескрипторы, которые дополнительно расширяют метаданные, содержащиеся в объявлении признака.

Операции и процедуры, которые можно использовать с признаком:

  • Broadcast
  • Read
  • Write without response
  • Write
  • Notify
  • Indicate
  • Authenticated Signed Writes
  • Extended Properties

Каждый сервис, характеристика и дескриптор имеют UUID (универсальный уникальный идентификатор). UUID — это уникальное 128-битное (16 байтов) число. Например:

Для всех типов, служб и профилей, указанных в SIG (Специальная группа по интересам Bluetooth), существуют сокращенные UUID.

Но если вашему приложению нужен собственный UUID, вы можете сгенерировать его с помощью веб-сайта генератора UUID.

Таким образом, UUID используется для однозначно идентифицирующей информации. Например, он может идентифицировать конкретную услугу, предоставляемую устройством Bluetooth.

BLE с ESP32

ESP32 может выступать в качестве сервера BLE или клиента BLE. Есть несколько примеров BLE для ESP32 в библиотеке BLE ESP32 для Arduino IDE. Эта библиотека устанавливается по умолчанию при установке ESP32 в Arduino IDE.

В Arduino IDE вы можете перейти в File> examples> ESP32 BLE Arduino и изучить примеры, которые поставляются с библиотекой BLE.

Примечание: чтобы увидеть примеры ESP32, вы должны выбрать плату ESP32 в меню Инструменты > Плата.

Для краткого введения в ESP32 с BLE в Arduino IDE мы создадим сервер ESP32 BLE, а затем сканер ESP32 BLE, чтобы найти этот сервер. Мы будем использовать и объяснять примеры, которые поставляются с библиотекой BLE.

Чтобы следовать этому примеру, вам нужны две платы разработки ESP32. Мы будем использовать плату ESP32 DOIT DEVKIT V1.

ESP32 BLE Server

Чтобы создать сервер BLE ESP32, откройте свою среду разработки Arduino и выберите «Файл»> «Примеры»> «BLE Arduino ESP32» и выберите пример сервера BLE_server. Должен открыться следующий код:

Для создания сервера BLE необходимо:

  1. Создать сервер BLE. В этом случае ESP32 действует как сервер BLE.
  2. Создать службу BLE.
  3. Создать BLE-характеристику для службы.
  4. Создать BLE-дескриптор для характеристики.
  5. Запустить службу.
  6. Запустить рассылку, чтобы ее могли увидеть другие устройства.

Как работает код

Давайте кратко рассмотрим, как работает пример кода сервера BLE.

Он начинается с импорта необходимых библиотек для возможностей BLE.

Затем вам нужно определить UUID для сервиса и характеристики.

Вы можете оставить UUID по умолчанию или перейти на uuidgenerator.net, чтобы создать случайные UUID для ваших услуг и характеристик.

В setup() запускается последовательная связь со скоростью 115200 бод.

Затем создается устройство BLE под названием «MyESP32».

В следующей строке устанавливается устройство BLE в качестве сервера.

После этого создается сервис для сервера BLE с UUID, определенным ранее.

Затем устанавливается характеристика для этой услуги.

После создания характеристики вы можете установить ее значение с помощью метода setValue ().

В этом случае мы устанавливаем значение для текста « Hello World says Neil ». В будущих проектах этот текст может быть, например, показанием датчика или состоянием лампы.

Наконец, вы можете запустить службу и рассылку, чтобы другие устройства BLE могли сканировать и находить это устройство BLE.

Это простой пример того, как создать сервер BLE. В этом коде ничего не делается в цикле loop(), но вы можете добавить действие, которое происходит, когда подключается новый клиент.

ESP32 BLE Scanner

Создать сканер ESP32 BLE очень просто. Возьмите другой ESP32 (в то время как другой выполняет скетч сервера BLE). В вашей IDE Arduino перейдите в Файл> Примеры> ESP32 BLE Arduino и выберите пример BLE_scan. Должен открыться следующий код.

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

Как только код загружен, необходимо включить две платы ESP32:

  • Один ESP32 со скетчем «BLE_server»,
  • другой с ESP32 «BLE_scan».

Источник

Сканер ISM диапазона на базе модуля nRF24L01 (2.4 ГГц: WiFi, Bluetooth, …)

При создании проектов с передачей данных по радиочастотному каналу, нужно быть уверенным, что данный канал не занят другим устройством. Несколько устройств, находящихся в непосредственной близости, работающих на одной частоте, будут мешать друг другу, снижая скорость передачи данных, или вообще откажутся работать.

В этом уроке мы создадим сканер, с помощью которого сможем определить свободные каналы в ISM (Industrial, Scientific, Medical) диапазоне частот от 2400 МГц до 2527 МГц. Данный сканер сможет определять такие устройства как: WiFi, Bluetooth, некоторые радио телефоны, другие модули nRF24L01 и даже СВЧ печи. Так же сканер может быть полезен при настройке WiFi роутеров.

Нам понадобится:

  • TFT дисплей 2.2” / 320×240 х 1шт.
  • Радио модуль nRF24L01+ х 1шт.
  • Адаптер к модулю nRF24L01+ х 1шт.
  • Arduino х 1шт.
  • Trema Shield х 1шт.
  • Резисторы 1 кОм х 1 комплект.
  • Резисторы 470 Ом х 1 комплект.
  • Набор проводов «мама-мама» х 1 комплект.
  • Можно использовать Breadboard и набор проводов «папа-мама» х 1 комплект.

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека UTFT (для работы с цветными TFT дисплеями).
  • Библиотека RF24 (для работы с радио модулями nRF24L01+).

Видео:

Схема подключения:

При подключении радио модуля nRF24L01+ и TFT дисплея нужно учитывать уровни напряжений питания и логики:

  • Питание радио модуля nRF24L01+ подключается к напряжению 3,3 В, а информационные выводы могут работать от 5 В логики.
  • Питание TFT дисплея может подключаться к 5 В, а информационные выводы и питание подсветки требуют 3,3 В уровни.

Поэтому радио модуль подключается через адаптер, а TFT дисплей, через резистивные делители напряжения.

Радио модуль nFR24L01+ подключается к аппаратной шине SPI. Так как мы не используем адаптер SD карты, на обратной стороне TFT дисплея, то можем его подключать к любым выводам arduino. Питание адаптера nFR24L01+ и TFT дисплея взято с контактов GND и Vcc (5 В).

Адаптер nRF24L01+ Arduino Uno Назначение
CE 9 (меняется в скетче) Выбор режима: приёмник / передатчик
CSN (CS/SS) 10 (меняется в скетче) Шина SPI — выбор устройства
SСK 13 (SCK) Шина SPI — линия тактирования
MO 11 (MOSI) Шина SPI — линия данных (от мастера к ведомому)
MI 12 (MISO) Шина SPI — линия данных (от ведомого к мастеру)
IRQ Не используется Прерывание
TFT 2.2» Arduino Uno Назначение
SDO/MISO Не используется Линия данных от дисплея (3,3 В)
LED 5V (через делитель) Питание подсветки дисплея (3,3 В)
SСK 8 (через делитель) Линия тактирования (3,3 В)
SDI/MOSI 7 (через делитель) Линия данных к дисплею (3,3 В)
DC/RS 6 (через делитель) Выбор типа информации: команда или данные (3,3 В)
RESET 5 (через делитель) Сброс (3,3 В)
CS 4 (через делитель) Выбор устройства (3,3 В)
GND GND Общий
Vcc 5V Питание логики дисплея

Алгоритм работы:

В начале скетча мы инициируем работу радио модуля и TFT дисплея. После чего отключаем функцию автоподтверждения приёма, вызовом функции setAutoAck с параметром false и выводим координаты графика.

При каждом проходе кода loop увеличиваем номер канала от 0 до 127. Открываем очередной канал и переводим радио модуль в режим приёма данных на 50 мс, после чего отключаем приём данных. Далее обращаемся к функции testRPD, которая возвращает true только в том случае, если мощность принятого сигнала на открытом канале была выше -64 дБм. Если это так, то приращаем ячейку массива ChannelPowerNow на 1, номер ячейки массива совпадает с номером канала.

Как только просканированы все каналы, от 0 до 127. Выводим один из элементов массива ChannelPowerNow на дисплей, а саму ячейку массива обнуляем. И начинаем сканировать все каналы от 0 до 127 заново. Но по завершении сканирования выведем следующий по порядку элемент массива ChannelPowerNow. Таким образом максимальное значение для любой ячейки массива не может быть выше 127. Чем чаще на канале «встречается» мощный сигнал, тем выше значение ячейки массива.

Используя данный алгоритм, во время вывода графика, мы сканируем не очередной (выводимый) канал, а все каналы сразу. Следовательно, не пропустим даже «кратковременное» появление нового устройства на любом из каналов.

Максимальные значения ячеек массива ChannelPowerNow копируются в ячейки массива ChannelPowerMax . На дисплей выводятся графики обоих массивов и повторяют АЧХ сканируемого диапазона для текущих и максимальных показаний.

Источник

ESP32 TTGO Bluetooth Device Scanner

Introduction: ESP32 TTGO Bluetooth Device Scanner

In this project we will learn how to make a Bluetooth Scanner using a ESP32 TTGO to Display the Bluetooth devices around.

Step 1: What You Will Need

  • TTGO ESP32
  • Some Bluetooth device that you will try to locate like a smart bracelet ,etc
  • Visuino program: Download Visuino

Step 2: Start Visuino, and Select the Arduino TTGO T-Display ESP32 Board Type

The Visuino: https://www.visuino.eu needs to be installed. Start Visuino as shown in the first picture Click on the «Tools» button on the Arduino component (Picture 1) in Visuino When the dialog appears, select «TTGO T-Display ESP32» as shown on Picture 2

Step 3: In Visuino Set Bluetooth LE

  • Select TTGO T-Display ESP32 board and in the properties window expand «Modules>Bluetooth LE>Operations
  • Click on the Operations 3 Dots
  • In the Operations window drag «Search Bluetooth Devices» to the left side and in the properties window set «Active» to true
  • Close the Operations window

Step 4: In Visuino Set Display

Select TTGO T-Display ESP32 board and in the properties window expand «Modules>Display>Orientation

  • Set Orientation to:goRight

Step 5: In Visuino Add & Connect Components

  • Add «Clock Generator» component
  • Connect «ClockGenerator1» pin [Out] to «TTGO T-Display ESP32» > Search Devices pin [Scan]
  • Connect «TTGO T-Display ESP32″ > Search Devices pin [Device Name] to «TTGO T-Display ESP32» > Display pin [In]

Step 6: Generate, Compile, and Upload the Code

In Visuino, at the bottom click on the «Build» Tab, make sure the correct port is selected, then click on the «Compile/Build and Upload» button.

Step 7: Play

If you power the TTGO ESP32 module it will scan for the Bluetooth devices, once it finds the devices it will display them on the LCD.

Источник

Adblock
detector