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

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

Городить кнопки консоли управления без блока основного мозга – та же история. Чем ею управлять в таком случае? Городить блок батареек без блока зарядки и распределения питания – бессмысленное механическое перемешивание оксида водорода в емкости для суспензирования… Ну и все в таком духе.


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

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

Вот с этих второстепенных дисплеев и было решено начать. Для разгона…


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

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

Если обратиться к оригинальному сериалу, то я смог надергать кучу кадров, где эта консоль на спине робота хоть как-то видна, но все это приблизительно вот такого качества и ракурса (что в “классическом” сериале, что в “возрожденном”):

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

Хотя, я видел ролик одного самоделкина, который ссылался на некие “секретные фотографии” со съемочной площадки. Типа, есть у него такие, где эта консоль показана в хорошем качестве и крупным планом. И именно оттуда он почерпнул содержимое этих дисплеев: узоры из растровых полосочек (видимо, просто вложенные под красное стекло бумажки с рисунком, подсвеченные лампочкой). Проблема: я хоть убей не помню, что это был за самоделкин, на каком ютубе в пятницу вечером я это видел, и выкладывал ли он эти “секретные фотографии” хоть куданть или только бла-бла-бла. Видел, помню, но найти еще раз – не могу… Может, это уже мои собственные глюки ложной памяти, на тему выдачи желаемого за действительное…

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


Оставлю кнопки консоли для другой статьи. Тут пока сосредоточимся на дисплеях.

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

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

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

Даже на самых простых небольших дисплеях со смешным, по-нонешним меркам, разрешением – очень много чего полезного можно нарисовать из того, что там внутри у робота происходит. И эта информация будет доступна сразу…. А не после получаса копания во внутренних логах системы.

Таковы были вводные данные. Дело за малым…


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

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

  • 2.4 дюйма диагональ – прекрасно вписываются в консоль нужного размера
  • Цветное изображение, без всякого шаманства. Не 32-битный цвет, конечно. Но и в имеющихся 18-битах, количества цветов и оттенков, более чем достаточно для рисования инфографики.
  • Разрешение 320х240. При таком размере дисплея – вполне себе.
  • Тачскрин. Мнэ… Ладно, тачскрин у них совсем фуфлыжный и глюкавый. Хорошо, что он мне и не нужен, в данном случае.
  • Читалка SD на борту, что снимает ограничения по памяти в контроллере. Т.е., представте, сколько уже готовых картинок в разрешении 320х240 (и меньше), можно натолкать в, даже, и 8-гиговую карточку (поди найди сейчас меньшую)! Бэкграунды, иконки, символы – что угодно. Годзилионы графических элементов, совершенно не напрягающие память контроллера своим постоянным в нем присутствием.

Есть всего две ложки дегтя в этой бочке счастья.

Во-первых, это однозначно и без вариантов шилд для ардуины UNO, которые я не очень люблю по причине их бессмысленности. Можно впердолить и в MEGA. В мегах смысла побольше. Я пробовал – работает. Но оба два таких дисплея в одну мегу все равно не впихнуть. Так, что, хочу я того или нет, придется запускать эти дисплеи в сопровождении личной уны для каждого.

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


Первая ложка дегтя – не существенна. Место под две уны есть, рисуют дисплеи все равно каждый свое. Ну, будет два контроллера. Даназдаровье!

Вторая ложка дегтя – более критична. Мне нужна шина i2с на аппаратном уровне, а это выходы A4 и A5 на ардуине. А экрану нужен сигнал HIGH на A4 для софтового сброса (LCD-RES):

Чтобы разрешить этот конфликт интересов, пришлось слегка похачить экран. Просто откусил ему эту ногу нахрен кусачками под корень совсем. А заместо нее, подтянул через резистор контакт с платы экрана к контакту 5 вольт по соседству… Ну, хочет он там на этом контакте свои HIGH, ну и пускай подавится:

Параллельно пришлось слегка подхачить и программную библиотеку для работы дисплея. На кой ей дергать то, чего нет? Экрану то теперь от этого ни тепло, ни холодно, а вот связь по i2c она своим неуместным дерганием гробит прям на старте.

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

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


Решив эту единственную проблему с экранами, разработал крепеж для размещения их на каркасе в нужной области:

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

По сути, это просто вот такой бутерброд, состоящий, в основном, из ардуин и экранов. Ну, там, еще, преобразователь питания сзади прилепился. Один на сразу обе ардуины:

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

Ах, да. Еще “маску” чиорныю поверх экранов. Когда появится обшивка корпуса, то эта “маска” будет создавать иллюзию того, что экраны чуть больше размером, нежели на самом деле:

Как всегда, оставалось только вынуть это из монитора и положить на стол…


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

Вот и тут, рассказать почти нечего. Напечатал, да скрутил все вместе… В пятницу вечером… На веранде, сидя в шезлонге… За коктейлем из экзотических напитков, в компании прелестной блондинки, согласившейся много лет назад стать моей женой. Под шелест пальм (одной) и крики попугаев… проклятых белок, которые всегда готовы испоганить любую романтику:

Разве, что, пара моментов, достойных упоминания…

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

Другой момент – я открыл для себя волшебный и удивительный мир резьбовых вытяжных заклепок:

В таких, вот, случаях, это – самое оно! Сажать такой легкий и маленький узел на дюймовые винты насквозь балки каркаса – жестоко и неразумно. Резать же в тонкой стенке алюминия резьбу на полтора витка – сопли и позор на века. А, вот такие заклепки, и надежно, и просто, и по-пацански.


Левый экран будет занят исключительно “высокоуровневой” телеметрией: показания газовых сенсоров в голове, темпратура/влажность внутри и снаружи, освещенность справа/слева, уровень шума, режим работы фар на носу, режим работы вентиляторов, рож вот это все:

Все, что графическое – иконки, бэкграунд и т.п. – просто bmp-файлы, подтягиваемые с флешки по надобности. Сам контроллер напрямую рисует только цифры и столбики графиков/градусников – все это встроенные в библиотеку управления экранов простейшие функции. Но в комплексе с bmp-шками из флешки, это формирует вполне приличный интерфейс с некоторыми, даже, потугами на тему навороченности.

Пока готов только экран по телеметрии головы. Надо туда еще пару элементов добавить, но все основные показания уже есть:

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

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

Переключение между экранами – кнопкой на консоли. Их там 12 штук, этих кнопок. И всем надо придумать какое-нибудь применение…

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

К этому второму экрану я еще не приступал, т.к. есть еще ряд спорных и неочевидных моментов в части контроля темной материи, которая будет циркулировать внутри робота. Но в программной и функциональной части там будет все в точности так же, как и на первом дисплее – циферки, графики, градусники. Только картинки с флешки будут другие.


Ну и, как-то оно вот так сейчас в комплекте с каркасом:

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

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


P.S. Всех, кому это актуально, поздравляю с Днем Благодарения!

Нужно больше хороших обычаев :-)

Поделиться: