Вдохновившись некоторое время назад статьей «Умные часы своими руками за 1500р.», я тоже решил попробовать сделать подобный девайс.


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


Подбор компонентов, разводка платы, пайка в суровых условиях, 3D-печатный корпус и JavaScript на часах — под катом. Welcome!


Требования


  • Нужно узнавать время без необходимости лезть в карман за телефоном
  • Должен быть приём оповещений о входящих звонках, SMS и уведомлениях из мессенджеров
  • Срок автономной работы должен быть минимум неделя
  • Быть как можно компактнее

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


Кроме хотелок общего плана были ещё и сугубо технические:


  • Создание и запуск на часах пользовательских приложений. Как у Pebble. Вообще, здесь и далее часы всё больше будут напоминать клон Pebble, но почему бы и нет
  • Память для приложений и их данных
  • Адекватный контроль уровня зарядки, чтобы часы не вырубались внезапно при разряде аккумулятора, а показывали «палочки» и предупреждали заранее
  • Акселерометр, гироскоп и магнетометр для полноценного отслеживания движения пользователя. Чтобы была возможность сделать шагомер или смарт-будильник, следящий за фазами сна по наличию движения

Всё это в итоге кристаллизовалось в небольшую диаграмму:



Микроконтроллер объединяет вместе BLE 4.x для связи со смартфоном, шины I?C и SPI для датчиков и дисплея с памятью, управляет вибрацией и реагирует на нажатия кнопок, всё питается от Li-Po аккумулятора.


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


Выбор компонентов


Микроконтроллер


Первым делом необходимо выбрать контроллер, который будет "мозгом" устройства и всё остальное на плате будет служить ему во благо.


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


Что нам предлагает рынок

image
Источник: www.argenox.com


  • Cypress PSoC BLE ядро ARM Cortex-M0, BLE 4.2, 256kB FLASH, 32kB RAM, куча периферии и встроенный балун, широкий диапазон напряжения питания: 1.9-5 вольт
  • Texas Insturments CC2541 — BLE 4.0 и 8051-ядро, 256kB FLASH, 8kB RAM
  • Texas Instruments CC2640 — BLE 4.1, Cortex-M3, 128kB FLASH, 20kB RAM
  • Dialog DA-14580 — Cortex-M0, BLE 4.1, 16 MHz, 42+8kB RAM, 32kB OTP (однократно программируемая память, но есть возможность запускать код с внешней SPI FLASH), самый крохотный и мало потребляющий чип из перечисленных
  • SiLabs EFR32 — Cortex-M4F, 40 MHz, BLE 4.x, Bluetooth 5, до 1MB FLASH, до 256kB RAM
  • Nordic nRF52832 — Cortex-M4F, 64MHz, BLE 4.x, Bluetooth 5, 512kB FLASH, 64kB RAM, эмуляция NFC-меток, балун встроен

В куче вкусных и не очень решений выбор пал на nRF52832, этот чип оказался самым производительным и довольно удобным в плане корпуса (6x6mm 48-pin QFN). Также шикарной опцией, сильно упрощающей разводку платы, является возможность программно назначить любую периферию на любой из GPIO-выводов. Это то, чего так не хватает многим микроконтроллерам. Благодаря поддержке NFC можно добавить к часам функционал NFC-эмулятора и зашить в часы все свои карточки-пропуска.



В даташите написано, что есть встроенный RTC (часы реального времени), это удобно. Но впоследствии оказалось, что это не часы, а Real-Time Counter, т.е. это самый обычный таймер, работающий от кварца 32.768kHz в том числе и в спящем режиме. Поэтому в следующей ревизии устройства я буду использовать отдельный чип для RTC, например STMicroelectronics M41T62LC6F. Он имеет встроенный кварц на 32.768kHz и работает по интерфейсу I?C.


Отладочная плата nRF52-DK стоит довольно дёшево, порядка 4тыс. рублей. На Aliexpress можно найти и за ~3тыс.


Кстати

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


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


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


Кварцевые резонаторы


К выбранному чипу nRF52832 подключаются кварцевые резонаторы:


  1. На 32MHz для тактирования ядра и радио, обязателен
  2. На 32.768kHz для тактирования часового таймера и тайм-слотов BLE во время спящего режима. Необязателен, но его подключение уменьшает энергопотребление (тайм-слоты можно делать короче) и увеличивает точность хода часового таймера RTC.

Оба вида кварцев заказаны в корпусе для поверхностного монтажа с Aliexpress:


Изображение


Дисплей


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


  1. Включать дисплей и отображать содержимое только тогда, когда происходит взмах руки и экран часов попадает в поле зрения пользователя, либо когда внимание пользователя уже привлечено, например, уведомлением или будильником
  2. Отображать содержимое постоянно, используя дисплеи, которые практически не потребляют тока на отображение картинки, а потребляют его только на обновление содержимого. За примерами далеко ходить не надо: это e-ink, Memory LCD либо IMOD/mirasol

Что нам предлагает рынок

Для варианта, когда дисплей большую часть времени представляет собою труд Малевича, на рынке есть такие варианты: OLED, TFT, Amoled, телефонные модули LCD (Nokia, Siemens, etc.). Остаётся подыскать дисплей с подходящей диагональю.


Примеры:


  • Маленькие OLED-дисплеи, на Ali Express такие стоят копейки.
    Минусов куча: маленькая диагональ, монохромный, потребление 10-20mA, громоздкий модуль. Без платы модуля — широченный шлейф и море обвязки, что поглотит значительный кусок площади на плате.
  • TFT LCD, например ILI9341. Из минусов: потребление, широкий шлейф

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


Если взглянуть на Pebble, то можно увидеть, что он использует именно "Always on"-дисплей. Pebble Classic использует монохромный SHARP Memory LCD дисплей, Pebble Time использует цветой (64 цвета) дисплей по похожей технологии, но производимый JDI, в открытой продаже он отсутствует.


По поводу IMOD/Mirasol, ничего кроме маркетинговых брошюр и часов Toq от Qualcomm найти не удалось.


Захотелось взять цветной дисплей как у Pebble Time. Наиболее близким аналогом, который находится в открытой продаже, стал SHARP LS013B7DH06 (его даташит).



Характеристики:


  • Диагональ 1.33"
  • Разрешение: 128х128, 8 цветов (3 бита на пиксель)
  • Размеры: 26.82x31.3mm
  • Интерфейс: SPI
  • Напряжение питания: 5V, но логические уровни SPI от 2.7V

С напряжением питания получилась засада, так как от Li-Po аккумулятора не получить требуемые 5V напряжения без дополнительных повышающих преобразователей. Но ток у дисплея мизерный и получить нужные 5V довольно просто с помощью charge pump типа Linear LTC1754-5:



Ещё одной особенностью стала необходимость хотя бы раз в секунду переключать состояние пина EXTCOMIN (External COM Inversion) с высокого уровня на низкий и наоборот, чтобы на панели экрана не накапливался заряд и картинка в один прекрасный момент не застыла на месте. Для этих целей можно утилизировать встроенный PWM (ШИМ) микроконтроллера, настроенный на скважность 50% (меандр) и на частоту 1Hz или выше, либо любой другой (в том числе и внешний) генератор меандра.


Дисплей соединяется с платой с помощью небольшого шлейфа, очень удобно при этом использовать FPC-коннектор на 10 выводов с шагом 0.5mm, например Hirose FH12-10S-0.5SH:



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


Аккумулятор


Пришлось потратить некоторое время на то, чтобы выбрать подходящий по размерам аккумулятор из стандартной номенклатуры размеров. Искал литий-полимерный аккумулятор с напряжением 3.7V и с ёмкостью примерно 100mAh.


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


Что предлагает рынок

На Aliexpress можно заказать целую уйму аккумуляторов почти на любой размер, главное знать систему кодирования их названий. А она такая: HHWWLL, где HH — толщина (высота) аккумулятора в десятых долях миллиметра, WW — его ширина и LL — его длина в миллиметрах.


Пример: 402025 — аккумулятор толщиной 4mm и размерами 20x25mm


Были выбраны аккумуляторы 302025 (3x20x25mm) ёмкостью 110mAh и заказаны на Aliexpress.



Питание


Так как литий-полимерные аккумуляторы имеет смысл разряжать только до 3 вольт, то было решено питать всю схему от стабилизированных 3V и если напряжение на батарее опустилось ниже 3V, то отрубать главный регулятор питания микросхемой защиты (Maxim MAX809TEUR+T).


Общее напряжение питания в 3V укладывается в диапазоны питания всех элементов схемы, кроме дисплея, которому нужно 5V. Поэтому дисплей питается через повышающий преобразователь Linear LTC1754-5 напрямую от батареи.


Если взглянуть на кривую разряда такого типа аккумуляторов,


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


В качестве понижающего преобразователя был выбран Texas Instruments TPS78230DRVT, он обладает маленьким рабочим током в 500nA и максимальным током в 150mA, чего вполне достаточно. Корпус SON-6 компактный и довольно паябельный:



Зарядка аккумулятора


Зарядку аккумулятора было решено производить через стандартный microUSB-порт (Molex 47346-0001), но не достаточно просто подключить аккумулятор прямо к шине 5V от USB и так заряжать, необходимо обеспечить правильный процесс зарядки, разбитый на несколько фаз: preconditioning, constant current, constant voltage.


Типовой профиль зарядки для 180mAh аккумулятора


Хорошее объяснение процесса зарядки на EEVBlog

