Часть 2: Mодули и AppStore. ESPboy — гаджет для ретро игр и экспериментов с IoT

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Со времени публикации первой статьи об сконструированном мной девайсе ESPboy на микроконтроллере ESP8266 прошло довольно много времени.





Однако за это время удалось кое что сделать:


  1. Довести сам девайс до стадии производства
  2. Собрать модули расширения, написать под них софт и отладить
  3. Сделать онлайн каталог приложений с быстрой загрузкой их на ESPboy по WiFi по аналогии с Apple iStore и Google play market
  4. Портировать библиотеку для раработки игр с Arduboy и скомпилировать несколько десятков Arduboy игр под ESPboy


Доведение девайса до стадии производства


Сравнение ESPboy с M5Stack, MeowBit & Dingoo A-320



Самому паять уже порядком поднадоело и удалось договориться с бойкими китайскими парнями из www.makerfabs.com, которые сдюжили три десятка полусобранных наборов-китов для самостоятельной окончательной сборки. Надо припаять всего 4 детали, чтобы все заработало.



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



Модули расширения и софт под них


Далее удалось собрать прототипы модулей и написать под каждый ПО, что превращает ESPboy в полноценный девайс, как и задумывалось. Для этого достаточно воткнуть нужный модуль в разъем расширения и обновить прошивку. Исходники на github.



Предстоит еще несколько итераций по доводке всех модулей до стадии производства.

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

Надеюсь все это успеть сделать до конца этого года.

На сегодня полностью готовы и отлажены следующие расширения:

  1. Полноценная мини клавиатура
  2. Метео станция
  3. MP3 плеер
  4. FM радио
  5. GPS навигатор
  6. DAC модуль для воспроизведения музыки
  7. LORA мессенджер с крипто шифрованием мессажек при передаче
  8. Хакерский GSM телефон

Так же в работе находятся еще несколько интересных задумок, надеюсь скоро расскажу.

Несколько слов про каждый модуль


1. Полноценная мини клавиатура

Сделана на основе клавиатуры смартфона Blackberry Q10, которая управляется через расширитель портов MCP23017.



Информации о сигналах на шлейфе клавиатуры довольно много и задача сводится к заказу разъема + переходника под шлейф и припаивание этого самого разъема к переходнику. Учитывая размеры разъема в несколько миллиметров и размеры самих контактов буквально с волос, задача не из простых.

MCP23017 работает по i2c и в программном плане проблемм не возникло. Необходимо опрашивать матрицу клавиатуры на поиск замкнутых контактов и правильно интерпретировать сигналы в клавиатурныю раскладку. Подробности видны в исходниках.



2. Метео станция

Какой ардуинщик не собирал метеостанцию. Такого в природе не сыщешь.
В моем варианте используется i2c сенсор давления/влажности/температуры BME280 и так же сенсор CO2 — SGP30.

В качестве бонуса — часы реального времени DC3231, что позволяет еще и правильное время показывать.

Думалось еще добавить сенсор грозы/молний AS3935, но дороговат. Может позже.



Сам модуль получился небольшой, код тут.

В качестве расширенной версии на пробу сделал штуку побольше. Не понравилось, но видео эксперимента сохранилось.



3. MP3 плеер

Использовал DFplayer mini mp3, тем же путем, что описывается в статьях про этот модуль.

Проблема с ним только в том, что часто попадаются бракованные и работают не стабильно или вообще не работают. Исходник.

4. FM радио

В качестве основы использовался модуль fm тюнера SI4703 и немного допиленная библиотека от mathertel.



Играет радио вполне сносно в наушники, работает поиск станций и даже RDS. Код тут.



5. GPS навигатор

Без навигации нынче никуда. Поэтому конечно же решил собрать доп модуль и для этой задачи.
Использовал чип WAVGAT GY-NEO6MV2 с которым не возникло совершенно никаких проблемм. Реализовал два экарана. Один — режим свободной навигации, второй — режим следования на точку из памяти. Теоретически и карту можно туда засунуть, но это долгая задача. Исходники все там же.



5. DAC модуль для проигрывания музыки

При разработке ZX Spectrum эмулятора, возникла идея эмулировать его музыкальный сопроцессор AY-3-8910. Программная эмуляция на встроенном динамике получилась, но затраты процессора на синтез звука и качество оставляли желать лучшего. В конечном итоге спектрум на ESPboy заработал, но только в версии 48к без эмуляции AY потому, как даже на это памяти хватило впритык (буквально пара десятков байт на стек осталось).



Однако благодаря стараниям Shiru и его опытам со звуком, появился DAC модуль для ESPboy и плеер PT3 AY3-8910 спектрумовской музыки.

Применялся модуль на PCM5102 с поддержкой интерфейса I2S (не путать с I2C). Исходники неизменно есть.



7. LORA мессенджер с криптой

