Оглавление:

Интерактивный Minecraft «Не вводить меч / знак» (ESP32-CAM): 15 шагов (с изображениями)
Интерактивный Minecraft «Не вводить меч / знак» (ESP32-CAM): 15 шагов (с изображениями)
Anonim
Image
Image
Конечный продукт
Конечный продукт

На самом деле есть несколько причин, по которым появился этот проект:

1. Как автору библиотеки совместной многозадачности TaskScheduler мне всегда было любопытно, как совместить преимущества совместной многозадачности с преимуществами упреждающей. У обоих есть свои преимущества, и у обоих есть недостатки. Сочетание этих двух факторов дает уникальную возможность использовать преимущества и преуменьшить проблемы любого из них в зависимости от конкретного варианта использования. Интересно? Читать дальше…

2. Сам факт того, что ESP32 является многоядерным микроконтроллером, завораживает. Мне всегда было любопытно, смогу ли я воспользоваться этой функцией. Итак, эксперимент здесь заключался в следующем: может ли ESP32 беспрепятственно транслировать видео, используя одно ядро, одновременно выполняя что-то другое (значимое и достаточно интенсивное что-то еще) на другом ядре. Еще интереснее ?? Читать дальше…!

3. Мне нужен был полигон для моих недавних проектов по предоставлению прошивки OTA и управлению конфигурацией…

4. Некоторое время назад я купил два модуля LED Dot Matrix и не мог понять, что с ними делать…

5. Мой сын - игрок в Minecraft, и, как любой маленький мальчик, любит украшать свою дверь плакатами «Не входить»…

Итак, вот и все веские причины для: интерактивной дверной таблички «Не входить» с ESP32-CAM, потоковой передачи видеопотока «из-за закрытой двери» - или «Кто идет в мою комнату?»

Итак … о чем все это?

Если у вас хватит терпения прочитать всю историю, вы поймете, что на самом деле речь идет не о мече Minecraft. Этот проект - доказательство множества концепций:

  • Сосуществование упреждающей и кооперативной многозадачности
  • Выборочное использование ядер ESP32
  • Использование новых библиотек Dictionary и EspBootstrap
  • Обеспечение прошивки OTA
  • Управление конфигурацией
  • Потоковое видео для нескольких клиентов

и многое другое.

Наслаждаться

Запасы

  • ESP32-CAM
  • Модуль точечной матрицы MAX7219 Модуль светодиодного дисплея 4-в-1 Geekcreit для Arduino
  • Внешний аккумулятор Attom Tech 2500mAh

Шаг 1: конечный продукт

Конечный продукт
Конечный продукт

Я начну с того, как выглядит конечный продукт, а затем объясню, как он был создан и как им управлять.

Это кажется более интересным …

Шаг 2: Лицевая панель меча

Лицевая панель меча
Лицевая панель меча
Лицевая панель меча
Лицевая панель меча

Лицевая панель меча сделана из белой доски, помечена карандашом и раскрашена маркерами Crayola. Одно это может быть интересным проектом для вашего ребенка:

  • Отметьте меч на доске
  • Вырежьте лицевую панель
  • Разметьте квадраты (или блоки)
  • Раскрасьте их индивидуально
  • Добавьте черные линии с помощью маркера.

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

Шаг 3: точечно-матричный светодиодный дисплей

Точечно-матричный светодиодный экран
Точечно-матричный светодиодный экран
Точечно-матричный светодиодный экран
Точечно-матричный светодиодный экран
Точечно-матричный светодиодный экран
Точечно-матричный светодиодный экран

У меня их было 2 по 4 сегмента, поэтому я решил сделать один 8-сегментный.

Удобно, что на одной стороне имеется 5-контактный штекер, а на противоположной - соответствующие 5 отверстий. Изогнув вилку в виде скоб], я смог соединить два модуля электрически и механически! Убил двух зайцев одним выстрелом (или двух мух одним ударом, чтобы заткнуть два рта одним кусочком, подружить двоих одним подарком, получить две струны к одному луку, какие еще идиомы на этот счет - вы думали? Извините, я отвлекся).

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

