Русский
Русский
English
Статистика
Реклама

Flipperzero

Flipper Zero прогресс за сентябрь

11.10.2020 22:19:02 | Автор: admin

Flipper Zero проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4],[5]

В этом выпуске: Системное API, Набор для разработчиков, Улучшения в механике и электронике, Обновления в GPIO, Новая функция в NFC, Удаленный тестовый стенд.

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


Системное API




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

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



За это время мы активно работали над внутренностями: писали бутлоадер, рефакторили код операционной системы, писали драйвера периферии, проектировали API пользовательских приложений. Также рефакторинг затронул систему сборки и зависимостей, переработан код пользовательского интерфейса. Наиболее важные изменения произошли в стеке нашей разработки: мы обновили используемый CMSIS RTOS до второй версии и привели наш код к использованию единого API. Новый API пользовательских приложений сделал большой шаг в сторону беты и мы надеемся открыть его публично в ближайшем будущем.

Улучшения механики и электроники



Новые комплектующие и дизайн корпуса

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

Мы перенесли модули RFID и NFC на отдельную плату под аккумулятором. Она подключена к материнской плате кабелями FPC.

Новый кнопочный механизм



Новые подпружиненные кнопки

Добавили пружины в джойстик для лучшего тактильного отклика.

Your browser does not support HTML5 video.

Как проходят тесты механики кнопок

Сменный аккумулятор




Несъемные аккумуляторы это бич современных устройств. Мы решили не использовать запаянную батарею и взяли батарею с трехконтактным разъемом, чтобы пользователи могли заменять её самостоятельно. Для большей ремонтопригодности мы планируем продавать отдельные компоненты Флиппера, в том числе и батарею, прямо на сайте.

InfraRed переместился на угол




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

Больше GPIO



Переделали распиновку GPIO. Добавилось ещё два контакта GND их много не бывает.

Новая фича: USB NFC Reader




Ресурсоемкие задачи вроде криптографических атак нельзя выполнить напрямую на Флиппере. Для некоторых недостаточно даже Raspberry Pi нужен полноценный мощный десктопный процессор. Например:

  • Атаки на Mifare classic: mfoc (nested), mfcuk (Dark Side)
  • Атака на Mifare Plus: Hard Nested


Мы решили добавить возможность использовать Флиппер в качестве обычного USB NFC-адаптера вместе с библиотекой LibNFC. В итоге все существующие программы, работающие через LibNFC, будут работать сразу из коробки без модификаций. В этом режиме все команды с ПК будут проксироваться непосредственно на NFC-чип ST25R3916 через USB-интерфейс.

Главная проблема этой задачи в том, что библиотека LibNFC жестко прибита гвоздями к чипам NXP PN5xx, и в новом драйвере придется по сути эмулировать поведение чипа PN53ххх, но это не так страшно.

Flipper Zero Девкит




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

Flipper Lab



За кулисами Flipper Lab

Пока пишется код, его нужно постоянно тестировать. Задача усложняется тем, что тесты нужно выполнять на реальном железе и взаимодействовать с реальным миром. Для этого был сделан удаленный тестовый стенд, который интегрируется с CI-скриптами через GitHub Workflow. При каждом коммите в прошивку она автоматически собирается и заливается в девайс, после чего выполняются тесты, результаты которых выплевываются в UART: так можно понять какие тесты завершились успешно. Пока это работает криво, но в дальнейшем так мы будем проверять все функции: принимать/отправлять радио, считывать/записывать NFC карты, передавать/принимать ИК-сигнал и т.д.

Это такой же dev kit для разработчиков. Физические кнопки подключены через реле, что позволяет управлять ими удаленно. Изображение с экрана снимается камерой и транслируется на сайте в режиме реального времени. Через веб-морду можно залить прошивку вручную и потыкать на кнопки, если даже у разработчика нет устройства под рукой.


Макет интерфейса испытательного удаленного стенда Flipper Zero

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

  • Загрузить собственную прошивку или плагин на живой образец Flipper Zero
  • Просматривать логи в режиме реального времени и даже отправлять UART-сообщения на Flipper
  • Нажимать все кнопки удаленно
  • Тестировать периферийные устройства с помощью, например, физических карт RFID и тегов iButton


Live-апдейты в Discord




На нашем Discord-сервере мы добавили прямую трансляцию обновлений внутри проекта. Вы можете узнать, как идут дела у разработчиков, в режиме реального времени с новым каналом #updates, где видно коммиты, попадающие в репозиторий.

Сейчас на сервере более 6 тысяч участников!

Присоединяйтесь к нашему серверу Discord, чтобы:


  • Общаться с нашими инженерами и бэкерами
  • Следить за ходом разработки в реальном времени с каналом #updates
  • Обсуждать варианты использования Flipper Zero
  • Познакомиться с тысячами гиков
  • Получить доступ к секретному каналу только для бэкеров (свяжитесь с @Backers Bot в личных сообщениях, чтобы получить роль)


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





Ранее мы запустили программу Flipper Developer Program и получили около тысячи откликов. Нескольких разработчиков мы пригласили в полузакрытый репозиторий с прошивкой.

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

Все открытые вакансии мы публикуем здесь: flipperdevices.com/jobs

Подробнее..

Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero

09.06.2021 22:15:01 | Автор: admin


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

iButton это общее название для формата электронного ключа в форм-факторе металлической таблетки. Еще его называют Dallas Touch Memory. Часто его ошибочно называют магнитным ключом, но это неправильно, ничего магнитного в нем нет. Внутри iButton полноценный микрочип, работающий по цифровому протоколу.
В статье разберемся что такое формат ключей iButton от физического устройства до протоколов, а также трюки, которые можно с ним делать при помощи Flipper Zero.

Что такое iButton


Название iButton это продукт фирмы Dallas Semiconductor, в 1991 году выпустившей на рынок ключ под торговой маркой Touch Memory, потом замененной на iButton.


Схематическое устройство ключа iButton: в центре корпуса контакт плюс, потом пластиковая изоляция, и внешняя часть корпуса это минус

Обычно под словом iButton принято понимать именно физический формфактор ключа и считывателя круглая таблетка с двумя контактами. Существуют разные вариации оправ самой таблетки. Кроме привычного пластикового держателя с отверстием бывают варианты в виде колец, кулонов и т.д.

Внутреннее устройство iButton: внутри металлической оболочки находится микрочип

Считыватель


При поднесении ключа к считывателю, контакты соприкасаются и на ключ подается питание. Далее осуществляется передача ID ключа. Иногда ключ не считывается сразу, потому что внешние контуры ключа и считывателя не соприкоснулись. В этом случае нужно упереть ключ в одну из стенок считывателя.

Касание контактов iButton ключа с домофонным считывателем

В формфакторе таблетки iButton бывают не только простые ключи с ID, но и климатические датчики, устройства для хранения криптографических ключей со своей батарейкой, часами и прочими наворотами. Эти устройства выглядят также как ключи, но ими не являются.

Как устроен iButton во Flipper Zero


Разработка контактной площадки iButton во Flipper Zero это огромная боль. Дело в том, что не существует готовых контактных площадок для одновременного чтения и эмуляции. Если бы мы просто взяли существующие модули, из флиппера бы торчала огромная металлическая кнопка, и рядом такая же огромная площадка для считывания. Это бы многократно увеличило размер устройства.

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


Прототипы конструкций контактной площадки iButton во Flipper Zero, которые мы печатали на 3D-принтере в процессе разработки

