- PVSM.RU - https://www.pvsm.ru -

Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы

Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 1

Flipper Zero [1] — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1 [2]],[2 [3]],[3 [4]],[4 [5]],[5 [6]],[6 [7]],[7 [8]],[8 [9]],[9 [10]],[10 [11]],[11 [12]],[12 [13]]

Мы изо всех сил готовимся к старту массового производства, но на пути возникают шероховатости. Нам посчастливилось, что наше производство приходится на один из самых крупных кризисов в поставке электронных компонентов за последние пару десятков лет. Вы можете наблюдать это, например, по ситуации с видеокартами. Также нам пришлось переделать Sub-1 GHz тракт, чтобы он соответствовал требованиям регулятора, и антенна не отваливалась от ударов. В посте я расскажу, что мы делаем сейчас, как движется разработка, как выглядит подготовка к доставке, и покажу пару новых классных фич.

Трудности с сертификацией Sub-1 GHz

Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 2Как мы писали ранее, для того чтобы официально ввозить устройства в Евросоюз, США, Японию, Австралию, нам нужно получить сертификат соответствия радиочастотным нормам в этих странах. Наш первый дизайн тракта Sub-1 GHz не проходил сертификацию из-за паразитных гармоник, превышающих допустимый уровень. В итоге нам пришлось сильно переделать дизайн всего тракта. Это отняло много времени, потому что необходимо было добиться одинаково хорошего качества передачи на всех 3 поддерживаемых диапазонах: 315, 433, 868 MHz.

image
Гармоники в диапазоне 315 MHz

Были даже совсем экзотические варианты: разделить антенну на несколько сегментов и подключать разные ее части с помощью переключателей на GPIO. К счастью, такое усложнение не потребовалось, а новый дизайн отвечает всем формальным требованиям.

image
Вариант дизайна антенны из нескольких частей

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

image
Клейкая подложка для фиксации антенны убирает вибрации

flipperzero new design sub1ghz antenna
Старая антенна Sub-1 GHz могла оторваться при вибрациях и падениях. В новом дизайне 2 точки крепления

Уникальное имя

imageТак выглядит паспорт дельфина, в котором теперь указано его имя

Каждый микроконтроллер STM32WB55 внутри Flipper Zero имеет уникальный серийный номер в шестнадцатиричном формате. Но это скучно и мы решили дать каждому Флипперу уникальное читаемое имя. Для этого мы взяли нейронную сеть, натренированную на именах покемонов, и сгенерировали словарь из 1 миллиона имен. Для большей уникальности имена разбавлены 1337-спиком [14].

Иногда нейронная сеть генерировала очень провокацинные имена. Пришлось долго настраивать фильтры, чтобы убрать имена похожие на ругательства. Но весь миллион именем просмотреть нереально, поэтому есть риск, что вам достанется Флиппер с именем вроде Loh4mo.

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

Уникальный путь к порту в macOS

Это имя передается в дескрипторе USB как серийный номер в формате flip_NAME. В macOS этот серийный номер дописывается к имени последовательного порта и получается: /dev/tty.usbmodemflip_Oleg

Flipper Zero unique  USB port name in macOS

Разработка интерфейса

Прошивка — это самая масштабная часть работы в проекте Флиппера. Над ней трудятся сразу несколько команд: программисты, UI/UX-проектировщики, дизайнеры. Дизайн интерфейса осложняется тем, что у Флиппера маленький экранчик (всего 128х64 px) и только 5 функциональных кнопок, не считая кнопки Back. Это порождает необычный процесс проектирования интерфейсов. Мы выработали такой порядок:

  1. Сперва интерфейс проектируется в виде майндмапов в Miro [15]. В этом месте происходит обсуждение, проработка разных концепций, споры и т.д.
  2. Утвержденный интерфейс разбивается на конкретные экраны и отрисовывается в виде картинок 128x64 в фотошопе в формате BMP.
  3. Дальше ассеты (наборы графики) конвертируются из BMP в XBM и передаются программистам вместе с инструкциями как нужно реализовывать интерактивные элементы, вроде клавиатуры и диалоговых окон. В процессе реализации интерфейса часто возникают ситуации, когда существующая библиотека для графики не позволяет реализовать что-то, тогда приходится решать, переделывать ли интерфейс, или дорабатывать графическую библиотеку.

image
Структура приложения RFID в Miro

Кроме самого дизайна экрана необходимо придумывать логику перемещения между разными состояниями, таймауты, индикацию (вибрация, пищалка, статусный светодиод), механизмы работы персонажа дельфина, очки за совершение действий и бездействие. Эта логика тоже отражена в карте приложения.

image
Пример логики перехода между экранами и уведомлений

Блокировка экрана и новый UI главного экрана

