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

    Со времени публикации первой статьи об сконструированном мной девайсе 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 детали, чтобы все заработало.



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



    Несколько девайсов доступны на tindie.com.
    Cо всеми комиссиями, налогами, логистикой и прочим дороговато получается, но ведь всегда можно заказать деталей на алиэкспресс и спаять самостоятельно и обойдется это примерно в 12$.

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


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

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

    С уважением,
    РоманС
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 30

      +2

      Поздравляю с таким развитием! Желаю Вам процветания и развития проекта!

        0
        Спасибо!
        0
        А что-нибудь насчет большого экрана? Чтобы не ломать глаза?
          0
          Есть достаточно много альтернатив.
          С другой стороны как-то разглядывают же люди на эппловских часах картинки или на сяомивских фитнесс браслетах )
          0
          А кто-нибудь знает, как в комментах отключить премодерацию? Я любым комментам рад, и критическим тоже и даже злобным ).
            +2

            я не знаю, но лучше не отключай

            +1

            вот это статья


            прорекламитьбы такую работу, уверен что много кто купилбы себе

              +1
              спасибо за позитивный отзыв. большой спрос требует налаженного производства и логистики.
              а с этим пока как раз сложности. но со временем и эти проблемы решаемы )
              +1

              Я немного не в тему, но хочу про модем спросить от SimCom: Не смотрели в сторону "шаринга интернета" у модемов? Хочу в старую трубку затолкать простенькую начинку в виде батарейки, экрана от нокии и модема 7600 и сделать мобильный хотспот :D

                0
                особо не разбирался про передачу данных на SimCom. SIM800 и SIM900 поддерживают только медленный GPRS, с которым скорость интернета вряд ли кого удовлетворит. А SIM7600 стоит каких то совсем неприличных денег ( За такие деньги вполне можно купить на алиэкспресс готовый 4g/WiFi рутер с батарейкой и не изобретать велосипед aliexpress.ru/af/2G-wifi-router.html?d=y&origin=n&SearchText=2G+wifi+router&catId=0&initiative_id=SB_20200504100113. Самому делать разве что из любви к искусству, но получится дорого, даже без учета геморроя по сборке, программированию и наладке ) Но как самому делать этот самый роутинг между 2G/4G и WiFi я даже не представляю вот так на вскидку
                +1
                отличная работа!
                  0
                  спасибо!
                  +1

                  прекрасный проект, удачи Вам!
                  отдельно хотелось бы поинтересоваться — а как сейчас обстоят дела с LoRa? общение только m2m у Вас реализовано или через шлюз? или сейчас уже крупные операторы связи поддерживают этот стандарт (каюсь, не слежу)? заранее спасибо!

                    +1
                    Спасибо. Пока что прием/передача между устройство-устройства, широковещательно по радиоканалу 433Mhz или 866Mhz в зависимости от типа трансивера. Никакая существующая инфраструктура не используется (типа gsm сотовых операторов или еще кого). Собственный радиоканал. Идеально в случае зомби апокалипсиса ). Конечно было бы здорово реализовать еще и LORA mesh nootropicdesign.com/projectlab/2018/10/20/lora-mesh-networking + подсоединение к LORA WAN lora-alliance.org/about-lorawan шлюзам и когда-то, кто-то существующий мой простенький код допишет. Может быть это даже и я сам буду ) Много чего хотелось бы улучгшить, но пока не хочется упираться в что-то одно. Задача сделать отлаженную экосистему ESPboy с более-менее слаженным и удобным взаимодействием всех ее компонент. А идеи по улучшению будут всегда и это замечательно. Именно поэтому и есть свободный доступ к исходному коду всех элементов, чтобы у энтузиастов была возможность подкрутить то там то тут, открывая новые возможности существующих решений )
                    +1
                    очень круто. а как на счет того что бы встроить например duktape или lua что бы можно было добавлять приложения без перепрошивки?
                      0
                      Спасибо ) Я не знаю, чего такое duktape, а lua вполне себе есть для esp8266 nodemcu.readthedocs.io/en/dev/lua-developer-faq и его можно в любую секунду прошить. Однако это же немного другая концепция получается. Памяти меньше, скорость в разы ниже при интерпритации кода LUA. Эмулятор спектрума например уже будет невозможно написать, как собственно и что-то подобное LGE. Еще есть разнообразные мелкие причины, почему выбрана именна та архитектура, что выбрана. Кроме LUA есть и basic и micro python и куча еще всего именно для ESP8266. На любой вкус вообщем доступны зыки программирования, IDE, SDK и прочее. Многое я перечислял и давал ссылки в разделе «Development ecosystem» hackaday.io/project/164830-espboy-games-iot-stem-for-education-fun/details. Каждый может выбрать себе что больше нравится и творить ) Ведь именно в этом цель
                        +1
                        ну я имел в виду сделать что-то типа законченного девайса, который не нужно постоянно перепрошивать. этакий кпк или смартфон.
                          0
                          не очень понимаю. это и есть законченный девайс ) все современные девайсы время от времени обновляют прошивку или апдейтятся и кпк и смартфоны и настольные компы. это обычное дело. и это не мешает всем им быть законченными. специфика же микроконтроллеров в ограниченности ресурсов. в этом есть и плюсы и минусы. конкретно в случае этого проекта, в ограниченных возможностях и самый смысл. характеризуется термином creativity through limitations, то есть по-русски «голь на выдумки хитра». Есть люди, которым прикольно сделать казалось бы невозможное в рамках предоставленных ограничений )
                            0
                            вообщем то сама суть проекта — это постоянно перепрошивать ) сначала поиграться с готовыми прошивками, а потом писать свой код и делать свои поделки. в этом и есть весь смысл. если нужен кирпич с заранее заложенным жестким функционалом без права изменения, то от таких девайсов ломятся полки салонов связи ) я с ними ни в коем случае не конкурирую.
                              +1
                              не) я скорее про девайс уровня древних кпк от компании palm. но да, я понял. суть Вашего проекта в том что бы создать платформу для экспериментов.
                                0
                                да, все так, платформа для экспериментов. в названии так и написано! типа ардуины, но с совсем иным пользовательским опытом
                        +1
                        Очень круто! Но где DOOM?

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое