Pull to refresh

Comments 74

Можно попробовать агрегировать и сжимать данные перед передачей.
Про сжатие, добился уменьшения пакета с 40 до 20 байт путём отправки 16-битных чисел с фиксированной точкой (родной формат IMU) вместо 32-битных float. Дальше только агрегация, да.
Немного не моя сфера, но было интересно почитать. Думаю, что подобные вещи могу хорошо способствовать развитию таких видов спорта. Более детальный разбор ошибок, который помогает развивать технику
Экономика и цены — здорово, если разработчик не совершает ошибки на уровне принципиальной схемы и разводке.

Т.е. вам очень повезло, либо вы сильный специалист, если у вас заработала плата с первого раза =)
There's no such thing as free lunch, далеко не с первого раза всё заработало. Потребовалось две ревизии на конкретно этих чипах.

Очень круто, спасибо! Можно ли купить ваше устройство?
Мы во Флиппере тоже используем STM32 WB55 и столкнулись с выгоранием передающего тракта BLE если оставить на сутки устройство в режиме STOP 2, проблема описана здесь. Может кто сталкивался с подобным?

Спасибо! Пока купить не получится, только если как general purpose IMU с поддержкой BLE, т.к. скейт-функций там пока нет. С вашей проблемой ещё не сталкивался, т.к. до режимов сна ещё не дошёл. Ответил вам в ЛС по поводу совместной отладки этой проблемы с радио.
Хм, вот бы запись присобачить к Tony Hawk’s Pro Skater для визуализации. Хотя…

Кроме доски есть же ещё внезапно и человек. Снимать данные с движения человека прикидывали?

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

Движение доски это следствие. Хотя как упрощенная версия записи движения человека годится.

Извините, если немного сумбурно.
Да, были мысли в систему ввести ещё и данные о позиции ног человека относительно доски. Например есть трюки, где вращается и райдер и доска, например bs 180 kickflip. С точки зрения доски этот трюк ничем не будет отличаться от varial kickflip, поэтому нужны доп. данные о том, где находится сам райдер. Та же ситуация с трюками, вовлекающими в себя body varial, например pop shove-it body varial с точки зрения доски будет выглядеть просто как обычный pop shove-it.
А может, не только «позиция ног», но и «амплитуды» (ног, «центра масс» (например, закрепить на поясе), и рук)? и получится неплохая «обучалка». Хотя бы в плане «контроля ошибок». И не только для скейта, но и для многих других видов спорта.
Жесткие нагрузки на электронику (тряска), интересно, в каких-то еще подобных родах деятельности компоненты сколько могут прожить? Не знаю, какой-то станок или виброплатформа…
Залить всё эпоксидкой (potted), обычно применяется для HV, но и от тряски должно помочь.
Теоретически там дохнуть нечему, кроме MEMS, для него надо читать даташит. P.S.: ещё кварцы могут…
Пока не знаю, но вот самое хрупкое это керамические конденсаторы и кварцевые резонаторы. Думаю, что заливка чем-то должна помочь до какой-то степени распределять механическую энергию тряски/ударов.
Не нужно это всё. Если плата жесткая и не болтается в корпусе, то корпуса 0402 живут очень долго. То же самое касается кварцев и прочего. По обственному опыту, неоднократный (десяток тысяч) регулярный удар 500g 1-2мс всё переживает без каких-либо проблем. Правда, пайка на свинец.
Конформное покрытие (заливка) нужна в основном для защиты от влаги. Есть варианты. Хорошо работает покрытие чем-нибудь типа Humiseal 1A33 в три слоя. Ремонтопригодно, удобно контролировать качество нанесения под ультрафиолетом. Да, вероятно, не бюджетно, зато не двухкомпонентный, как какой-нибудь УР-231 и сохнет относительно быстро.
Только не заливайте эпоксидкой. Вы получите тяжёлый кирпич, который внутри неоднороден. И уже сама эпоксидка начнёт отрывать вам детали от платы.
Как бы я делал. Напечатал бы под плату корпус несколько больше платы — буквально, на миллиметр с каждой стороны. Установил туда плату на стоечках с точечным контактом, и залил всё силиконовым двухкомпонентным компаундом. Можно попробовать начать с ПК-68, он шикарно затекает в любые самые мелкие щели, но довольно мягкий. Возможно, потребуется найти более твёрдую версию. Собственно, эластичный компаунд обеспечит защиту как от вибрации, так и от воды. Но вот USB он точно испортит, залившись внутрь, да и вообще любые разъёмы.
P.S. Довольно странный выбор, использовать гребёнки с шагом 2.5 мм на таком миниатюрном устройстве. Чем вам mini molex не понравились?
P.P.S Увидел дальше 100500 комментариев «зачем такие разъёмы».
Спасибо за советы! USB можно заменить на магнитный разъем или вообще на беспроводную зарядку.