Полностью переработан главный экран и быстрый доступ к функциям.

  • ↑ Вверх — меню блокировки.
  • → Вправо — взаимодействие с дельфином.
    Можно посмотреть профиль, поиграть и покормить пацана.
  • ↓ Вниз — быстрый доступ к инвентарю
    Ключи из всех приложений сохраняются в архив, по которому можно быстро перемещаться, чтобы сразу иметь доступ ко всем ключам из разных приложений: iButton, RFID/NFC, Infrared и т.д.

Демонстрация функции блокировки экрана и новые окна главного экрана

Приложение qFlipper

image
Приложение qFlipper для обновления прошивки, радиостека, загрузчика и трансляции экрана Флиппера на компьютер

Мы разрабатываем свою утилиту для прошивки Флиппера на Qt и C++. Она будет нативно работать на всех десктопных платформах. Еще эта утилита умеет захватывать фреймбуфер экрана Флиппера и транслировать его на экране компьютера. Это позволяет делать качественные скринкасты вместо того, чтобы снимать Флиппер камерой. Это удобно для записи инструкций и обучающих материалов.

Через qFlipper можно транслировать экран Флиппера в реальном времени на компьютер

Обновление прошивки из браузера

image
Обновить прошивку Flipper Zero можно через браузер без сторонних программ. Поддерживается Chrome, Opera, Microsoft Edge

Оказывается, есть такая штука, как WebUSB [16] — позволяет прямо из браузера общаться с USB-устройством. У нас получилось успешно обновить прошивку Флиппера через специальную страницу Web DFU-Util [17] Пока поддерживается только в Chrome, Opera, Microsoft Edge.

Это безумно круто, потому что позволяет пользователю прошить свой Флиппер, вообще не скачивая никакие файлы из интернета! В итоге релизы альтернативных прошивок будут выглядеть так:

  1. Чувак форкает репозиторий с прошивкой Флиппера сразу вместе с файлами для WebUSB
  2. Делает свою сборку от Васяна и одной кнопкой создает страницу на GitHub Pages, куда выкладывает бинарник своей прошивки
  3. Любой желающий может зайти на его сайт и в один клик прошить свой Флиппер его прошивкой

Начинаем открывать исходники

Схема Flipper Zero теперь публична

Мы постепенно начинаем выкладывать исходники проекта. Сейчас уже опубликована принципиальная схема всего Flipper Zero в виде каждой отдельной платы. Мы просим вас изучить схему и написать обо всех замечаниях в комментариях.

Исходники схемы [18]

Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 15
Мы также опубликовали чертежи и обновили 3D-модели корпуса и референсного модуля Флиппера.

Они доступны в документации [19] и отдельном репозитории [20].

Эти модели уже очень близки к финальным, хоть и могут незначительно измениться перед процессом литья.

Мы продолжим открывать исходники проекта, и к моменту отправки основной волны устройств опубликуем все оставшиеся части проекта.

Упаковка и логистика

Готовим упаковку. Мы выбрали самый простой, дешевый и экологичный картон с черно-белой печатью. От упаковки требуется быть максимально компактной и при этом уберечь устройство внутри от падений, ударов и сжатий.

Внутри коробки находится вставка из упругой пенки, куда укладывается сам Флиппер. Под ним будет находиться Type-C кабель.

Важно, чтобы устройство внутри было зафиксировано неподвижно, иначе от тряски могут быть потертости. Чтобы проверить это, устройство проходит ряд тестов на безопасность транспортировки, в том числе на вибрационном стенде.

image
Тестовые образцы коробки. Финальная версия будет аккуратной, а изображение может отличаться

Если вы хотите принять участие в дизайне коробки, вот исходники cdn.flipperzero.one/Flipper_zero_Box_Template.zip [21] Свои варианты можете выкладывать в комментариях.

image
Исходники дизайна коробки для желающих предложить свой вариант оформления

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

Мы будем отправлять Флиппер в транспортном режиме, когда питание процессора оставлено только на RTC, то есть сохраняется состояние внутренних часов. Чтобы включить устройство, нужно будет зажать кнопку Back.

Заполнение адресов и оплата доставки

imageНа сегодняшний день 92% бэкеров заполнили адрес доставки в пледж-менеджере [22]. Около 3 тысяч бэкеров до сих пор не закончили опрос. Если вы до сих пор не заполнили свои данные, пожалуйста, сделайте это. Нам важно точно рассчитывать количество черных и белых корпусов для производства, а также регионы, в которые поедут посылки.

BackerKit работает точно так же как Кикстартер: в форме вы просто указываете карту, а списание произойдёт массово и позднее. В пледж-менеджере можно добавить в заказ дополнительных Флипперов, чехол и прочие аксессуары. Даже если вы завершили заполнение формы, любые поля в ней можно изменить, пока мы не заблокируем заказы, о чём предупредим заранее.

Подробнее описывали процесс в англоязычном посте [23].

image
8% бекеров не закончили ввод адреса и карты для оплаты доставки в пледж-менеджере