Популярным решением для зарядки аккумуляторов небольшой ёмкости (до 500mAh) является микросхема Microchip MCP73831. Ток зарядки (зависит от ёмкости аккумулятора) программируется резистором, присутствует tri-state или open-drain выход для уведомления о начале и окончании процесса зарядки.


Мною же была выбрана другая микросхема — Maxim MAX1555EZK-T. Она имеет фиксированный ток зарядки в 100mAh и имеет тот же корпус, что и микросхема от Microchip и при этом требует минимум внешних компонентов и обладает open-drain выходом для оповещения о процессе зарядки:



Картинка из даташита


В следующей ревизии платы всё-таки переключусь на микросхему от Microchip, потому что зарядный ток в 100mA для 110mAh аккумулятора это, возможно, многовато.


Контроллер ёмкости аккумулятора


Существует несколько разных по исполнению и точности итогового результата техник по отслеживанию степени заряженности аккумулятора (в англоязычных источниках это называют State of Charge):


Список
  1. Измерять т.н. open circuit voltage/OCV (напряжение на обкладках) батареи через АЦП и делать вывод о ёмкости аккумулятора. Чаще всего требуется перенести диапазон напряжений в область, которая приемлема для работы АЦП с помощью делителя напряжения. Минусы этого подхода в том, что график зависимости напряжения от ёмкости у литий-полимерных аккумуляторов довольно пологий, а так же сами показания изменяются с каждым циклом и подвержены действию шумов и принципиальной невозможности измерить истинное напряжение на обкладках из-за влияния тока нагрузки


  2. Другой способ это вместо измерения напряжения на обкладках измерять ток, который втекает в аккумулятор и вытекает из него. Это так называемый coulomb counting. Типовое решение это интегрирование значения падения напряжения на шунтирующем резисторе небольшого сопротивления (около 100mOhm). Зная ёмкость аккумулятора, по току, который из него вытек за определённый период времени, можно сделать вывод о том, сколько ещё энергии осталось в аккумуляторе (пренебрегая саморазрядом). Минусы этого подхода в том, что не учитывается саморазряд, а так же то, что истинная ёмкость аккумулятора изменяется с каждым циклом заряда-разряда. Грубо говоря, из аккумулятора вытекает меньше тока, чем втекает в него при зарядке. Из-за этого, со временем, неизбежно будет накапливаться ошибка в показаниях


  3. Комбинирование первого и второго способов: измерение и напряжения на обкладках и протекающего тока. Грамотное комбинирование двух подходов поможет построить модель, которая будет с хорошей точностью оценивать ёмкость аккумулятора. Для того, чтобы этот подход заработал, необходимо произвести как минимум один цикл заряд-разряд для сбора данных о зависимости напряжения на обкладках от ёмкости. Причём каждый следующий цикл должен будет вносить изменения в модель аккумулятора так, чтобы ошибка не накапливалась. Есть статьи, в которых люди рассказывают, как с помощью фильтра Калмана объединяли данные разных измерений для предсказания оставшегося заряда ([1], [2])

Что нам предлагает рынок
  • Maxim MAX17043 — с помощью проприетарного алгоритма по напряжению на обкладках строит внутри себя модель аккумулятора. Обещает точность измерения оставшегося заряда в 3%. Интерфейс I?C. Неплохой и маленький корпус
  • OnSemi LC709203F — измеряет OCV, интерфейс I?C, точность в 2.8%, есть температурная компенсация через внешний термистор. Дорого и плохо достаётся в России
  • Texas Instruments BQ27621 — измеряет напряжение на обкладках, I?C, точность не указана, стоит дорого, корпус BGA
  • Texas Instruments BQ27421 — одновременно измеряет напряжение и протекающий ток. Интерфейс I?C, точность не указана, стоит дорого, корпус BGA
  • Linear LTC2941 — измеряет протекающий ток, интерфейс I?C, точность 1%, требует дополнительно внешний шунтирующий резистор (в LTC2941-1 он встроенный), корпус: 2x3mm DFN-6

Из доступных вариантов была выбрана микросхема Linear LTC2941 за самый маленький, но паябельный корпус и внятный алгоритм работы. Заказана на Aliexpress.


Картинка из даташита

image
Источник: Linear Technology


Микросхема использует технику coulomb counter-а и считает протекающий ток с точностью в 1%, работает по интерфейсу I?C (SMBus) и обладает маленьким, но удобным корпусом: 2x3mm DFN-6:


Через I?C внутри микросхемы можно задать значение предделителя счётчика тока, а так же задать или прочитать значение самого счётчика. Счётчик 16-битный и увеличивается тогда, когда ток течёт в батарею и уменьшается, когда ток из батареи вытекает. Максимальное значение счётчика (0xFFFF) можно принять за полностью заряженную батарею, а минимальное (0x0000) за полностью разряженную. При удачно подобранном предделителе счётчика можно добиться того, что счётчик дойдёт до максимума в процессе зарядки, и дойдёт до нуля при полном разряде аккумулятора. Есть возможность задать границу значения счётчика, ниже которой микросхема будет бить тревогу и выдаст прерывание.


Акселерометр


Среди кучи вариантов на рынке был выбран довольно популярный чип: InvenSense MPU-9250. Это система в корпусе (SiP), совмещающая в себе MEMS-Акселеромер, MEMS-гироскоп и чип магнетометра.



Характеристики
  • Напряжение питания от 2.4V до 3.6V
  • 16-битный трёхосевой MEMS-акселерометр с диапазонами измерений ±2g, ±4g, ±8g, ±16g
  • 16-битный трёхосевой MEMS-гироскоп до 2000°/sec
  • 16-битный трёхосевой магнетометр с диапазоном измерений до ±4800?T
  • Встроенные цифровые фильтры
  • Интерфейсы I?C и SPI
  • Программируемые прерывания
  • Сопроцессор для обработки показаний DMP (Digital Motion Processor)

Чип отличный, но в итоге показалось, что это оверкилл и для применения в часах достаточно простого акселерометра. Например Analog ADXL362 — по утверждениям производителя, это самый экономичный трёхосевой MEMS-акселерометр.


Флеш-память


Было решено для приложений и данных использовать внешнюю SPI-FLASH память. Из разнообразия вариантов был выбран чип Winbond W25Q256FV в компактном корпусе WSON-8:



Объем флеш-памяти составляет 256 мегабит (или 32 мегабайта), вполне достаточно. Память поделена на страницы по 256 байт, сгруппированные в сектора по 4 килобайта и блоки по 32 килобайта. В активном режиме (чтение или запись) потребляет до 20mA, в ждущем режиме — менее 1?A.


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


Кнопки


Я захотел, чтобы управление интерфейсом производилось путём нажатия на кнопки сбоку корпуса (прямо как у Pebble, какое совпадение). Тачскрин на такую маленькую диагональ экрана я в свободной продаже найти не смог. Сильно озадачивать себя выбором кнопок не стал и выбрал первые, которые были под прямым углом к плате и что попались под руку:


Wealth Metal TD-26EA:



Источник: Чип&Дип


Потом оказалось, что пластик в кнопках довольно плохо переносит пайку феном и мытьё платы с ацетоном.


В качестве альтернативы нашёл кнопки от Omron B3U-3000P:


Картинка из даташита


Буду использовать их в следующей ревизии платы.


Вибромоторчик


Чтобы уведомлять о таких событиях, как оповещения или будильник, нужна вибрация.


На Aliexpress была заказана горсть вибромоторов для поверхностного монтажа, работающих от 3V и размерами (HxWxL) 3x3x12mm:


Изображение


Моторчик хорошо паяется к плате с помощью паяльной пасты, потребляет в пике 100mA и даёт хорошую и ощутимую вибрацию.


Антенна


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


Первой попавшейся чип-антенной на 2.4GHz стала Johanson 2450AT18B100:


Вообще, это довольно популярные антенны, а сами Johanson производят ещё и балуны, специально оптимизированные под определённых производителей, в том числе и для Nordic. Специально для nRF52 Johanson сделали фильтр гармоник Johanson 2450FM07A0029, который заменяет рекомендуемый в референс-дизайне LC-фильтр перед антенной.


Антенны были заказаны на Aliexpress лентой на 10шт. за 214р/лента.


Всё остальное


Пассивные компоненты для подтяжек и обвязки в основном представляют собой чипы типоразмеров 0402 и 0603 и заказаны в Элитане. Помимо пассивных компонентов, на плате присутствуют два транзистора и пара диодов. Они участвуют в управлении вибромоторчиком, а так же в схеме питания, развязывая питание от USB и аккумуляторное.


Схема и плата


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


Решив попробовать что-то новое, схему и плату я рисовал не в привычном DipTrace, а в облачной EDA Upverter: ссылка на дизайн.


Upverter позволяет осуществлять сквозное проектирование платы и схемы одновременно, поэтому часть элементов разводки выполнялась по схеме, а часть схемы проектировалась с учётом особенностей разводки.


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


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


После расположения фиксированных элементов, последуем «rule of thumb» и будем разводить радио самым первым. Чип-антенна имеет около себя небольшую keepout-область, внутри и под которой на всех слоях не рекомендуется располагать дорожки и полигоны, поэтому правилом хорошего тона будет разместить антенну у края платы, желательно ближе к одному из углов. Собственно, расположение антенны продиктовало и расположение микроконтроллера. Чтобы длина проводника от порта выхода антенны у чипа до самой антенны была как можно меньше (с учётом согласующих компонентов), контроллер располагаем поближе к тому краю, на котором будет находиться антенна.


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


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


Скриншот платы (полигоны не залиты, вид снизу)


Для наглядности раскрасил примерную топологию ключевых участков:



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


Плата рисовалась с учётом технологических норм производителя плат, которым стал американский OSHPark.com:


  • Проводник/зазор: 5/5 Mil
  • Переходные отверстия: 10/4 Mil отверстие/пад
  • Материал: FR408
  • Финишное покрытие: иммерсионное золото с подслоем никеля (ENIG)
  • Глухие переходы (blind vias) и переходы на внутренних слоях (buried vias) не поддерживаются. А нам и не надо

При этом цена в $10 за кв. дюйм и количество плат в заказе — 3шт. Это очень качественные и недорогие (для прототипов) платы с узнаваемой пурпурной маской, рекомендую всем, кому не критично ждать две недели свои двусторонние или месяц четырёхслойные платы.


Скриншот заказа


В итоге за три платы пришлось заплатить $14 и через месяц забрать их на почте.


Фотографии платы без компонентов



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


Получается вот такой сандвич


На верхней стороне платы также размещается куча test-point-ов, тестовых контактных площадок, к которым подведены линии шин I?C, SPI, линии прерываний и некоторые управляющие сигналы. К этим площадкам можно подключать осциллограф или логический анализатор и такая возможность очень сильно упрощает написание драйверов и отладку прошивки. Также на верхнюю сторону платы выведен отладочный интерфейс JTAG (SWD) для прошивки и отладки через Segger JLink, идущий в комплекте nRF52-DK, и контактные площадки для припаивания катушки NFC-антенны.


Сборка и пайка


Если полностью следовать всему процессу поверхностного монтажа, то необходимо заказать smd-трафарет (smd stencil) и паяльную пасту, нанести паяльную пасту через трафарет, расставить компоненты и отправить их в печь (reflow oven).


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


Результат можно наблюдать на фотографии:



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


Фотография через х30 лупу


Видно слегка повёрнутые компоненты и местами переизбыток припоя. Это неизбежно при ручном монтаже и нанесении пасты.


Как только плата была собрана, я схватил в руки тестер и начал прозванивать всё, до чего мог дотянуться, на предмет коротких замыканий. После того, как убедился, что ничего вроде как не коротит, подключил USB-шнур. Дыма нет, чипы не греются, напряжение на USB-порту — 5 вольт, на выходе зарядки — 4.2V, напряжение после LDO — ровно три вольта. Вроде работает.


Даже будучи полностью запитанным, устройство, разумеется, не подавало абсолютно никаких признаков жизни. Теперь в него нужно вдохнуть душу — прошивку (или «операционную систему», как у некоторых производителей часов: WatchOS, PebbleOS, etc.).


Следующим этапом проверки стало подключение отладчика JLink, встроенного в nRF52-DK по интерфейсу SWD. Подключаем проводки, запускаем JLinkExe и видим наш чип! Можно приступать к написанию прошивки и тестированию остальных блоков железа программно.


«Операционная система» для часов


Для низкоуровневой работы с периферией, Nordic предлагает свой nRF5-SDK, который подходит для nRF51 и nRF52 серий.



SDK написан на чистом Си и содержит целую уйму примеров для работы с периферией, радио, NFC и другими возможностями. Каждый проект примера имеет Makefile для компиляции через arm-none-eabi-gcc. Стиль кода библиотек и его качество вполне приемлемые, индусским кодом вроде как нигде не пахло.


В каждой папке с примером есть скомпилированные .hex-файлы, которые можно сразу залить на nRF52-DK и посмотреть в работе. При подключении nRF52-DK к компьютеру, определяется Mass Storage Device (накопитель), прямо в который можно бросить .hex файл и он тут же будет зашит в чип.


Так же поддерживается прошивка через JLinkExe и его GDB-сервер и через утилиту nrfjprog.


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


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



Главное меню, статус-бар, показывающий время, состояние блютуза и заряд батареи.


Процесс зарядки


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


Меню в симуляторе:



Прокрутка текста в симуляторе

image


После того, как основной каркас API был закончен, начал адаптировать движок JavaScript (ES 5), чтобы была возможность писать свои приложения и циферблаты и запускать их в скомпилированном виде прямо на часах. Как по мне, это круто.


В качестве движка выбрал JerryScript, он специально нацелен на встраиваемые системы с ограниченными ресурсами, API оказался хорошо документирован и вполне адекватен, потребовалось не так много времени, чтобы со всем разобраться. Движок довольно модульный, по желанию можно выкидывать составные части как языка, так и окружения: стандартные классы типа Date и т.п., JSON-парсер, парсер и компилятор в байткод и т.д.


Есть и другие встраиваемые JS-движки

Простейший циферблат на JS выглядит так:



В дальнейшем API будет расширяться всё большим числом методов для работы с GUI, а так же оповещениями, Bluetooth, акселерометром и т.д.


Объем занимаемой памяти скомпилированного бинарника безо всяких оптимизаций (флаг -O0):



106kB FLASH, 12.8kB RAM. Из них 8kB RAM — куча (heap) для объектов JavaScript движка. Объем кучи я пока подбираю и в будущем он будет больше. Напомню, что объем FLASH у nRF52832 составляет 512kB, а общий объем RAM — 64kB.


Часть FLASH (120kB) и некоторый динамически определяемый объем RAM так же занимает BLE-стек SoftDevice.


Корпус


Это было самое сложное — нарисовать 3D-модель корпуса. Корпус рисовался в TinkerCad и печатался на 3D-принтере. Получился вот такой Франкенштейн:


Корпус и подключенный USB-шнур для зарядки


Если кто-то готов протянуть руку помощи с моделированием корпуса и его 3D-печатью, то я буду очень рад увидеть такого человека в ЛС!


Заключение


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


В данный момент думаю над корпусом и следующей ревизией платы, ещё нужно пробросить много API-вызовов в JS-движок, поработать над графической библиотекой и подумать над удобным способом установки JS-приложений, начать писать приложение-компаньон под Android. Я намеренно не раскрывал все детали и не углублялся в дебри, чтобы не перегружать этот пост. Если тема окажется интересной, то в следующих частях расскажу подробнее про схемотехнику, прошивку, Android-приложение и оптимизацию энергопотребления.


Ссылка на схему с платой: https://upverter.com/EP/cdbd8b9abc72b7cd/nRF52-smart-watch/
Когда доведу до ума и приемлемой степени читаемости код прошивки, обязательно размещу ссылку на Github.


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


С нетерпением жду ваших комментариев и вопросов!


P.S.: добавил опрос.

После достижения проектом своих целей (доведённые до ума железо, корпус, прошивка, приложение), купили бы себе такой девайс?

Проголосовало 216 человек. Воздержалось 34 человека.

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

Поделиться с друзьями
-->

