Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4]
За первые сутки кампании на Кикстартере мы собрали 1 млн. долларов. Откровенно говоря, никто из команды даже близко не ожидал такой популярности. В первые дни мой телефон разрывался от уведомлений, звонили от журнала Форбс до Первого канала. Я до сих пор полностью не отошел от шока и не ответил до конца на все письма. Ничего подобного я никогда в жизни не испытывал.
Огромное спасибо всем, кто поддерживал нас, следил за проектом и принимал участие. Именно на Хабре я опубликовал первый пост с концептами Флиппера, получил первый фидбек, критику и похвалу. Некоторые функции мы добавили во Флиппер именно после фидбека на Хабре. Мы постараемся не обосраться с производством и оправдать ожидания.
Сейчас я полностью уверен, что максимальная открытость и честность — это лучшая стратегия. Вся наша команда верит в open source, и мы считаем, что энтузиасты могут создавать крутые проекты без привлечения инвесторов и контроля со стороны корпораций. Поэтому я предлагаю всем, кому интересен проект, принять участие в разработке.
Под катом описание программы для разработчиков прошивки, железа, десктопных программ и железных модулей.
Кто работает над проектом?
Проект состоит из нескольких масштабных частей, над каждой из которых работает своя команда. Иногда командам приходится согласовывать свою работу, например когда механики и железячники пытаются договориться о том, как передвинуть компонент на плате, чтобы он не мешал ходу кнопки. Вот основные команды:
- Firmware — вся софтовая разработка прошивки, в том числе программных модулей для каждого компонента: радио, RFID, Bluetooth, инфракрасный порт, U2F, USB-стек и т.д.
- Electronics Engineering (EE) — команда, занимающаяся разработкой железа, то есть всей электронной части: платы, антенны, питание.
- Mechanical Engineering (ME) — команда конструкторов, занимающаяся механическим дизайном. Всем, что касается компоновки компонентов внутри и снаружи, механических частей устройства: корпус, кнопки, отверстия, расположения разъемов, удобство сборки и т.д.
- Manufacturing — команда, отвечающая за то, чтобы результат работы команд ME и Hardware можно было передать в массовое производство. Сперва мне казалось, что это чисто административная работа, но это не так. Нужно знать все ограничения SMT-машин, выполняющих монтаж компонентов, ограничения пресс-форм, в которые будут заливаться корпуса, особенности ручной сборки и тестирования и ещё кучу всего. Так что эта работа больше техническая, нужно знать все тонкости производства.
На текущий момент у нас есть на ~80% завершенное устройство по части железа и механики. Но самая большая часть разработки Флиппера — это прошивка. Сейчас у нас есть рабочий прототип, архитектура и основные компоненты прошивки, на которые нужно нарастить мясо.
На этом этапе очень важно правильно подойти к унификации всех компонентов, чтобы сохранить читаемость кода и единый понятный стиль, чтобы разработчикам по всему миру было легко разрабатывать под нашу платформу. Мы верим в то, что эта задача будет интересна сообществу и предлагаем внести свой вклад в процесс создания Флиппера, также как это было на ранних этапах.
Как принять участие в разработке прошивки?
Вся прошивка Flipper Zero будет полностью открыта и опубликована на Github. Мы пока решили не открывать наши репозитории с кодом, чтобы чуть-чуть отложить момент появления подделок на Aliexpress. При этом мы прекрасно понимаем, что после такого успеха на kickstarter, подделки обязательно появятся, и в целом не особенно переживаем из-за этого. Просто чуть-чуть отложим этот момент во времени, возможно это подтолкнет китайцев написать какой-то новый код вместо того, чтобы сразу использовать наш. Поэтому сейчас вся разработка ведется в закрытом репозитории, куда мы добавляем людей после того, как они заполнят форму и подпишут Соглашение Разработчика (CLA). В соглашении мы просим не распространять код без нашего явного согласия, а также говорим о том, что мы сможем распоряжаться вашим кодом, однако обязательно сохраняем ваше авторство.
Исходный код прошивки будет опубликован в открытом доступе сразу после того, как бекерам уедут первые устройства. Мы готовы к появлению подделок и не собираемся с ними бороться, просто хотим отложить этот момент до появления наших устройств в руках пользователей.
На данный момент используется HAL/LL от STM и FreeRTOS. Большая часть работы с периферией сгенерирована CubeMX, однако в некоторых хардкорных местах пришлось выкинуть штатные функции и поработать с регистрами напрямую.
Сейчас мы находимся на этапе, когда легко можно поменять стек технологий, наш главный программист уже неделю думает, не перейти ли на RIOT OS, ChibiOS, NuttX и Zephyr для ускорения и упрощения разработки. А ещё рассматривается вариант переписать все на Rust и использовать embedded-hal и Tock OS. В общем, сейчас мы готовы к серьезным переменам ради светлого будущего.
Сборка кода происходит через make и gcc, но совсем скоро нам нужно будет добавить возможность собирать наш код в Arduino IDE и PlatformIO.
Архитектура прошивки:
Кого мы ищем?
Основные компоненты Флиппера написаны на C, C++ и Rust, поэтому для разработки пригодится знание этих языков. Также будет классно, если ты работал с микроконтроллерами и умеешь отлаживать электронику, но мы стараемся отделить железо от кода слоем абстракций, так что многие компоненты, такие как графический интерфейс или поведение дельфина, не потребуют работы с железом. Также нам нужны дизайнеры интерфейсов (разместить на экране 128×64 информативный UI — не самая простая задача), девопсы и тестировщики (если ты готов тестировать электронику и разбираться с настройкой стендов для удаленной отладки и тестирования).
Самое главное — у вас должно быть желание внести свой вклад в разработку. Для участия в проекте заполните форму. Отнеситесь к заполнению формы очень внимательно, это единственный удобный способ для нас понять ваш профессионализм: напишите о своем опыте разработки, укажите только те компоненты Флиппера, которые вам действительно интересно развивать. Будет очень здорово, если у вас уже есть идеи, которые вы сможете реализовать — обязательно напишите о них в форме.
Мы внимательно изучим все заявки и свяжемся с теми, у кого есть релевантный опыт. После расскажем, как мы можем работать над проектом вместе, добавим вас на Github, проинструктируем, дадим всю необходимую документацию и введем в проект. При этом условия сотрудничества могут быть самые разные: от фулл-тайм работы внутри нашей команды до волонтерства в качестве хобби.
Dev Kit для железячников
Для тех разработчиков, которые отважатся принимать участие в железной разработке, то есть тестировать физическую часть радио модуля, отлаживать NFC/RFID, разрабатывать антенны и т.д. мы предусмотрели специальный dev kit. Это будет версия Флиппера без корпуса в специальной оснастке для удобства подключения к отладочным инструментам.
Такой набор сложно будет использовать для чего-то кроме разработки на столе, при этом в нем наверняка будут баги. Поэтому не нужно обольщаться и думать, что таким образом можно будет получить свой Флиппер раньше остальных.
Разработчикам модулей
По нашей задумке, функции Флиппера могут расширяться с помощью аппаратных модулей. Сейчас у нас нет ресурсов заниматься разработкой модулей, поэтому мы готовы полностью отдать эту задачу сообществу. Это может быть совершенно любой модуль, например CAN Bus, Холл сенсор, логический анализатор, датчики окружающей среды, датчик шума, модем, LoraWAN, IMU, FM передатчик и ещё целая куча возможных опций, на которые только хватит фантазии.
Если вы большая коммерческая компания или скромный DIY-энтузиаст, и у вас есть идея железного модуля для Флиппера, мы готовы дать вам все необходимые 3D модели и документацию для разработки модулей и активно помогать с нашей стороны.
Первые 10 готовых модулей мы будем поддерживать своим медиа-ресурсом на наших сайтах и во всех рекламных материалах Флиппера. Поэтому все, кто знают про Флиппер, также узнают про ваши модули. Для того чтобы принять участие в разработке модулей, заполните эту форму.
Большая часть нашей команды говорит на русском, поэтому нам будет легче работать с русскоговорящими людьми. Однако все issues, комментарии, документацию нужно будет вести на английском, так как проект международный.
Я обещаю, что все этапы дальнейшей разработки я буду подробно описывать здесь. Надеюсь, у меня получится попасть в Китай и вести прямой репортаж с завода, показывать как будет производиться Флиппер изнутри. Отдельно мы готовим обучающие материалы для изучения цифровых протоколов, основ электроники и программирования, чтобы новички могли использовать Флиппер как платформу для обучения.
С международной аудиторий я общаюсь на английском через твиттер @zhovner.
Глупые фотографии и видео я публикую в инстаграм @pzhovner.
Автор: Павел Жовнер