С помощью платы ENJOY BOARD попробуем управлять выводом текстовой информации на символьном LCD дисплее 1602 через приложение на смартфоне.
Подключение, программирование, тесты и отладка — все эти важные этапы разработки электронного устройства подробно объясняются в прикрепленном видео. Программирование выполнено в среде разработки Enjoy Block, скачать ее можно на нашем сайте (https://enjoy-robotics.ru/) (поддерживается на macOS и Windows версий 8.1 и выше). Для Win 7 подойдет MBlock 5 (https://www.mblock.cc/en/download/).
Наша техническая поддержка регулярно получает вопросы о том, как расширить функционал уже собранных роботов, например, управлять ими через приложение на смартфоне.
Решением является разработанная нами универсальная плата ENJOY BOARD (со встроенными Wi-Fi и Bluetooth), совместимая со всеми популярными наборами: Квадропод, Манипулятор, Умный Дом и другие.
В данном ролике расскажем замечательной аудитории Пикабу о том, как с помощью разработанной нами универсальной платы ENJOY BOARD (на базе микроконтроллера ESP32) создать простое автономное устройство для управления светом в доме с помощью смартфона.
Программный код можно написать как в Arduino IDE (если вы уже опытный разработчик), так и в среде программирования ENJOY BLOCK (если вы начинающий пользователь), которую мы уже успешно опробовали на тысячах наших учеников в лагере робототехники «Инкубатор изобретателей».
Благодаря возможности встроить аккумулятор в плату, можно таким образом организовать автономную работу устройства без дополнительных проводов от источников питания. Аккумуляторной батареи может хватить на несколько дней без подзарядки.
Как известно, к Новому году всегда надо готовиться заранее. Вот и мне подумалось, что надо расчехлять паяльник и начинать делать праздничную иллюминацию в квартире. На данный момент готовы два устройства из трёх, для последней гирлянды едут адресные светодиоды. Но идея обкатана и показала себя вполне рабочей.
Этап первый. Теоретический.
Любое мало-мальски инженерное устройство должно начинаться с 1) Составления ТЗ 2) Подбора железа 3) Подбора ПО Второй третий пункт взаимосвязаны, что логично.
Итак, техническое задание.
У меня работали две гирлянды, собранные на WS2812b под управлением маленькой платки Arduino Nano (родом из Китая) с микроконтроллером ATmega328p. Как это водится в Китае - маркировка чипа была почти нечитаемой, прошивка заливалась раза с третьего-четвёртого. Но система работала, и даже не тормозила.
Гирлянд было две: одна висела на ёлке и состояла из 126 последовательно соединённых светодиода, оконная гирлянда состояла из 74 светодиодов и представляла собой 9 линий светодиодов переменной длины, соединённых последовательно.
В старой гирлянде было крайне неудобно включать/выключать подсветку и переключать режимы. Это же необходимо встать с дивана, подойти к устройству, нажать кнопку. Соответственно, в новой системе необходимо реализовать управление через мобильный телефон. Так же, стоит учесть, что в моём доме ёлка стоит около окна, и будет видно сразу две гирлянды. Соответственно, стоит предусмотреть возможность обмена данными между этими гирляндами для возможности синхронизации режимов. Причём, синхронизация должна быть не "приколоченной намертво", а вполне себе опциональной.
Подбор железа
Исходя из ТЗ становится очевидно, что достаточно просто поменять контроллер с старой-доброй атмеги на что-то из семейства ESP. Эта система на кристалле (да, именно так её называет производитель, SoC) из коробки имеет на борту достаточно шустрое ядро, WiFi и приличный объём памяти. Но, имеет место быть небольшой конфликт: рабочее напряжение пинов ESP 3.3В. А напряжение питания WS2812b составляет от 3.5 до 5.3В, исходя из даташита. Причём, "протокол" передачи данных для светодиодов подразумевает формирование прямоугольных испульсов, кодирующих 24 бита цвета для каждого светодиода. Уровень "0" в этой последовательности должен быть <0.3VDD (напряжение питания), уровень "1" >0.7VDD.
Я покопался в своих закромах и обнаружил две платы Wemos D1 mini (на базе ESP8266) и одну плату LOLIN S2 mini (на базе ESP32-S2). Обе платы имеют всю необходимую обвязку для подключения внешнего питания 5В и подтягивающие резисторы для запуска МК. Там же, в закромах родины нашёл весьма удобные макетные платы под форм-фактор этих устройств.
Макетная плата для Wemos D1. К LOLIN S2 mini тоже подходит, но маркировака пинов не совпадёт
Это снимает проблему согласования напряжения питания ESP и WS2812b. Но возникает опасение, что уровень логической "1" от контроллера будет недостаточным для формирования управляющего сигнала. Ведь, согласно даташиту, уровень "1" >0.7VDD. А питание светодиодов у нас 5В, соответственно, требуемый уровень логической единицы равен 0,7 * 5 = 3,5В. Тут я пошёл по пути экспериментов, быстренько набросал схемку на бредборде и проверил, а как оно, заведётся, или нет. Ведь, исходя из моего опыта общения с контроллерами семейства STM32, уровня 3.3В должно быть вполне достаточно. И оно завелось!
Подбор ПО
Очевидно, что прошивка будет самописная. Надеяться, что вот сейчас я зайду в гугл, забью "прошивка ESP8266 с моими требованиями" и все найдётся и заработает достаточно наивно. Да и неспортивно это. В случае с ESP есть два основных фреймворка для написания прошивки. Профессиональный ESP-IDF с его ориентированностью на чистый С и Arduino IDE с ядром ESP. Причём второе - это, по сути своей, обёртка вокруг ESP-IDF. Так как у меня была хоть и ущёрбная, но рабочая прошивка для Arduino Nano, написанная в Arduino IDE, я остановился на втором варианте.
Этап второй. Практическая реализация в железе.
Схема в общем виде выглядит так:
Ничего сложного и интересного. Единственное, для одной из систем одна из кнопок была заменена на устройство bme280, работающее по протоколу I2C. Интересно отслеживать влажность в помещении и уровень давления. Показания температуры врут безбожно: датчик находится слишком близко к ESP, которая имеет привычку сильно нагреваться. Спаять устройство по этой схеме не представляет ничего сложного. Но ведь хочется сделать всё красиво. А значит нужен корпус для устройства и система крепления гирлянды. С корпусом всё довольно просто. Минут 30 в Компас3D, час работы 3D принтера и в руках корпус, подогнанный под конкретное спаянное устройство. Магия термоклея, и на выходе получается вполне себе симпатичный прибор:
Безусловным плюсом будет возможность заменить плату в случае необходимости
С системой крепления всё чуточку интереснее. Если на ёлку крепить гирлянду не требуется (просто берём и обматываем гирлянду вокруг дерева), то на окно требуется крепёж. Тут возможно реализовать два варианта: установить гирлянду непосредственно перед окном, но за шторой. Тогда праздничное настроение будет создано людям, гуляющим на улице и смотрящим на мой седьмой этаж. Либо размещать гирлянду перед шторой. Тогда праздничное настроение будет у всех, находящихся в комнате. Я пошёл по второму пути. Штора крепится на гардину с Т-образными пазами. И вновь на помощь приходит компас и 3D-принтер. В каждой точке, из которой спускается светодиодная гирлянда была изготовлена вот такая сборка из двух деталей:
Бонусом, такая конструкция хорошо фиксирует сборки проводов, и конструкция получается довольно добротной. Следующей "железной" проблемой стало то, что провод со светодиодами достаточно лёгкий, и гирлянда отказывалась висеть вертикально. И вновь 3D принтер спасает положение. Я напечатал несколько тематических грузиков, и привязал их на тоненькие верёвочки. Получилось весьма достойно:
Этап третий. Программное обеспечение aka прошивка
А вот прошивку не скину в чистом виде. Только если кто-то хочет повторить - могу ему слить данное поделие. Ибо в коде есть ряд проблем, которые пока не решены.
Принцип работы системы прост до ужаса. Намертво зашиты константы с SSID/PASS моей локальной WiFi сети и IP адреса всех гирлянд, участвующих во взаимодействии. Arduino IDE хорош, в первую очередь, невероятным количеством библиотек. Итак, что есть сейчас, и для чего используется.
Разумеется, WiFi, для подключения к локальной сети. SSID и пароль забиты в дефайны, что есть хардкод, и вообще моветон
FastLED для управления WS2812b. Реализован простейший алгоритм отслеживания потребляемого гирляндой тока и ограничение оного к возможностям источника питания. Работает, на мой взгляд, лучше встроенного в библиотеку.
WebServer для поднятия странички управления гирляндой, если сильно лень подходить и нажимать кнопку. Я не сильно дизайнер, но страничка получилась довольно простой и информативной.
UDP для общения между гирляндами. Да, я знаю, что есть ненулевой шанс потери данных, поэтому пришлось реализовать достаточно простой алгоритм проверки корректности пришедших данных. Битые пакеты отбрасываются. Вроде бы это не очень хорошо, но я тут не космический корабль запускаю, и не ядерным реактором управляю. Если синхронизация произойдёт на 100мс позже, то ничего страшного. Хардкод в данном случае - IP-адреса гирлянд, участвующих в обмене информацией, жестко прописанные в роутере.
ArduinoOTA. Лень каждый раз подключать ESP напрямую к компу, когда хочется что-то поменять в прошивке. А так всё выходит просто: обновились по воздуху, и радуемся.
Web-страничка для управления гирляндой
В качестве гирлянды-мастера выбрана ёлочная. На её страничке можно поставить галочку с требованиями синхронизации остальных гирлянд, и её режим будет транслироваться всем остальным.
Примеры гирлянды, которую мне лень снимать сейчас :)
Примеры гирлянды, которую мне лень снимать сейчас :)
Примеры гирлянды, которую мне лень снимать сейчас :)
В сухом остатке получилось несколько устройств, на которые не стыдно посмотреть, которые не стыдно показать и которые работают и радуют глаз. Возможно, когда разберусь с текущими проектами - вернусь к доработке гирлянд. Избавиться от хардкода, что не очень сложно и чуть улучшить синхронизацию (заставить гирлянду-мастера передавать не только свой текущий режим, но и конкретный тик из millis() для более эффектного внешнего вида) и всё, пожалуй. Сделать полноценное Android-приложение, управляющее гирляндами. Возможно, имеет смысл сделать отдельный сервер на полновесной ESP32, который собирал бы данные с гирлянд, и синхронизировал их при необходимости. Но это уже вопрос полноценного самописного умного дома, т.к. к такому серверу можно подключить любое устройство на базе ESP. Для работы с MQTT так же есть полноценные библиотеки. В общем, проект получился достаточно простым, но интересным с точки зрения возможности масштабирования.
На этом всё, спасибо, что дочитали. Ссылок на телегу не будет, это всё от лукавого :)
Ранее в статье http://rcl-radio.ru/?p=111051 рассматривался пример создания интернет-радио на основе ESP32 (ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32) и звукового ЦАП PMC5102A с использованием дисплея LCD1602 + I2C, в этой статье аналогичный пример, но с использованием дисплея 0.96′ I2C 128X64 OLED.
В Интернет радио использованы следующие компоненты:
ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32
DAC PCM5102A
0.96′ I2C 128X64 OLED
Энкодер KY-040 (модуль)
Тактовая кнопка — 2 шт
В OLED дисплее отсутствует дополнительный слой подсветки всей поверхности экрана. Каждый пиксел, формирующий изображение, испускает самостоятельное свечение. При этом картинка получается яркой и контрастной.
Управление OLED дисплеем в данном примере осуществляется при помощи шины I2C.
Параметры дисплея SSD1306:
Технология дисплея: OLED
Разрешение дисплея: 128 на 64 точки
Диагональ дисплея: 0,96 дюйма
Угол обзора: 160°
Напряжение питания: 2.8 В ~ 5.5 В
Мощность: 0,08 Вт
Габариты: 27.3 мм х 27.8 мм х 3.7 мм
ESP32
ESP32 — серия недорогих микроконтроллеров с низким энергопотреблением. Представляют собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами и антеннами. В серии ESP32 используется микроконтроллерное ядро Tensilica Xtensa LX6 в вариантах с двумя и одним ядром. В систему интегрирован радиочастотный тракт: симметрирующий трансформатор, встроенные антенные коммутаторы, радиочастотные компоненты, малошумящий усилитель, усилитель мощности, фильтры и модули управления питанием. ESP32 создан и разработан компанией Espressif Systems, китайской компанией, расположенной в Шанхае, а производится компанией TSMC по техпроцессу 40 нм. Серия является преемником микроконтроллеров ESP8266.
Характеристики ESP32 DevKit v1:
микроконтроллер: ESP32-WROOM-32
процессор: 2-ядерный Xtensa Dual-Core 32-bit LX6
тактовая частота процессора: 80, 160 или 240 МГц
оперативная память: 520 Кбайт;
флэш-память: 448 Кбайт;
преобразователь USB – UART
количество выводов платы: 30;
Bluetooth: спецификации 4.2 с функциями BR/EDR и Low Energy
WiFi: стандарта IEEE 802.11b/g/n/e/i безопасность WFA, WPA/WPA2 и WAPI на частоте 2,4 ГГц со скоростью до 150 Мбит/с, встроенный стек TCP/IP
антенна: PCB
режимы беспроводной связи: STA/AP/STA+AP
расстояние приема/передачи в идеальных условиях: 400 м;
периферия: АЦП 12 бит до 18 каналов, ЦАП 8 бит 2 канала, датчик температуры, 4x SPI, 2x I2S, 2x I2C, 3x UART, Ethernet контроллер, CAN 2.0, ведущий SD/eMMC/SDIO, ведомый SDIO/SPI, инфракрасный приемопередатчик, ШИМ до 16 каналов, датчик Холла, аналоговый предусилитель, шифровальщики, хешеры, генератор случайных чисел
поддерживаемые среды разработки: Arduino IDE, PlatformIO, Espressif IDF (IoT Development Framework), Micropython, JavaScript, LUA
PCM5102A
Напряжение однополярное … 3,3 В
Отношение сигнал/шум … 112 дБ
Динамический диапазон … 112 дБ
Уровень нелинейных искажений (THD+N) … -93 дБ
Выходное напряжение … 2.1 Vrms
Поддерживаемая частота дискретизации от 8 кГц до 384 кГц
Поддержка входных форматов данных … I2S, Left-Justified / 16, 24 и 32 бит
Схема Интернет радио
Название станции (бегущая строка)
Номер станции и скорость потока
Настройки радио:
Громкость (0…22 уровень)
Баланс (±16 дБ)
Bass (-40…+16 дБ)
Middle (-40…+16 дБ)
Treble (-40…+16 дБ)
Интернет радио не содержит WEB страницы, все параметры и url адреса станций необходимо заносить в скетч:
авторизация в сети
String ssid = "Keenetic-9009"; // ssid сети WI-FI
String password = "32481975"; // пароль от сети WI-FI
Управление Интернет радио осуществляется при помощи энкодера и двух кнопок. Кнопки позволяют переключать каналы станций, а энкодер регулировать параметры громкости, баланса и тембра. Кнопка энкодера осуществляет переход по пунктам меню.
Очень удобный модуль разработчика. На основе микроконтроллера esp32 с дисплеем, а также со многими дополнительными модулями. Как замена популярных плат Arduino.
Для вас новинка:
Это плата позволяет очень быстро собрать какое-то конечное устройство. Особенно если оно у вас было реализовано на модуле Arduino и вы решили это переделать на более мощную и новую платформу.
Модуль TTGO T-Display ESP32 WiFi Bluetooth с контроллером ESP32, цветным дисплеем и схемой зарядки и питания от литиевого аккумулятора. Позволяет быстро собрать макет устройства сбора, отображения и обработки информации с датчиков. Использование контроллера ESP32 и схемы зарядки позволит собрать автономные и портативные устройства для которых важны быстродействие, малые размеры и малое потребление тока.
Кто интересуется микроконтроллерами Arduino, ESP и им подобными.
Для вас новинка:
Модуль ESP32-CAM-MB представляет собой небольшой модуль Кит. Микроконтроллер и камера размером .
Этот модуль может работать независимо. Совершенно новая плата разработки + WiFi + Bluetooth основана на конструкции ESP32, использует встроенные антенны на печатной плате.
Оснащена двухъядерным высокопроизводительным 32-разрядным процессорам LX6, использует 7-ступенчатую конвейерную структуру и возможность регулировки частоты — составляет от 80 МГц до 240 МГц.
Сверхнизкое энергопотребление, ток глубокого сна всего 6 мА.
HK-ESP32-CAM-MB использует интерфейс micro USB, который удобен и надежен в режиме подключения, который удобен и подходит для различных аппаратных терминалов IoT.
Распиновка МОДУЛЯ
Этот модуль можно использовать независимо от камеры как полноценный микроконтроллер ESP
Комплектация
В этом комплекте Кит могут на выбор поставляться различные типы камер.
Но они различаются не только внешним видом но и шлейфом подключения а также углом Обзора:
Основные параметры производительности
1 Двухъядерный процессор можно использовать в различных режимах.
2 Основная частота до 240 МГц, а вычислительная мощность до 600 dmips.
3 Встроенная SRAM 520 КБ, внешняя PSRAM 8 МБ
4 Поддержка UART/SPI/I2C/PWM/ADC/DAC и других интерфейсов
5 Поддержка вспышки OV70 и OV2640
6 Поддержка загрузки изображения по Wi-Fi
7 Поддержка TF-карты
8 Поддержка нескольких режимов сна.
9 Встроенный Lwip и FreeRTOS
10 Поддержка режима работы STA/AP/STA+AP
11 Поддержка интеллектуальной конфигурации/конфигурации сети с одним ключом AirKiss