Не так давно стала очень популярна технология LORA — энергосберегающий протокол передачи коротких пакетов данных по радиоканалу на большие расстояния. Покопавшись обнаружил недорогие трансиверы от EBYTE .

Причем на максимальной мощности они шарашат аж на 8км по прямой видимости. Тут нужно понимать, что препятствия в виде рельефа местности и городской застройки этот показатель кардинально снижают, ну и городские помехи тоже. Однако в загородных условиях или если спутники с GSM вышками к примеру попадают — это отличных канал связи. Эксперименты вылились в создание полноценного чат-модуля по радиоканалу. Модуль сам шифрует пакет, но и я сверху в качестве опции AES (по умолчанию это отключено).

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





8. Хакерский GSM телефон

Наткнувшись в сети на конструктор телефона Ringo (ранее Maker Phone), сильно удивился цене и сложности. Имея опыт работы с известными модулями SIM800 от компании SimCom, быстренько запилил свой телефон.

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





Написанный софт поддерживает необходимый минимум:

  • Отображение текущего времени
  • Ответ на звонки и сброс звонка
  • Набор номера
  • Прием и отправку СМС

В дополнении на экране отображается вся служебная информация по работе GSM трансивера. Запросы и ответы базовых станций и черт знает что еще. Я не спец, но наблюдать интересно.

В качетстве бонуса можно вводить низкоуровневые AT команды управления трансивером, как в старые добрые времена dialup модемов, а команд этих в документации от SimCom аж на 600 страниц. Ну чем не поле для исследований для истинных хакеров.

ESPboy App Store — онлайн каталог приложений


Изучая документацию ESP8266 и помня про WiFi у него на борту, особенно поразила возможность обновлять его прошивку по http/https, то есть по сети. Принимая во внимание то, что программирование микроконтроллеров дело хлопотное, а обновление прошивки это практически всегда геморрой, очень захотелось это изменить.

Как выглядит обновление прошивки для микроконтроллера обычным путем?

  1. Подключить проводом девайс к компьютеру и настроить драйвера
  2. Установить Arduino IDE
  3. Установить расширение ESP8266 под Arduino IDE
  4. Скачать исходных код
  5. Разобраться какие там используются библиотеки и каких версий (что ни разу не очевидно)
  6. Скачать все библиотеки и их установить
  7. Разобраться с параметрами компиляции, установить их (что тоже не очевидно)
  8. Откомпилировать код, получить кучу ошибок и сидеть разбираться в чем проблема

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

И как же это изменить?

Собственно онлайн каталог приложений сводит задачу обновления прошивки к следующим простым действиям:

  1. Выбрать WiFi сеть из списка
  2. Выбрать приложение из списка
  3. Подождать пол минуты

Ну это ли не красота и счастье!

Вот собственно и исходники клиентской части, чтобы подключиться и наслаждаться.



Порт библиотеки Arduboy2


Около года назад, уже после того, как спроектировал ESPboy и вовсю тестировал, наткнулся на коммерчески успешный проект Arduboy.

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

В основе разработки игр для Arduboy лежит библиотека Arduboy2 lib.

После портирования этой библиотеки на ESPboy появилась возможность перекомпилировать десятки прекрасных игр с Arduboy с минимальными корреткировками кода.

Исходники библиотеки, портированные игры и инструкция о том, как портировать что угодно с Arduboy на ESPboy самому опять же на github.



Таким образом работа над проектом продолжается.

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

  • Статья про ESPboy на habr — первая часть
  • Статья на habr про разработку игр для ESPboy на Little Game Engine
  • Видео по проекту выкладываются на YouTube
  • Подробное описание c логом изменений на hackaday
  • Схемы на easyeda.com
  • Программное обеспечение на gitgub
  • Идеи и предложения можно направлять на почту espboy.edu@gmail.com
  • Для оперативных вопросов удобно использовать форум и Discord chat

Всем добра и творческих успехов!

С уважением,
РоманС
Источник: https://habr.com/ru/post/500336/


Интересные статьи

Интересные статьи

Всем привет! В этой части хочу рассказать как мы использовали модель NomeroffNet предназначенного для распознавания автомобильных номеров, распознать рукописные записи. В...
Константин Сахнов из ВШБИ НИУ ВШЭ в рамках курса "Менеджмент игровых проектов" целую лекцию этой теме выделил, чтобы точно не осталось "белых пятен". А мы перевели...
Среди всех моих ретроувлечений минидиск выделяется необходимостью поиска нетривиальных решений каких-то вроде бы базовых задач. Созданный в 1992 году, этот аудиоформат был предназначе...
В августе исполняется ровно год моему проекту по строительству 386-го ретрокомпьютера из разнообразных запчастей. Честно говоря, не ожидал, что стройка настолько затянется, но с друго...
Это первая часть серии статей по основам микросервисных архитектур. В ней вы познакомитеь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud. ...