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





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


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

Доведение девайса до готовности к мелко серийному производству


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



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



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



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


Далее удалось собрать прототипы модулей и написать под каждый ПО, что превращает 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 AY-3-8910 спектрумовской музыки.

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



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

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

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

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





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

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

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





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

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

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

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

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


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

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

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

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

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

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

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

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

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



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


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

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

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

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

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



Новые игры на Little Game Engine


Параллельно с проектом ESPboy интенсивно равивается проект фентези консоли Little Game Engine.

Работа игр, выполненных на Little Game Engine поддерживается на ESPboy и Игорь — автор движка, не перестает нас радовать новыми релизами.

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

Исходники игр открыты, видны в IDE при выборе игры, доступны для редактирования и экспериментов. Чтобы поиграть — надо выбрать «compile» над кодом игры, а затем в левой части над окошком эмулятора нажать «play» иконку. Описание «C» подобного языка LGE так же есть весьма подробное.

Сами исходники движка также доступны для ознакомления.



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

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



Спасибо всем, кто делает свой вклад в проект: Дмитрий (Plague), Александр (Shiru), Михаил Г.,
Игорь (Corax), Алексей (AlRado), Михаил (Torabora), Андрей С., Георгий П., Роман(orsweb), Scott(MLXXXP), Haroldo(Haroldo-OK), John E, Marcus de Verdier, Loopingstar, AccidentalRebel и многим другим, кто играет, читает, тестирует, кодит, стримит, советует и просто лайкает.

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

С уважением,
РоманС