Оглавление:

Как использовать Bluetooth (BLE) с ESP32: 3 шага
Как использовать Bluetooth (BLE) с ESP32: 3 шага

Видео: Как использовать Bluetooth (BLE) с ESP32: 3 шага

Видео: Как использовать Bluetooth (BLE) с ESP32: 3 шага
Видео: BLE with ESP32 tutorial part 1: the Server 2024, Июнь
Anonim

#####ПРИМЕЧАНИЕ#####

Метод, показанный в этой инструкции, устарел и устарел. Посмотрите это видео, чтобы узнать о новейшем методе.

###############

Хотя ESP32 может похвастаться обширным списком функций (Википедия), самая большая особенность, которая привлекает внимание, - это встроенный bluetooth v4.2 с поддержкой BLE. Но это утверждение может вводить в заблуждение, поскольку оборудование есть, а программная поддержка использования Bluetooth отсутствует. (Это в стадии разработки)

Для тех, кто не знает, что такое BLE, это означает Bluetooth Low Energy. Это протокол Bluetooth, который значительно снижает энергопотребление по сравнению с «классическим» Bluetooth.

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

Несколько заявлений об ограничении ответственности…

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

Примечание 1. Когда я говорю, что поддержка Bluetooth еще не доступна, я имею в виду среду разработки arduino.

Поддержка вполне может быть доступна в официальном SDK, а также в IDF, но я не нашел для них никаких компетентных инструкций.

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

Единственное, что вы можете сделать надежно, - это создать маяк, рекламирующий его имя. Комментарий на YouTube очень элегантно сформулирован: «LOL, жестокий взлом. Но что вы можете сделать?»

Примечание 3. Единственный вид данных, которые вы можете отправлять, - это строковые.

Вы вполне можете решить кодировать и декодировать другие типы данных в строку и из нее, но это выходит за рамки данного руководства.

Шаг 1. Пример сборки

Image
Image
Пример сборки
Пример сборки
Пример сборки
Пример сборки
Пример сборки
Пример сборки

Если вы здесь только для объяснения, вы можете пропустить этот шаг, но его выполнение может дать вам немного больше ясности.

Сначала я создам пример проекта, а затем попытаюсь объяснить, как это работает и как можно воспроизвести связь Bluetooth. Мы создадим портативный датчик температуры, который будет отправлять прямую трансляцию на ваш смартфон. Сборка может работать в течение нескольких дней на одном li-po и легко демонстрирует преимущества BLE.

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

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

Аппаратное обеспечение

Подключения датчика температуры просты. Красный провод подключается к 3,3 В, черный подключается к земле (gnd), желтый подключается к GPIO 2, который на моей плате отмечен как D9. Подключите резистор 4,7 кОм между красным и желтым проводом. Я не использую резистор, вместо этого я использую 3-контактный разъем, который поставляется с моим датчиком. Он имеет встроенный подтягивающий резистор.

Li-po действительно должен быть подключен с помощью разъема JST, но я не стал беспокоиться о его покупке, поэтому я просто вставил несколько соединительных кабелей (мама-мама) в разъем и припаял другую пару к клеммам аккумулятора. Это обеспечивает надежное соединение и временный выключатель питания.

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

Программное обеспечение

Если у вас еще не установлена IDE arduino, перейдите по этой ссылке, чтобы загрузить ее. Программное обеспечение arduino по умолчанию не поставляется с определениями плат для различных плат ESP32. Чтобы заставить их перейти по этой ссылке и загрузить файлы в виде zip-архива. Вам нужно распаковать их в это место:

C: / Пользователи // Документы / Arduino / hardware / espserrif / ESP32

Где ваше имя пользователя на вашем ПК. Убедитесь, что различные файлы доступны в папке ESP32, а не в другой папке.

Теперь, если вы запустите программное обеспечение arduino и перейдете к инструментам-> платам, вы должны увидеть различные платы ESP32 при прокрутке вниз.

Большинство цифровых датчиков температуры используют протокол OneWire для связи с микроконтроллерами, поэтому нам нужна библиотека. Перейдите в эскиз-> включить библиотеку-> управлять библиотеками, найдите onewire и установите библиотеку, у которой слишком много авторов. Однопроводной хаб вам не нужен. Игнорируй это.

Теперь вы можете скачать и открыть код, прикрепленный к этому шагу (temperature-example.ino).

Если вы используете датчик, отличный от моего, вам придется соответственно изменить код. Замените код в getTemp (). Просто верните конечную температуру в виде

Возвращение;

Где поплавок, содержащий температуру.

Подключите плату, выберите правильную плату и порт из-под инструментов и нажмите «Загрузить».

Если код не загружается, отключите датчик и подключите GPIO 0 к земле. Восстановите соединения после загрузки.

Ваш ESP должен теперь кричать всему миру о температуре вашего кофе, но вам нужен кто-то, кто сможет это понять.

Приложение для Android

Извините, пользователи iPhone (… не совсем).

Загрузите apk отсюда и установите его. Когда вы запустите приложение, вас встретит очень простой интерфейс.

Если вы получили сообщение об ошибке «реклама не поддерживается», нажмите «ОК» и проигнорируйте его, но если вы получите сообщение «BLE не поддерживается», значит на вашем телефоне нет Bluetooth 4.0 или выше, и он не сможет работать. приложение.

Убедитесь, что Bluetooth на вашем телефоне включен, и нажмите «Начать сканирование», пока esp находится в пределах досягаемости и включен, вы должны получать некоторое значение температуры.

Возможные ошибки:

  • -1000:: Это означает, что ваше устройство не может найти ESP. убедитесь, что Bluetooth включен, и попробуйте перезапустить ESP.
  • SNA:: Это означает, что ваш телефон получает данные от ESP, но сам ESP не может найти датчик температуры на GPIO 2. Убедитесь, что соединения безопасны, проверьте, используете ли вы резистор правильного значения. Дважды проверьте схему вашей платы, что вы подключены к GPIO 2, а не к контакту, помеченному как D2.

Шаг 2: объяснение

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

Например, Устройство под названием «Метеостанция» может обслуживать такие параметры, как «Температура», «Влажность» и «Ветер». Когда другое устройство BLE, такое как ваш смартфон, сканирует устройства, оно видит метеостанцию и при подключении к ней может получать потоки данных, соответствующие различным службам.

Библиотеки (для ESP32), которые в настоящее время доступны нам, позволяют нам создать маяк, который могут обнаружить другие, но не более того. Мы не можем создавать сервисы, и никакие устройства не могут подключаться к ним.

Итак, я отправляю данные без создания служб, используя метод, аналогичный протоколу Wi-Fi, который называется Beacon Stuffing. Это означает, что я включаю данные для отправки в само имя маяка. Это позволяет мне рекламировать данные без необходимости подключения других устройств к маяку.

ble.begin (beaconMsg); // beaconMsg - объявленное имя

Мы используем библиотеку SimpleBLE для создания маяка с именем в формате ESP. Где «ESP» всегда остается неизменным в начале имени и заменяется последними данными, возвращаемыми функцией getValue () каждые 100 миллисекунд.

float getValue () {return sensorValue;}

Приложение для Android ищет имена устройств BLE, начинающиеся с «ESP», после нахождения оно разделяет имя и отображает данные только с конца.

Связь только в одну сторону, приложение ничего не отправляет обратно.

Шаг 3: Заключение

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

БОЛЬШОЕ Спасибо DFRobot.com за присланные мне эти продукты:

  • Доска ESP32 FireBeetle
  • Щит расширения FireBeetle
  • Датчик температуры DS18B20

Я недавно нашел эту библиотеку. ReadME утверждает, что вы можете подключаться к другим устройствам BLE для получения данных (не можете рекламировать себя). Я не пробовал, но вы можете проверить, если вам интересно.

Вы можете посмотреть видео проекта на: YouTube

Рекомендуемые: