Как стать автором
Обновить

Гиперкуб. Как мы обеспечили разработчиков тестовыми устройствами и не потеряли их

Блог компании Яндекс Разработка мобильных приложений *Тестирование мобильных приложений *Компьютерное железо DIY или Сделай сам
Всего голосов 109: ↑107 и ↓2 +105
Просмотры 28K
Комментарии 57

Комментарии 57

Можно про хаб с быстрой зарядкой? Полгода назад искал готовые варианты, чтобы одновременно заряжать 5+ телефонов с QC 2, так и не нашёл, остался на колхозном варианте с кучей блоков питания.

Я вот таким пользуюсь, очень доволен. Про скорость не уверен, но это лучшее, что удалось подобрать опытным путем.
https://plugable.com/products/usb3-hub7bc

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

Про хаб Паша планирует сделать отдельную статью, спойлерить не буду )

Есть вот такие модули с поддержкой разных стандартов — s.aliexpress.com/AVJrMJFj
Спасибо, это хороший вариант!
А у него не только на одном порту быстрая зарядка? По описанию так выглядит.
Пост хороший, а вот заголовок двусмысленный :) не потеряли разработчиков, или устройства?

Ни тех, ни других ;)

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

Так и задумано, в статье про хаб Паша про это расскажет.

Хорошая статья. Показывает процесс хардварной разработки с ракурса без технических деталей. Так как написана «живенько», то читать интересно. Чем-то напомнило произведение искусства — статью про робота-библиотекаря)

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

За три месяца как раз делается всё самое интересное — воплощаемая идея на коленке «живёт и эволюционирует». Весь спектр того, за что я люблю разработку: удовлетворение, озарение, удивление и всё такое. Тут и пайка, и сопли термоклея и прочее выпиливание лобзиком) Короче говоря — сплошное творчество. А вот чтобы довести до того, как это выглядит на последней картинке…

Правило 80/20 в действии, угу.

Не люблю яндекс, но тут даже захотелось поработать в этом отделе — «диванном интеграторе».

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

Не очень понятно как вы smd-микросхему перепаяли на другую сторону платы O_o

И сразу напрашивается следующий логический шаг — пока соьрудник идет к щкафу ваша CI/CD заливает в телефон свеже-собранную apk — останется только взять телефон с полки и начать тестировать.

Она была не SMD (к счастью), выводной корпус с четырьмя ножками в ряд. Забыл, как называлась.


А следующий шаг вы примерно угадали ) Там еще сертификаты для внутренней wifi сети накатываются. Но это уже было без моего участия делается.

ваша CI/CD заливает в телефон свеже-собранную apk
Прекрасная идея. Только там сложности с выбором правильной apk для установки. Слишком много проектов и вариантов.

Вариантов много, но мы знаем, кто забронировал телефон и из какого он проекта. Можно на проект назначить профиль наливки и настройки. Больше вопросов с зоопарком телефонов и версий ОС на них.

Еще интереснее как ipa залить принудительно на iphone. Да, там есть ad-hoc профили, да можно через браузер, но по ссылке на plist кто-то должен кликнуть, а потом еще и подтвердить (насколько помню, давно делал)

ЗЫ более того, можно пойти еще дальше и прямо из CI/CD выбирать на какой телефон заливать, в какой шкаф, на какую полку. И угадывать ничего не придется.

ЗЫ2 to Aracon есть готовые чипы — один чип один телефон, напихать таких на плату можно десятки, плату развести не так чтобы и сложно и дорого, дальше китай (или сша), пайка и вуаля
Спасибо, это дельный совет! Попробую так собрать. Выше, похоже, как раз на такой чип дали ссылку.
Выбор разъема питания для платы Hypercube странный — обычно используется что-то типа JST SH, а XT для таких токов — это перебор, мне кажется. Всё-таки XT — это для силовых цепей.

Нет вентиляции в блоке электроники, а малинка греется неплохо. Или там верхней крышки нет совсем?

А для чего используется RS-485 — из текста не ясно?

Можно для питания и обычный коаксиальный использовать.

Просто у нас они остались с предыдущего проекта ) И не было обжимного инструмента. Сейчас бы я наверное microfit взял.


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


RS-485 используется для управления хабами.

Ппц. Чем только люди не занимаются, лишь бы не работать.

А что если в пустой слот положить свой телефон?)

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

А что если сделать терминал в который встраиваются мобильные девайсы и просто работать с ним?

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

Спасибо за статью, очень интересно почитать про доводку устройства до ума. У вас Raspberry на SD-карточках работают? Насколько долго они протянут?

За время, пока я работал над проектом — 2 года, карточки не дохли.

Прекрасно. Этот момент останавливал меня от использования Raspberry, по совету ваших коллег используем NanoPi.
Если не секрет, какие SD-карточки использовали?

Да я уже не помню. Что-то выбрали не самое дешевое в ассортименте компьютерного магазина. Мы тоже хотим NanoPi попробовать, на текущем проекте )

Видимо зависит от сценариев использования. Если много записей в БД у сервера умного дома, то на год примерно хватает. Если чисто для управления поставить, наверное долго проживёт, особенно если что-то типа dietpi ставить.
при разводке я не учёл, что подключать микросхему RS-485 нужно ко вполне определённым ножкам RPi

Так понял, что RE#/DE программное? Можно реализовать схему аппаратного управления, тогда микросхема RS485 будет не зависеть от драйвера в ядре, а просто преобразовывать уровни uart'а к логике RS485.
На «онемевшем» порту не видно отключений USB-устройств, даже в сообщениях ядра ничего нет.

Стоило предусмотреть отключение питания на USB-хабе/разъеме. Если у микросхемы хаба нет программно управляемых GPIO, то есть расширители портов, которые эти GPIO добавляют.
Можно реализовать схему аппаратного управления, тогда микросхема RS485 будет не зависеть от драйвера в ядре, а просто преобразовывать уровни uart'а к логике RS485.

Огород довольно большой городить, если не брать готовые трансиверы с автоматическим управлением передачей.
Другая проблема в том, что у RPi смехотворно мало UART, в этом качестве плата отвратительна.

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

Я подключил микросхему UART <-> RS485 к произвольным ножкам GPIO RPI, на которых UART не оказалось.


Стоило предусмотреть отключение питания на USB-хабе/разъеме. Если у микросхемы хаба нет программно управляемых GPIO, то есть расширители портов, которые эти GPIO добавляют.

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

Я подключил микросхему UART <-> RS485 к произвольным ножкам GPIO RPI, на которых UART не оказалось.

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

На один из портов хаба цепляется микросхема cp2112, например — это преобразователь USB-SMBus с 8 GPIO. В линуксе с ними можно работать как и с обычными GPIO RPI. Просто и надежно.
И такое бывает, но с опытом выясняется, что мир устроен чуточку сложнее. Главное потом таких оплошностей не допускать)
Надо было просто нормально протестировать прототип )

У нас не было "лишних" портов в хабах, поэтому сделали отдельный интерфейс для управления. Там внутри stm32, в принципе ее можно было развести на один из портов usb прямо на плате, но не хотелось его занимать.

Да, понятно, что модбас используется для связи с микроконтроллером.
Отдельный МК это и плюс, и минус. Плюс — любые извращения можно реализовать. Минус — требуется прошивка МК и дополнительный программист, сама система усложняется, как следствие — дополнительная точка отказа, а потом выяснится, что мк зависает и нужен вотчдог…
Вообще, по таким статьям складывается впечатление, что яндекс не компания-флагман российского IT, а небольшой стартап в гараже (по части железа).
Надеюсь, что и железное направление будет развиваться, и ещё не одну статью доведётся прочитать)

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


Сейчас, работая в беспилотниках, я вижу поставленный процесс embedded разработки, а Паша, я думаю, расскажет про разработку Станции: они тоже крутые штуки делают. (Паша, я тебя тут уже во всех комментах прорекламировал, придется тебе писать =))

На али есть готовые варианты на 8 портов с монитором тока.
что-то вроде. Fanshu Мульти USB 8
А почему бы не использовать openstf.io для удаленного доступа?

Может у кого был реальный опыт с ним?

У нас есть ферма openstf, но я ею не занимался. Была идея в Гиперкубе до неиспользуемых в данный момент телефонов давать удаленный доступ.

А с точки зрения пользователя (разработчика) насколько openstf хороша/удобна?

Не могу сказать — сам я не пробовал с ней работать.

НЛО прилетело и опубликовало эту надпись здесь
Возможно дилетантский вопрос, но всё же, насколько безвредно для батареи телефона быть (возможно) большую часть времени на зарядке?

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

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

Датчик дыма внутрь поставьте, а то один загорится — все сгорят :)

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

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

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


Припаяйте конденсатор на 1-5 мкф параллельно кнопке. При подаче питания кнопка будет кратковременно закорачиваться. У меня такая проблема была с коробками для HDD.

А в некоторых хабах кнопку можно просто закоротить.

идея хорошая, возьму на вооружение =) Но сделать такое на 300 шт хабов нетривиально.

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