В середине апреля мы начнем списывать деньги с ваших карт за доставку и аксессуары. До этого момента вы можете свободно изменять адрес доставки, выбранные цвета, набор аксессуаров в заказе. Поменять можно даже страну доставки. За несколько дней до блокировки заказов и списания денег мы пришлем письмо, чтобы не застать вас врасплох. И всё же, не зевайте.

Отладочный модуль ST-Link V3

image
Модуль отладчика для Flipper Zero на базе ST-Link V3

Для всех желающих разрабатывать модули под Флиппер мы опубликовали исходники референсного модуля отладочной платы на базе STLink V3. Доступны полные исходники проекта в Altium, наша библиотека компонентов и чертежи механики.

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

— Алло, мы ищем таланты!

imageМы постоянно ищем инженеров и менеджеров в нашу дружную команду. Весь список вакансий можно посмотреть здесь [24].

C Разработчик (Embedded) / Middle

Прошивка — очень масштабная часть, состоящая из операционной системы на базе FreeRTOS и большого числа отдельных приложений, поэтому мы постоянно набираем новых разработчиков для ее реализации. Нам нужен человек, который уверенно умеет в C и хорошо знаком с эмбеддом. Полное описание вакансии: career.habr.com/vacancies/1000068496 [25]

QA-инженеры / Тестировщики ПО (Embedded)

Тестирование — объемная часть, которая невероятно важна на всех этапах создания Flipper Zero. Сейчас наши разработчики активно выкатывают новые версии софта и железа, поэтому в нашу команду нужен Middle и Juior QA-инженеры. Полное описание вакансий:

career.habr.com/vacancies/1000071996 [26]
career.habr.com/vacancies/1000071987 [27]

Project Manager

Наш проект состоит из большого количества систем, каждой из которых занимается один или несколько людей. Мы ищем человека, который поможет успевать со всеми задачами, синхронизировать команды и держать планирование под контроллем. Полное описание вакансии: career.habr.com/vacancies/1000063748 [28]


Наши соц.сети

Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 22 [29]     Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 23 [30]      Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 24 [31]     Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 25 [32]     Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 26 [33]    Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы - 27 [34]

Все характеристики Flipper Zero на официальном сайте [35].
Наш англоязычный блог [36].

Автор: Павел Жовнер

Источник [37]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ble/362691

Ссылки в тексте:

[1] Flipper Zero: https://flipperzero.one/

[2] 1: https://habr.com/ru/post/477440/

[3] 2: https://habr.com/ru/post/490196/

[4] 3: https://habr.com/ru/post/496984/

[5] 4: https://habr.com/ru/post/513074/

[6] 5: https://habr.com/ru/post/514326/

[7] 6: https://habr.com/ru/company/flipperdevices/blog/522964/

[8] 7: https://habr.com/ru/company/flipperdevices/blog/523558/

[9] 8: https://habr.com/ru/company/flipperdevices/blog/528808/

[10] 9: https://habr.com/ru/company/flipperdevices/blog/530886/

[11] 10: https://habr.com/ru/company/flipperdevices/blog/532028/

[12] 11: https://habr.com/ru/company/flipperdevices/blog/538516/

[13] 12: https://habr.com/ru/company/flipperdevices/blog/546550/

[14] 1337-спиком: https://lurkmore.to/Leet

[15] Miro: https://miro.com/

[16] WebUSB: https://wicg.github.io/webusb/

[17] Web DFU-Util: https://devanlai.github.io/webdfu/dfu-util/

[18] Исходники схемы: https://docs.flipperzero.one/ru/development/hardware/schematic/

[19] документации: https://docs.flipperzero.one/ru/development/mechanics/blueprints/

[20] отдельном репозитории: https://github.com/Flipper-Zero/flipperzero-3d-models

[21] cdn.flipperzero.one/Flipper_zero_Box_Template.zip: https://cdn.flipperzero.one/Flipper_zero_Box_Template.zip

[22] пледж-менеджере: https://flipperzero.backerkit.com

[23] англоязычном посте: https://blog.flipperzero.one/complete-the-order/

[24] посмотреть здесь: https://career.habr.com/companies/flipper-devices

[25] career.habr.com/vacancies/1000068496: https://career.habr.com/vacancies/1000068496

[26] career.habr.com/vacancies/1000071996: https://career.habr.com/vacancies/1000071996

[27] career.habr.com/vacancies/1000071987: https://career.habr.com/vacancies/1000071987

[28] career.habr.com/vacancies/1000063748: https://career.habr.com/vacancies/1000063748

[29] Image: https://t.me/zhovner_hub

[30] Image: https://instagram.com/flipper_zero/

[31] Image: https://fb.com/flipperzero

[32] Image: https://twitter.com/flipper_zero

[33] Image: https://flipperzero.one/discord

[34] Image: https://www.youtube.com/channel/UCfKVWB_pOfsY-HQ2siMBn6g

[35] официальном сайте: https://flipperzero.one

[36] англоязычный блог: https://blog.flipperzero.one

[37] Источник: https://habr.com/ru/post/547844/?utm_source=habrahabr&utm_medium=rss&utm_campaign=547844