Комментарии (205)


  1. roma_turkin
    23.06.2017 06:50
    +12

    Это потрясающе. Снимаю шляпу!
    Как долго вы делали этот проект?


    1. eup
      23.06.2017 06:56
      +5

      Спасибо за отзыв! Делалось и обдумывалось полтора года точно, очень неторопясь. Сам проект ещё в процессе, тут в основном показаны более-менее видимые промежуточные результаты.


  1. ClusterM
    23.06.2017 07:00
    +8

    Божественно.


  1. dmitry_ch
    23.06.2017 07:15

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


    1. eup
      23.06.2017 07:18
      +4

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


      1. GoldJee
        23.06.2017 10:41
        +1

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

        Снимаю шляпу.


      1. Cenzo
        24.06.2017 05:53
        +1

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


        1. grozaman
          24.06.2017 19:31

          Да можно и железо открыть. Главное чтобы своё было качественнее китайцев :)


        1. keydon2
          02.07.2017 00:00

          Железо открывать НАДО, а то вдруг АНБ уже забали автора и вместо него клепают статьи!
          Ардуинка ж живет и процветает несмотря на китайские аналоги


  1. zedroid
    23.06.2017 08:42

    Почему все таки выбрали LDO для понижения напряжения? КПД в таком случае должен сильно упасть, или я ошибаюсь?


    1. agafonishe
      23.06.2017 08:54
      +3

      LDO вполне подходит для такой задачи. 0,5мкА ток потребления — ничтожная утечка. Зато гарантированно нет пульсаций от переключения.


    1. eup
      23.06.2017 10:48

      LDO показался лучше ввиду большой вероятности того, что сильной разницы между регулируемым напряжением и входным не будет (разница не больше 1.2V, когда надо 4.2V при зарядке в режиме Constant Voltage понизить до 3V), а так же из-за того, что LDO дешевле и занимает меньше места на плате (к нему не нужен индуктор, как у buck). Кроме того, ток потребления у системы тоже маленький, самый пиковый ток (одновременная передача по радио + работающее ядро + запись во флеш) будет около 40mA.


      Когда встал вопрос, какой регулятор выбрать, buck или линейный, глянул эту статью.


      1. olartamonov
        23.06.2017 11:02
        +2

        Бывают DC/DC со встроенной катушкой индуктивности и в габаритах в пределах 3x3 мм. Из внешней обвязки у них только по конденсатору на входе и выходе.

        И да, минус DC/DC в таких схемах — чуть шаг в сторону от правильной разводки «земли», и куча мусора с DC/DC прилетела в радио. Я видел примеры, как люди чувствительность радиотракта убивали на 20 дБ таким макаром.


        1. Alexeyslav
          23.06.2017 13:28

          На таких токах у импульсных КПД ниже плинтуса. А линейные ещё не каждый подойдут — надо брать такой чтобы имел собственное потребление меньше микроампера, но у них есть неприятная особенность — плохая устойчивость и очень легко накосячить с разводкой так что дойдёт до автоколебательного режима и длительных переходных процессов. Это как раз та ситуация когда слишком большая ёмкость на выходе пойдёт во вред.


          1. olartamonov
            23.06.2017 13:40
            +2

            На таких токах у импульсных КПД ниже плинтуса


            http://www.ti.com/lit/ds/symlink/tps82740a.pdf

            КПД 90 % на нагрузке 10 мкА подойдёт?

            А в схеме с LDO в никуда уйдёт половина батарейки.


      1. zedroid
        23.06.2017 12:26

        Если вопрос о длительности работы устройства не стоит, то в принципе Вы правы.


  1. vbifkol
    23.06.2017 09:34
    +4

    Могу помочь с корпусом и ремнем, мне интересно.


  1. AlexPublic
    23.06.2017 10:01
    +12

    Редкий случай, когда встречается профессиональное качество разработки одним человеком сразу на почти всех уровнях (общая архитектура, схемотехника, прошивка, прикладное ПО, ну кроме разве что разработки корпуса). Да ещё при этом видим качественно описание проекта в статье — так сказать вишенка на торте. И всё это в рамках хобби проекта, а не какого-то бизнеса (хотя очень многие описанные на этом сайте бизнес-проекты сделаны явно с меньшим профессиональным уровнем). Давно не видел материалов такого уровня на этом сайте — очень хорошо!

    P.S. Кстати, а почему на Гиктаймс, а не на Хабре? По идее данная статья лучше подходит к основному ресурсу…


    1. eup
      23.06.2017 10:09
      +2

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


    1. ClusterM
      23.06.2017 21:53
      +1

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


      1. nafikovr
        24.06.2017 00:11
        +1

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


        1. ClusterM
          24.06.2017 00:58
          +2

          Я говорю про ПО, а не про железо. Я писал им багрепорты раз десять, не меньше. В конце концов они мне даже подарили часы Pebble Round. Надо отдать должное, что баги они обычно исправляли в конце концов. Но для массового коммерческого продукта их софт был (да и сейчас есть) слишком сырой. А многие весьма банальные функции у них долго откладывались, а то и вообще так и не реализовались. Ну как в 2015 году можно косячить с кодировкой и обрезать текст по байтам, а не по символам, например? Как можно сделать часы, основная функция которых — уведомления, но реализовать эту функцию только после того, как энтузиасты успели наклепать десятки программ, реализующих этот функционал через костыли, ибо API нормального нет до сих пор? Как можно позиционировать свои часы как лучшие/первые в мире, но при этом в течении долгого времени в техподдержке давать ссылки на сторонние прошивки, где энтузиастами реализована поддержка чего-либо кроме латиницы? Как можно выпустить часы с микрофоном, но так долго тянуть с API для работы с микрофоном?

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


          1. nafikovr
            24.06.2017 07:11

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


  1. TeXnoPizza
    23.06.2017 10:06

    Очень понравился проект, да и работа проделана отлично. Готов помочь с корпусом, когда-то тоже думал о самодельных часах правда не таких сложных… В общем если, что принтер есть и опыт моделирования корпусов тоже :)


  1. Saint-Sky
    23.06.2017 10:06
    +2

    Читал взахлёб и ждал того места, когда вы закажете пайку на профессиональном оборудовании и волосы встали дыбом, когда прочитал, что Вы спаяли ЭТО вручную без единого косяка — вот это золотые руки!
    Браво!


    1. Fox_exe
      23.06.2017 11:41

      Ну косяки так-то были (Пара элементов не пропаяны оказались, чип на зарядку батареи вообще мертвый, либо сдох в процессе пайки).
      И да, паять подобное не так уж и сложно. Просто оборудование нужно соотвествующее (Фен, паяльник с жалом «иглой», лупа/микроскоп… Ну и прямые, не дрожащие, руки)


      1. eup
        23.06.2017 11:45

        Да, именно так. Ничего сложного, без проблем не обошлось, никакой магии не применялось.


        1. Muzzy0
          28.06.2017 11:40

          Я бы таки попробовал заказать трафарет для пасты. Намазать через него, раскидать детали, паять феном.
          Раскидывать всё сразу и обдувать всю плату. Как вариант — в духовке :)

          Что до 0402… Когда я только связался с SMD, то по неопытности заказал ряд компонентов на али в этом типоразмере. Слегка офигел от размеров, заказал 0805, пару раз потренировался, опять офигел от размеров. Слишком просто и слишком громоздко. И перешёл на 0603. Как в одном анекдоте, 0402 для меня, как грецкий орех и 0805 — как кокосовый :) 0603 самое то. Возможно, 0402 пошёл бы легче на платах фабричного производства (а не ЛУТ) и более аккуратной организации рабочего места.

          Что до сути проекта — не вполне понимаю назначение таких часов. Дремучий в этом вопросе.

          PS у самого в планах развести свой преобразователь из USB в RS-232/485, с блэкджеком :)


          1. eup
            28.06.2017 12:14

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


            1. Muzzy0
              28.06.2017 15:01

              У меня густая. Именно, что паста.


            1. olartamonov
              29.06.2017 18:23

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

              2) пасты бывают для дозатора и для трафарета, отличаются вязкостью; из доступного в рознице для трафаретов — Multicore Cr36 норм, он есть в маленьких баночках.

              Ну, ещё бывают китайские, отличаются говнистостью.


      1. Movimento5Litri
        28.06.2017 11:00

        Ну и прямые, не дрожащие, руки)

        Ну вот у меня таких не имеется например


        1. daggert
          28.06.2017 11:15

          Это дело наживное. Серьезно. Я начал паять с SMD сразу, так как лень сверлить отверстия всегда было (если не считать пайку для страйкбола, но там паяльник на 100w) и первое время руки дрожали дичайше просто. Через некоторое время освоил успешно процесс с деталями с выводами 1.27. Теперь уже паяю дорожки 0.5 и детали 0603, вполне нормально. Главное тренировка.


          Помню после покупки станции тренировался банально — брал сдохшую деталь от компа (обычно плату от ЖД), выпаивал все компоненты, чистил и ставил все назад. Первое время все уезжало и горело, но постепенно...


          1. Muzzy0
            28.06.2017 11:45

            когда я попробовал сделать свою плату, я быстро оценил достоинства SMD :)) К чёрту все эти дырки. На коленке их надо ещё постараться просверлить ровно и задача вставить корпус больше DIP8 становится весьма увлекательной.
            При первоначальных навыках пайки (и использовании пасты :) ) 0603 никакой специальной подготовки, практически, не требует. Даже корпус SSOP28 на самостоятельно сделанную плату я впаял с первой попытки. Ну, на 2-3 SOP16 перед этим потренировался :)


            1. daggert
              28.06.2017 13:22
              +2

              Ну 0603 тоже требует навыка, я вам скажу. В смысле чтоб сделать ровно и красиво (:


              1. Muzzy0
                28.06.2017 15:02

                Чтоб ровно и красиво — это очень зависит от качества изготовления платы. Сложно бороться с поверхностным натяжением…


                1. olartamonov
                  29.06.2017 18:27
                  +1

                  От качества флюса и припоя, в основном. Asahi и EFD FluxPlus наше всё, а ПОС-63 и ЛТИ-120 сами пейте.

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


  1. IgorKKK
    23.06.2017 10:06

    Здорово! Просто здорово.


  1. Rus695
    23.06.2017 10:06

    Круто! Ждем продолжения!


  1. Andrey_13
    23.06.2017 10:06

    Отличная работа. С удовольствием буду следить далее. Спасибо.


  1. dernuss
    23.06.2017 10:22

    Очень большой чип памяти для такой платы (по физическому размеру).
    Мне кажется больше подошёл бы корпус USON(3x2 мм) вместо WSON-8 (8x6 мм)


  1. Reegool
    23.06.2017 10:22
    +4

    Спасибо!
    Вынес очень много полезного для себя.
    Могу помочь с распечаткой нескольких экземпляров корпуса часов.
    — FDM
    — ABS Черный (другого пока нет)
    — Слой 0,1
    — Сопло 0,32
    От вас STL модель(и) корпуса.
    Отправлю почтой. Для ВАС всё бесплатно )))).
    С моделированием стильного :) корпуса тоже могу подсобить но мне потребуются 3D модель внутреннего бутерброда, либо модели компонентов по отдельности, чтобы сделать из них сборку. Полагаю, найдутся желающие, которые смогут это сделать лучше меня.


  1. Max_Drevo
    23.06.2017 10:22
    +2

    Доброго дня. Могу и с корпусом помочь и есть опыт литья в силикон, самое сложное будет с кнопками, но есть контакты ребят кто ими профессионально занимается. Черчу в Солиде, принтер тоже есть. Сам тоже часики делаю, но с oled дисплейчиком, но так писать ПО я точно не умею, вообще мне это сложно дается, как и все что сложнее уровня arduino.


  1. Taciturn
    23.06.2017 10:27
    +1

    А как дела у этих часов с часами? Есть ли синхронизация времени (NTP/GPS)?


    1. eup
      23.06.2017 10:57
      +1

      Планировалось выполнять периодическую синхронизацию с часами на смартфоне по BLE.


  1. goodwind
    23.06.2017 10:43

    по подсветке:
    попробуйте посмотреть в сторону подсветки для Gameboy Color, возможно удастся подрезать комплект подсветки от него или соорудить что-то подобное самостоятельно.


  1. olartamonov
    23.06.2017 11:04
    +2

    По чипам — у TI есть CC2650 в корпусе PQFN 4x4 мм, он вообще крохотный, при этом очень навороченный и экономичный.

    Правда, с программной поддержкой там немного боль — хотя на ваш проект родная TI-RTOS должна подойти.


  1. w32blaster
    23.06.2017 11:28

    круто! Серьёзно, это офигенно


  1. 100USD
    23.06.2017 11:30

    Молодец, добротная работа!


  1. Fox_exe
    23.06.2017 11:47
    +1

    Вопрос по прошивке: А в какой объём уложился весь код, включая JS-движок (Флеш / оперативка)?
    Да и вообще — интересно почитать об этом подробнее (Про реализацию отдельных компонентов ОС: Обработка нажатий на кнопки, планировщик, работа с перефирией и т.д.)


    1. eup
      23.06.2017 12:40
      +1

      Добавил в статью следующие абзацы:


      1. Fox_exe
        23.06.2017 14:52

        Круть. А я то думал, что js двиг поболе занимать будет. Да и графика для дисплея тож не маленькая.
        Использовались какието алгоритмы сжатия? (Компрессия в духе jpeg?)


        1. eup
          23.06.2017 19:32

          Маленькие иконки пока хранятся в виде простых монохроных bitmap-ов (1 бит на пиксель), получается довольно экономно. Для простой графики можно использовать векторную графику наподобие Pebble Draw Command (PDC), в который есть конвертер из .svg. При простой графике и удачном выборе примитивов для рисования, командный файл получается по объёму меньше bitmap с таким же рисунком и выигрывает в скорости отрисовки.


  1. BurlakovSG
    23.06.2017 11:51

    Супер!!! На руках есть часы SMA-Q, который вроде тоже построены на nRF51 и у них тоже такой же дисплей. Дисплей мне такой очень нравится — на солнце всё видно просто отлично, в темноте приятная мягкая подсветка. Взял их в надежде на то, что китайцы допилят софт, но они собаки забили на часы и выпустили новые, софт которых не совместим с первыми часами. Так и лежат они сейчас в ящике. Вот думаю может их разобрать и также попробовать написать свою прошивку.
    А nRF можно шить и дебажить только JLink-ом или можно также использовать дешёвый китайский ST-Link?


    1. rstepanov
      23.06.2017 12:17

      ST-Link можно перешить в JLink (только те, которые на F103, есть еще на F100, там флэша маловато), но лучше сразу купить полный JLink…


      1. holomen
        23.06.2017 22:18

        На F100 стлинков никогда не было, они сразу были на 103.


        1. rstepanov
          23.06.2017 22:23

          F101, извините:
          image


          1. holomen
            23.06.2017 23:31

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


            1. rstepanov
              23.06.2017 23:32

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


            1. dernuss
              24.06.2017 10:39

              У меня такой же программатор на f100 ;)


              1. holomen
                24.06.2017 14:13

                Может все таки F101? На F100 USB просто физически нет — это совсем другая линейка. Или фото


                1. dernuss
                  26.06.2017 09:21

                  Да, ошибся, на f101. Но на f101 по даташиту usb нет;)


                  1. Alexeyslav
                    26.06.2017 09:46

                    Это не является помехой, когда даже на ATMEGA8 USB реализуют.


                    1. nafikovr
                      26.06.2017 10:32

                      на stm сложнее ибо ядро не такое последовательное как у меги. у f101 usb нет только по даташиту, а у f100 нет физически.


                      1. dernuss
                        26.06.2017 10:38

                        Но на STM8 делают)
                        https://github.com/rikka0w0/STM8-VUSB


                        1. nafikovr
                          26.06.2017 10:43

                          давно интересовался этой темой и там все было достаточно криво. может что то изменилось. да я и не говорил что невозможно.


                          1. dernuss
                            26.06.2017 11:00

                            видимо мало кому надо. STM32F103 стоит недорого, а если надо дешевле есть STM32F042 ( crystal-less USB). Или же атмел soft usb.


    1. eup
      23.06.2017 23:55

      nRF5x вполне можно прошивать и отлаживать ST-Link-ом по интерфейсу SWD через OpenOCD, например.


  1. noonv
    23.06.2017 12:00
    +1

    Отличная работа!


  1. neochapay
    23.06.2017 12:06
    +1

    Я б купил…


  1. gears
    23.06.2017 12:06
    +1

    Отличный проект! Пожалуй лучший из того что приходилось видеть.

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

    Так же вопрос, на фото в посте версия платы 1.3, по ссылке на проект 1.4, какие сделаны изменения и они опробованы?


    1. eup
      23.06.2017 12:09

      Изменения минорные, переместил схему управления вибромоторчиком к краю, добавил тест-поинтов с другой стороны платы. Вывод 3D-модели до жути кривой в Upverter и нужен был, видимо, чтобы впечатлить их инвесторов. 3D модель если и выводить, то с отдельного проекта, где с платы удалены все глючные компоненты.


      1. gears
        23.06.2017 12:26

        Понятно, я так и предполагал.

        Тогда восстановлю проект по герберам (они то хоть не глючно выводятся?!) в Altium и оттуда уже скину в Solid


        1. eup
          23.06.2017 12:41

          Герберы выводятся хорошо, иначе как бы я плату заказал.


  1. rstepanov
    23.06.2017 12:14
    +2

    Очень круто! Мне пока расти и расти… А я то этим гордился:

    простенький HID
    image


    1. apple01
      23.06.2017 15:48

      Что это за устройство?


      1. rstepanov
        23.06.2017 15:52

        Адаптер педалей и КПП (фактически вариант джойстика).


        1. apple01
          23.06.2017 15:57

          Похоже на сниффер протокола RS232 :)


          1. rstepanov
            23.06.2017 18:20
            +1

            Нет, там вообще не используются UART, разъемы DB9 для совместимости с некоторыми игровыми аксессуарами.


  1. BurlakovSG
    23.06.2017 12:21

    Я так понял MicroUSB разъём только для зарядки используется? Может добавить беспроводную зарядку вместо MicroUSB? Только непонятно как на это отреагирует NFC. Кстати, а можно эту же антенну использовать в качестве приёмника для беспроводной зарядки?


    1. eup
      23.06.2017 12:38

      Думал над этим. Решил как-то попробовать интегрировать Qi-зарядку. В теории, NFC-катушка отреагирует наплевательски, более того, одну и ту же катушку не получится использовать как для NFC, так и для Qi-зарядки. У них принципиально разная добротность и резонансная частота.


      Придумал такой вариант: NFC-катушка располагается под дисплеем, а Qi-катушка (она более толстая и с большим числом витков) — под аккумулятором (вплотную к нижней крышке корпуса). Вроде как в плате 2.0 ревизии хватает места для чипсета Qi-зарядки вместо USB, но пока серьёзно такой вариант не рассматривал в виду полного отсутствия опыта работы с Qi. Надо закупится чипами и сделать тестовые платы для оценки технологии, беспроводная зарядка мне в принципе нравится больше, чем USB-шнур.


      1. BurlakovSG
        23.06.2017 12:52

        Ух ты, так получается BQ51051B также заменяет и контроллер зарядки. В результате на плате освобождается место и от контроллера зарядки.


        1. eup
          23.06.2017 12:56

          Да, жутко удобно. Но чип сам по себе большой и ещё требует горсть внешних компонентов.


      1. Alexeyslav
        23.06.2017 15:47

        Так близко расположенные катушки будут иметь трансформаторную связь, чтобы NFC не мешала катушка Qi их надо пространственно разнести, иначе феррит будет работать на обе катушки изменяя их индуктивность. В телефоне это реализовать можно, катушка там порядка 2x2 сантиметра, а вот в часах… или одна технология или другая… или делать беспроводную зарядку не по стандарту Qi а просто как трансформатор о двух половинок, Ш-образный даже можно и соответственно более точное позиционирование девайса в зарядном кредле.


        1. eup
          23.06.2017 23:45

          А четырёхслойная плата с кучей компонентов на ней и сплошным медным полигоном земли на одном слое не будет служить хорошим изолятором между катушками?


          1. Alexeyslav
            24.06.2017 09:21

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


    1. SvSh123
      23.06.2017 15:36

      А стоит? Зарядников с штекером microUSB хоть пруд пруди, беспроводные зарядки встречаются куда реже. Если только из интереса.


      1. BurlakovSG
        23.06.2017 15:50

        С MicroUSB будут проблемы с влагостойкостью, а точнее её не будет вообще.


        1. SvSh123
          23.06.2017 16:19
          +1

          В Sony эту проблему как-то решили… :)
          Насколько я знаю, там герметичен сам разъем, да еще заглушка резиновая. Раздобыть такой же, наверное, сложно…
          Но если с этими часами не нырять, то резинки достаточно. Напечатать из флекса на том же самом принтере — и все дела.


          1. sam_green
            30.06.2017 13:57

            Разбирал часы Sony. Там обычный microUSB, только залитый чем-то типо эпоксидки.


      1. mm7
        23.06.2017 21:48

        Не надо штекер.
        Есть магнитный разьём МикроУСБ. Его наконечник залить в корпус, а провод к нему примагничивать.


  1. saboteur_kiev
    23.06.2017 12:47
    +1

    Вопрос не совсем по теме статьи, но любопытно.

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

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

    Так почему же нет на рынке СНГ дешевых умных розеток и дешевых умных часов?


    1. instalator
      23.06.2017 22:38

      1 на миллион наверное


  1. tyderh
    23.06.2017 13:26
    +1

    Божественно, просто божественно.


    Умоляю вас не останавливаться и попробовать сделать это доступным для простых смертных хотя бы в виде комплекта для сборки "закажи у китайцев компоненты, плату и собери"


    1. zedroid
      23.06.2017 13:52
      +1

      Так скорее всего не взлетит. Автор ОЧЕНЬ пряморук, раз смог все это спаять. В реальности это не просто для обывателя.


      1. tyderh
        23.06.2017 14:03
        +1

        Китайцы же и не такое паяют.


        1. DarkTiger
          24.06.2017 01:38

          Да, но с трафаретом за 300$. Ручками это все ОЧЕНЬ сложно спаять, говорю как человек, паявший вручную 0201 :)
          Снимаю шляпу!


          1. Muzzy0
            28.06.2017 11:49

            0201? Что, даже такое есть?!


            1. eup
              28.06.2017 12:16

              И 01005 есть.


              1. dernuss
                28.06.2017 12:56
                +1

                они вроде есть, но их не видно)


          1. semen-pro
            29.06.2017 07:33

            А если трафарет самому вырезать с помощью лазерного станочка из DVD приводов?


            1. DarkTiger
              29.06.2017 09:17

              Если Вы в состоянии сделать такой станок — не думаю, что 300$ — та сумма, за которую Вы станете возиться неделю :) в изготовлении такого станочка время займет софт в основном, позиционирование и все такое, а хорошие спецы в данной области очень недешево стоят


            1. DarkTiger
              29.06.2017 09:28

              И, кстати, лазер, который может прожечь толстую металлическую фольгу, Вам банально не продадут — какой там лазер из dvd приводов...


              1. semen-pro
                29.06.2017 10:49

                Я думал, трафарет делают из какой-то толстой пленки и потом убирают, после нанесения пасты и размещения деталей.


                1. olartamonov
                  29.06.2017 18:30

                  Все промышленные трафареты — стальные.

                  В домашних условиях можно резать трафареты из пластиковой плёнки на плоттерах Silhouette, но пассивка 0402 там получается так себе, а всякие QFN с шагом 0,4-0,5 мм — никак не получаются.


            1. olartamonov
              29.06.2017 18:29

              У вас DVD-привод режет сталь 0,1 мм? Завидую.


  1. aivs
    23.06.2017 14:45
    +1

    Однозначно это мега крутая работа!!


  1. daggert
    23.06.2017 15:36
    +1

    Автор, спасибо тебе, ты сейчас ответил на очень многие вопросы по моему проекту новому с GPS!


    1. TedBeer
      29.06.2017 11:08

      Есть старый проект часов с GPS (открытое железо, софт) — F*WATCH. Может там тоже найдете что полезное.


  1. aivs
    23.06.2017 15:57
    +2

    Сам делаю проект и там подсветка очень важна, разобрал подсветку от iphone, там около 7 слоев, заказал с Ali кнопки с подсветкой, чтобы посмотреть как это работает, везде принцип один:
    1) Нижний слой белый отражающий
    2) Средний слой оргстекло, на гранях отражается свет. Светодиод светит прям в оргстекло
    3) Верхний слой белая рассеивающая пленка, для равномерного распределения света по поверхности



    https://ru.aliexpress.com/item/5-pcs-Blue-Color-HTTM-Series-Capacitive-Touch-Switch-Button-Module-New/32471771544.html?spm=2114.13010608.0.0.WQRMPY


    1. VT100
      24.06.2017 00:12
      +2

      2) Средний слой оргстекло, на гранях отражается свет. Светодиод светит прям в оргстекло

      Присмотритесь к нему внимательнее. Вангую, что на нём есть множество мелких матовых точечек, которые и обеспечивают равномерное рассеяние на манер рис. 33 этого документа от Broadcomm (Avago, Hewlett Packard)


      1. aivs
        24.06.2017 00:26
        +1

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


  1. Mulin
    23.06.2017 16:06
    +3

    «Как только плата была собрана, я схватил в руки тестер и начал прозванивать всё, до чего мог дотянуться, на предмет коротких замыканий.»

    Я делаю следующим образом:
    1 Впаиваю первый каскад питания (разъемы, предохранители, конденсаторы)
    2 Включаю в сеть измеряю питание. если все ок, перехожу к следующему этапу.
    3 Впаиваю второй каскад питания (dc-dc преобразователи, гальваника).
    4 Включаю в сеть измеряю питание. если все ок, перехожу к следующему этапу.
    5 Поочередно впаиваю всю остальную логику с тестированием на работоспособность.
    PS Очень круто у вас вышло!


    1. DarkTiger
      24.06.2017 01:48

      При такой плотности монтажа возможно КЗ там, где его не ждешь — «остальная логика» тоже имеет ноги питания, расположенные близко к сигнальным, так что закоротить можно, совершенно не заметив. Так что автор «все правильно сделал». Я обычно и под микроскопом еще смотрю несколько раз после окончания пайки.
      То, что Вы пишете — совершенно правильные и необходимые действия, но гарантию они дают только для относительно небольшой плотности монтажа.


      1. Alexeyslav
        24.06.2017 21:12

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


  1. madf
    23.06.2017 16:10

    Не, типоразмеры 0402 и 0603 не для пайки дома (и куэфэны корпусв). При всём желании сэкономить на простоте обвеса чипов, всё равно получилась довольно сложная плата.
    В датащите на дисплей нет никакой информации о потреблении, видимо проще снять готовые показания… кстати в статье нет информации о неком промежуточном результате, только осваивание периферии.
    Вообще очень много избыточных деталей/блоков, ненужны: RTC, оценка состояния батареи. Всё это можно сразу сделать при помощи МК, хотя понятно, что геморроится с "вечным календарём" — то ещё удовольствие.


    Вообще я тоже давно вынашиваю идею своих часов, пока остановился на Е-ink дисплее, хотя понятно, с динамикой там будут большие проблемы или как обычно уходить на обычные LCD от Нокий. :)


    1. instalator
      23.06.2017 22:42
      +1

      Все это паяется паяльником с небольшим жалом. Я жалом "микроволной" паяю такие корпуса. Qfn если с подложкой то феном.


    1. Muzzy0
      28.06.2017 11:51
      +1

      0603 паяются на коленке обычным феном. И, практически, без спецподготовки. Достаточно нормальных навыков с обычным паяльником.


      1. madf
        28.06.2017 12:16

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


        1. eup
          28.06.2017 12:18

          Согласен. Больше одного такого устройства в год лучше не паять руками. Глаза и нервы ещё пригодятся.


        1. Muzzy0
          28.06.2017 15:19

          Не, типоразмеры 0402 и 0603 не для пайки дома

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


        1. Egorkkk
          28.06.2017 15:20
          +1

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


        1. olartamonov
          29.06.2017 18:33

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

          Но спасибо за ваше ценное мнение.

          P.S. Паять 0603 паяльником вручную можно сколько угодно, просто это тупо неэффективно на любом объёме больше 1-2 простеньких плат — трафарет, паста и ручная расстановка дают результат быстрее и качественнее.


  1. SadAngel
    23.06.2017 19:35

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


    1. eup
      23.06.2017 19:44

      У CC2640 от Texas Instruments тоже такая возможность есть.


  1. Zangasta
    23.06.2017 19:35

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


    1. nafikovr
      24.06.2017 00:23

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


      1. MaximSuvorov
        30.06.2017 13:57
        +1

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


    1. prostosergik
      24.06.2017 00:43

      Эх, кто бы хотя бы для умных часов на Андроид написал что-то стоящее помещающееся на мелком дисплее и выполняющее удобно обычные функции… Но нет. Есть пару кривоватых лончеров, 1-2 китайских будильников, и это все. Остальное безбожно неудобное...


      Пилил-пилил я свой календарик, но так и не допилил. =(


      1. AlexPublic
        24.06.2017 19:55

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


        1. prostosergik
          24.06.2017 21:04

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


  1. HenryPootle
    23.06.2017 19:35

    Вам, дорогой мой, прямой путь на краудфандинговую платформу.

    1) как набор для DIY с разными вариантами корпусов
    2) Полноценные часы.

    Только обязательно надо сделать конструктор циферблатов.


    1. nafikovr
      24.06.2017 00:25
      +1

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


    1. MyFearGear
      24.06.2017 03:20
      +1

      На этом рынке слишком много игроков — pebble (был), weloop…


      1. tyderh
        24.06.2017 13:14
        +1

        И кто занял нишу пеббла? Сабжевые часы, насколько я понимаю (ну, если даже интерфейс почти 1-в-1), как раз по мотивам pebble и создавались


        1. nafikovr
          26.06.2017 10:35

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


          1. MyFearGear
            27.06.2017 03:52

            Да есть ниша! Просто рекламы у них было откровенно мало.
            «Народная молва» часто распинается про анекдотические смартчасы, которые работают один день и поэтому неюзабельны, но при этом умалчивают про адекватные смартчасы, которые работают 10-30 дней…
            Имхо


            1. nafikovr
              27.06.2017 07:41
              -1

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


  1. Kik_ch
    23.06.2017 19:35
    +1

    Это просто супер круто. Редко такие посты бывают. открывал с предчувствием что «а, все как обычно, гляну и закрою»… не угадал. читается взахлеб. Спасибо! За информацию, и пополненный багаж знаний. Много для себя нового почерпнул. Жду продолжения, буду следить.


  1. zeblong
    23.06.2017 19:35
    +1

    Шикарнейшая работа!!! Статья тоже захватывающая. Вы большой молодец. Но вот корпус — корпус это важно — все что вы сделали — очень круто — теперь надо облачить в корпус «который хочется облизнуть» и да — я тоже считаю что этот проект нельзя пустить «в стол» или в один экземпляр на Вашей руке — пускайте в серию.


  1. eugenk
    23.06.2017 19:36
    +2

    Просто не нахожу слов чтобы выразить своё восхищение. Сказать что снимаю шляпу, значит ничего не сказать… Хочу спросить во-первых во сколько проект обошелся по деньгам и времени (полученные положительные эмоции разумеется тут просто не поддаются исчислению !)? И ещё вопрос не только к автору но и ко всем. Какая практическая польза от подобного гаджета? Положим у Вас есть такой. Полностью самодельный, с самописным софтом, в котором Вы как у себя дома и т.п. Что бы туда можно было запихнуть интересного и полезного? Давно уже задаюсь подобным вопросом по отношению к гаджетам, размером от небольшого телефона и мельче.


    1. eup
      23.06.2017 19:50
      +1

      По бюджету — где-то 8тыс. (отладочные платы дорогие!) и год-полтора неторопливой работы, но можно было, в принципе, всё сделать гораздо быстрее.


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


  1. zl0i
    23.06.2017 19:36

    Подскажите пожалуйста, где нарисовали такую красивую диаграмму устройства?


    1. eup
      23.06.2017 19:41

      В Upverter помимо редактора схемы и платы проекта ещё есть и редактор таких диаграмм, находится во вкладке "System" в открытом проекте.


  1. ngl4ngl
    23.06.2017 19:36
    +2

    Отличная статья и отличная разработка! Тут, да и в других местах, такой уровень очень редко встречается.
    Для будущих модификаций могу вам посоветовать только одно — изменить схему питания. С точки зрения экономии энергии, будет разумно перейти на питание всей (кроме индикатора) системы на минимально возможное для нордика значение.

    Если не секрет, как называются и у кого вы купили вибромоторы?


    1. eup
      23.06.2017 19:39

      Питание однозначно будет переделываться на более эффективное (DC/DC, более пониженное напряжение), благо есть люди, с которыми можно по этому поводу проконсультироваться.


      Вибромоторы — ноунейм, на Aliexpress просто вбил "vibration motor" и нашёл подходящие и подешевле.


      1. ngl4ngl
        23.06.2017 20:15
        +1

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


        1. Tomasina
          28.06.2017 13:04

          Может статейку на эту тему?


          1. ngl4ngl
            29.06.2017 16:04

            Если интересно, могу попробовать написать.
            А вы имеете в виду про кикстартер или про железку?


            1. Tomasina
              29.06.2017 16:29

              Про квест с кикстартером.


        1. Movimento5Litri
          29.06.2017 15:39

          А как ваш гестор купить-то?


          1. ngl4ngl
            29.06.2017 16:08

            Когда закончим рассылку бэйкерам, откроем онлайн магазин на сайте gestordevices.
            А пока, если интересно, можете ко мне обратиться, какое-то количество есть в Москве.


  1. TPertenava
    23.06.2017 22:54
    +1

    Не могу не написать очередной комментарий о своем восхищении Вашей работой, а главное — подходу к написанию статьи. Уверен, что столь же интересным будет продолжение про создание корпуса и финального прототипа. Пожалуйста, пишите еще!


  1. Dark_Purple
    23.06.2017 23:58
    +1

    Достойно!


  1. mickvav
    24.06.2017 00:15
    +1

    Про корпус — вы в сторону openscad-а не смотрели на предмет «запрограммировать» корпус?


    1. eup
      24.06.2017 00:21

      Нет. Интересная штука, взгляну обязательно. Программировать получается лучше, чем рисовать.


  1. VT100
    24.06.2017 00:23
    +1

    потому что зарядный ток в 100mA для 110mAh аккумулятора это, возможно, многовато.

    Скорее всего — да. Подготавливая базу для одной разовой поделки — сличал документацию от нескольких производителей (примерно дюжина отдельных моделей аккумуляторов). Номинальные токи зарядки сошлись на C/4 (25 мА в случае 100 мА*ч аккумулятора).
    100 мА для 110 мА*ч получается уже форсированный режим, как у RC моделек. Так тоже можно, но надо контролировать температуру аккумулятора что-бы не было пыха. И ресурс снижается.


  1. seri0shka
    25.06.2017 03:16
    +2

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


  1. zartarn
    25.06.2017 12:52
    +1

    Наверно идеально можно вписать в размеры Ipod nano 6g, и исопльзовать их ремешки.


  1. green_worm
    26.06.2017 10:25
    +1

    Очень круто!
    Пора стартап запускать!
    Можно было бы в конце забубенить опрос, за сколько люди готовы покупать такое.


    1. nafikovr
      26.06.2017 10:39

      и как вы себе представляете выбор цены для готового устройства?


      1. green_worm
        27.06.2017 09:49

        Стандартный опрос: «Сколько Вы готовы заплатить за умные часы с таким-то функционалом?»
        И типа голосовалки (на сколько я помню, тут движок позволяет её сделать):
        1.) Х руб.
        2.) У руб.
        3.) Z руб. (долго лень было переключаться на английский, но после подбора нескольких букв, понял, что Z тут будет лучше выглядеть) ^_^


        1. nafikovr
          27.06.2017 09:51

          то есть вы считаете что если есть устройство, которое стоит Y. то его кто то будет продавать по Х или кто то будет покупать по Й?


          1. green_worm
            27.06.2017 12:01

            Не совсем понял вопрос.
            Я предложил провести мини-исследование (опрос), что бы понять, готовы ли люди покупать подобные часы и какую цену они считают справедливой. То есть, за сколько будут продавать это вопрос некорректный — можно поставить и за 100500 тысяч. Но будут ли покупать. Опять же, если прилизать дизайн интерфейса и изготовить корпус из хирургической стали, из драгметаллов, то и за 100500 можно выставить в единичном экземпляре (на всякий случай).
            Себестоимость (по материалам — интеллектуальную часть пока не берем в расчет) в 1 500 р. (пускай 2 000 р. с учетом печати корпуса) весьма неплоха.
            Тоже немного кривовато написал — прошу прощенья. Но надеюсь понятно. =)


            1. nafikovr
              27.06.2017 14:19
              +1

              в рознице один лишь дисплей стоит как раз таки 1500, если что. правильнее ставить вопрос будут ли покупать за сумму X


              1. green_worm
                27.06.2017 15:13

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


  1. fotofan
    26.06.2017 14:36
    +1

    Пора хабру запускать собственную краудфандинг-платформу


  1. DeepOrca
    27.06.2017 11:15
    +1

    Поразительно.

    Вот из таких работ, как мне кажется, и вырастают «open source» устройства в духе Ergodox.

    Спасибо!


  1. eup
    27.06.2017 12:46

    Attention!


    Добавил небольшой опрос к посту.


  1. green_worm
    27.06.2017 13:08
    +2

    Порадовало, кстати, про «усиление антенны мизерное, но две бетонные стены пробивает» )))


  1. argz
    27.06.2017 13:13
    +2

    Отличная работа!
    Небольшой совет: вместо Winbond W25Q256FV лучше использовать Micron N25Q256A11EF840E. Всё совместимо, только купить проще.


    1. eup
      27.06.2017 14:18

      И действительно. Спасибо, добавил в статью.


      1. eup
        27.06.2017 14:23
        +1

        UPD: В статью не добавил. Согласно Digi-Key, этот чип устарел (End of Life) и его выпуск прекращён, так что в магазинах сейчас распродают его остатки. В новых проектах лучше не использовать.


        1. olartamonov
          29.06.2017 19:06
          +1

          У них есть новая линейка на замену, по совместимости её с Винбондом — ХЗ, скорее всего такая же.


  1. peterkam
    28.06.2017 10:49
    +1

    Кто-нибудь, срочно хантите этого джентельмена!


  1. Tomasina
    28.06.2017 12:53
    +1

    Это офигенно! Особенно для одиночки, а не коллектива.


  1. jee
    28.06.2017 14:09
    +1

    Отлично! У меня такой вопрос — а как запаять такие крохотные детали феном? Я пробовал паять SMD, но всё сдувало, поэтому в итоге я просто нанёс пасту и тыкнул паяльником с двух сторон каждого элемента, запаялись. А вот феном совсем не вышло


    1. SvSh123
      28.06.2017 14:48
      +1

      Подбирать температуру и расход воздуха. Но обычно феном их и не паяют, тут нужна ИК-станция или печка.


    1. daggert
      28.06.2017 14:50

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


      1. jee
        28.06.2017 14:52

        Какой гель порекомендуете? Я купил пасту в Чип и Дипе, довольно дорогую. Название не могу сейчас написать


        1. daggert
          28.06.2017 23:46

          Keller flux-gel TT 20ml, стоимостью в 60 рублей (: До этого были чуть дороже, дешевле, с алишки. Все было хуже.


          1. olartamonov
            29.06.2017 19:05

            Есть мнение, и не единственное, что однажды вас с ним ждёт ряд удивительных открытий.


            1. daggert
              29.06.2017 19:22

              Мне видать очень повезло...


    1. eup
      28.06.2017 15:15

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


      1. jee
        28.06.2017 15:19

        У меня паста по консистенции как зубная паста. Нанёс на площадки пасту, вдавил скажем резистор. Грел-грел всё уехало паста не запаялась. Сделал то же самое но грел уже паяльником, всё ОК. Фен у меня на турбинке, может обязательно компрессорный нужен?


        1. eup
          28.06.2017 15:33

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


    1. gears
      28.06.2017 16:06
      +1

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

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

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

      Правильная последовательность достаточно простая:
      — С большого расстояния прогревается плата, при этом температура воздуха возле компонентов не должна быть большой. Задача этого этапа расплавление флюса и его активация для обеспечения качественного паяного соединения. Выглядит как паста становится жидкой е немного раслекается по контактным площадкам.
      — Расстояние немного сокращают и выдерживают прогрев некоторое время чтобы флюс высох. Расстояние так же довольно большое, температура при этом поднимается не значительно. Если не обеспечить высыхание флюса то при плавлении шариков припоя он вскипит и разбрызгает припой, отсюда и шарики которые потом надо nofntkmyj отмывать чтобы не коротили и недостаток припоя на площадках.
      — Расстояние плавно сокращают до момента плавления припоя
      — Плавно отводят фен и продолжают обдувать с большого расстояния некоторое время, как на первом этапе. Нужно для плавного охлаждения и предотвращения резких температурных перепадов.

      По личному опыту даже 0402 легко паяется и феном и паяльником. Феном конечно гораздо быстрее. Ну и без микроскопа бывает не очень удобно. Благо братья китайци предлагают весьма хорошие цифровые микроскопы за разумные деньги.


      1. dernuss
        28.06.2017 16:26
        +1

        Фактически вы словами расписали термопрофиль)


        1. gears
          28.06.2017 18:02

          Все верно! Просто многие думают что он нужен только для ИК печки или конвейера, а потом удивляются почему феном не получается нормально припаять.


      1. jee
        28.06.2017 16:28

        Ох, супер описание, спасибо!


  1. TedBeer
    28.06.2017 20:19
    +1

    Присоединюсь к общему хору восторгов и сожаления, что сам электроникой слишком поздно заинтересовался.
    Голосовать за материал поздно, поэтому проголосовал в карму.
    Не так давно, когда искал смартчасы, наткнулся на старый опенсорсный проект — F*WATCH.
    Может вам будет интересно посмотреть на какие-то решения:
    Sensors

    • GPS
    • Pressure sensor
    • 3D-accelerometer
    • Compass
    • Ambient light sensor

    I/O
    • 128x128 pixels LCD with backlight
    • Micro-USB connector, 4 Buttons
    • Buzzer, vibrating motor
    • MicroSD memory slot

    Various
    • 500 mAh Lithium-ion battery, fuel gauge
    • 4-layer PCB

    Mechanics
    • 3D-printed watch case and buttons
    • Developed with open FreeCAD design tool

    Software
    • FreeRTOS operating system
    • Bootloader, drivers, applications
    • Interface to USB host (e.g. download track data, upload firmware)
    • Developed with open gcc compiler

    Вообще на рынке по моим ощущениям альтернативы Пеблу так и не появилось. Как жаль, что они взялись за неподъемную задачу и не вынесли тяжести бытия. Причем основная проблема всех существующих решений лежит не в аппаратной плоскости, а в программно/организационной. Нужен хороший движок(достаточный, отлаженный, вылизанный и хорошо документированный API) и сообщество. Пебл фактически много достиг именно за счет открытия платформы и организации такого сообщества. Все же другие компании держут фигу в кармане и кормят юзеров вотчфейсами.
    Те же китайцы начали наводнять часами торговые площадки, а софт — глюкало на глюкале, API нет, сделано всё на коленке, поэтому открывать нечего.
    SMA-Q, SMA-Q2 — приятные аппаратные возможности, но софт портит всё.
    Кстати похожая ситуация с умными пультами ДУ. Там и ценник зашкаливает и/или софт гавно. Вот тоже хотелось бы приложить ручки, но наверно это тема уже отмирает.

    Про JS движок.
    Почему выбор сделан в пользу JerryScript? Не скажу про него ничего плохого, я с ним мало знаком. Но в свое время следил за Espruino. Запускал у себя, тестировал и репортил баги. Там реально создатель замарачивался на экономию энергии, а не только уложиться в память.

    По поводу рисования корпуса.
    Раз вам комфортно с JS, то можете обратить внимание на openjscad.org (я для него немного девелопил) Это как бы опенскад, но используется JS(и даже может рендерить какие-то вещи из OpenScad напрямую). Но тут конечно доступна вся мощь программирования на JS(в отличие от недоязыка openscad)


    1. eup
      29.06.2017 02:28

      Спасибо за такой развёрнутый комментарий.


      Подглядел у F*WATCH реализацию подсветки, вроде адекватно. У них светодиоды питаются от GPIO и светят снизу на рассеивающую подложку от PLEXIGLAS. Проблема в том, что экран имеет прозрачность (transmissivity) около 0.15%, это очень мало для обычных светодиодов.


      В 2.0 версии я использую два белых светодиода, стоящих под прямым углом:


      Изображение

      image


      1. TedBeer
        29.06.2017 09:39

        Так приземленный вопрос — простая JS задача на таймере/setInterval(...) сколько будет съедать энергии? Какова разница в потреблении когда есть watchface работающий по таймеру и когда его нет?


        1. eup
          29.06.2017 10:28
          +1

          Пока даже на такой простой вопрос ответ дать не могу.


          Амперметр в разрыв питания в момент обновления вотчфейса показывает прыжок по потреблению с 100мкА (это слишком много, надо будет понижать) до чего-то вроде 5мА (просыпается ядро и колбасит скрипт и обновляет экран), а потом всё засыпает и потребление возвращается назад к 100мкА.


          Для 2.0 версии платы, которая приедет где-то через месяц, я сделал test-jig с pogo-пинами на ней и микроконтроллером (STM32F103, у меня их куча), который будет следить за потреблением платы через шунт и слать данные через USB-CDC (виртуальный COM-порт) на компьютер. Таким образом, у меня будет удобный профайлер энергопотребления и тогда я буду проводить самые хитрые бенчмарки и оптимизировать уже не в слепую.


          Вообще, когда я в первый раз подключил плату к амперметру, я просто рвал волосы на голове — 15мА потребления. Я спрашивал себя, «Откуда?!». Оказалось, что есть много случаев (они описаны в ERRATA, [1], [2]), которые сильно увеличивают потребление чипа в спящем режиме или не дают ему уснуть вообще. Ну и ещё акселерометр на плате (MPU-9250) по-умолчанию работает в режиме, который ест 5мА. Чип флеш-памяти тоже почему-то съедал несколько миллиампер, пока я его не перепаял и он не перестал. По оптимизации энергопотребления и граблям конкретно у nRF52 можно писать ещё одну целую статью.


          1. eup
            29.06.2017 10:48

            К слову, тестовых поинтов для pogo-пинов получилось много:


            Зато удобно и не надо ничего припаивать для отладки.


            1. dion
              29.06.2017 16:17
              +1

              Правильно я понимаю, что есть 'ответная' плата со штырями в этих местах?


              1. eup
                29.06.2017 16:38
                +1

                Да, приёмная плата в процессе:


                Изображение

                image


                1. dion
                  29.06.2017 16:40

                  Спасибо!


          1. TedBeer
            29.06.2017 11:05
            +1

            Значит еще предстоит длительная оптимизация. Espruino PICO в режиме Stop (реал тайм тикает, есть возможность проснуться по сигналу или таймеру) потребляет 20мкА. Когда будете готовы, то почитайте на сайте Espruino, полистайте исходники(спасибо опенсорс), чтоб понять где можно соптимизировать — Espruino Power Consumption.


            1. olartamonov
              29.06.2017 19:00
              +1

              Там какая-то поверхностная чушь написана.

              На микроконтроллере низкое потребление делается по стандартным шагам:

              1) если есть периферия, способная тактироваться в STOP (LPUART и т.п.) — задать в явном виде требуемое её состояние

              2) если есть требования по переводу встроенных LDO или DC/DC в определённое состояние — выполнить его

              3) висящие в воздухе GPIO нельзя оставлять в состоянии цифрового входа без подтяжки. Они должны быть сконфигурированы как вход с подтяжкой, аналоговый вход или цифровой выход.

              4) GPIO, идущие на цифровые входы периферии, не имеющие собственной подтяжки, нельзя ставить в состояние входа без подтяжки или выхода с High-Z. Они должны быть сконфигурированы как выход или вход с подтяжкой, направление которой соответствует минимальному потреблению периферии (т.е., например, UART TX и SPI CS подтягиваются в 1)

              Обычно потребление в STOP масштаба 20-200 мкА есть следствие несоблюдения пунктов 3 и 4.


  1. PavelNN
    28.06.2017 23:21
    +1

    Бесподобно!
    P.S. Записываюсь в покупатели, вдруг решите выпустить серию)


  1. Vovvka
    28.06.2017 23:21
    +1

    Это просто замечательно! Пожалуйста, не бросайте разработку (нужна водонепроницаемость и подсветка).
    И надо пробовать Кикстартер, т.к. лучше попробовать (в параллель разработке для себя) и не собрать сумму, чем потом сожалеть, что не попробовали.

    Сам бы купил такие часики всей семье. По Pebble очень скучаю, а тут opensource ;-)


  1. SokoloffD
    29.06.2017 21:58
    +1

    Наверное одна из интереснейших статей за крайние года 2!


    1. keydon2
      02.07.2017 00:05
      +1

      Поддеживаю. Хабр(гигтаймс) ожил от этой статьи.


  1. SilverR
    03.07.2017 10:58
    +1

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