Умная колонка своими руками на esp32

Добавил пользователь Skiper
Обновлено: 19.09.2024

На данный момент существует много протоколов для Интернета вещей: CoAP, MQTT, AMQP… В этом руководстве познакомимся с протоколом MQTT – это один из хорошо известных протоколов Интернета вещей. Он предназначен для управления данными и их передачи между устройствами в сети Интернета вещей.

Протокол имеет следующие основные особенности:

  • используется механизм издатель/подписчик/топик;
  • асинхронный протокол;
  • компактные пакеты;
  • работает поверх стека TCP/IP;
  • требуется меньшая пропускная способность сети и может работать в условиях нестабильного канала передачи данных.

Связь между клиентами основана на механизме издатель / подписчик / топик, в котором:

Кроме этого существуют ещё некоторые термины, о которых необходимо знать:

QoS (Quality of Service – качество обслуживания): неформально, этот показатель обозначает вероятность прохождения пакета между двумя точками сети. Существуют следующие модели QoS:

Большинство библиотек, реализующих протокол MQTT, определяют несколько стандартных методов, таких как:

Для демонстрационного примера мы создали простую сеть для Умного дома с тремя узлами-клиентами (смартфон, микропроцессорное управляющее устройство с интерфейсом Wi‑Fi и датчиком температуры, микропроцессорное управляющее устройство с интерфейсом Wi‑Fi и светодиодом (лампой)) и одним узлом-сервером, служащим в качестве брокера (ПК или плата Raspberry Pi).

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

ARDUINO это просто! | Ардуино | Esp8266 | STM32 запись закреплена

Делаем интернет радио на ESP32 без дополнительных модулей!
Всё что понадобится - ESP32 и динамик, для усиления можно использовать практически любой транзистор. Устройство поддерживает MP3 и AAC форматы, имеет встроенный MP3 плеер, файлы можно загружать прямо из веб - интерфейса!

Сергей Панкевич

😄

Я в вас не ошибся

Сергей Панкевич

Сергей Мелентьев

С esp32 идёт ужасный звук с шумами. Я через декодер vs1053 подключаю. Звук чистейший. И как вы добились воспроизведения аас без этого декодера?

Марсель Ахкамов

Александр Игорьевич

Сергей, Даже с esp8266 идёт вполне не плохой звук без шумов, используя программный декодер. По крайней мере с мп3.
А уже с ESP32, исходя из её технических характеристик и подавно просто обязан идти звук ещё лучше, чем с esp8266.

Сергей Мелентьев

Александр, проверял. Ну реально звук ужасен. Идёт постоянный шум и срез частот по 16кГц. Подключал в линейный вход ПК и смотрел спектр. Я представляю что творится в esp8266

Александр Игорьевич

Сергей, Возможно я использовал другую библиотеку.
Правда я воспроизводил мп3 (а не радио)
Шумов я сильных не наблюдал.
Звук был на уровне китайской МП3 колонки.
И воспроизводилось мп3 192 кбит, с соответствующим качеством.
Показать полностью.
Срез частот я не замерял. Не исключено, что он есть, ибо быстродействия 8266 может физически не хватить.
Просто на слух, вполне достойно для устройства за 90 руб.
Я помимо всего ещё и звукоинженер.
И я не просто слушаю звук, я ещё накладываю на текущее качество все остальные параметры, в том числе остальные возможности устройства и его стоимость.
Согласитесь, просто невозможно найти аналоги за 90 руб, сделать исполнительное устройство с поддержкой wifi (и всего из этого вытекающего), брякающего мп3-шками при каких то событиях

Владимир Масленников

Александр Игорьевич

Иван Иванов

2 месяца на кухне работает радио на ESP8266 20 каналов. Звуковой выход прямо с ESP, звук нормальный. Использовал в качестве усилителя старую звуковую колонку от компа.

Александр Игорьевич

Александр, У меня почему то так и не завелось радио, играет некоторое время, потом затыкается, да так, что перегружать надо.
Видимо разными библиотеками пользовались.
Не подскажите, что за библиотека (или исходники) для радио?

Сергей Романов

Сергей Nnn