Довольно странный выбор, использовать гребёнки с шагом 2.5 мм на таком миниатюрном устройстве.


Это временный разъем для программирования, потом я планировал его отпаять.
Поддержу вариант с силиконовым компаундом, в блоках абс автомобильных, встречал такое решения, а там вибрации постоянные.
Артиллерийский снаряд с наведением на цель. Ещё во времена СССР был сделан.
Ещё бомбы, хоть времён Первой мировой можно переоборудовать в управляемые. Мины (миномётные) управляемые когда делали — не срабатывал взрыватель. Мина заглублялась на три метра и не подрывалась. Откопали несколько, несмотря на возможность взрыва в любой момент, разобрали, разобрались с проблемой, пофиксили. В момент удара электроника выдерживает 3000 g.
Потрясающе! Огромная работа и очень качественное её описание! Спасибо!
Превосходная конструкция и отличная статья!

Желаю довести софт до конца! Надеюсь, будет продолжение

Шикарная реализация! Интересно было почитать.
В глаза бросается неуместный разъем с шагом 2,5мм. Я подозреваю, что это для программирования. Недавно видел отличную рекомендацию для этого случая — оставляйте контактные площадки и подключайтесь прищепкой с Pogo Pins.
Рекомендацию видел на шикарном канале https://www.youtube.com/c/VladimirMedintsev/videos, само видео быстро на нашел.
Схематически варианты исполнения можно тут посмотреть:
https://hackaday.com/2019/06/13/soicbite-a-program-debug-connector-for-an-soic-test-clip/
https://imgaz.staticbg.com/images/oaupload/ser1/banggood/images/4D/63/a5208c02-942c-4e88-b535-21ea94b87275.jpg.webp

Спасибо! Читаете мои мысли, pogo-пины это хорошая замена большим разъемам. Но нужно будет либо делать плату-приёмник с пинами, к которой будет крепиться само устройство, либо какую-то прищепку, над этим стоит подумать и посмотреть, как люди изготавливают зонды с ними.
Шестиконтактный tag-connect. Не бюджетно (если покупать оригинальный кабель, а не делать самому из китайских пого-пинов), но очень удобно. И никакого колхоза. Там, где не получается делать ориентирующие отверстия под него, обычно ставлю KLS1-208C-3.4-2-06-T (1.27х1.27 — 6 выводов, мама).
Тоже хотел написать про неуместность разъёма с шагом 2,54мм. Мы давно перешли на использование для SWD SMD-разъёмов 5-pin с шагом 1мм, но в данном случае прищепка подходит лучше.
А если много раз дебаггер подключать/отключать — дорожки не отваливаются? выглядит как-то не надежно.
Если подключать-отключать аккуратно — не отваливаются. А если сильно дёргать вбок — разъём отваливается.

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

Круто. Приятно видеть когда для девайса делают отдельную плату, а не очередное:
Вот мой девайс на ардуино! и «схема» где каждая микросхема (даже в DIP корпусе) на отдельной платке и все это соединино лапшой из проводов.
И «схема» эта сделана во Fritzing с изображениями модулей с алиэкспресса.
У Nordic есть замечательный пример как передавать потоковые данные через характеристику.
Суть в работе на колбэках по готовности: подписались на notifi — отправляем первый кусок. Первый кусок отправлен — отправили второй и т.д. пока не отправим все данные.
Советую увеличить MTU — будет заметно проще. Делал такой же девайс ~ 400 измерений в секунду не проблема при правильной организации передачи данных.

Отлично, большое спасибо за совет. Буду копать!

Отличная работа. Корпус сделать нужно не только по причине экономии скотча — КМК более жёсткое крепление платы скажется и на результатах измерений, возможно добавив динамичности.
Была статья про проект измерителя вибрации для велосипеда с целью картирования велодорожек. КМК возможность недорого приобрести подобный гаджет и легко интегрировать его с картографическим приложением в перспективе послужила бы развитию мелкодорожной сети.
Может ли данное устройство помогать новичкам? На пример оценить на сколько правильно человек выполняет трюк.
В идеале, да, должно.
Спасибо за статью! Отличный проект и отличная реализация!
Почему выбрали micro-b а не type-c?
Из каких соображений выбирали отверстия? Под головки винтов места совсем нет.
Над трассировкой еще можно поработать.
Я бы сначала придумал корпус хотя бы примерно, а потом вписывал бы в него плату, параллельно корректируя и то и другое.
Привет, спасибо за комментарии!

