DevBoy — як я створив проект пристрої з відкритим вихідним кодом і запустив проект на Kickstarter
Привіт друзі!
Мене звати Микола, читачем Блогів є давно, а от з написанням статей якось не склалося. Пора виправляти цю ситуацію, тим більше, що як раз є привід — тільки що я запустив компанію на Kickstarter для реалізації пристрою з відкритим вихідним кодом.
Кому цікаво — прошу під кат.
Так вже склалося, що з дитинства я мав доступ до прогресивних технологій свого часу(Atari 65XE, ZX-Spectrum, EC1841 і т. д.) що зумовило не тільки вибір професії, але і прищепило відмінне(як я вважаю) хобі — програмування і розробка чого-небудь.
У подальшому доля подарувала мені ще один сюрприз — можливість еміграції в США три роки тому. При цьому мені пощастило двічі — практично відразу я знайшов роботу саме в тій області, якою хотів: C++ та мікроконтролери.
З цього моменту моє захоплення отримало новий “поштовх“. По-перше я познайомився з чудовими мікроконтролерами STM32 від компанії ST Microelectronics(до цього я бавився з Atmel AVR). По-друге, з першої зарплати купив 3D принтер. По своїй суті я перфекціоніст — з одного боку це добре — робиш речі на совість, а з іншого… деколи не виходить довести проект до кінця тільки тому, що не виходить він “перфектно“. Друк корпусів і можливість замовлення друкованих плат фактично вивели можливості по створенню проектів на новий рівень.
І ось одного разу, перебираючи різні замовлені модулі для побудови найпростішого осцилографа і намагаючись розмістити їх на макетної платі я згадав про іграшці яку давним давно колись купив коли ходив ще в коледж: про GameBoy. Швидко оцінивши можливу компонування вирішив: буду робити! Причому відразу в голові промайнула думка: “А адже не тільки кнопочки використовуються! Іноді використовуються джойстики, іноді використовуються крутилки… а чому б не зробити знімні модулі?“. І робота закипіла: пайка прототипу, програмування, розробка і друк корпусу, знову програмування… в результаті тримаючи в руках робочий прототип прийшло усвідомлення того, що ідея не погана. Знову все закрутилося по-новій, тільки додався етап замовлення друкованих плат, причому не тільки для mainboard але і всіх модулів, т. к. відповідних знайти не вдалося. Причому, оскільки китайці виготовляють плати по 10 штук, відразу було вирішено робити дрібну серію. До речі, після виготовлення цієї серії я зрозумів, що паяти далі в ручну(мається на увазі дрібні серії більше 10 штук) — це не варіант.
У підсумку вийшло це:
Підсумкові характеристики:
- Базується на мікроконтролері STM32F415RG, ядро Cortex-M4 працює на частоті 168 MHz
- 1024 KB ПЗУ і 192 KB ОЗП
- 2.8″ екран з роздільною здатністю 320×240 крапок і 16-ти бітами кольором
- Резистивний тачскрін
- Два слоти для модулів вводу, 4 I/O(2 з них можуть оцифровувати сигнал за допомогою АЦП) лінії в кожному
- Слот розширення з I/O лініями практично від всіх висновків мікроконтролера
- Слот для карт SD
- І звичайно ж Open-source
Сам пристрій зі всіх сторін:
А ось так виглядає терморегулятори роз’єми розширення:
Всередині все виглядає так:
Ось так виглядає модуль з мікроконтролером:
А так його призначення:
Модуль екрану:
І зарядника для літієвої батареї:
І нарешті остання частина — корпус:
Помаранчеві штучки — це штовхачі. Отримати модуль та ще задачка. В результаті були придумані ці штовхачі. Коли модуль вставлений він придавлює їх і кнопки ззаду виявляються врівень з корпусом. Якщо ж модуль треба витягти — нажимаємо на штовхач і він видавлює модуль вгору. Далі можна легко і просто його витягнути.
Вихідний код заслуговує окремої статті. Можливо напишу пізніше. З стороннього ПЗ використовується System Workbench for STM32, STM32CubeMX і FreeRTOS. Це всі безкоштовні проекти. До цього всього написані C++ FreeRTOS wrapper, завдання обслуговування екрану, тачскрін, звуку та тексту.
Особливо цікавий висновок графіки — прототип з мікроконтролером STM32F103 міг виводити на екран гру типу Маріо з частотою 15 кадрів в секунду пр 320×240 і маючи всього 20 Кб ОПЕРАТИВНОЇ пам’яті на борту(фреймбуфер виключається), при цьому обмеження швидше за все було з-за частоти роботи SPI. На STM32F415 з частотою SPI вдвічі більшою виходить 30 кадрів в секунду.
Ну і на закінчення залишу посилання:
- Вихідний код можна знайти у сховищі на GitHub: github.com/nickshl/devboy
- 3D файли разом і першоджерелом для OpenSCAD можна знайти на Thingiverse: https://www.thingiverse.com/thing:3068887
- І, власне, сторінка проекту на Kickstarter: www.kickstarter.com/projects/devboy/devboy-modular-system-your-ideas-become-a-reality
Буду вдячний, якщо ви поділитеся посиланням на проект зі своїми друзями — зараз головне набрати критичну масу людей, що б запустити ланцюгову реакцію — необхідно що б про проект дізналося якомога більше зацікавлених людей.
Якщо запитати мене про довгострокові плани, чого ж я хочу в підсумку відповідь буде простою: створити компанію з ідеологією open software і open hardware, займатися своєю улюбленою справою і допомагати іншим людям.