Эти два компонента соединены мостом, напечатанным на 3D-принтере, в котором также находится переключатель для включения и выключения питания. 3D-файлы STL для моста и других компонентов находятся в папке files / 3d на GitHub.

Шаг 4: мощность

Власть
Власть

Sword питается от USB-аккумулятора емкостью 2500 мАч - самого маленького и тонкого, что я мог найти. Powerbank помещается в корпус, напечатанный на 3D-принтере, который также прикрепляется к модулям точечной матрицы, таким образом удерживая все вместе.

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

Шаг 5: Схема

Схема
Схема
Схема
Схема
Схема
Схема

Настоящая схема находится на GitHub, но изображение стоит 1000 слов (1024 в информационных технологиях), так что вы здесь:

Это довольно просто, если вы знаете свой путь с паяльным пистолетом. ПРИМЕЧАНИЕ: 3-я мостовая часть разработана для очень специфического размера верборда: 30 x 70 мм. Если вы решите использовать другой, вам необходимо перепроектировать компонент моста.

Шаг 6: 3D-печать

3d печать
3d печать
3d печать
3d печать
3d печать
3d печать

Корпус аккумулятора и мост, соединяющий плату ESP32-CAM с точечно-матричным дисплеем, были спроектированы и напечатаны в 3D.

Батарейный отсек состоит из двух частей, которые после печати необходимо склеить, чтобы получился «карман» для батареи. Мост просто нужно очистить от всех опорных конструкций (к сожалению, нет хорошей ориентации, которая сводила бы их к минимуму). Файлы STL находятся на GitHub, а оригиналы TinkerCad находятся здесь.

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

Шаг 7: Программирование

Многозадачность

Этот дизайн использует FreeRTOS для вытесняющей многозадачности и библиотеку TaskScheduler для совместной работы. Поведение и сообщения Sword контролируются через приложение Blynk. После настройки (пины, инициализация камеры и точечной матрицы, подключение к Wi-Fi и т. Д.) Создаются две основные задачи RTOS:

  • Задача RTOS для потоковой передачи видео, закрепленная на ядре приложения ESP32 (ядро 1)
  • Отображение текста и задача управления RTOS Blynk, прикрепленная к Power Core ESP32 (ядро 0), которое также отвечает за все задачи, связанные с WiFi. Выполнение, связанное с текстом и Blynk, управляется с помощью задач TaskScheduler.

Я выяснил, что 4 КБ пространства стека достаточно для задач RTOS, но есть вероятность того, что стек закончится, поэтому, если хотите, сделайте его 8 КБ - на ESP32 достаточно ОЗУ.

Весь видеозахват и потоковая передача происходит на Core 1. Все остальное - на Core 0.

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

ЭТО было главной целью проекта: мирное и продуктивное сосуществование упреждающей и совместной многозадачности!

Шаг 8: Управление точечной матрицей

Я использую очень мощные библиотеки MD_Parola и MD_MAX72xx, которые также доступны в диспетчере библиотек Arduino IDE.

Все текстовые спецэффекты выполняются с помощью этих библиотек. Потребовалось немного усилий, чтобы определить правильный тип оборудования MAX72XX (MD_MAX72XX:: ICSTATION_HW в моем случае, ваш может быть другим), после чего управлять текстом стало проще простого.

Меч позволяет следующие элементы управления:

  • Яркость
  • Мигает
  • Вспышка
  • Скорость и направление прокрутки (вверх / вниз, влево / вправо, плавно)
  • Вы также можете превратить его в настенные часы.

Шаг 9: потоковое видео

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

Поддерживается до 10 подключенных клиентов.

Вам нужно будет узнать IP-адрес вашего ESP32-CAM, чтобы иметь возможность подключиться к нему. Вы можете найти его на своем маршрутизаторе или скомпилировать этот скетч с включенной опцией _DEBUG_ и прочитать IP-адрес терминала, когда он подключается к вашей сети.

ВАЖНО: Очень рекомендуется назначить постоянный IP-адрес или создать резервирование DHCP для модуля ESP32-CAM, чтобы его адрес не изменился по истечении срока аренды. Вы также можете изменить приложение Blynk, чтобы обновить IP-адрес в URL-адресе потока - интересное домашнее задание, если вы готовы к нему.

Текущий скетч использует разрешение QVGA: 320x240 пикселей, что делает его довольно быстрым. Вы можете и можете поиграть с другими разрешениями и решить, что вам подходит.

ОЗУ не должно быть проблемой, так как скетч использует преимущества PSRAM.

Шаг 10: настройка

Скетч использует мои библиотеки Dictionary и EspBootstrap для загрузки параметров конфигурации с сервера конфигурации при загрузке.

Я запускаю свой собственный сервер конфигурации, и вы тоже можете это сделать (это простой веб-сервер Apache2, на самом деле обслуживающий файлы JSON).

Вы также можете использовать любой из онлайн-сервисов, доступных для задачи: (OTADrive, Microsoft Azure, AWS IoT и т. Д.). В этом случае измените метод String makeConfig (String path), чтобы соответствующим образом создать URL-адрес, указывающий на ваш источник конфигурации. В качестве альтернативы вы можете сохранить файл конфигурации в файловой системе SPIFFS на ESP32-CAM и прочитать его оттуда или просто жестко закодировать все записи. Пожалуйста, смотрите README библиотеки EspBootstrap для ваших опций.

Пример файла конфигурации представлен на GitHub.

Если вы предпочитаете жестко кодировать параметры, ниже приведен пример:

pd ("Заголовок", "Настройка меча" Не беспокоить ");

pd ("ssid", "ваш Wi-Fi ssid"); pd ("пароль", "ваш пароль Wi-Fi"); pd ("сообщение", "Привет!"); pd ("устройства", "8"); pd ("blynk_auth", "ваш blynk AUTH UUID"); // если вы запускаете только свой собственный сервер: pd ("blynk_host", "IP вашего сервера blynk"); pd ("blynk_port", "порт вашего сервера");

Шаг 11: обновления прошивки OTA

Скетч также поддерживает обновление прошивки OTA (по воздуху) и проверяет наличие новой прошивки при каждой загрузке.

Опять же, я запускаю свой собственный сервер обновлений OTA, что вы тоже можете сделать (это простой веб-сервер Apache2 с небольшим количеством сценариев PHP, обслуживающих двоичные файлы).

Вы также можете использовать любые онлайн-сервисы IoT, доступные для выполнения задачи: (OTADrive, Microsoft Azure, AWS IoT и т. Д.). В этом случае измените метод void checkOTA (), чтобы соответствующим образом создать URL-адрес обновления, указывающий на источник вашего двоичного файла.

Это необязательно - вы можете просто загрузить двоичные файлы через последовательное соединение.

Шаг 12: Сервер MJPEG

Подробно эта тема описана здесь.

Шаг 13: приложение Blynk

Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk

Blynk - это облачная платформа Интернета вещей, которая позволяет быстро разрабатывать приложения. Он бесплатен для личного использования и даже имеет возможность запустить собственный сервер Blynk.

Я (как вы уже догадались) использую свой собственный сервер Blynk, но вам может быть проще использовать облачную версию. Установите приложение Blynk для iOS или Android и воссоздайте приложение на своем телефоне, следуя картинкам ниже.

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

ВАЖНО: убедитесь, что ваш проект Blynk настроен на уведомление устройств при подключении приложения.

ПРИМЕЧАНИЕ по виджету потокового видео: иногда видео не запускается. Это не похоже на проблему с ESP32, скорее с виджетом видео приложения Blynk. Попробуйте закрыть и снова открыть приложение или снова остановить / запустить проект. В конце концов, это действительно начинается. Эта проблема, похоже, не существует в браузере или проигрывателе VLC (например).

Шаг 14: Наслаждайтесь

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

Шаг 15: библиотеки и код

Библиотеки:

  • Blynk сервер
  • Библиотека EspBootstrap
  • Библиотека TaskScheduler
  • Библиотека словарей
  • Библиотека светодиодных матриц
  • Библиотека для модульной прокрутки светодиодных матричных текстовых дисплеев

Актуальный репозиторий:

Minecraft Interactive Не вводить меч / знак (ESP32-CAM)

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