- PVSM.RU - https://www.pvsm.ru -
[1]
Полный видеоролик по этой статье есть на моём YouTube-канале [2].
Это первая статья в серии, описывающей все этапы создания умных часов. Здесь я хочу показать, что в 2025 году не так уж сложно самому собрать достаточно неплохую модель. Хочется, чтобы наш проект по созданию обновлённых часов [3] помог создавать их и другим желающим.
Вкратце:
Умные часы можно отнести к достаточно индивидуальным устройствам, и я реально надеюсь, что перенос PebbleOS в опенсорс разожжёт воображение энтузиастов и поможет им создать собственную идеальную конфигурацию.
В целом, система умных часов состоит из трёх основных компонентов:
Проектирование потребительской электроники вроде умных часов сопряжено с максимальными ограничениями. Сначала вам нужно определить конечную цель («Хочу часы с читаемым при дневном свете дисплеем, которые будут держать заряд 30 дней»). Потом разбить её на функции/спецификации («E-Paper дисплей», «Bluetooth LE», «водонепроницаемость», «рыночная цена $150») и затем спроектировать дизайн на основе аппаратных и программных компонентов («Sharp Memory LCD», «Li-Pol батарея на 150 мАч», «FreeRTOS» и так далее), которые будут отвечать обозначенным спецификациям и решать поставленную задачу.
После почти 20 лет разработки различных продуктов для меня этот процесс выглядит вполне естественным и порой выстраивается на ходу. Я могу взглянуть на любой продукт и представить себе развёрнутую картину, прикинуть затраты на производство и представить, как будут сочетаться его программные подсистемы. Но такое умение играет как в плюс, так и в минус.
Аппаратное обеспечение часов можно разделить на пять основных систем:
Сегодня для последних трёх систем подобрать компоненты достаточно просто. Есть множество различных вариантов датчиков, батарей, ремешков, корпусов, микрофонов и прочего на любой бюджет. Вписаться в максимальные ограничения с их помощью относительно легко, и в следующей статье я расскажу об этом подробнее.
Самыми же сложными решениями по части компонентов будет выбор:
Во времена первых часов Pebble мы использовали микроконтроллеры STM32. Почему? Как-то одним пятничным вечером в далёком 2011 году мы попивали пивко в хакспейсе Hacker Dojo [4], и мой друг, Хьюго Финнес, восторженно рассказывал об этом относительно новом МК. В те времена я работал над inPulse [5], в котором использовался LPC2103 (8 КБ RAM!) — и Хьюго обоснованно считал, что нам срочно нужен апгрейд.
Честно говоря, у меня так всегда. Думаю, что каждый важный выбор микросхемы я делал на основе восторженных рекомендаций друзей в отношении конкретной модели. Да, у меня довольно эксцентричные друзья 😂 Спасибо Трамеллу Хадсону, ТЛ Лиму из Pine64, Питеру Баррету и всем тем, кто давал мне советы в течение этих лет.
Микроконтроллер (МК) — это сердце умных часов. По сути, это целый миниатюрный компьютер, так как в нём есть процессор, RAM, чаще всего флэш-память, механизм ввода-вывода и иногда радиомодули — всё в одной крохотной интегральной микросхеме.
Спецификацию использованных нами ранее МК можете глянуть в этой полезной таблице [6] — 64-144 МГц, 128-256 КБ RAM. В те времена у МК не было интегрированных модулей BT, поэтому мы использовали дополнительные микросхемы вроде TI CC2564 (эта модель почему-то накрепко отпечаталась в моей памяти, возможно, из-за боли с поиском подходящего BT-стека).
Вернёмся к аспекту максимальных ограничений. МК находится в центре наиболее ограниченных и определяющих всё «уравнений» — совместимость ПО, энергопотребление и затраты.
Самым интересным и трудным ограничением по факту является совместимость ПО. Встраиваемое ПО намного более фрагментировано и специфично в требованиях, нежели ПО для операционной системы ПК. Поскольку компьютер не сильно ограничен в ёмкости жёстких дисков, ядро его ОС можно оптимизировать под более широкую совместимость — к примеру, Linux содержит 17 000 драйверов устройств.
PebbleOS же, по сути, писалась с учётом поддержки МК лишь от одной компании — STM. Для перехода на другого производителя нужно было писать новые драйверы периферии (i2c, SPI, DMA и так далее), осваивать новый SDK и порой вносить изменения в систему. Все эти коррективы не представляют рисков, но требуют времени на реализацию и тестирование. Некоторые МК с натяжкой поддерживают FreeRTOS (к примеру, nRF53/54, в котором отсутствует стек BLE (Bluetooth Low Energy)).
Поскольку мы не планируем выпускать сотни, тысячи или миллионы часов, затраты на разработку ПО не получается амортизировать за счёт количества, и они сильно сказываются на итоговой стоимости каждой единицы. Мы даже готовы рассмотреть покупку более дорогой микросхемы, если только это позволит упростить и ускорить разработку ПО.
Умные часы должны быть постоянно подключены к телефону по Bluetooth, поэтому среднее энергопотребление здесь будет одним из самых значимых расходов заряда — вторым будет дисплей.
В итоге мы решили использовать для модели Core 2 Duo микроконтроллер Nordic nRF52840. Это старенький чип, но мы были с ним хорошо знакомы и знали, что он довольно шустро потянет PebbleOS. Поначалу мы хотели использовать стек Nordic SoftDevice BLE, но благодаря стараниям Лиама (мой коллега из Pebble, а ныне один из контрибьюторов Rebble [7]) переключились на опенсорсный стек BLE под названием nimBLE [8].
Несмотря на то, что производительности nrf52840 достаточно для Core 2 Duo, для Core Time 2 (CT2) нам нужен был МК с бо́льшим объёмом RAM и большей мощностью.
Мы решили продолжать использовать для этой модели микросхемы Nordic (так как только что потратили уйму времени на портирование PebbleOS для работы с Nordic SDK и периферией), но план Nordic по развитию микроконтроллеров с BLE не особо радовал. Их микросхема nRF54L15, занявшая на тот момент бюджетный сегмент, несла на борту лишь 256 КБ RAM.
Увеличенный цветной дисплей Core Time 2 требует больше памяти, плюс мы хотели оставить запас для каких-нибудь новых функций. Кроме того, эта модель лишь недавно вышла в массовое производство, поэтому из наших друзей её ещё никто не использовал — то есть отзывов было мало.
У Nordic также есть серия 54H с 1 МБ RAM, но она минимум вдвое дороже ($4-5). Опции на 512 КБ нет. В CT2 также нужен особый интерфейс для 64-цветного MIP-дисплея, который в моделях Pebble 2015 года управлялся при помощи отдельной ПЛИС.
Итак, я находился в поисках новой микросхемы. Я рассматривал различные опции вроде Apollo, BES и Dialog, но не находил ничего, что бы в точности подходило под наши нужды. Одним из самых серьёзных препятствий являлось отсутствие опенсорсного SDK.
Была одна весьма интересная микросхема от BES, но мы столкнулись с проблемами при попытке её протестировать — банально из-за отсутствия доступного SDK. Примеров кода не было. Вся информация находилась под соглашением о неразглашении. Нам этот вариант не подходил — PebbleOS должна быть опенсорсной.
Но здесь нам внезапно повезло. Мне написал генеральный директор небольшой компании по разработке Bluetooth под названием SiFLi, и мы в течение нескольких часов обменялись серией сообщений. Стало ясно, что он очень хотел пристроить свои микросхемы в опенсорсную модель умных часов.
Чипы SiFli изготавливаются в качестве основного элемента часов. Они уже используются в десятках миллионов таких устройств, выпускаемых брендами вроде Redmi, Oppo, Noise и многих других. Самая малая (!) их микросхема, SF32LB52x [9], располагает более 512 КБ SRAM, 16 МБ PSRAM, имеет выделенную MIP-линию для нашего дисплея — исключая необходимость в отдельной ПЛИС или дорогостоящей интерфейсной плате вроде Epson.
Помимо прочего, у неё крайне низкий профиль энергопотребления: ~50 мА при активном BLE-подключении. Причём стоит она меньше $2! У компании даже есть несколько микросхем, несущих от 1 до 2MB SRAM, на которые мы можем перейти в случае необходимости.
Самое же главное — их SDK лежит в открытом доступе на GitHub [10], и они предложили помочь портировать PebbleOS, чтобы та работала на их чипах.
Итак, что мы имеем. В качестве микросхемы для Core Time 2 будет использоваться SF32LB52J (вариация SF32LB527 на 1,8 В). Эта модель однозначно отпечатается в моей памяти надолго!
Ссылки на SiFli:
Автор: Bright_Translate
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/420675
Ссылки в тексте:
[1] Image: https://habr.com/ru/companies/ruvds/articles/912058/
[2] моём YouTube-канале: https://youtu.be/umQ39BhcyMM
[3] обновлённых часов: https://store.repebble.com/
[4] Hacker Dojo: https://hackerdojo.org/
[5] inPulse: https://www.tumblr.com/inpulse-blog/222972860/evolution1?source=share
[6] полезной таблице: https://github.com/PebbleA2/wiki/wiki/Watch-Comparison
[7] Rebble: http://rebble.io/
[8] nimBLE: https://github.com/apache/mynewt-nimble
[9] SF32LB52x: https://drive.google.com/file/d/1FV5-n6thM8XkzVQeAap2eJv97sCO_NrG/view?usp=sharing
[10] на GitHub: https://github.com/OpenSiFli
[11] Купить Devkit на Taobao: https://item.taobao.com/item.htm?abbucket=11&detail_redpacket_pop=true&id=913039901152<k2=1746962311930er3jpr9z173xe91zr84ps&ns=1&priceTId=undefined&query=%E6%80%9D%E6%BE%88%E7%A7%91%E6%8A%80&skuId=5776328712262&spm=a21n57.1.hoverItem.2&utparam=%7B%22aplus_abtest%22%3A%228935e1d10ee53e64944bb19c4245a174%22%7D&xxc=taobaoSearch
[12] Источник: https://habr.com/ru/companies/ruvds/articles/912058/?utm_campaign=912058&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.