Почему выбрали micro-b а не type-c?

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

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

Чтобы плата просто крепилась на пластиковые бобышки такого же диаметра внутри корпуса.

Над трассировкой еще можно поработать.

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

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

Хотя бы примерно корпус как бы есть, но пока он только в моём воображении.
Понятно насчет usb, но я не понимаю таких устройств без type-c. Учитывая, что его активно пихают везде, полагаю, что со временем он таки вытеснит все остальные usb разъемы. У меня в голове есть стереотип, что скейтбордингом занимаются в основном молодые, а раз молодые, то у них наверняка новые смартфоны, а там или лайтнинг или тайп си.

Пластиковые бобышки в каком именно виде? Оплавляемые блямбочки после монтажа? Стопудово отлетят. Поджатые с двух сторон корпусом?

По трассировке, первое, что бросается в глаза:

1. Лучше выводить трассы непосредственно из углов, избегая образования острых углов вида «площадка-трасса». Это кислотные ловушки и просто некрасиво.
2. Зазор между сегментами (переходными отверстиями) одной и той же цепи тоже должен быть выдержан. Формально это нарушение правил зазоров, но многолетний просмотр чужих плат показал, что многие производители забивают на это и делают как есть.
3. Не соединяйте выводы контроллера просто между собой под корпусом трассами (полигоном — вполне). Всегда тяните трассу наружу. Это сейчас у вас нет рентген-контроля. А когда понадобится, то технологи будут вас тепло вспоминать, потому что не понятно, залипло, медь, непротрав или что там в действительности в этом месте.
4. Питание надо делать полигоном. У вас не двухслойка, так используйте все плюсы четырёхслойки. Т.е. никакой непонятной звезды. Нормальный полигон. Все неиспользуемые места в этом слое — земля, сшитая переходными с основной землёй.
5. То же касается нижнего слоя. Можно было залить землёй. Тут еще есть такая штука как баланс меди. Понятно, что в вашем случае это скорее всего не имеет значения, но вы же когда код пишете, вы же его пишете так, чтобы было удобно, масштабируемо, поддерживаемо и вот это всё. То же самое касается железа.
6. Из-за размера платы термалы на внутреннем слое не имеют смысла. Плату такого размера прогреет почти любой паяльник.
7. Дикое подключение крайнего левого отверстия гребёнки над разъемом. У вас же там трасса во внутреннем слое спокойно к нему подходит. Зачем два переходных отверстия?
8. Одно переходное на микросхему питания — очень мало. Сшейте пузо хотя бы пятью отверстиями. Ведь мк у вас нормально сшит с землёй, так чем питальник хуже? Во всех подобных корпусах на пузо как минимум сбрасывается тепло с кристалла, поэтому хороший контакт с внутренней землёй очень нужен!
9. Подвод питания к axp тоже можно было делать единой трассой, не деля её в конце на несколько тоненьких. Да, понятно, что потребление мало и всё такое прочее. Но лучше всегда делать с запасом, благо ваш дизайн это позволяет.

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

Ах, да, про корпус. Я бы на вашем месте искал какой-то готовый корпус в первую очередь. Какую-нибудь гаинту из abs отлитую. С герметизацией. Да еще чтобы можно было 18650 туда запихнуть. Опять же по моему опыту, от ударных нагрузок типа 500g 1-2мс ничего таким аккумуляторам не делается. Ставь их хоть вдоль, хоть поперёк удара — всё держат. Главное — механически не повредить.
Вот это да, спасибо что потрудились предоставить кучу ценных замечаний по разводке. Обязательно учту в следующей ревизии!

Вы не первый, кто предлагает ставить USB-C, думаю надо всерьёз задуматься над его использованием. Никаких аргументов кроме привычки в пользу MicroUSB нет. Интересно, получится ли найти Type-C разъем ещё и дешевле чем MicroUSB? Текущий разъем от Molex довольно дорогой.
Завидую вам, я такую задачу не осилил.
Как-то тоже решил поразвлекаться с stm32. Долго мучался с драйвером usb audio. Использовал cubeMx и в нём тогда было куча багов. Такого сервиса с монтажом тогда ещё не было и я паял сам. Так и не смог стмку припаять, они сгорали от нагрева паяльником или феном и не прошивались полноценно. В итоге на элементарнишую задачу потратил кучу времени, нервов и денег. После этого зарёкся больше к stm32 не прикасаться.
Самого интересного момента конечно не особо затронули. Я правильно понимаю что все «определение качества и количества сделанных трюков» сейчас ручками, глядя на графики?