Николай Муравьев

DELETED

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

И ещё. Можно в проект добавить хоть пару тактовых кнопок , для перелистывания радиостанций.

Помогите, повторить данный проект, кто может. А то я сам в этом не совсем понимаю.

И ещё один маленький вопрос. Я не могу понять. В данном случае ESP прошивается через оболочку ардуино? Или каким то иным способом. Можно про это по подробнее!

Марсель Ахкамов

DELETED

Марсель Ахкамов

Adil Neymatov

Андрей Карпов

Андрей Карпов

Александр Игорьевич

Марсель, на ESP8266 не пробовали радио запустить?
У меня, увы, не получилось :(
Вернее получилось, но неполноценно работает,
забивается буфер, отлично воспроизводится некоторое время, а потом просто встаёт "враскорячку", только перезагрузка помогает.
Я так понял, возможно не хватает быстродействия сразу и воспроизводить программно и грузить поток в реальном режиме.
Если Вы не пробовали, прошу при возможности попробовать воспроизвести интернет радио на ESP8266 на программном декодере.
Возможно у Вас получится.
Было бы не плохо, при стоимости модуля в 90-100 руб получить полноценное интернет радио.

Сергей Кирилюк

Михаил Когтев

Проект компилируется в
Platformio, но после загрузки ESP32 не стартует, уходит в бутлуп с ресетом. Ситуация аналогичная с MP3 плеером.

Михаил Когтев

[E][SPIFFS.cpp:52] begin(): Mounting SPIFFS failed! Error: -1
[E][vfs_api.cpp:22] open(): File system is not mounted
Failed to open config file
Load default Config
[E][vfs_api.cpp:22] open(): File system is not mounted
Показать полностью.
[E][vfs_api.cpp:22] open(): File system is not mounted

JSON config loaded
/Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/queue.c:1441 (xQueueGenericReceive)- assert failed!
abort() was called at PC 0x4008f8c5 on core 1

Backtrace: 0x4008c8d0:0x3ffb1d30 0x4008cb01:0x3ffb1d50 0x4008f8c5:0x3ffb1d70 0x4011a3f6:0x3ffb1db0 0x4011a6d2:0x3ffb1dd0 0x40109dbc:0x3ffb1df0 0x40109e25:0x3ffb1e10 0x4010ca64:0x3ffb1e30 0x4010cb50:0x3ffb1e60 0x4013b377:0x3ffb1e80 0x400da78e:0x3ffb1ed0 0x400d317e:0x3ffb1ef0 0x400d31d3:0x3ffb1f40 0x400d4a81:0x3ffb1f60 0x400d4a8f:0x3ffb1f90 0x400e332b:0x3ffb1fb0 0x4008ecc5:0x3ffb1fd0

Мухинсон Верещагин


Мухинсон Верещагин

Сергей Кирилюк

Мухинсон Верещагин


Мухинсон Верещагин ответил Сергею

Сергей Кирилюк

Мухинсон Верещагин


Мухинсон Верещагин ответил Сергею

Сергей Кирилюк

Артём Шмидт

Артём Шмидт

Евгений Яспециалист

Мухинсон Верещагин


Мухинсон Верещагин

Николай Муравьев

Григорий Сергеенко

Николай Муравьев

😩

Григорий, и не говори, похоже забили совсем на проект

Григорий Сергеенко

Николай Муравьев

Григорий Сергеенко

Аленка Перепелица

😆

Пока дождешься прошивки погибнуть можно от старости.

Николай Муравьев

🤣

Аленка, это точно

Сергей Кирилюк

Александр Туминский


Александр Туминский

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

Сергей Кирилюк

Владимир Масленников

Всем привет! Поставил я оболочку АТОМ в ней установил platformio. После компиляции не заливает прошивку в плату ЕСП32. Ошибка была: fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header*** [upload] Error 2. Как ни старался не получилось. Потом решил поставить как предложил ТС вижуал код с дополнением как в видео.
Показать полностью. Поставил - та же история. Потом поискал в интернете. Нашел такую штуку - пока идет компиляция держишь кнопку EN на плате. Как только пошла заливка - держишь BOOT. Держать надо до конца прошивки, пока не проверит, что все Ок. В первый раз прошилось но не запустилось. Во второй, сначала файловую систему залил пустотой(с кнопками). Потом сделал плоад, так же с кнопками. Запустилось, вижу точку доступа, захожу на нее. Буду смотреть звук с нее(пока не подключено)
Оригинал: Hi,
i experimented same issue and i finally found a way .

Отправка данных температуры, влажности и давления по mqtt в Home Assistant на ESP32, BME280 и немного Node-RED


Управление нагрузкой в ESPHome и Home Assitant с помощью lilygo T-relay


Получение реального времени из Home Assistant в ESPHome


Контроллеры работающие с ESPHome:

Огненная Wi-Fi лампа на ESP32 – как мы открыли свой маленький свечной заводик


Наша команда разрабатывает облачную IoT платформу, и для тестирования ее механик мы регулярно создаем небольшие проекты: “умные” реле, розетки, гирлянды и т.п. Некоторые проекты получаются настолько интересными, что перерастают в полноценные продукты. Про один из таких кейсов мы и решили рассказать.

Микроконтроллер ESP32 – это одна из самых доступных и мощных платформ для создания умных ардуино-проектов с поддержкой WiFi. Придя на смену ESP8266, этот чип дал новые возможности для разработчиков, хотя по-прежнему остались старые проблемы с поддержкой и документацией. В этой статье вы найдете описание характеристик, распиновку микросхемы, примеры программирования с помощью Arduino IDE

Описание микроконтроллера ESP32

Фирма Espressif выпустила мощный недорогой микроконтроллер ESP32 летом 2016 года. Устройство представляет собой систему на кристалле, построенную по технологии TSMC 40 нм, с Wi-Fi и Bluetooth контроллерами. Оно оснащено двухъядерным 32-битным процессором, который работает на частотах 80, 160 или 240 МГц. Также в систему интегрированы антенные коммутаторы, радиочастотные компоненты, фильтры, усилители, модули управления питанием. Подключается ESP32 к компьютеру через обычный USB провод.

Модуль ESP32 NodeMCU

Характеристики чипа

Технические характеристики ESP32:

  • Двух- или одноядерный 32-битный процессор Tensilica Xtensa LX6;
  • Тактовая частота – 160 или 240 МГц;
  • 520 Кб SRAM;
  • Максимальный ток потребления 260 мА, в спящем режиме – 10 мА;
  • Стандарты беспроводной связи – Wi-Fi: 802.11 b / g / N, Bluetooth: v4.2 BR/EDR and BLE;
  • Наличие датчиков температуры, Холла, тач-сенсоров;
  • Инфракрасное дистанционное управление;
  • Можно подключать двигатели и светодиоды через ШИМ разъем;
  • Стандарт IEEE 802.11 с поддержкой WFA, WPA/WPA2 и WAPI;
  • Возможность безопасной загрузки;
  • Шифрование флэш диска.

Также в модуле традиционно присутствует встроенное управление энергопитанием. Для этого используются линейный регулятор, индивидуальное питание для RTC (ядро низкого энергопотребления), пробуждение по таймеру или сенсорному датчику.

Программирование модуля ESP32 может производиться на самых разных платформах, и средах, вот небольшой список наиболее популярных вариантов:

  • Arduino IDE;
  • Espressif IoT Development Framework;
  • Espruino;
  • PlatformIO;
  • Pymakr IDE.

Большинство проектов реализуется на Arduino IDE и Espruino.

Использование ESP 32

Хоть плата ESP32 появилась недавно, она уже активно используется в коммерческих проектах, связанных с мобильными приложениями, электроникой и задачами IoT. Например, на ее базе построен светодиодный браслет IoT группы Alibaba. Он представляет собой живой беспроводной экран, в котором каждый браслет работает как пиксель. Также на основе микроконтроллера реализована биометрическая система отслеживания посещаемости и проекты, связанные с анализом климатических условий. Имея плату ESP32 и датчики температуры, влажности и давления, можно самостоятельно собрать метеостанцию. ESP32 используется в музыкальных плеерах, помощниках с голосовым управлением, аудиогарнитуре.

Распиновка ESP32

Микроконтроллер оснащен 48 контактами плюс 1 большой тепловой контакт, которые обладают разными функциями. Выводы микросхемы:

Расположение выводов зависит от производителя. Например, есть плата ESP32 DEVKIT V1 DOIT, у которой 36 контактов. Распиновка представлена на рисунке ниже.

Распиновка ESP32

Одним из самых популярных модулей является ESP-WROOM-32. Распиновка также приведена на картинке.

Распиновка ESP WROOM 32

К портам GRIO 0, 4, 2, 15, 13, 12, 14, 27, 33 и 32 подключены сенсорные выводы. Они могут использоваться для вывода ESP32 из глубокого сна. Они фиксируют любое изменение электрического заряда.

Порты с 34 по 39 используются только для ввода информации. На них отсутствуют подтягивающие резисторы, поэтому их нельзя использовать как выходы.

На некоторых платах отображаются контакты 6-11. Они подсоединены к к интегрированной SPI flash. Их не используют в проектах.

Есть различные версии платы ESP32 размерами 5х5 мм или 6х6 мм. Также на основе ESP32 существуют модули SMT для интегрирования в другие платы.

Отличия esp32 от esp8266

Платформы ESP8266 и ESP32 произведены одной компанией Espressif. Микроконтроллер ESP32 отличается от своего предшественника улучшенными характеристиками, увеличенным функционалом и большим объемом памяти. Стоимость нового прибора дороже примерно в 2 раза.

Важным преимуществом ESP32 является более быстрый Wi-Fi и Bluetooth. В ESP32 установлен более мощный процессор, позволяющий реализовывать сложные проекты. Эта платформа подходит для приложений, в которых требуется интернет или новые интерфейсы. Для более дешевых разработок используется ESP8266.

Объем памяти у нового устройства ESP32 увеличен – 512 Кб против 160 Кб ESP8266. Также ESP32 отличается большим количеством выводов GRIO. К нескольким контактам на ESP32 прикреплены емкостные сенсорные датчики и датчик температуры. На обоих устройствах контакты GRIO можно использовать по-разному. ESP32 имеет 18 12-битных АЦП каналов. У его предшественника есть всего 1 10-битный вывод АЦП.

Мощность процессора значительно влияет на скорость работы. Модуль ESP32 показывает рекордную производительность по сравнению с предшественником ESP8266. Загрузка страницы с длинным скетчем и множеством графики занимает секунды.

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

Настройка Arduino IDE для работы с ESP32

Изначально изделия от компании Espressif поставляются с прошивкой, позволяющей работать с помощью AT команд. Это не всегда удобно, поэтому лучше программировать плату в привычной среде разработки – Arduino IDE.

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

Так как плата ESP32 новая и поддержка в среде разработки Ардуино появилась недавно, то могут возникнуть сложности с установкой. Это связано с тем, что драйвера только разрабатываются и изменен порядок расположения системных директорий. Все скетчи должны быть расположены в папке C:\Users\User\Documents\Arduino. Файлы дистрибутива должны быть размещены внутри этой папки, как советует производитель. Если этого не учесть, то поддержка в Ардуино ESP32 будет отсутствовать.

После установки можно открыть Arduino IDE. Затем нужно перейти в настройки и в менеджере плат выбрать нужную. Теперь можно прошивать модуль.

Проверка модуля и подключение к Arduino IDE

Чтобы произвести проверку работоспособности модуля, можно собрать проект с мигающим светодиодом. Для подключения потребуются:

  • Модуль ESP32;
  • Источник питания на 3 В;
  • Кнопка;
  • Резисторы;
  • USB кабель для подключения к компьютеру;
  • Провода;
  • Светодиод;
  • USB-TTL конвертор.

Собирается это все согласно схеме ниже.

Схема ESP8266

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

Настройка официальной среды разработки ESP-IDF (Espressif IoT Development Framework)

Среду ESP-IDF можно установить на Windows. Для этого нужно:

После этого можно начинать работу. В каталоге \esp-idf\examples\ есть различные примеры скетчей для работы с модулем.

Читайте также: