Со времени публикации первой статьи об сконструированном мной девайсе ESPboy на микроконтроллере ESP8266 прошло довольно много времени.
Однако за это время удалось кое что сделать:
- Довести сам девайс до стадии производства
- Собрать модули расширения, написать под них софт и отладить
- Сделать онлайн каталог приложений с быстрой загрузкой их по WiFi по аналогии с Apple iStore и Google play market
- Портировать библиотеку для раработки игр с Arduboy и скомпилировать несколько десятков Arduboy игр под ESPboy
- Разработать порядком новых ретро игрушек на Little Game Engine
Доведение девайса до готовности к мелко серийному производству
Сравнение ESPboy с M5Stack, MeowBit & Dingoo A-320
Самому паять уже порядком поднадоело и удалось договориться с бойкими китайскими парнями из www.makerfabs.com, которые сдюжили три десятка полусобранных наборов-китов для самостоятельной окончательной сборки. Надо припаять всего 4 детали, чтобы все заработало.
Пробную партию быстро раздал на тесты для желающих участвовать в разработках проекта, и надо бы заказывать еще, но побаиваюсь таможни, которая повадилась арестовывать почти все, что по содержимому посылки в количестве больше 5 однотипных штук на сканерах отображается.
Модули расширения и софт под них
Далее удалось собрать прототипы модулей и написать под каждый ПО, что превращает ESPboy в полноценный девайс, как и задумывалось. Для этого достаточно воткнуть нужный модуль в разъем расширения и обновить прошивку. Исходники на github.
Предстоит еще несколько итераций по доводке всех модулей до стадии производства.
Необходимо нарисовать печатные платы, сделать выверенные списки доступных и недорогих комплектующих, написать подробную инструкцию, оформить все в виде китов, готовых для сборки и в виде уже собранных изделий.
Надеюсь все это успеть сделать до конца этого года.
На сегодня полностью готовы и отлажены следующие расширения:
- Полноценная мини клавиатура
- Метео станция
- MP3 плеер
- FM радио
- GPS навигатор
- DAC модуль для воспроизведения музыки
- LORA мессенджер с крипто шифрованием мессажек при передаче
- Хакерский 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, то есть по сети. Принимая во внимание то, что программирование микроконтроллеров дело хлопотное, а обновление прошивки это практически всегда геморрой, очень захотелось это изменить.
Как выглядит обновление прошивки для микроконтроллера обычным путем?
- Подключить проводом девайс к компьютеру и настроить драйвера
- Установить Arduino IDE
- Установить расширение ESP8266 под Arduino IDE
- Скачать исходных код
- Разобраться какие там используются библиотеки и каких версий (что ни разу не очевидно)
- Скачать все библиотеки и их установить
- Разобраться с параметрами компиляции, установить их (что тоже не очевидно)
- Откомпилировать код, получить кучу ошибок и сидеть разбираться в чем проблема
Понятное дело, что такой квест начинающим осилить сложно и это является критическим препятствием при вхождении в тему программирования микроконтроллеров, ротоботехники и прочего такого.
И как же это изменить?
Собственно онлайн каталог приложений сводит задачу обновления прошивки к следующим простым действиям:
- Выбрать WiFi сеть из списка
- Выбрать приложение из списка
- Подождать пол минуты
Ну это ли не красота и счастье!
Вот собственно и исходники клиентской части, чтобы подключиться и наслаждаться.
Порт библиотеки Arduboy2
Около года назад, уже после того, как спроектировал ESPboy и вовсю тестировал, наткнулся на коммерчески успешный проект Arduboy.
Под этот замечательный гаджет, как оказалось, было написано не мало прикольных игр с открытым кодом, а дружное комьюнити ведет разработки и по сей день.
В основе разработки игр для Arduboy лежит библиотека Arduboy2 lib.
После портирования этой библиотеки на ESPboy появилась возможность перекомпилировать десятки прекрасных игр с Arduboy с минимальными корреткировками кода.
Исходники библиотеки, портированные игры и инструкция о том, как портировать что угодно с Arduboy на ESPboy самому опять же на github.
Новые игры на Little Game Engine
Параллельно с проектом ESPboy интенсивно равивается проект фентези консоли Little Game Engine.
Работа игр, выполненных на Little Game Engine поддерживается на ESPboy и Игорь — автор движка, не перестает нас радовать новыми релизами.
Разработка этих игр проста и незатейлива, а также доступна любому желающему через среду разработки (IDE), которая запускается в любом браузере и имеет встроенный компилятор и эмулятор.
Исходники движка также доступны для ознакомления.
Таким образом работа над проектом продолжается.
Впереди еще много интересного и в плане добавления новых элементов экосистемы ESPboy и в плане более тщательной интеграции уже существующих компонент с одновременным упрощением для пользователя и повышением общего позитивного впечатления.
- Статья про ESPboy на habr — первая часть
- Статья на habr про разработку игр для ESPboy на Little Game Engine
- Игры, написанные на LGE — Little Game Engine и сама среда разработки
- Видео по проекту выкладываются на YouTube
- Подробное описание c логом изменений на hackaday
- Схемы на easyeda.com
- Программное обеспечение на gitgub
- Идеи и предложения можно направлять на почту espboy.edu@gmail.com
- Для оперативных вопросов удобно использовать форум и Discord chat
Спасибо всем, кто делает свой вклад в проект: Дмитрий (Plague), Александр (Shiru), Михаил Г.,
Игорь (Corax), Алексей (AlRado), Михаил (Torabora), Scott(MLXXXP) и многих других, кто играет, читайет, тестирует, кодит, стримит, советует и просто лайкает.
Всем добра и творческих успехов!
С уважением,
РоманС
Автор: Роман