Самая большая сложность конструкции контактной площадки в эмуляции, когда флиппер сам выступает ключом и его нужно прикладывать к домофону. Каждый производитель изобретает собственную конструкцию считывателя, из-за этого постоянно находятся домофоны в которых конструкция не работает: пины просто не дотягиваются либо до центрального контакта Data+, либо до бокового контакта GND.

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

Финальная конструкция получилась компромиссной: 100% ключей считывается успешно, примерно 80% считывателей успешно работают с эмуляцией. В оставшихся 20% считывателей приходится корячиться, чтобы контакт достал до нужных стенок. Для этих редких случаев можно использовать внешние контакты GPIO, на которые выведены контакты ibutton: подключиться макетными проводами и ткнуть их в считыватель.

Режим считывателя


В режиме считывателя флиппер ожидает поднесения ключа, при этом готов прожевать сразу три типа ключей: Dallas, Cyfral, Metakom. Флиппер сам определит тип ключа при чтении. Название протокола ключа отобразится на экране над ID номером.

Чтение ключа ibutton формата Dallas. Прочитанный ключ сохраняется на SD-карту.

Для считывания ключа необходимо зайти в меню iButton > Read и приложить читаемый к контактной площадке. Считанный ключ можно сразу эмулировать, записать на болванку, либо сохранить на SD-карту. Хоть контактная площадка находится на задней стороне от экрана, можно быстро наловчиться читать ключи не разворачивая флиппер, просто на ощупь.

В режиме чтения iButton используются два правых контакта Flipper Zero

Режим эмуляции iButton


В режиме эмуляции ключа, Флиппер сам выступает ключом и программно эмулирует ключ iButton из памяти. ID ключа для эмуляции во Flipper Zero можно добавить двумя способами:

  • Считать существующий ключ сохранить ID ключа на SD-карту и выбирать нужный ключ в любой момент
  • Вручную ввести ID ключа даже если в руках нет нужного ключа, но его ID известен, его можно ввести вручную. Так, например, можно сфотографировать ID ключа и отправить его другу с флиппером, без необходимости передавать физический ключ


Для запуска эмуляции ключа нужно зайти в меню iButton > Saved, выбрать нужный ключ и запустить Emulate. На экране появится надпись с ID ключа, который эмулируется. После этого можно подносить Флиппер к считывателю. Важно помнить, что в этом режиме используются другие пины на контактной площадке Флиппера.

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

В режиме эмуляции ключа iButton Флиппер нужно подносить к домофону как ключ. При этом нужно убедиться, что оба контакта коснулись контактной площадки считывателя.

iButton через внешний GPIO


Контакт iButton на нижней крышке также выведен на гребенку GPIO. Это можно пользовать для подключения к нестандартным считывателям, ключам, любым устройствам работающим по протоколу 1-Wire вроде датчиков. Мы используем эти контакты для анализа сигналов через осциллограф. При этом, этот контакт не совсем честный GPIO, потому что имеет подтяжу к 5V.


Контакты iButton соединены с гребенкой GPIO. Порт iButton работает в режиме open-drain и подтянут к напряжению 5 В через резистор 1 кОм.

Протокол 1-Wire



В протоколе 1-Wire всегда есть главное устройство Master и ведомые Slave

Ключи Dallas обмениваются данными по протоколу 1-wire. Всего один контакт на передачу данных(!!) в обе стороны, от мастера к слейву и наоборот. Протокол 1-wire работает по модели Master-Slave. В этой топологии устройство Master всегда инициирует общение, а Slave следует его указаниям.

При контакте ключа (Slave) с домофоном (Master) чип внутри ключа включается, получив питание от домофона и происходит инициализация ключа, после чего домофон запрашивает ID ключа. Далее мы разберем подробно этот процесс.

Флиппер умеет работать в режимах Master и Slave. В режиме чтения ключа Флиппер выступает в роли считывателя, то есть работает как Master. А в режиме эмуляции ключа, флиппер прикидывается ключом, то есть работает в режиме Slave.


При чтении ключа Флиппер выступает мастером, а при эмуляции с домофоном работает как slave

Формат данных в ключе Dallas



Домофон считывает из iButton 8 байт (64 бита) информации, чтобы решить, открывать дверь или нет.

Структура данных этих 8 байт следующая:

  • 1 байт код семейства (Family Code), для iButton он всегда равен 0x01
  • 6 байт серийный номер ключа
  • 1 байт контрольная сумма СRC




Код семейства у ключей Dallas всегда 0x01. Если у вас этот код отличается, то скорее всего, это не ключ от домофона.

Серийный номер в некоторых случаях выгравирован на ключе, но может:

  • Не содержать все 8 байт
  • Иметь последовательность символов задом-наперед
  • Иметь начало в непонятном месте


На оригинальном ключе iButton выгравирован ID, но его формат записи немного отличается от представления Флиппере: сперва идет family code, потом инвертированный серийный номер, потом контрольная сумма

На картинке выше показан неочевидный пример гравировки ID на оригинальном ключе iButton. В нем читать байты нужно справа налево, контрольная сумма написана слева, а family code справа.

Ошибки чтения



При некорректном чтении ключа Flipper Zero сообщает об ошибках. Возможные ошибки:
  • Некорректная контрольная сумма ошибка в CRC
  • Неправильный код семейства когда family code отключается от 0x01, Флиппер ругается что это не ключ iButton.


Возможные ошибки при чтении ключей Dallas: неправильный байт CRC CRC ERROR; байт Family-code не равен 0x01 THIS IS NOT A KEY.

Ввод ID вручную


Если ID ключа известен, его можно ввести во Флиппер вручную. Это удобно когда самого физического ключа нет, например можно передать нужны байты просто в чате или скинув другу фото. На видео показан пример создания нового ключа Cyfral из 2 байт. Новый сгенерированный ключ сохраняется на SD-карту.


Создание нового ключа вручную с помощью ручного ввода айдишника

При создании ключа нужно выбрать его тип: Dallas, Cyfral или Metakom. От этого будет зависеть длина ID и протокол, используемый при эмуляции. После ввода ID Флиппер предложит ввести имя нового ключа, либо использовать сгенерированное.

Запись ключей 1-Wire Dallas


Существуют ключи Dallas, которые можно записать и которые нельзя. Популярные перезаписываемые iButton болванки: RW1990, TM2004, TM01C. Процесс записи имеет свои нюансы, разберем их.

Запись болванки может требовать повышенного напряжения например, для записи менее популярной RW2000 требуется напряжение 8 В (правда это Cyfral, но смысл понятен).

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

Существуют болванки, которые могут подходить ко всем типам ключей(Dallas/Cyfral/Metakom).

Запишем ключ домофона на болванку.



Чтобы записать ключ нужно из раздела iButton зайти в Saved и выбрать ключ. После чего перейти в раздел Write и прислонить перезаписываемый ключ к контактной площадке.

Русские народные ключи Cyfral, Metakom




Протоколы Metakom и Cyfral отечественные русские изобретения. Не популярны в мире.

В отличие от ключей Dallas, они работают не по напряжению, а по току. Это менее распространенные и более дорогие ключи. Они очень чувствительны к параметрам ключа (частота, сила тока, амплитуда сигнала и пр.), из-за чего изготовление дубликатов может стать капризным процессом.

Cyfral и Metakom не принимают никакие команды. При подаче питания на ключ, он сразу начинает бесконечно посылать ID за счет изменения сопротивления. Таким образом, логические уровни определяются по сопротивлению ключа. По документации ключей условно принимается, что информационные слова кода выдаются начиная с младшего бита.
В интернете есть документация на данные ключи;)

Cyfral




