Esp32 wifi и bluetooth одновременно
Развитие проектов интегрирующих передачу данных по Bluetooth предполагает переход на более современные микроконтроллеры ESP32, поддерживающие цифровой обмен данными по Wi-Fi, Bluetooth, порты АЦП, ЦАП, аудиоканал, протокол работы с SD картами, возможность энергосберегающего режима глубокого сна и ряд других новшеств.
Эти особенности позволяют эффективно применять данные микроконтроллеры в приложениях «интернета вещей» и проектах серии «умный дом» в сочетании с модулями ARDUINO и Raspberry Pi.
Отличительная черта контроллеров ESP32 — наличие двух интегрированных модулей Bluetooth: стандартного Bluetooth и Bluetooth Low Energy (BLE). Модуль BLE потребляет значительно меньше энергии, относительно стандартных классических протоколов Bluetooth. Экономия энергии достигается за счет того, что информационные пакеты отправляются периодически, по мере необходимости.
Данный тип обмена данными не поддерживает обмена файлами. Например, музыку или видео передать не получится.
Модули BLE могут использоваться для идентификации типов устройств, обмена информацией со смарт часами, GPS трекерами, фитнес браслетами и прочими приложениями, где требуется оперативный обмен короткими информационными пакетами, отображающими изменение контролируемых параметров.
Так, например, возможно отображение уровня заряда батареи, положение точки на маршруте в навигаторе, мониторинг физиологических данных.
Соответственно, стандартный Bluetooth выполняет функции обмена файлами, и представляет собой один из вариантов Bluetooth SPP (Serial Port Protocol), поддерживающий работу с большинством существующих устройств со стандартным последовательным протоколом.
Обмен данными между смартфоном и ESP32 через Bluetooth
Рассмотрим обмен данными смартфона и контроллера ESP32 посредством любой программы Bluetooth терминала, с помощью которой будем отправлять данные в микроконтроллер.
Наша задача состоит в том, чтобы установить беспроводное соединение смартфона с ESP32 и отображать прочитанные данные, включая и выключая светодиод.
При этом, прием логической единицы отображается включением светодиода, а прием логического нуля — выключением. Для разработки будем использовать уже знакомую среду Arduino IDE. Начнём программу с добавления файла библиотеки BluetoothSerial, которая переводит модуль в режим Bluetooth SPP.
Возможна ли одновременная работа WiFi и Bluetooch на ESP32
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Возможна, а форуме уже было, надо выбрать в arduino ide нужную плату, но места для скетча остаётся мало в любом случае. Воспользуйтесь поиском в интернете.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Только надо учитывать, что антенна для обоих интерфейсов используется одна и та же, поэтому возможны всякие неожиданные таймауты.
Удалось весы реверснуть?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Да удалось спасибо вам за наводку. Вот сейчас и возник вопрос по одновременной работе. Andicat прав памяти не хватает. Перебор на 8%. Andicat, а не подскажете какую надо плату выбрать в IDE чтобы скомпилить и всё влезло?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Отключи OTA и файловую систему.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Приветствую всех форумчан. Респект нашим китайским друзьям. Всё получилось, даже сам не ожидал. Не пришлось ни чего отключать. В одном скетче одновременно работает
1. WiFi сеть, UDP протокол 2.BLE сканер (читает показания весов) 3.Обновление по воздуху(OTA) 4.Настройка устройства через WEB морду 5.Вывод показаний на дисплей (i2c) 6.RFID считыватель PN532 NFC 7.Купюрник и монетник (по прерыванию работают). 8. Подключение к роутеру через собственную точку доступа. И весь этот микс тянет ESP32, при этом без каких либо видимых тормозов. Нашел библиотеки, которые заняли очень мало места. Памяти остается ещё достаточно, чтобы ещё что то впихнуть. Так что благодарю всех, кто давал советы, и писал качественные и без глючные библы. Ну и конечно производителей железа.
Платы ESP32 весьма популярны в виду низкой цены, неплохой вычислительной мощности (процессор 200МГц), развитого SDK с поддержкой как MicroPython так и Arduino IDE, наличием GPIO c поддержкой периферии (SPI, I2C и пр) и беспроводной связи (WiFi, Bluetooth). Сегодня мы посмотрим, что можно сделать на такой плате ценой всего лишь около 12$.
Мы рассмотрим разные варианты использования WiFi, от простого коннекта к сети до WiFi-сниффера. Для тестов понадобится любая плата с ESP32 (лучше с OLED-экраном, как на картинке) и Arduino IDE.
Для тех кому интересно как это работает, продолжение под катом.
Я не буду писать, как подключить библиотеки ESP32 к Arduino IDE, желающие могут посмотреть здесь. Отмечу лишь, что у данной платы есть особенность — для загрузки кода из Arduino IDE нужно во время заливки нажать и подержать кнопку Boot. В остальном, использование платы ничем не отличается от обычных Arduino.
Теперь приступим к коду. Все примеры кода полностью готовы к использованию, их можно просто скопировать и вставить в Arduino IDE.
1. Подключение к WiFi и получение точного времени
Раз уж на плате есть WiFi, самое простое что мы можем сделать, это подключиться к существующей WiFi-сети. Это общеизвестно, и работало еще на ESP8266. Однако просто так подключиться и ничего не делать неинтересно, покажем как загрузить точное время по NTP. С помощью нижеприведенного кода нашу плату с ESP несложно превратить в настольные (или для гиков 100lvl наручные:) часы.
Код довольно прост, интересно что поддержка NTP уже встроена в стандартные библиотеки, и ничего доустанавливать не нужно. Для работы OLED-экрана нужно установить библиотеку SSD1306.
Переменные ssid и password нужно будет заменить на параметры реальной точки доступа, в остальном, все работает «из коробки».
2. WiFi точка доступа
Разумеется, мы можем не только подключиться к точке доступа, но и создать свою. В данном примере мы запустим мини веб-сервер, открыть который можно например, со смартфона. Отдельно можно отметить обработку события SYSTEM_EVENT_AP_STACONNECTED, что позволяет узнать, сколько клиентов подключалось к нашей точке доступа.
Фото того, как это работает, показано на КДПВ.
При запуске программы на экране будет отображено имя точки доступа и IP-адрес. Подключившись со смартфона к точке доступа, можно в браузере набрать IP и увидеть содержимое web-страницы.
Сервер будет работать и без OLED-экрана, в этом случае отладочную информацию можно смотреть с помощью Serial Monitor в Arduino IDE.
3. WiFi точка доступа с DNS
В исходнике используется класс WebServer, который позволяет сделать код обработки запросов гораздо короче.
4. WiFI Sniffer
Это может пригодиться например, для «умного дома», чтобы узнать когда владелец вернулся домой. Некоторые компании используют MAC-адреса устройств для мониторинга посетителей, чтобы потом показывать им в гугле таргетированную рекламу.
5. WiFi Packet Monitor
Другой пример использования promiscuous mode — графический мониторинг активности канала, также как и в предыдущем случае, подключения к самой сети не требуется.
Исходный код был взят здесь, из него была убрана поддержка записи на SD (на плате её все равно нет) и был исправлен баг с графической библиотекой. Переключать номер канала для мониторинга можно либо нажатием кнопки (на плате её тоже нет:) либо посылкой соответствующего числа через Serial Monitor в Arduino IDE.
Одна плата ESP32 может мониторить только 1 канал, но при дешевизне этих плат вполне можно сделать вот так:
Заключение
Как можно видеть, в плане соотношения возможностей и цены, ESP32 довольно интересны, и в любом случае, намного функциональнее обычных Arduino. Эксперименты с WiFi также довольно занимательны, на плате можно держать не только вполне функционирующий веб-сервер (даже с поддержкой websockets), но и изучить работу WiFi и MAC более детально.
В целом, модули ESP32 интересны тогда, когда возможностей Arduino уже не хватает, а использовать Raspberry Pi с Linux еще избыточно. Кстати, вычислительные возможности ESP32 позволяют использовать даже модуль камеры, так что плату можно использовать в качестве беспроводного видеозвонка или прототипа для домашней системы видеонаблюдения.
ESP-WROOM-32 - это новый ESP32 WiFi Devkit модуль, со встроенным Bluetooth и USB мостом, для подключения к ПК. На модуле установлен мощный двух ядерный процессор Dual-Core, встроенный USB мост, встроенный стабилизатор питания. Этот процессор изготовлен по технологии 40nm,по этому имеет низкое энергопотребление и нагрев. ESP32 имеет очень много преимуществ перед ESP8266, он мощнее и при этом меньше потребляет энергии, большая скорость передачи по WiFi, много свободных портов GPIO. На плате имеются АЦП и ЦАП, практически все возможные интерфейсы для передачи данных и еще много всего, смотрите ниже характеристики ESP-WROOM-32. Полностью доступными для использования выводы: GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33.
Работающие только на вход: GPIO 34, 35, 36, 39.
Если не использовать Serial, SPI или I2C, то можно добавить ещё 8 выводов GPIO 1, 3, 5, 18, 19, 21, 22, 23.
Для подключения внешней SD карты: GPIO 6, 7, 8, 9, 10, 11
ESP32 поддерживает языки программирования Lua и Arduino IDE.
Характеристики ESP32 Devkit:
32-битный двух ядерный микропроцессор - Xtensa LX6
Частота процессора -160-240 МГц
ОЗУ — 520 Кб
ПЗУ — 448 Кб
RTC таймер с 16 Кб ОЗУ
Внешняя флешь память 4-16 Мб
Питание 2.2 В — 3.6 В
Периферия:
18 х 12 битный АЦП
2 х 8 битный ЦАП
10 х портов в режиме сенсорных кнопок
1 х Встроенный температурный датчик
4 x SPI
2 x IS1
2 x I2C
3 x UART
1 х Host (SD/eMMC/SDIO)
1 х slave (SDIO/SPI)
1 х Ethernet MAC interface with dedicated DMA and IEEE 1588 support
1 х CAN 2.0
1 х IR (TX/RX)
16 х LED PWM
Motor PWM
Hall sensor
Ultra-low-noise analog pre-amplifier
Энергопотребление:
Максимальный ток при передаче WiFi — 160-260 мА
Потребление без включенного WiFi и Bluetooth — 20 мА
LightSleep — 0.8 мА
DeepSleep — до 10 мкА
Режим гибернации с активным RTC — 5 мкА
WiFi и Bluetooth:
WiFi 802.11n 2.4 Гц с максимальной скоростью 150 Мбит/сек
Шифрование WPA/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup WPS
Bluetooth v4.2 BR/EDR and BLE
Таким образом, в этом проекте мы собираемся подключить некоторые бытовые электроприборы к модулю реле и управлять им через микроконтроллер ESP32. Мы создадим базу данных Firebase в реальном времени и подключим ее из приложения Android. Это приложение для Android отправит данные в облако, а затем отправит их в микроконтроллер для включения или выключения электроприборов. Самое приятное то, что вы можете иметь полный контроль над переключением ваших приборов из любой точки мира. Вам просто нужно подключение к интернету для работы приложения Android.
Как управлять бытовой техникой через WiFi?
Системы домашней автоматизации, которые уже доступны на рынке, очень дороги. Мы можем использовать плату ESP32 для подключения различных бытовых приборов и управления ими с помощью приложения для Android. Это будет очень недорогой и эффективный способ автоматизации дома. Теперь давайте сделаем шаг вперед и начнем собирать информацию, чтобы начать проект.
Шаг 1: Сбор Компонентов
Шаг 2: Изучение компонентов
Теперь, когда мы знаем реферат этого проекта, давайте продвинемся на один шаг вперед и проведем краткое изучение работы основных компонентов, которые мы собираемся использовать.
ESP32
Релейный модуль является коммутационным устройством. Он работает в двух режимах: нормально открытый (NO) и нормально закрытый (NC). В режиме NO цепь всегда разрывается, если только вы не отправите сигнал HIGH на реле через Arduino. Режим NC работает наоборот, цепь всегда завершена, если вы не включите модуль реле. Убедитесь, что вы подключили положительный провод вашего электрического прибора к релейному модулю, как показано ниже.
Сборка релейного модуля
Шаг 3: Блок-схема
Блок-схема
На приведенной выше блок-схеме показан поток этого проекта. Реле подключены к бытовым электроприборам или устройствам. Мобильное приложение отправит команду включения или выключения в базу данных. Это облако подключено к плате микроконтроллера ESP32 через WiFi. Чтобы включить электронное устройство, мы отправим «1» в базе данных, а чтобы выключить его, мы отправим «0» в базе данных. Затем эта команда будет извлечена микроконтроллером, поскольку она также подключена к базе данных. На основании этих 0 или 1 микроконтроллер включит или выключит релейный модуль, что в конечном итоге приведет к переключению электрических приборов.
Итак, здесь, в этой статье, я буду использовать два релейных модуля, чтобы показать вам всю процедуру. Но вы можете увеличить количество реле и добавить тот же кусок кода в вашу программу, если вы хотите контролировать большее количество бытовых электроприборов.
Шаг 4: Сборка компонентов
Теперь, когда у нас есть четкое видение того, что мы хотим сделать в этом проекте, давайте не будем больше тратить время и начнем собирать компоненты.
- Возьмите макет и зафиксируйте в нем микроконтроллер ESP32. Теперь возьмите два релейных модуля и подключите Vcc и землю модулей к Vin и земле платы микроконтроллера ESP32 параллельно. Подключите входной разъем релейных модулей к контакту 34 и контакту 35 платы ESP32. Вы увидите, что реле теперь включены.
- Подключите бытовую технику к релейному модулю. Убедитесь, что ваши соединения соответствуют соединениям, показанным на рисунке в шаге 2.
Теперь, когда мы подключили аппаратную часть нашей системы. Мы разработаем приложение для Android, которое будет подключено к базе данных Firebase. Мы сделаем базу данных и приложение для Android во второй части этой статьи.
Шаг 5: Начало работы с ESP32
Если вы раньше не работали с Arduino IDE, не беспокойтесь, потому что шаг за шагом по настройке Arduino IDE показан ниже.
Так что теперь, когда вы загрузите код, может возникнуть ошибка. Это наиболее распространенная ошибка, которая может возникнуть, если вы используете новую версию Arduino IDE и Arduino JSON. Ниже приведены ошибки, которые вы можете увидеть на экране.
В файл включен из C: Users Pro Documents Arduino library IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0,
из C: Users Pro Desktop smartHome code code.ino: 2:
В файл включен из C: Users Pro Documents Arduino library IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0,
из C: Users Pro Desktop smartHome code code.ino: 2:
вернуть StaticJsonBuffer () .ParseObject (_data);
Не о чем беспокоиться, потому что мы можем устранить эти ошибки, выполнив несколько простых шагов. Эти ошибки возникают потому, что в новой версии Arduino JSON вместо StaticJsonBuffer есть другой класс. Это класс JSON 5. Поэтому мы можем просто устранить эту ошибку, понизив версию Arduino JSON нашей Arduino IDE. Просто зайдите в Sketch> Включить библиотеку> Управление библиотеками. Ищите Arduino JSON от Benoit Blanchon, который вы установили ранее. Сначала удалите его, а затем установите его версию 5.13.5. Теперь, когда мы установили старую версию Arduino JSON, установите ее снова и перекомпилируйте код. На этот раз ваш код будет успешно скомпилирован.
Чтобы скачать код, щелчок Вот.
Шаг 6: Понимание кода
Код этого проекта очень прост и хорошо прокомментирован. Но все же код кратко поясняется ниже.
1. В начале включены библиотеки, так что плату ESP32 можно подключить к локальному WiFi-соединению дома или в офисе. После этого определяется ссылка на ваш проект Firebase и аутентификация вашего проекта Firebase. Затем определяются имя и пароль вашего локального соединения Wi-Fi, чтобы ESP32 мог быть подключен к Wi-Fi. Некоторые контакты ESP32 определены для подключения к релейным модулям. и, наконец, объявлена переменная, которая будет хранить некоторые временные данные, поступающие из облака базы данных.
int r1 = 34; // контакт для подключения реле 1
int r2 = 35; // контакт для подключения реле 2
int temp; // переменная для переноса данных
void setup () Serial.begin (115200); // установка скорости передачи
Это была первая часть «Как сделать систему умного дома с использованием ESP32?». Вы можете добавить больше релейных модулей, если вы хотите управлять еще несколькими бытовыми приборами, единственное, что вам нужно будет сделать, это прочитать данные из пожарной базы и добавить еще несколько условий для переключения. В следующей статье я объясню, как разработать приложение для Android и базу данных Firebase. Я объясню пошаговую процедуру подключения приложения для Android к базе данных и отправки на него данных.
Читайте также: