Kiisu — плата, совместимая с Flipper Zero

23f4803ec6226f34f48a93e70d857130.jpg

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

Приглашаю под кат, чтобы посмотреть, что получилось и обсудить, как можно сделать лучше:)

Flipper Zero

Flipper Zero — портативное многофункциональное Тамагочи-подобное устройство, разработанное для взаимодействия с системами контроля доступа и другими системами, использующими для связи радиоканал. Устройство способно считывать, копировать и эмулировать метки RFID и NFC, радиопульты, iButton и цифровые ключи доступа, а также имеет интерфейс GPIO. © Wikipedia

https://habr.com/ru/articles/734294/

https://habr.com/ru/articles/734294/

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

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

У меня Флиппер тоже есть. Он прекрасен, но, как я писала год назад, слишком большой, чтобы носить его с собой всегда. А ведь никогда не знаешь, когда забудешь ключи! Что же делать? Правильно. Делать свой :)

Первый вариант

Итак, поехали. Для начала формализуем требования:

  1. Тот же функционал: SubGHz, NFC, RFID, ИК, iButton, GPIO. Здесь все просто — реализуем эти узлы примерно так же, как во Флиппере, схемы которого доступны на сайте.

  2. Максимальная компактность. Тут два варианта — или отказаться от автономного режима вообще, а вместе с ним — от экрана и батареи, или все же сохранить автономность. Выберем второе, использовав компактный и доступный экран на SSD1306, а вместо большого аккумулятора используем CR2032 (или перезаряжаемый вариант — LIR2032). Да, запас энергии теперь куда меньше, поэтому режимом тамагочи придется пожертвовать — будем полностью выключать питание через минуту неактивности.

  3. Совместимость с прошивками Флиппера в бинарном виде. Конечно, прошивки открыты и ничего не мешает внести небольшие изменения, но это все-таки снижает удобство. А в нашем устройстве экран OLED, который инициализируется иначе и «просто так» работать не будет. Что делать? А мы добавим еще один STM32 между экраном и сердцем устройства — STM32WB55! И заодно попросим его эмулировать ответы от PMIC и Fuel Gauge и управлять питанием.

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

Для разработки платы я решила попробовать KiCad. Долгое время мне казалось, что он слишком сырой и даже недорогие EDA вроде DeepTrace заведомо лучше, не говоря уж про Altium, но один друг активно рекламировал кикад, так что — почему бы и нет?

Вот такая получилась плата

Вот такая получилась плата

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

Ни один Флиппер в ходе экспериментов не пострадал!

Ни один Флиппер в ходе экспериментов не пострадал!

Чем заняться, пока платы не пришли?

Напишем прошивку второго MCU, инициализирующую дисплей.

Это несложно — принимаем данные для дисплея по одному SPI, фильтруем всё, кроме посылок с данными, инициализируем дисплей самостоятельно, а данные изображения отправляем, как есть (в данном случае, их формат совпадает).

Кстати, на картинке слева видно, что будет, если обрабатывать данные недостаточно быстро :)

Проходит две недели, и платы у меня на столе. Но увидела я их раньше — можно попросить китайцев сфотографировать собранные платы до отправки. Вот так:

Вместо камеры у JLCPCB картошка, но что поделать

Вместо камеры у JLCPCB картошка, но что поделать

Вместо STM32WB55RGV использован модуль STM32WB5MMG — это то же самое, только с интегрированными антенной, кварцевыми кристаллами и некоторой другой обвязкой. Отлично, подумала я, плата будет проще!

Как оказалось, решение было так себе:) У чипов есть однократно записываемая память, то место, где хранится уникальное имя Флиппера, его версия, регион и другие данные. У отдельных MCU эта область пуста. А у модулей MMG заняты первые 8 байт данными калибровки антенны, и это именно те 8 байт, которые нам нужны!

А почему перемычка красная?

А почему перемычка красная?

В первой версии, конечно, ошибок было порядком. Перепутаны MISO и MOSI у NFC-чипа. Перепутана часть ножек ОУ, на котором собран RFID. Центральная кнопка замыкается на землю, а должна на VCC.

Но версия на то и тестовая, чтобы все это выявить, так получается даже быстрее, чем очень-очень внимательно пытаться проверить всё до заказа.

И к счастью, у нас в команде есть джедай Олег, способный перекоммутировать перемычками дорожки на расстоянии 0,1 мм не только без микроскопа, но даже без лампы и лупы! Мне, например, это сложно даже с микроскопом :) Я все-таки кот, у меня немножко лапки!

Kiisu

Спасибо нейросетям за логотип

Спасибо нейросетям за логотип

Почему Kiisu? Надо же было как-то назвать, не используя слово Flipper, ведь мы не имеем отношения к Flipper Devices Inc:)

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

Кроме того, я просто люблю котов.

В этой версии было решено не только исправить ошибки, но и переделать формфактор под размер кредитной карты. Да, размеры стали больше, но это позволило перенести все компоненты на одну сторону, уменьшив толщину до четырех миллиметров (это примерно 5 пластиковых карт, сложенных вместе). А значит, Киису теперь можно просто положить в кошелек и всегда брать с собой!

Что еще изменилось?

  • Само собой, были исправлены ошибки.

  • Вместо модуля STM32WB5MMG теперь обычный STM32WB55RGV. Да, пользователь сможет записать в OTP-память все, что ему нравится.

  • Добавились датчик влажности и температуры, акселерометр и компас LSM303, возможность установить ToF дальнометр VL53xxx и датчик качества воздуха BME680.

  • Добавился датчик света (а на самом деле — просто фототранзистор) и вместе с ним — возможность проверять светодиодные лампы и мониторы на предмет мерцания.

  • Плата стала шестислойной.

Kiisu v3 уже готов

Kiisu v3 уже готов

И с другой стороны

И с другой стороны

Что дальше?

В течение 1–2 месяцев мы планируем начать продажи Киису всем желающим. Пока — в Европе, но работаем и над другими вариантами. Ожидаемая цена — в районе 60 EUR, но это пока не очень точно.

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

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

© Habrahabr.ru