Логические уровни в Cyfral, так же как и в Dallas имеют временные ограничения: если сопротивление остается низким около 50 мкс это логический 0, если 100 мкс это логическая 1.

Формат передаваемых данных специфичен.
Cyfral циклично отправляет 9 нибблов (1 ниббл = 4 бита): 1 стартовый и 8 ID. Нибл может иметь всего 4 значения для ID и одно значение для стартового слова. Все остальные записи некошерные.



В итоге ID записывается в 2 байта (Всего 8 нибблов ID. 4 ниббла = 16 состояний = 1 байт информации).

Бывает, что домофоны Cyfral занимаются проверкой ключа, подавая некорректные данные.
У Cyfral нет никаких контрольных сумм. Хочешь убедиться прочитай ключ еще раз, а хочешь пять. Так как сигнал аналоговый, то чтение сигнала требует наличия АЦП или компаратора. Проще всего использовать компаратор, выход которого является низким или высоким уровнем напряжения.
С эмулированием ключа на практике проблем не возникает. Замыкания на землю (отсутствие сопротивления) вполне достаточно, чтобы ключ выдать логический 0.

Metakom




Ключ Metakom посылает 4 байта, где каждый байт заканчивается битом четности.
Metakom имеет 3 примитива передачи:
Синхронизирующий бит;
Бит 0;
Бит 1;

Структура посылки выглядит так:
Синхронизирующий бит;
4 байта информации;
+ 7 бит данных;
+ 1 бит четности.

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

Смотрим на 1-Wire через осциллограф




Линия передачи устроена по принципу монтажного И и может иметь одно из двух состояний: логический 0 и логическая 1.
Устройства (ключи и домофон) имеют внутренние транзисторы, которые в нужное время подтягивают линию к нулю. Вся линия передачи переходит в состояние логического 0, если любое из устройств перевело ее в нуль, т.е. если домофон перетянул линию в нуль ключ об этом узнает, и наоборот.

С помощью перетяжек напряжения и удержания уровней 1-wire имеет 4 примитива для работы на шине:
  • импульс сброса (RESET);
  • импульс присутствия (PRESENCE);
  • отправка бита 0;
  • отправка бита 1 и она же по совместительству чтение бита.



Чтение ключа Dallas на Flipper. Состоит из команд Search ROM и Read ROM. Каждая команда имеет Reset sequence.

Чтение ключа на Flipper Zero устроено так: поиском проверяется наличие ключа, а затем происходит чтение ID. Это сделано, чтобы избежать случайных совпадений с другими ключами Cyfral/Metakom, тайминги которых могут случайно совпасть с требуемыми.

На осциллограмме виден длинный сигнал из 2 команд, где каждая состоит из:
  • Инициализации команды:
    • Импульс сброса;
    • Импульс присутствия;

  • Передачи команды для Slave;
  • Ответа Slave на принятую команду.


Разберем более детально каждый из пунктов.


Reset sequence инициализация команды. Состоит из Импульса Сброса и Импульса Присутствия. Импульс Сброса уровень опускает Master. Импульс Присутствия уровень опускает Slave.

Инициализация (reset sequence) состоит из двух импульсов:
  1. Импульс Сброса (Reset pulse);
  2. Импульса Присутствия (Presence pulse).

Для Импульса Сброса линию к земле подтягивает Master (домофон).
Для Импульса Присутствия линию к земле подтягивает Slave (ключ).

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


Команда чтения ID с ответом. Тайм-слот бита информации состоит из 2 участков: синхронизации и значения бита. В КОМАНДАХ за уровни напряжения на обоих участках отвечает Master. В ОТВЕТЕ на команду чтения за синхронизацию отвечает Master, за значение бита отвечает Slave.

После инициализации команды происходит обмен информацией:
  • отправка команды для Slave;
  • ответ Slave на команду.


Обмен информацией ведется тайм-слотами: один тайм-слот для обмена одним битом информации. Данные передаются бит за битом, начиная с младшего бита младшего байта.
Синхронизация Master и Slave происходит в одно действие: Master (домофон) подтягивает линию к низкому уровню. Далее через конкретное время, Master или Slave измеряет напряжение на линии и записывает бит информации (Master при чтении ключа, Slave при записи ключа). Правила выдержки временных интервалов для команд чтения и записи одинаковы. Каждый тайм-слот синхронизируется независимо, поэтому передача информации может приостанавливаться, не вызывая ошибок.

Важно, что все сигналы имеют конкретные временные ограничения, которые обязательно должны быть соблюдены! Бывает, что производители домофонов упарываются, и соблюдают какие-то свои временные задержки, но на Руси дураков не бьют, и мы их трогать не станем.
Еще у iButton есть режим Overdrive, в котором временные задержки сокращены, из-за чего передача информации происходит быстрее. Есть вероятность, что в дикой природе существуют домофоны, работающие в этом режиме Но на практике они не встречались.

Стандартные команды 1-wire ключей Dallas


Для iButton характерны команды размером 1 байт (8 бит).
Зачастую домофон использует команды поиска и чтения ID (Search ROM и Read ROM).

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

Стандартные команды iButton для Regular режима следующие:



Бонус про домофонные ключи

Бонус про домофонные ключи


Почему старые домофоны это плохо?


Некоторые старинные домофоны с ключами Dallas имеют в памяти базу ID ключей, заполненную не полностью. Незаполненные поля имеют некоторое значение, иногда соответствующее всем нулям (0x00) или всем единицам (0xFF). Для проверки домофона на дремучесть создаются два ключа: один со всеми нулями, другой со всеми единицами.
Эти ключи содержат неправильный код семейства (не 0x01) и неправильный CRC (вообще не контрольная сумма)!!! Да, бывают и такие исключения.

Как почтальоны разносят по подъездам рекламу?


Никак, почтальоны разносят письма :) Но очевидно, что в почтовом отделении нет огромной связки с ключами для каждого подъезда. Часто используют уникальные ключи, они же вездеходы, подходящие на группу домофонов, например для всего района. Этот ключ может быть один на город, один на группу домов, может быть дефолтным для какой-то модели, а может и вовсе отсутствовать.

Что такое мастер ключ?


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

Играясь заблокировали домофон?


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

Какие болванки нам известны


В ходе работы с iButton мы зафиксировали некоторые известные нам болванки ключей. Вот они, на здоровье!




Наши соцсети


Все обновления по проекту первым делом публикуются в Telegeram-канале @zhovner_hub
Подробнее..

Flipper Zero давайте пилить вместе. Приглашаем разработчиков

10.08.2020 10:05:17 | Автор: admin


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, поэтому для разработки пригодится знание этих языков. Также будет классно, если ты работал с микроконтроллерами и умеешь отлаживать электронику, но мы стараемся отделить железо от кода слоем абстракций, так что многие компоненты, такие как графический интерфейс или поведение дельфина, не потребуют работы с железом. Также нам нужны дизайнеры интерфейсов (разместить на экране 12864 информативный UI не самая простая задача), девопсы и тестировщики (если ты готов тестировать электронику и разбираться с настройкой стендов для удаленной отладки и тестирования).

Самое главное у вас должно быть желание внести свой вклад в разработку. Для участия в проекте заполните форму. Отнеситесь к заполнению формы очень внимательно, это единственный удобный способ для нас понять ваш профессионализм: напишите о своем опыте разработки, укажите только те компоненты Флиппера, которые вам действительно интересно развивать. Будет очень здорово, если у вас уже есть идеи, которые вы сможете реализовать обязательно напишите о них в форме.


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

Dev Kit для железячников