Есть один проект в похожем направлении (там powermeter для бега: github.com/fuzzylabs/wearable-my-foot). С ним возникла одна сложность, дрифт измерений скорости (интеграл ускорения по времени) и углов. Калман-фильтр помогает примерно никак, разбег там очень большой. То есть, если не «обнулять» регулярно угол и скорость, то она улетает в бесконечность. Кто-то сталкивался, в чем может быть проблема? (Не исключаю что было упущено что-то достаточно очевидное)
Сейчас ручками, да, нужно составить модели, которые будут надёжно работать с данными. Для этого надо сперва набрать большой датасет. Эта статья в основном только про саму железку.

А Калман у вас какие данные объединяет? Насколько мне известно, добавление магнитометра помогает компенсировать дрифт гироскопа, но это не точно.
На относительно коротких периодах (единицы секунд) дрейфом гироскопов можно пренебречь.
Здравствуйте. А вы пробовали подключать своё устройство через SWD ST-Link?
Мне так и не удалось соединится ни с одним STM32WB55 произведённым в 2020 году, у вас вроде из той же серии.
Да, подключаюсь по SWD с платы Nucleo-WB55, особых проблем нет. Бывает, что новые чипы имеют блокировку флеша, которую надо снимать командами Stm32CubeProgrammer. Например, если установить option bytes `RDP = 0xBB`, затем `RDP = 0xAA`, то произойдет полный сброс и чип станет доступен для записи. Но по SWD он всё равно виден. Ещё могу посоветовать попробовать подключиться к чипу в режиме under reset.
Ничего не помогло 5 разных проверил 2020 (34 неделя и 31), но чип 2018 (45 неделя) работает исправно. Толи за 2 года изменили там что-то, или брак попался.
Вот это очень странно конечно. Даже не знаю, что вам предложить здесь, попробуйте написать в поддержку ST.
Да бесполезно, чипы паял Резонит, может перегрели их. Придётся брать новую партию и самому напаивать взамен тех, если заработают, то будут разборки с заводом.

Может уже хватит запихивать в мк rust/python/ruby/javascript и другие не предназначенные для этого языки?

Не согласен про Rust. С чего вы взяли, что конкретно Rust «не предназначен» для МК? И какие вообще у вас критерии того, что язык «предназначен» для МК?.. Можем сверить, какие из ваших критериев Rust на самом деле удовлетворяет.

При этом я абсолютно согласен с тем, что python/ruby/javascript не стоит пихать в микроконтроллер, хотя бы по причине того, что эти языки не компилируемые. А по поводу Rust у вас какие-то предрассудки. Советую заглянуть хотя бы сюда: docs.rust-embedded.org, сюда и сюда.
О, а мы с этой идеей хакатон Paypal выйграли.
Осталось ли что-то с хакатона, на что можно взглянуть?
да нет, конечно, 2014год ой как далеко остался. Мы там хотели глобальную таблицу рекордов делать и сессии соревновательные для скейтеров из разных уголков планеты.
Кстати, какой фильтр используете, думаю, что Мадвиска, раз у вас кватернионы, но все же?
И еще вопрос несколько риторический. Скейтеры не засчитывают трюк, если спортсмен коснулся ногой земли после исполнения. Как-то с этим бороться думали? И что делать с grab трюками, тем же indy?

Фильтр встроен в чип BNO085, не знаю, какой там алгоритм sensor fusion крутится. Сам скейтер пока что из системы выпадает и в неё не включён, поэтому удаленные соревнования типа глобальных game of skate лучше не проводить, слишком большое подспорье для читерства.

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

По вопросам и предложениям:
1. К минусам Type-C можно отнести размер. Он крупнее. Хотя минус такой себе=)
2. Влаго- и прочая защита. Старым дедовским способом залить все это дело лаком не пойдет? Извините, если это какая-то некрофилия, я далек от этого всего.
3. Корпус. Самое доступное — 3d-печать. Если нужна помощь в печати — пишите, попробую помочь. Я бы предложил фиксировать плату к корпусу с помощью болтов (М2 или М3) через резиновые демпферы, типо таких, если не ошибаюсь, на них полетные контроллеры цепляют для дронов. Из-за них показания системы будут несколько «ватными», но не думаю, что слишком критично.
4. Сомневаюсь, что передача данных в 15 Гц ограничение, вызванные BLE. Если бутылочное горлышко находится реально в стеке, то тогда имеет смысл (собственно как Вы и писали) пробовать запихнуть несколько измерений в одну пачку, но тогда при этом возможно понадобится еще передовать и время (даже какое-то относительное). Или если у вас используется несколько характеристик (например, одна для компаса, другая для акселерометра, третья для гироскопа) объединить их в одну характеристику — возможно, проблема в обновлении значений по каждой характеристике. На nrf-ах указывается интервал, через который рекомендуется проводить повторное соединение. Но не факт, что это характеристика на что-то влияет, возможно на клиенте надо будет тоже проводить манипуляции с этой величиной.
P.S. Сразу прошу прощения, если написал какой-то очевидный бред.
Здравствуйте и спасибо за такой развёрнутый комментарий!

