USB-hub.

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


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

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

На роль USB-хаба был взят… мнэ… USB-хаб… Нашлась парочка в загашнике. Каждый имеет на вход по четыре USB-разъема и 5 дополнительных вольт питания. На выход, ясен пень, один USB.

Просто голые, без корпусов, “разветвители”, уж и не вспомню откуда родом. Сложно сказать, что именно это было конкретно. Вероятно, что-то, вроде вот этого:

До нынешних времен в загашнике выжили только сами платы без корпусов. И даже без выходных хвостов… Видать, кто-то, когда-то слил мне “ненужный хлам”, который был заботливо отложен из соображений “пригодицца”… Вот и пригодилось…

Фактически, прямо готовое уже решение. Единственное, что было нужно для него придумать: где и как прикрутить.

Допустим, например, вот тут и вот так:

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

Четырех точек подключения для головы – более чем достаточно. Там в ней столько контроллеров не наберется…

Половина проблемы позади.


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

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

Казалось бы, прикрути разъем на нос и все дела. Куда-нибудь вот сюда, сбоку от пушки:

Хорошее место. Всегда доступно. Но, увы, не все так просто, как кажется…

Ни для кого не секрет, что по USB-проводу бегают пять вольт:

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

Увы, эта конкретная механическая собачка уже давно переросла то чахлое количество ампер, которые может предоставить ей USB-порт компьютера, к которому ее можно подключить по USB. Ну, сколько там… Ну, скажем, пускай, прям, ажно целых три ампера в самом крутом случае (обычно, 0.5-1.5 A):

Я вас умоляю! Моя девочка с такой малости сейчас уже даже сервом уха не вздрогнет. Ей сейчас 7-9 A – только в путь. Всосет и не поморщится. И это еще только самое начало ее прожорливого пути.

Отсюда проблема: при внештатных ситуациях от кривых рук, высока вероятность замыкания и фееричной “обратки” электричества по проводу из собачки в компьютер… И по этим граблям уже столько самоделкиных прошлось, что количество выгоревших USB-портов компьютеров может сейчас сравниться разве что с количеством залитых кофе клавиатур.

Казалось бы, выкуси пятивольтовый провод из USB-кабеля – и все. Обычная практика. Все так делают. И я так делаю. У меня даже скопился уже целый букет специально помеченных USB-хвостов всех видов с выкушенным пятивольтовым контактом.

Но, увы, не все так просто, как кажется…

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

Отсюда проблема. Пять вольт в USB-кабеле, то нужно, то не нужно. Каждый раз менять “выкушенный” провод на обычный – я и так уже по уши во всей этой вермишели. Надо срочно минимизировать ее количество. Да и вдруг возникнет ситуация, когда на каком-нибудь выезде на пленер, под рукой не окажется “выкушенного” провода. Зато обычных всегда навалом по карманам и бардачкам.

Решение проблемы – простейший механический переключатель на пятивольтовом проводе USB-линии прямо в самом роботе! Гениально, правда? Это я сам придумал… 🙂

Как следствие всего вышесказанного, на нос надо вытащить не только разъем, но еще и выключатель.

Итого:

В качестве выходного разъема был взят USB Type B. Потому, что…

Ну, вы же знаете шутку про то, что “когда будут хоронить создателя стандарта USB, его гроб опустят в могилу, потом вытащат, перевернут, опустят, опять вытащат, перевернут правильной стороной и опустят ещё раз.” Лично мне Type B, с этой точки зрения нравится намного больше. Да, он огромный по нынешним меркам. Но в этом проекте место экономить смысла почти нет… Зато нервы целее…

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

Две дополнительные кнопки – сбросы (reset) для обоих имеющихся сейчас в голове супер-контроллеров. С ними та же проблема, что и с USB-разъемами. Когда надо перезапустить какой-то конкретный контроллер, то лезть голым пальцем в самую гущу черепа мимо не до конца еще причесанных проводов, временых джамперов, лишь слегка наживленных соплями по месту устройств и т.п. – плохая идея…

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

В носу размещается все это вот так:

По умолчанию, кнопка питания установлена в положение “выключено”. Т.е. между собачкой и компьютером бегают только данные. Чтобы подать на USB питание из порта компьютера, кнопку надо нажать. Она установлена заподлицо с панелью и нажать ее случайно махнув пальцем не получается. Нужно совершенно сознательно давить. То же касается и кнопок сброса:

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

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


Чтобы не путать контроллеры в системе… Ну, понятно, что провод то теперь только один к ним всем сразу, и винда, например, их видит тоже все сразу вместе одновременно:

И, скажем, та же винда, например, обожает внутри себя переназначать, время от времени, номера COM-портов, ассоциированных с тем или иным USB (поэтому запоминать какой кому принадлежит – смысла нет)…

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

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


Собачка скушивает ведрами не только амперы из блока питания, но и абсолютно все доступное свободное время моей жизни. Описанное на блоге – даже и не половина того, что уже существует в реальности. Сейчас голова выглядит, как-то вот так (спойлеры):

Дело двигается потихоньку:

Продолжение читайте в следующих частях повествования…

One Reply to “USB-hub.”

  1. Если не прочитать предыдущие части, начиная с самого начала – очень трудно поверить, что это все сделано руками и головой одного человека, и при том ещё и работает!

    1. До “работает” еще далеко… В отдельных своих частях – да. С нетерпением сам жду, когда очередь до мозга дойдет, чтобы увидеть все это в целом…
      А то пока все это напоминает сцену из “Теории Большого Взрыва”, когда Воловец передавал пакетик кетчупа при помощи роботизированной руки 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.