Для тех разработчиков, которые отважатся принимать участие в железной разработке, то есть тестировать физическую часть радио модуля, отлаживать NFC/RFID, разрабатывать антенны и т.д. мы предусмотрели специальный dev kit. Это будет версия Флиппера без корпуса в специальной оснастке для удобства подключения к отладочным инструментам.


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

Разработчикам модулей


По нашей задумке, функции Флиппера могут расширяться с помощью аппаратных модулей. Сейчас у нас нет ресурсов заниматься разработкой модулей, поэтому мы готовы полностью отдать эту задачу сообществу. Это может быть совершенно любой модуль, например CAN Bus, Холл сенсор, логический анализатор, датчики окружающей среды, датчик шума, модем, LoraWAN, IMU, FM передатчик и еще целая куча возможных опций, на которые только хватит фантазии.



Если вы большая коммерческая компания или скромный DIY-энтузиаст, и у вас есть идея железного модуля для Флиппера, мы готовы дать вам все необходимые 3Д модели и документацию для разработки модулей и активно помогать с нашей стороны.

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




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

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

Как со мной связаться
Все заметки по проекту, в первую очередь, я публикую в свой Telegram-канал @zhovner_hub на русском языке.

С международной аудиторий я общаюсь на английском через твиттер @zhovner.

Глупые фотографии и видео я публикую в инстаграм@pzhovner.

Скучные разговоры про бизнес веду в фейсбуке fb.com/zhovner.
Подробнее..

Мои размышления про экранную клавиатуру для Flipper Zero под экранчик 128х64 пикселя

28.08.2020 22:20:21 | Автор: admin

Недавно я увидел пост с приглашением разработчиков в проект Flipper Zero и подал заявку. Меня добавили в репозиторий с прошивкой и я стал много думать над юзабилити устройства. Приснилось, что мне надо отсканировать кучу ключей-брелков от разных подъездов. Во сне были разные люди, квартиры, дождь, и почему-то мне дали целую горсть этих желтых кругляшей, отличающихся друг от друга только количеством грязи на них. И естественно, чтобы как-то совладать с этим беспорядком, я решил внести все эти ключи во Flipper Zero.
Прямо во сне, я заносил новые идентификаторы и все они добавлялись в менюшку как Ключ, что делало действо еще бессмысленней. Получился большой список, состоящий только из слова Ключ. Подумалось, что надо переписать прошивку. И тут как раз преимущество сна все задуманное сбывается одномоментно. Ключи стали добавляться с рандомным суффиксом как Ключ 74, а следом за ним мог добавиться Ключ 22. Номер именно рандомный, не путать с контрольными суммами или хешами. В принципе, если есть хорошая память, то можно запомнить, что Ключ 22 от Ленина 54, а Ключ 74 от Пушкина 29. Подумалось, что неплохо бы как-то редактировать номера, прямо на Флиппере, прямо в списке ключей: у нас же свободны кнопки влево-вправо, пусть они инкрементируют/декрементируют номер! А длинное удержание вызовет вызов полноценной клавиатуры! Но стоп, какую клавиатуру рисовать? Стандартную Qwerty с переключением на Йцукен? Русифицированную Яверты? У нас же экран всего 128х64 пикселя, к тому же в него надо как-то запихнуть еще вывод набираемого! Как все это уместить? Неужели вводить текст Азбукой Морзе?



Примитивная клавиатура



Сказать, что набирать что-либо на такой клавиатуре удобно явно нельзя. Что быстро тоже. Простота и большой набор символов это единственное, что тут можно получить, а в остальном же от такой клавиатуры хочется бежать и не оглядываться. Удивительно, но в прошлом подобный метод ввода был весьма распространен.

Qwerty


Так, а что, если взять стандартную клавиатурку от Андроида, применить эффект линзы и посмотреть, что из этого выйдет? 10 часов в Афтер Эффектсе и вот оно:


У меня был скрипт, который конвертирует графику в CGA-палитру, после обработки получилось такое:


Мне это понравилось, и даже понравились полутона. СТОП. На Флиппере же чернобелый экран! Но зато он обладает энерционностью, а значит можно получить полутона, быстро включая/выключая пиксели. Пришлось изобретать свой вариант дизеринга. В процессе был изобретен Дизеринг Курильщика:


Это вариация дизеринга Баера и немного модифицированной матрицы распределения ошибок Билла Аткинсона. После некоторой отладки и исправления 9000 ошибок, получилось такое:


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

Хм, а если постараться и нарисовать как можно более маленькую клавиатурку?


В принципе, получилось неплохо. Все вмещается, если захотеть. Опционально можно припилить клавишу RUSLAT, как и много других полезных клавиш. Но каких? Залезть в стандарт HID и натырить оттуда клавиши кофе и красная кнопка?

Раскладка


Стандартная раскладка QWERTY имеет следующие особенности:

  1. Предназначена для печатающих машинок, подразумевающие ручной ввод (двух рук)
  2. Предполагается смена рук при наборе текста. Пока одна рука нажимает клавишу, вторая рука готовится к нажатию. Однако, многие слова английского языка могут быть набраны только на левой части клавиатуры.
  3. Диагональное расположение клавиш ведет свою историю от физического расположения рычагов на печатающей машинке


Следующие слова приписываются Августу Двораку:

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


Но так получилось, что ни Дворак, ни его приемник, Колемак, так и не завоевали популярности.
Но вернемся к Флипперу. У нас есть на нем рычаги? Можно ли использовать сразу 2 руки для набора текста? Имеет ли смысл чередовать руки? Хотим ли мы более эффективно задействовать мизинцы, как это рекламирует автор Колемак? Нужна ли нам совместимость с популярными Windows-хоткеями, такими как CTRL+C/CTRL+V? Ответ на все эти вопросы: НЕТ.

Шарики



Я взял пару статей из википедии, скопировал из них текст и посчитал уникальные символы, вот они:

!$%&'(),-./01234567
89:;?ABCDEFGHIJKLM
NOPQRSTUVWXYZ[]a
bcdefghijklmnopqrstu
vwxyz|АБВ
ГДЕЖЗИЙКЛМНОПРС
ТУФХЦЧШЭЮЯабвгде
жзийклмнопрстуфхцч
шщъыьэюяё


Забавно, но тут нету символа двойной кавычки ", зато есть ёлочки.

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



Давайте подумаем, как расположить эти символы на экране, чтобы пользователю было удобнее их вводить?

Самая первая идея: посчитать частоту использования той или иной буквы вместе с соседями. И использовав эти данные, запустить симулятор Шариков, где между шариками есть некоторая сила притяжения, равная частоте использования этих букв по соседству.

Первый опыт был таким:


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

После 9000 часов отладки и боли, была сделана более приятная глазу симуляция:



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



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

С другой стороны, если положить это все в диаграмму Вороного


Выглядит очень круто! Хм, да с такой клавиатуркой можно будет даже оставить Флиппера и начать производство собственных реальных клавиатур! Правда, кому еще нужны клавиатуры для 1-пальцевого ввода? Что мне писать на кикстартере? Пойду плакать в подушку над очередным своим бесполезным изобретением.

Генетика



Ладно, поплакав, я продолжил свои изыскания. За основу я взял прототип китайской клавиатурки:


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

А дальше я просто запустил простой генетический поиск: делал набор для мутаций, отбирал лучшие, делал их родителями следующих поколений. И так пока не зависнет, т.е. не упрется в эволюционную яму.

