DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter

в 5:55, , рубрики: 3D-печать, c++, diy или сделай сам, it-эмиграция, Kickstarter, open source, stm32, микроконтроллеры, программирование микроконтроллеров, разработка

Привет друзья!

Меня зовут Николай, читателем Хабра являюсь давно, а вот с написанием статей как-то не сложилось. Пора исправлять эту ситуацию, тем более что как раз имеется повод — только что я запустил компанию на Kickstarter для реализации устройства с открытым исходным кодом.
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 1
Кому интересно — прошу под кат.

Так уж сложилось, что с детства я имел доступ к прогрессивным технологиям своего времени(Atari 65XE, ZX-Spectrum, EC1841 и т.д.) что предопределило не только выбор профессии, но и привило отличное(как я считаю) хобби — программирование и разработка чего-нибудь.
В дальнейшем судьба преподнесла мне еще один сюрприз — возможность эмиграции в США три года назад. При этом мне повезло дважды — практически сразу я нашел работу именно в той области которой хотел: C++ и микроконтроллеры.
С этого момента мое увлечение получило новый "толчок". Во-первых я познакомился с замечательными микроконтроллерами STM32 от компании ST Microelectronics(до этого я баловался с Atmel AVR). Во-вторых с первой зарплаты я купил 3D принтер. По своей сути я перфекционист — с одной стороны это хорошо — делаешь вещи на совесть, а с другой… порой не получается довести проект до конца только лишь потому, что не выходит он "перфектным". Печать корпусов и возможность заказа печатных плат фактически вывели возможности по созданию проектов на новый уровень.

И вот однажды, перебирая разные заказанные модули для построения простейшего осциллографа и пытаясь разместить их на макетной плате я вспомнил об игрушке которую давным давно когда-то купил когда ходил еще в колледж: о GameBoy. Быстро прикинув возможную компоновку решил: буду делать! Причем сразу в голове мелькнула идея: "А ведь не только кнопочки используются-то! Иногда используются джойстики, иногда используются крутилки… а почему бы не сделать съемные модули?". И работа закипела: пайка прототипа, программирование, разработка и печать корпуса, опять программирование… в результате держа в руках рабочий прототип пришло осознание того, что идея-то не плоха. Опять все закрутилось по-новой, только добавился этап заказа печатных плат, причем не только для mainboard но и всех модулей, т.к. подходящих найти не удалось. Причем, поскольку китайцы изготавливают платы по 10 штук, сразу было решено делать мелкую серию. Кстати, после изготовления этой серии я понял, что паять дальше в ручную(имеется ввиду мелкие серии больше 10 штук) — это не вариант.

В итоге получилось это:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 2
Итоговые характеристики:

  • Базируется на микроконтроллере STM32F415RG, ядро Cortex-M4 работающее на частоте 168 MHz
  • 1024 KB ПЗУ и 192 KB ОЗУ
  • 2.8" экран с разрешением 320x240 точек и 16-тибитным цветом
  • Резистивный тачскрин
  • Два слота для модулей ввода, 4 I/O(2 из них могут оцифровывать сигнал с помощью АЦП) линии в каждом
  • Слот расширения с I/O линиями практически от всех выводов микроконтроллера
  • Слот для карт SD
  • И конечно же Open-source

Само устройство со всех сторон:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 3

А вот так вот выглядит распиновка разъема расширения:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 4

Внутри все выглядит так:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 5

Вот так выглядит модуль с микроконтроллером:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 6
А так его распиновка:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 7

Модуль экрана:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 8

И зарядника для литиевой батареи:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 9

И наконец последняя част — корпус:
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 10
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter - 11
Оранжевые штучки — это толкатели. Извлечь модуль та еще задачка. В итоге были придуманы эти толкатели. Когда модуль вставлен он их придавливает и кнопки сзади оказываются вровень с корпусом. Если же модуль надо извлечь — наживаем на толкатель и он выдавливает модуль вверх. Далее можно легко и просто его вытянуть.

Исходный код заслуживает отдельной статьи. Возможно напишу её позже. Из стороннего ПО используется System Workbench for STM32, STM32CubeMX и FreeRTOS. Это все бесплатные проекты. К этому всему написаны C++ FreeRTOS wrapper, задачи обслуживания экрана, тачскрина, звука и ввода.
image
Особенно интересен вывод графики — прототип с микроконтроллером STM32F103 мог выводить на экран игру типа Марио с частотой 15 кадров в секунду пр разрешении 320x240 и имея всего 20 Кб ОЗУ на борту(фреймбуфер исключается), при этом ограничение скорее всего было из-за частоты работы SPI. На STM32F415 с частотой SPI вдвое большей выходит 30 кадров в секунду.

Ну и в заключение оставлю ссылки:

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

Если спросить меня о долгосрочных планах, чего же я хочу в итоге ответ будет простым: создать компанию с идеологией open software и open hardware, заниматься своим любимым делом и помогать другим людям как делают это Adafruit и Sparkfun.

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

Автор: Nick_Shl

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js