Очень хотелось бы узнать их судьбу: на чем остановились, какие возникли трудности?
Часами к сожалению перестал заниматься после того как купил себе Apple Watch. Основные трудности были в том, что используемый дисплей SHARP memory LCD сняли с производства, затем 2.0 версия платы была со странным багом: nRF52 чип не работал без отладчика (semihosting этим грешен, но его точно я не использовал, даже мигалка не работала без подключенного отладчика). Ручная пайка тоже занимала слишком много времени и сил, сейчас бы с пайкой на заводе было бы гораздо легче итерироваться, да и опыта у меня уже гораздо больше. Но особого интереса к проекту уже нет.

К минусам Type-C можно отнести размер. Он крупнее. Хотя минус такой себе=)
В новой ревизии платы трекера я занялся более конкретно вопросами установки Type-C и более оптимальными разъемами для отладки и батареи, а так же нормальными монтажными отверстиями.

По поводу влагозащиты, PCBWay имеет галочку «conformal coating», т.е. специальная заливка платы, вроде должно быть что надо.

Почему не стали использовать барометр? Есть такие с достаточной точностью?

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

Быстрый поиск показал такие барометры поточнее:
1. www.nxp.com/docs/en/data-sheet/MPL3115A2.pdf (0.1 метра)
2. www.infineon.com/dgdl/Infineon-DPS310-DataSheet-v01_01-EN.pdf?fileId=5546d462576f34750157750826c42242 (вплоть до 0.02м)

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

Блин, пишите еще, я с вашей статьи и комментариев узнал очень много информации!
PS: Делаю трекер для страйкбола

точность барометра составляла ≈1 метр

Странно, по идее даже bmp280 имеет точность сильно лучше, чем 1 м

Relative accuracy ±0.12 hPa, equiv. to ±1 m
(950 … 1050hPa @25°C)
Absolute accuracy typ. ±1 hPa
(950 ...1050 hPa, 0 ...+40 °C)

Добрый день. Очень понравилась ваша статья что с часами, что про данный давайс. Какую литературу посоветуете в качестве понимания того, какие компоненты нужны. Есть ли какая то литература по проектированию устройств? И с чего начинали вы, когда учились этому?
Буду премного благодарен !!!

Добрый день, спасибо! Лично я не особо читаю книги по принципам разработки электроники, поэтому ничего посоветовать не могу. Часто полезную информацию содержать Application Note-ы на выбранные чипы, а во сами чипы выбирать под ваш случай — это целое искусство и, пожалуй, самая продолжительная по времени фаза разработки. Начинал я с самого простого типа плат ЛУТом под ATMega, а также статей/видео ClusterM.

Могу посоветовать эти ютуб каналы, там есть ряд видео об основных принципах и правилах хорошего тона, которыми следует руководствоваться при разработке девайсов:
* EEVBlog (Dave Jones): www.youtube.com/user/EEVblog
* Fobert Feranec: www.youtube.com/user/matarofe

Например вот полезное видео о том, на что обращать внимание при выборе чипов:

Спасибо большое. Успехов в дальнейших проектах!
Пойду мучить stm-ку!

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

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

Ссылка на гитхаб в конце статьи, продублирую здесь: https://github.com/eupn/tracksb

Спасибо за ответ, хотел немного уточнить
- Вообще для антенны STM сам использует LFB182G45CGFD436 в качестве band pass filter в Nucleo, это и есть рекомендация

- Насчет гит хаба, схем не нашел, да и с кодом не чисто, вы не в HAL делали? а сам код обычно для стм пишут на Atollic_TrueSTUDIO, Keil
- Непонятно за чем вы все время говорите про прошивки, все уже давно реализовано, зачем велосипеды изобретать
- Вы не вышли на краудфандинг, причина в chip shortage? Вообще как с этими чипами дела?

Sign up to leave a comment.

Articles