Было много экспериментов:

  • Сначала я переставлял 2 соседние клавиши местами, а в конце выяснил, что лучше передвигать клавишу по всему полю
  • Количество мутаций в одном поколении варьировал от 30 до 3000. Выяснил, что пусть лучше рожает чаще и чаще дохнет, для эволюции это полезней остановился на 30.
  • Мутировать за раз лучше как можно меньше, таким образом оно сможет более точно подстраиваться на последних этапах, когда все будет почти закончено.
  • Эволюционная яма наступает не сразу, а где-то за 5к итераций до того, как станет очевидной
  • Если уперлись в яму и долго не можем найти новых улучшений, то лучше все бросить и начать с нуля, может быть в этот раз эволюция пойдет лучшим путем. Из-за этого в результатах есть досадные недостатки в виде пары клавиш, которые присутствуют не в своих кластерах


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











Местами мне очень нравится получившийся numpad, местами кириллица и латиница образовали некоторое подобие Инь и Янь, почти везде символы доллара, евро и фунтов находятся рядом, как и символ процента. Номер слева означает, сколько раз надо будет нажать на кнопки джойстика, чтобы набрать тестовый текст. Возможно, если бы я запустил симулятор на недельку, то были бы более интересные варианты, но у меня старенький компьютер для таких экспериментов. А внимательный читатель найдет еще и полупасхалку-полубагу: почти на всех вариантах раскладки присутствует слово KFC, так как обучалось оно на статье про KFC и каких-то теннисисток.
В принципе, меня подмывает взять и переставить некоторые клавиши руками, особенно кириллическую Й, которая вечно оказывается около латиницы, или же латинскую Х, которая порой бывает среди кириллицы, а символы равномерно распределить кругом или ссыпать в кучку, но А что ответит эволюция на это? Насколько эффективным будет такая перестановка? Да, писать интерактивную переставлялку мне было лень. Но оно и к лучшему: теперь я знаю, что даже для кириллицы/латиницы может быть несколько раскладок, а пользователь уж пускай сам выбирает, что ему лучше.

Если интересны другие варианты раскладок, которые сгенерировались за время обсчета, то посмотрите файлы layouts.html и layouts-more.html

Можно экспериментировать достаточно долго, вот идеи для опытов:

  1. Заворачивание краев пространства друг на друга. Т.е. это не курсор двигается по клавиатуре, а клавиатура двигается, причем по мере ухода в одну сторону экрана, она появляется с другой стороны.
  2. Отказ от двумерного пространства и заворачивание плоскости в какой-то трехмерный объект, скажем натягивание на глобус или же еще какую геометрическую фигуру. Возможностей зацикливания пространства становится больше.
  3. Добавление частоиспользуемых символов в нескольких экземляров. К примеру, почему бы не сделать десяток пробелов? Вот в Колемаке есть 2 бекспейса, только в нашем случае умножать стоит скорее пробел.
  4. Добавление частоиспользуемых буквосочетаний, на манер дерева Хаффмана, где длинные последовательности заменяются короткими. В нашем случае частые последовательности букв заменяются одинарными нажатиями
  5. Динамическое подставление символов, предугадывая дальнеший набор текста, как это сделано в Dasher


Если кто не знает про Dasher, то бегом сюда: f-droid.org/en/packages/dasher.android тут все про наш девайс и даже более: ввод текста с джойстиков, трекболов, мышек, глазных трекеров и прочих одноручных, однопальцевых и носимых устройств. Интерфейс может быть запущен хоть в разрешении 32х32 пикселя, и это без потерь для юзабилити. Работало на Pocket PC и пережило долгие годы! Но, как бы я не фанател от этой штуки, не смотря на большой выбор опций, я так и не научился этим пользоваться, ощущая при этом удобство, поэтому для меня это скорее технодемка возможностей, возможности взаимодействия с машиной. Если кто-то хочет портировать Dasher, то милости просим, патчи до сих пор приходят в репозиторий регулярно, думаю будет много желающих, увидеть такую штуку на своем Флиппере.

Сюда же можно занести разнообразные варианты аккордовых клавиатур, или же экранных клавиатур времен Palm, таких как MessagEase. Идея, лежащая в MessagEase замечательная, но проблема в том, что зажатие 2-х кнопок лично для меня неприемлемо, потому лично я превращать Флиппера в аккордовую клавиатуру не буду. Но я уверен, что настоящий хакерский девайс не сможет выжить без аккордовой клавиатуры, потому ее наверняка добавит кто-то еще.

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

Реализация



А в следующей части мы попробуем реализовать все задуманное. Мы напишем небольшой эмулятор и попробуем изобрести API.

На последок, вот вам еще несколько анимаций с концептами клавиатурки:


Клавиатурка, натянутая на то, что в Максе зовется Torus Knot:



А это, попытка натянуть сову на глобус^W^W^Wклавиатурку на сферу. Тут я немного поэкспериментировал с дизерингом, и к Дизерингу Курильщика у меня добавился еще и Дизеринг Эпилептика.


Аналогично предыдущему, только для CGA
Подробнее..

Псс, парень, не хочешь сделать модуль для Flipper Zero?

19.10.2020 16:12:07 | Автор: admin


У Flipper Zero на боку есть отверстия GPIO под стандартную гребенку 2.54 мм, к которым выведены ноги микроконтроллера. Там есть аппаратный SPI, I2C, UART и много другой периферии, доступной в нашем чипе STM32. Эти контакты можно использовать для подключения к сторонним устройствам по промышленным протоколам. На GPIO выведено питание 3.3V и 5V, чтобы можно было питать подключенное устройство сразу от Флиппера.

Подобно Arduino, для Флиппера можно изготовить железные модули расширения с разными интересными функциями. Но в отличие от Arduino, где модули (шилды) это просто голые платы, модули для Флиппера можно сразу сделать продолжением корпуса.

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


Схема распиновки GPIO



Сейчас, пока Флиппер активно разрабатывается, распиновка гребенки GPIO может незначительно меняться. На момент написания статьи она выглядит так:


Кликабельно

Цифровые пины имеют логические уровни 3.3V, но толерантны к входящему сигналу 5V, поэтому можно использовать уже существующие модули от других платформ, например Arduino.

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


Кликабельно





3D-модели


Чтобы разработчики могли сделать правильный корпус для своего модуля, мы публикуем 3D-модели внешних поверхностей Флиппера. Эти модели постоянно изменяются, но мы можем гарантировать, что разработчики будут получать актуальные версии моделей и точно будут знать финальный вариант задолго до массового производства. Актуальные модели находятся в репозитории github.com/Flipper-Zero/flipperzero-3d-models



Важно помнить, что 3D-модели будут меняться и нельзя опираться на эти модели как на финальные. В момент, когда модели будут финализированы, мы объявим об этом отдельно в рассылке.

Как начать разработку модуля





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

Если вы энтузиаст с опытом разработки электроники, но у вас нет понимания, как устроено массовое производство на заводе, вам придется самостоятельно найти партнеров, которые помогут с этим.

1. Обсудите с аудиторией


Сперва нужно проверить интерес пользователей. Для этого у нас есть отдельный раздел на форуме и специальный канал в Discord hw-3rd-party. Почитайте чужие идеи для вдохновения и предложите свою. В ноябре мы опубликуем самые интересные идеи и предложим пользователям проголосовать за них.

2. Посчитайте стоимость и оцените свои силы


Прикиньте примерный BOM и стоимость производства. Намного лучше спрашивать, нужен ли кому-то ваш модуль, показывая стоимость.

3. Согласуйте с нами


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

4. Приступайте к разработке


Мы готовы предоставить все необходимые данные, которые потребуются в процессе разработки: схемы, 3Д-модели, примеры кода, набор для разработчика и даже тестовые образцы Флиппера.

Где деньги?


image
Запуск производства крупной партии электронных устройств требует ощутимых вложений. Мы готовы проконсультировать вас и помочь с построением производственной цепочки. Мы прямо не заявляем, что будем инвестировать в ваш продукт, но, если он ОЧЕНЬ хороший и вы нас убедите, такой вариант не исключается.



Следите за процессом разработки и новостями о Flipper Zero в:
Instagram
Facebook
Англоязычном блоге

Все характеристики Flipper Zero на официальном сайте.
Подробнее..

Flipper Zero план по производству и доставке

21.01.2021 16:23:47 | Автор: admin

Видеообзор свежей версии Flipper Zero

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

На видео показан свежий образец Флиппера. Это фрезерованный корпус, то есть вырезанный из куска пластика и потом покрашенный. Финальный вариант будет отливаться под давлением с покраской в массе, то есть колер будет замешан внутрь пластика. Но финальное устройство внешне будет выглядеть именно так. Флиппер стал немного больше из-за двух дополнительных плат внутри.

В посте расскажем о текущем статусе проекта, задачах и проблемах, грядущем производстве и доступе в pledge manager.


План производства


Будем честны:мы не сможем отправить Флипперы всем бэкерам в феврале. Устройства будут производиться постепенно, начиная с очень маленьких партий, постепенно наращивая объемы. Это сделано, чтобы снизить риски брака. Мы очень хотим сделать крутой продукт, который будет идеальным во всех вопросах, от механики до электроники. Любая ошибка в большой партии будет фатальной, отозвать такую партию будет невозможно.

Учитывая огромные ожидания наших бэкеров, мы просто не можем позволить себе выпустить кривое устройство. Мы будем постпенно производить и отправлять мелкие партии приближенным разработчикам и тем, кто подпишется на программу early adopters. Эти люди будут в роли бета-тестеров, будут устанавливать новые версии прошивки, проводить тесты в полях и присылать баг-репорты. Но прежде чем вписаться в early adopters имейте в виду, вы можете получить устройство, которое будет иметь серьезные баги.



План постепенного производства Флипперов

Мы ожидаем, что первые маленькие партии будут содержать недоработки в механике и электронике, которые проявятся спустя время использования. Например, условно, через месяц использования могут начать залипать кнопки на джойстике, выламываться USB-порт или, например, пого-пины от iButton. Разумеется мы будем выполнять автоматические тесты, но они не покрывают всех потенциальных проблем, которые могут возникнуть. Поэтому мы помечаем такие партии как высокорискованные. К концу весны мы ожидаем получить стабильное массовое производство.

Программа раннего доступа


Если вы готовы рискнуть, чтобы получить Флиппер раньше, записывайтесь в программу раннего доступа. Но вы должны осознавать, что можете столкнуться с браком, механическими недоработками и прочими проблемами. Подать заявку на ранний доступ можно здесь (доступно только бэкерам с Kickstarter).

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


Ранние Флипперы будут отправляться с сырой прошивкой

Репозиторий с прошивкой на Github будет открыт к моменту, когда появится достаточно много разработчиков с Флипперами на руках, чтобы они могли вносить свой вклад в код прошивки. Мы планируем интенсивно поддерживать прошивку в течение минимум 2 лет после выпуска Флиппера, поэтому заранее готовим всех бэкеров, что в момент, когда вы получите устройство, там могут работать не все функции, и они будут допилены со временем в обновлениях прошивки.

Запуск пледж менеджера


В течение нескольких дней мы откроем доступ в личный кабинет, где можно будет выбрать адрес доставки и оплатить ее, выбрать цвет корпуса и добавить больше Флипперов в существующий заказ. Также в заказ можно будет добавить силиконовый чехол и отладочные платы для разработчиков. Сейчас мы заканчиваем прикручивать к пледж-менеджеру API нашего брокера доставки для автоматического расчета налогов и стоимости доставки в зависимости от веса посылки. Это будет готово в течение нескольких дней.


Скриншот страницы пледж-менеджера

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

Текущий статус


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



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

Допиливание широкополосной антенны Sub-1 GHz


Больше всего трудностей сейчас с этой подсистемой. Одновременная поддержка диапазонов от 300 MHz до 900 MHz на одном приемо-передающем тракте очень сложная задача. Мы используем схему с тремя (!) переключающимися радиотрактами и своим дизайном антенны. Трудности такой схемы в том, что она должна проходить по всем нормам сертификации (FCC, EC и прочие), таким как паразитные гармоники, отклонения от частоты и т.д.

Сейчас мы подгоняем характеристики передающего тракта под нормы и стандарты сертификационной лаборатории. Это непростой процесс, который отнимает время.


Элементы Sub-1 GHz модуля

Сертификация

Для того чтобы официально ввозить устройства в страны ЕС и США и продавать его в магазинах вроде Amazon, нам нужно получить сертификат соответствия радиочастотным нормам в этих странах. Дело в том, что для разных стран эти нормы отличаются, и нам нужно сделать несколько разных версий устройств, соответствующих разным нормам. Это юридические задачи, которые сильно далеки от разработки и производства, но которые мы не можем избежать. Они также усложняют логистику, так как порождают несколько разных версий устройства, имеющие разные SKU.

Страна Разрешенные частоты (MHz) Мощность
ЕС/Англия 433.040 434.790 MHz 10 mW
865 868 MHz 25 mW
США 315 MHz 75.62 dBuV/m
433 MHz 80.79 dBuV/m
Япония 312 315.25 MHz 25 uW
Россия 433.075 434.79 MHz
866 868, 868.15 868.55, 868.7 869.2 MHz
10 mW

Механика


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

Пример исправлений, которые присылает литейвая фабрика

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



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

Процесс сборки


Весь цикл от предварительной сборки каждой детали до тестирования должен укладываться в строгие временные отрезки. Если будет отклонение от этого времени, управляемо произвести десятки тысяч устройств не получится. Сейчас сборка одного Флиппера вместе с тестированием и прошивкой должна укладываться в 420 секунд!

Мы готовим процесс и предсобранные части устройства чтобы уложиться в это время. Так выглядят инструкции по сборке.


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


В экранную накладку устанавливаются пружины и кнопки джойстика. Этот элемент состоит из 8 деталей: оснастка, 3 пружины, 3 кнопки (центральная, большой круг, кнопка назад), световод статусного светодиода.


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



В каркас устанавливается плата ibutton, батарея, вибромоторор.


На каркас фиксируется NFC плата и закрепляется защелками.



В целом сборка состоит из 20 шагов, которые в финале завершаются установкой нижней крышки. Дальше устройство отправляется на прошивку и тестирование.

Уникальные компоненты


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

Многополосная Sub-1 GHz антенна


Нужную нам антенну нельзя просто купить, поэтому мы заказываем намотку этой проволочной антенны специально по нашим чертежам. Она должна одновременно хорошо работать на диапазонах от 300 до 900 MHz и при этом умещаться в наш корпус. Сейчас мы проверяем, что изготавливаемые антенны действительно соответствуют нашим требованиям.



Пого-пин iButton


Для iButton pad мы используем пин нестандартной длины, поэтому и его производство нам пришлось заказывать отдельно.



10-пиновая GPIO гребёнка


Этот компонент тоже нестандартный и производится для нас. Для прототипов мы использовали сборку из двух гребёнок на 8 пинов и 2 пина, что для финального устройства не годится. Найти производителя качественных гребенок оказалось не так просто.


Гребёнка из двух частей костыль для прототипа

P.S.


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



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




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

Flipper Zero в шаге от финальной версии железа

19.11.2020 02:23:00 | Автор: admin


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

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

Последние полтора месяца мы активно работали над валидацией железа, стараясь покрыть тестами все сценарии использования и сейчас мы почти готовы залочить BOM и приступить к производству первых 50 Флипперов в формате EVT (Engineering Validation Test). Устройства из первой партии будут отправлены контрибьютерам, которые участвуют в разработке.


Система питания


Подсистема питания во Флиппере намного сложнее, чем может показаться на первый взгляд. У нас используется несколько независимых цепей питания 3.3V для внутренней периферии, и 5V для колебательного контура NFC и выхода внешней гребенки GPIO.

Основные компоненты системы питания

  • BQ25896 контроллер заряда аккумулятора, управляет процессом зарядки
  • BQ27220 (fuel gauge) счетчик входящей и исходящей энергии, следит за состоянием аккумулятора и позволяет определить реальную емкость аккумулятора с учетом износа
  • 2х TPS62743, LM3281 DC/DC преобразователи, они же импульсные конвертеры


image
Схема системы питания Флиппера (кликабельно)

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

imageФлиппер, подключенный к внешней плате питания

Больше мощи для ИК-порта


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

Инфракрасный SMD-светодиод VSMY14940

Мы решили использовать 3 светодиода VSMY14940. У них узкая диаграмма направленности и мощность 82 мВт/ср на один диод.

imageНовый дизайн ИК-порта: три диода на передачу и TSOP на прием

Тесты ИК-порта

Двухдиапазонная антенна RFID


Чтобы совместить RFID 125 kHz и NFC 13,56 MHz на одной нижней поверхности, нам пришлось потрудиться. Для этого мы вынесли антенны на отдельную плату и совместили их на одной PCB, разместив одну внутри другой.

image

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

image4 платы внутри Флиппера

Тесты MicroSD


Во Флиппере SD-карта работает в режиме SPI. Это более медленный режим работы, чем привычный SDIO, но даже в этом режиме скорость чтения близка к 400 КБ/c, что более чем достаточно для наших задач.

imageТесты скорости чтения SD-карты в режиме SPI (байты в секунду)

Отвечая на популярный вопрос, какой максимальный объем SD-карты: мы сейчас работаем с картами 16, 32 и 64ГБ не испытывая проблем. Библиотека FatFS, которую мы используем, позволяет работать с картами объемом до нескольких ТБ. По умолчанию будет использоваться файловая система exFAT. Отформатировать карту можно будет прямо во Флиппере.

На предыдущих прототипах возникала проблема при вытаскивании карты: иногда выступ на карте задевал за корпус. Поэтому мы добавили ребро в корпусе, так карта всегда извлекается без проблем.

imageПластиковое ребро чинит проблему застревания SD-карты при вытаскивании

Изменения во внешнем GPIO


Нам пришлось задействовать один GPIO на Флиппере для внутренних нужд, и мы решили подключить пин 9 к выводу iButton на нижней стороне. Этот же контакт отвечает за интерфейс 1-Wire, так что можно будет подключать датчики и прочую периферию используя встроенную библиотеку 1-Wire.

imageПин 9 теперь подключен к контакту iButton (1-wire)

Интерфейс


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


Демонстрация главного меню

Тесты механики


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



Приколы


Наш CTO Андрей@coreglitch Строков иногда пишет безумные вещи на Флиппере, например игру floopper-bloopper в рамках хакатона Ludum Dare 47.

Еще одна забавная демка от нашего разработчика @DrZlo13 олдскульный музыкальный плеер, играющий мелодию Wintergatan Marble Machine.





Следите за процессом разработки и новостями о Flipper Zero в:
Instagram
Facebook
Англоязычном блоге

Все характеристики Flipper Zero на официальном сайте.
Подробнее..

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

02.12.2020 20:12:10 | Автор: admin

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

Корпус Флиппера состоит из 11 (sic!) пластиковых деталей, которые будут изготавливаться методом литья под давлением в пресс-формах. Это наиболее эффективный способ получить качественные детали при серийном производстве. Для этого сперва изготавливаются пресс-формы под каждую деталь (или группу деталей). Как правило каждая пресс-форма состоит из двух основных образующих и множества вспомогательных деталей и механизмов. В пустоты в пресс-форме под высоким давлением будет подаваться пластик по каналам внутри формы.

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


Пресс-формы (молды)




Пример пресс-формы, фото с сайта tleda.ru

Есть множество способов изготовить корпус устройства: фрезеровка, 3д печать, литье в силиконовые формы и т.д. Но все они не оптимальны для серийного производства, когда нужно изготовить десятки и сотни тысяч деталей. В нашем случае единственный приемлемый вариант литье под давлением. Этот метод позволяет максимально быстро произвести большое количество деталей при общей низкой себестоимости и высокой повторяемости.

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

Верхняя крышка



Верхняя крышка Флиппера

Не обращайте внимание на цвета, здесь разным цветом показаны разные текстуры поверхностей. Салатовым показана шагрень слегка шероховатая поверхность. Маркировка CN-V0030 означает зерно этой самой шагрени, то есть насколько поверхность будет шершавой. Темно-красный гладкие поверхности.



Логотип на верхней крышке будет наноситься с помощью шелкографии.


Маркировка внешнего GPIO методом лазерной гравировки

Подписи для гребенки GPIO будут гравироваться лазером. Из-за маленьких символов шелкография в этом случае дает меньший контраст и читаемость.


Маркировка SD-карты

Чтобы понимать какой стороной вставлять SD-карту (в каком направлении уголок), мы решили добавить пиктограмму. Ее будут также наносить лазером.

Защитное окно экрана



Окно экранчика защищает от прямого контакта со стеклом экрана

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

Световод для статусного светодиода




Световод выводит свет SMD светодиода на плате на поверхность корпуса

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


Расположение световода в корпусе

Окошко ИК-порта



Черное окошко ИК-порта пропускает только инфракрасный спектр

Инфракрасный порт закрывается темно-красным окошком, материал которого отсекает видимый свет, но прозрачен для ИК-спектра. Кроме декоративной функции этот фильтр улучшает качество приема ИК-сигнала. Такие же заглушки стоят на ваших пультах от телевизора.


Расположение инфракрасного порта

Кнопки




Деталь 5-позиционного джойстика

Деталей кнопок всего три: круг джойстика, центральная вставка и кнопка назад. Они собираются в оснастку и упираются пружиной, для более упругого хода.

Усиливающая вставка для ремешка




Вставка принимает нагрузку ремешка

На боку Флиппера есть отверстие под ремешок. Чтобы всю нагрузку ремешка не принимала тонкая перегородка внешней крышки, сделана отдельная вставка. Это повышает выдерживаемую нагрузку на отрыв в несколько раз. Конкретные цифры выдерживаемой нагрузки приведем позже, когда будет готова отливка в финальном материале.


Отверстие для решемка

Каркас кнопок и экрана




Оснастка фиксирует экран и кнопки

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

Вставка между батареей и RFID



Вставка поддерживает батарею, позиционирует плату с iButton и ИК-портом

Расположение вставки в устройстве

Эта деталь вставляется в нижнюю часть корпуса между батарейкой и RFID платой и выполняет множество функций: позиционирует батарейку, фиксирует шлейфы RFID и iButton платы, на ней фиксируется iButton+IR плата.

Нижняя крышка



На нижней крышке расположена контактная площадка iButton и отверстия винтов.



Маркировка на дне показана для примера. К сожалению, избавиться от нее нельзя и сделать меньше тоже, сертификация требует строго определенный размер. Забавно, что некоторые компании в угоду эстетики прячут эти пиктограммы в самые странные места. Например, в наушниках Apple AirPods эти пиктограммы спрятаны внутри откидной крышки. У нас таких скрытых поверхностей нет, поэтому придется наносить на нижнюю крышку. Какие остроумные надписи посоветуете нанести рядом с Assembled in China?
Подробнее..

Делаем отладочную плату для Flipper Zero в Altium

11.03.2021 18:13:13 | Автор: admin

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

Отладочная плата для Флиппера на базе ST-Link V3 это внутрисхемный отладчик для продвинутых разработчиков, которые хотят дебажить прошивку, запущенную на устройстве. По сути это обычный STLink V3, разведенный для удобства в формфакторе внешнего модуля для Флиппер Зиро.

В видео показан процесс разводки модуля для Флиппера с нуля в Altium Designer.

Отладочная плата не обязательна для прошивки Flipper Zero

Вы можете обновлять прошивку, разрабатывать и загружать свою прошивку во Flipper Zero по USB без отладочной платы! Отладочная плата нужна для внутрисистемной отладки запущенных программ, например через GDB, OpenOCD. Если вы точно не знаете как ее использовать, эта плата вам не нужна.

Технические характеристики




  • ST-Link V3 Mini для прошивки и внутрисистемной отладки
  • Встроенный UART to USB, подключенный к UART во Flipper Zero (GPIO 13, 14)
  • Выводы неиспользуемых GPIO во Flipper Zero для отладки и макетирования

Схема


Схему проекта можно посмотреть на нашем сайте в интерактивном просмотрщике


Интерактивная схема проекта (кликабельно)

Исходники проекта Altium



Полные исходники проекта отладочной платы, вместе с библиотекой компонентов можно скачать в репозитории github.com/Flipper-Zero/flipperzero-devboard-stlinkv3

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


image
Мы постоянно ищем инженеров и менеджеров в нашу дружную команду. Весь список вакансий можно посмотреть здесь career.habr.com/companies/flipper-devices




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


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

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


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

Project Manager


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



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




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

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

23.03.2021 18:09:53 | Автор: admin


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

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

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


Как мы писали ранее, для того чтобы официально ввозить устройства в Евросоюз, США, Японию, Австралию, нам нужно получить сертификат соответствия радиочастотным нормам в этих странах. Наш первый дизайн тракта 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-спиком.

Иногда нейронная сеть генерировала очень провокацинные имена. Пришлось долго настраивать фильтры, чтобы убрать имена похожие на ругательства. Но весь миллион именем просмотреть нереально, поэтому есть риск, что вам достанется Флиппер с именем вроде 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. В этом месте происходит обсуждение, проработка разных концепций, споры и т.д.
  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 позволяет прямо из браузера общаться с USB-устройством. У нас получилось успешно обновить прошивку Флиппера через специальную страницу Web DFU-Util Пока поддерживается только в Chrome, Opera, Microsoft Edge.

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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


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


imageМы постоянно ищем инженеров и менеджеров в нашу дружную команду. Весь список вакансий можно посмотреть здесь career.habr.com/companies/flipper-devices




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


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

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


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

Project Manager


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



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




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

Как мы делаем корпус Flipper Zero безупречным

11.06.2021 14:22:51 | Автор: admin

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

Не смотря на то, что все части Flipper Zero изготавливаются на производствах высокого качества, невозможно начать производство такого сложного устройства с ходу, без отладки. Каждая составная часть должна пройти несколько этапов улучшений и исправлений, чтобы стать безупречной и попасть на массовое производство.

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

Процесс отладки

Этапы отладки производства корпуса методом литья под давлениемЭтапы отладки производства корпуса методом литья под давлением

Любой новый корпуса изготавливаемого методом литья под давлением проходит несколько этапов отладки - называемые T0 (Testing 0), T1 (Testing 1) и т.д. Каждый последующий этап исправляет конструкцию деталей, пресс-формы, и сам процесс литья.

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

Выбор текстуры и цвета

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

Глянцевая поверхность до нанесения текстуры на формыГлянцевая поверхность до нанесения текстуры на формы

Чтобы поверхности деталей приобрели тексутуру шагрень, соответствующие участки пресс-форм протравливаются кислотой.

Дефекты в области кнопок на ранних этапах производстваДефекты в области кнопок на ранних этапах производства

На ранних этапах производства до обработки поверхности в области кнопок образовывались заусенцы, вмятины и стыковые швы, возникающие за счет слияния двух потоков пластика во время литья.

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

Область кнопок после исправления дефектовОбласть кнопок после исправления дефектов

Волнистые линии на крышке экрана

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

Пример создания волн потоком впрыскаПример создания волн потоком впрыска

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

Волнистость крышки экрана видна только под определенным угломВолнистость крышки экрана видна только под определенным углом

Зазор между половинками корпуса

Зазор между задней и передней крышками корпусаЗазор между задней и передней крышками корпуса

Выталкивающие штифты, извлекающие деталь из пресс-формы после литья, выступали слишком сильно, что приводило к зазору рядом с отверстиями GPIO.

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

Отверстия и маркировка для iButton

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

Была обновлена маркировка контактов 1-wire, чтобы она соответствовала последней версии печатных плат.

Исправления дефектов корпуса у контактов iButtonИсправления дефектов корпуса у контактов iButton

Щель под окошком ИК-порта

Слева - щель под окошко ИК-порта. Справа - добавленные направляющие ребра, чтобы ИК-окошко располагалось ровно по центруСлева - щель под окошко ИК-порта. Справа - добавленные направляющие ребра, чтобы ИК-окошко располагалось ровно по центру

Из-за сильного давления на окошко ИК-порта в процессе сварки, под ним образовывалась щель толщиной 0.35 мм.

Чтобы исправить эту ошибку мы сместили точку сварки и добавили направляющие рёбра. Теперь ИК-окошко располагается ровно по центру, а вокруг него не образуются лишние щели

После обновления ИК-окошко плотно прилегает к корпусу с ровными зазорамиПосле обновления ИК-окошко плотно прилегает к корпусу с ровными зазорами

Корпус рядом с SD-card

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

Область корпуса возле SD-card на ранних этапах производстваОбласть корпуса возле SD-card на ранних этапах производстваСейчас поверхность возле SD-card выглядит ровнойСейчас поверхность возле SD-card выглядит ровной

Заусенцы на соединительных втулках

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

Эти штифты намеренно сделаны съемными и не являются неотъемлемой частью основной пресс-формы из-за относительно короткого срока службы. После фиксации положения штифтов заусенцы исчезли.

Заусенцы на соединительных втулках до и после коррекции штифтовЗаусенцы на соединительных втулках до и после коррекции штифтов

Лазерная гравирока на черном корпусе

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

Гравировка надписей на черном корпусе до и после исправленийГравировка надписей на черном корпусе до и после исправлений

Цвет логотипа на чёрных корпусах

Логотип на предыдущих образцах чёрных корпусов был нанесён некачественно. После калибровки цвета краски и плотности печати логотип стал ярким и контрастным.

Лого на черном корпусе до корректировкиЛого на черном корпусе до корректировкиЛого на черном корпусе с более ярким и контрастным исполнениемЛого на черном корпусе с более ярким и контрастным исполнением

Предзаказ Flipper Zero

Наш главный приоритет заказы с Кикстартера,поэтому наши бэкеры получат Флипперы первыми.

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru