Техническая база на переломе тысячелетий
На дворе стоял 2000 год. Старые времена плавно погружаются в Лету вместе с осколками предыдущей империи, по телевизору идут "Звёздный час" и "Сам себе режиссёр", я потихоньку разжёвываю кусочки от гранита науки. В те жутковатые годы купить что-то из деталей для создания чего-то электронного, для души, было не такой уж лёгкой задачей.
Пока вы читаете эту статью, я побуду там, на пороге перемены веков. Я покажу вам, что вокруг меня происходит, и проведу путём создания прототипа своего нового устройства. Текст поможет нам просочиться сквозь время, ну потом вы, уже в своём времени, в комментариях напишите своё мнение, или поспрашивайте, что не понятно, я, пока посижу я тут и поотвечаю на ваши комментарии.
Когда-то, в стране советов, страна поддерживала радиолюбителей, и тогда были и магазины радиодеталей, и кружки по интересам, и даже Дворцы Пионеров, где можно было что-то сделать или спросить совета. Сейчас же, когда кругом был полнейший разгром, от этого не осталось и следа. Дворцы Пионеров сдали в аренду торговцам джинсами и помидорами.
Это потом, в эпоху Интернета, технопарков, кода, написанного нейросетями и 3D-принтеров, всё для этого вы сможете найти в продаже, прямо не сходя с дивана. Хочешь — закажи печатную плату, а хочешь — выточку или выплавку детали под твои нужды, хоть с со своим выгравированным на них именем. Да хоть с доставкой прямо вам на диван. Вот только уже с одной разницей: почти всё, что вы захотите сделать сами, уже продаётся в магазине. Для этого не будет необходимости.Hidden text
Проще всего какие-то детали можно было раздобыть, разобрав какое-то сломанное устройство, а также на радиорынках, например, на Митинском, Савёловском или Царицынском. Иногда что-то появлялось в магазинах электротоваров. Как-то я узнал, что в других странах есть целые магазины и торговые центры, в которых продаются товары для хобби под названием DIY. Меня тогда поразил большой контраст с нашей повседневностью, потому что найти все для своего устройства в одном месте вообще не было возможности, и магазинов "Сделай сам" (как и переводится DIY) у нас просто не существовало.
В то время у меня только-только появился первый персональный компьютер. Это был Compaq Presario, моноблок с процессором SX486 и памятью, кажется, 8 мегабайт. Управлялся он ОС Windows 95. Windows 98 на нём подтормаживал.
В моноблоке были встроенные микрофон и динамики, CD-ROM, дисковод для дискет 1.44" и модем. Модем позволял устанавливать связь с Интернетом на скорости 33,6kbps. Очень удобно, когда в настольном компьютере есть всё нужное для работы и развлечений, но уже на то время он был устаревшим. Мне приходилось подолгу искать игры, которые на нём бы пошли. Игры тогда продавались с прилавков, покрытых картонками, на радиорынках. Их продавали, разумеется, как "лицензионные", а по факту, просто скопированные на болванки, крякнутые и с буклетом, напечатанным на принтере. Среди них, надо сказать, встречались и прекрасного качества типографские буклеты, аккуратно вложенные в компакт-диск. В них подробно, пошагово, рассказывалось, как правильно взломать игру прилагающимся на диске файлом.
Что касается подключения к Интернет, то в то время провайдеры продавали доступ во Всемирную Сеть по времени: например, один доллар в минуту. Похоже, что Интернета на всех не хватало, иначе как объяснить, что доступ к Сети был "по талонам" — провайдеры продавали карточки, по телефону, указанному на которых, надо было звонить со своего модема, а номинал был на них указан в долларах. На них под стираемым, как на лотерейных билетах, слоем, были написаны логин и пароль для доступа, который расходовался быстрее, чем сейчас остывает твой чай.
Анекдот про чай был придуман позже, уже при доступном проводном Интернете, поскольку по карточкам в Интернете столько просидеть было совершенно невероятно: Подключился, нашёл что-то, скопировал себе на диск, отключаешься и запускаешь программу или читаешь.
Как остудить горячий чай? Надо включить компьютер, залезть в интернет и бац! Чай остыл.
Ещё более точную информацию по ценам я помню из расклеенных повсюду объявления в 1997 году:
"Интернет по самой низкой цене: 1 цент в секунду!"
Ограничивающий фактор
Каждому, кто умел подключать светодиоды к источнику электричества, приходила в голову идея подключить что-то к компьютеру. Подключение чего-то к портам компьютера просилось уже несколько лет назад, когда я исследовал возможности программирования на Спектруме в Бейсике. Тогда любой компьютер, даже Спектрум или его наши аналоги "Нафаня" и т. д. были пределом мечтаний, и своего у меня не было, поэтому я брал его попользоваться у соседа. Программы в него загружались с простого магнитофона, и я пробовал подключать вместо него портативные плееры. Потом я проверял, можно ли загружать программы звуком через микрофон, подключал микрофон вместо магнитофона. Программы прекрасно загружались, и тогда я исследовал возможности загрузки программ с магнитофона друга по телефону.
Когда я разбирал свой Compaq, то видел, что все устройства в моноблоке были распаяны на материнской плате. Сама она вытаскивалась вместе с задней крышкой и, из-за ее уникальности, замену я бы ей найти ни за что не смог.
Прототип
Сейчас я вижу в качестве конструктора, который почему-то используется для создания прототипов самодвижущихся устройств чаще всего, Lego. Мне же кажется, что металлические конструкторы, наподобие тех, что были доступны Советском Союзе, с множеством деталек, крепящихся с помощью болтов и гаек, подходят для этого больше. Сравнительно недавно для Лего стали появляться подключаемые к собранным из него фигурам электронные компоненты, типа моторов, реостатов, редукторов и различных датчиков. Однако детали металлических конструкторов поставляются самых разных форм, поэтому к ним можно прикручивать обычные электронные компоненты и крепить теми же болтами прямо из набора, и тут ты уже не ограничен в своём творчестве тем, что тебе положили в коробку.
Поскольку я не особо в то время знал магазины электроники, я использовал детали, которые у меня оставались от разобранных сломанных электронных устройств, отданных родственниками за ненадобностью. Как-то на прилавке у продавца на Митинском радиорынке я увидел маленький мотор и из любопытства купил.
Поскольку для создания чего-то самодвижущегося мне нужно было два таких, а найти такой же у меня нигде не получалось, то я его покрутил в руках, повключал и отложил до лучших времён. В то время, в основном, в продаже у нас имелись только советские моторы, гораздо большего размена и за обе щёки пожирающие ваши батарейки любой формы и ёмкости, работающие довольно громко и постоянно ломающиеся:
И вот, на моё счастье, у кого-то сломался кассетный плеер, и я достал оттуда еще один мотор. Это уже прогресс! Я смогу создать что-то маленькое, что не займёт много места, будет ездить тихо и не будет потреблять слишком много энергии для своего движения.
Мотор был вот такой:
Я хотел сделать что-то проходимое и на гусеницах. Напомню, что гусеницы для самодельной машины в то время купить было негде, и из чего их сделать, я так и не нашёл. В журнале "Юный Техник для умелых рук" была статья о том, как сделать самодельные гусеницы с помощью спичечных коробков и катушек от ниток, но я счёл этот способ слишком трудоёмким, я подумал, что моторчики от плеера не "потянут" такую нагрузку.
Тем не менее, самым простым способом поворачивать мне все равно представлялось два независимых мотора, управляющих движителями с каждой стороны машины. У моторчиков оказалась довольно маленькая мощность, а колёсики делать слишком маленькими не хотелось, поэтому нужен был редуктор. Нетрудно догадаться, что редуктор купить было просто не реально, а из имеющихся у меня были только непарные. Редукторов нужно было два, по одному на каждую сторону.
В сложившейся ситуации, после долгих раздумий и испытаний нескольких различных вариантов, было принято решение сделать редуктор в виде шкивов. Для этого я взял самые большие колёса, имевшиеся в наборе конструктора Юность-3:
В качестве передатчиков крутящего момента я установил пассики от того же кассетного плеера, но потом заменил их на резинки для связки пачек денег. У меня были и пачки денег, ага: несколько лет назад случилась дикая инфляция, и расплачиваться за пирожки в столовой можно было прямо запечатанными пачками, только что из банка. А потом и сами деньги поменялись, но ничего не стоящие пачки с того времени у меня остались лежать в столе. Правда, в банке они скреплялись бумажными лентами, но резинки для них тоже применялись.
В задачу других колёс входило только обеспечение лёгкого поворота. Сначала я сделал одно свободно поворачивающееся колесо, но оно оказалось слишком сложным, и часто выходило из строя, поэтому я заменил его двумя микроподшипниками, которые я когда-то нашёл на земле. Достать такие где-то в магазине для меня не представлялось возможным, я просто не знал, где такие продаются.
Для скрепления всего на скору руку, я применил алюминиевую проволоку в белой оплётке, которой было полно на улице. Вы можете спросить, как же просто материалы для поделок, например, проволока, валялись на тротуарах и во дворах, ведь дворники там убираются? что строители разбрасывали свой мусор где придётся, и никому до этого не было дело. В те времена было много непонятных вам вещей и событий, в то время казавшихся самим собой разумеющимися.
Hidden text
Дети ломали ноги на стройках, где не было никаких сторожей, нюхали в недостроенных домах клей среди валяющихся на грязном полу шприцов, вперемешку со стройматериалами.
Раму корпуса и оси я взял из конструктора "Механик". Получился самодвижущаяся машина в стиле Танка Лебеденко, с огромными ведущими колёсами и маленькими вспомогательными.
Сходство с ним получилось не спроста — ведь его создатель тоже пытался получить преимущество гусениц за счёт свойств проходимости больших колёс.
Следующим шагом нужно было как-то подключить ее к компьютеру. Манипулятор был готов, и я сейчас управлял им джойстиком от Спектрума. Джойстик от своего Спектрума мне отдал сосед после того, как у него он сломался. Я его разобрал, заменил исполнявшие в нём роль кнопок концевики, подключил к питанию моторами на каждое из ведущих колес, и с джойстика можно было управлять движением и поворотами машины.
Я, было, собрался как-то его связать со своим компьютером, и я стал взвешивать все "за" и "против". Я понимал, что, если я что-то подключу к своему моноблоку не так, то я лишусь самого дорогого устройства в квартире.
Смена положения вещей
К концу года для учёбы мне требовался более современный компьютер, и поэтому у меня появился компьютер совершенно другого уровня: Pentium Pro с частотой 200МГц, оперативкой в 32Мб и жёстким диском на 850Мб. В корпусе АТ, а не ATX, как сейчас. Ну, вы помните эту надпись.
Скорость его работы просто поражала: Internet Explorer 3 грузился за секунды, почти без тормозов работал Office 97, шустро открывался почтовый клиент The Bat, а Windows 98 устанавливался в несколько раз быстрей! Ведь мы же все знаем, что это был тогда важный параметр, потому что раз в несколько месяцев, или даже недель — кому как — приходило время, когда Windows, как ни крути, должен был быть переустановлен.
Самая важная полезная особенность для меня было в нём — это то, что он не был монолитным устройством, и я мог, при возможном сбое, заменить какую-то деталь. У меня появилась возможность подумать, как к нему подключить моё передвигающееся устройство.
А через некоторое время завелось у меня, для того времени, что-то ещё, совершенно невероятное. Штука, которую было совершенно не понятно как применить. Чудо-чудное, диво-дивное: веб-камера Kensington Videocam VGA Digital PC Camera производства 1999 года.
Для меня это было первое цифровое устройство, с которого можно было захватывать изображение прямо на компьютер. Да и, наверное, первое из подключающихся по USB. Тогда больше ни для чего этот порт я применить не мог, так как флешки, если уже и были, то только появлялись, и были дико дорогими. Да и мы до сих пор везде пользовались дискетами. Помню, я еще, в дополнение, устанавливал в него дисковод 5,25" для того, чтобы брать у преподавателей в институте программы, писавшиеся для зачётов и курсовых в прошлые годы.
Её максимальное разрешение было 400х300, но это только для фотографий. Видео она могла снимать лишь в 320х240 или 352х288. Благодаря ей, я сегодня могу добавить в эту статью фотографии. У меня здесь, а мы уже в 2001 году, фотки для этой статьи, по вашим меркам, не очень.
До изображения, подходящего к вставке сюда, и лучшего для просмотра на современных мониторах, мне поможет их довести нейросеть для увеличения разрешения.
Подключение к компьютеру
Я стал выбирать порт, чтобы подключить свою машину к компьютеру. По USB информации в Интернете было мало. Были еще разъем для клавиатуры DIN, последовательный и параллельный порт. Из COM и LPT я выбрал последний. В те времена, когда мышкам нужно прочищать колёсико, а на домашних телефонах были диски для набора номера, к этому порту подключали принтер.
Мне он показался проще для подключения внешних устройств. Смотришь распайку, подаешь на выходы числа, напряжение или есть, или нет.
Программа
В качестве языка программирования я использовал Visual Basic. Под Windows 95 и 98 в нём можно было управлять LPT. Под Windows XP было уже нельзя. Поскольку я не торопился менять Windows 98 на другую ОС, то у меня всё работало, а, возможно, я тогда уже установил Windows Millenium.
Я стал искать информацию о работе с различными портами. Скачав статьи по теме доступа к портам, скачанными с сайтов — а, так как подключение было по Dial-Up, то я их скачивал на жёсткий диск и с него открывал — и всякими справочниками по Visual-Basic в различных форматах, среди которых встречались и TXT, и HTM, и CHM. Одним из самых известных сайтов был VBstreets.ru, где было публиковалось больше всего полезной для меня, на тот момент, информации.
В этом языке есть библиотека для работы с портами ввода/вывода: "vbio32.dll". Используя её, я предпринял первую попытку подать сигналы на LPT. Сначала я просто выводил числа на порт. Я поместил в программу, открывающуюся сейчас из папки 2001 года, поле для ввода числа и две кнопки для посылки числа на порт и снова сброса его на ноль.
Вводишь число, нажимаешь кнопку — и число появляется на выводах LPT-порта в двоичном коде. Его можно пощупать тестером.
Хорошо. Числа передаются, тестером прощупываются. Я прикинул, как можно было бы сигналами управлять машиной. Просто подавать на порт нужные числа в зависимости от нужного от двигателей действия. Ну что ж, это полдела, отлично!
Программы овеивают вас своим электронным дыханием того времени и уже с новых компьютеров радуют наш взгляд своими остроугольными интерфейсами, пережив поломки многочисленных жёстких дисков, бэд-блоки, вирус-шифровальщик и переносы с диска на диск при их сменах. Поскольку все свои программы я запаковал в архив, тогда ещё для экономии места, а архив пострадал от сломанных секторов жесткого диска, то сейчас я могу открыть не все программы, которые я тогда написал. Шутка ли — всеми возможными путями выкроить место на диске в 850Мб! Потерялись и многие из сурс-кодов этих программ. Однако исходников осталось на диске гораздо больше, чем скомпилированных файлов и, наверное, можно из них собрать программы заново.
И у некоторых файлов поменялась дата последнего изменения файла: после то ли какого-то сбоя жёсткого диска, то ли после вируса-шифровальщика, не помню когда, некоторые даты поменялись на 31.01.2020 и исчезли длинные имена файлов, оставив после нескольких знаков "~1". Зашифровать он успел не всё, когда я заметил подозрительную активность жёсткого диска, я сразу выключил компьютер. Однако после лечения Доктором Вебом или Касперским, даты некоторых исполняемых файлов просто стали неправильными. Похоже, как раз, я "поймал" вирус в 2008 году, так как антивирус расшифровывал и пересоздавал спасённые файлы.
Запрограммировать, как надо, вывод на LPT у меня получилось не сразу, но я на каком-то сайте нашёл пример. Программу, написанную неким Алексом Новожиловым, которая выводила на порт последовательности чисел. Я увидел, что она написана, как раз, на VB и это придало мне сил, к тому же, как раз в ней была нужная мне библиотека "vbio32.dll".
Однако напрямую двигатели, как это, казалось бы, было проще всего сделать, к порту подключать нельзя. Подсоединить машину для управления клавиатурой я еще не мог.
Pentium Pro, хотя и пробыл у меня не так долго, но подарил мне надежду, что не всё в компьютере будет так уязвимо к повреждениям, и что я уже смогу разбирать компьютер и что-то в нём заменять и добавлять, поэтому я смог лазить тестером ему в порты ввода-вывода.
Первые попытки выхода на белый свет
После широкого распространения персональных компьютеров, Савёловский рынок окончательно перепрофилировался в компьютерный, и там я, для дальнейшего улучшения условий учёбы, с помощью друга и семисот долларов, приобрёл нового помощника — Duron 700, с памятью 128Мб и видеокартой GeForce MX200. В него я переставил модем из Pentium Pro-200.
С помощью своей веб-камеры я стал предпринимать попытки с кем-то увидеться через компьютерный экран. Оказалось, что среди всех моих знакомых веб-камера была только у одного друга.
У всех уже была ICQ, но в ней можно было только писать текст и, уже несколько позже, пересылать файлы. Ещё был IRC, но он был менее удобный. После долгих поисков в Интернете, я нашёл две программы, с помощью которой можно было общаться в Интернете. Одна представляла собой прямое соединение пользователей по IP и позволяла общаться, в отличие от ICQ, голосом а тем, у кого есть камера, и с видео. Она называлась Microsoft NetMeeting.
Вторая звалась MSN Messenger. В нём можно было найти различные группы, где общались иностранцы, в основном, из США, под названием MSN Groups или MSN Chat rooms. Они обсуждали что-то или сидели в чатах просто так и шутили на английском. Однако в некоторых чат-группах люди уже использовали веб-камеры.
NetMeeting был проще, а, что касалось разговоров с несколькими пользователями в группах, то тут скрывалась и проблема.
В школе у нас не было английского, так как учителя часто увольнялись, а новых найти долго не могли. Я собрался с духом и стал исследовать возможности соединения по этим обоим программам. Первый блин разговора в MSN Messenger, как и водится, получился комом.
Я помню, что одним из первых моих собеседников был дед, смотревший в камеру в огромных наушниках и здоровенных очках, окружённый массой радиотехники. На экране он выглядел древним, как сама Земля. Со скидкой на возраст, вид у него был примерно такой:
Он сидел среди забитых электроникой полок и говорил в отдельный, стоящий на столе, большой микрофон.
Тем не менее, это был самый вежливый, внимательный и терпеливый собеседник, которого я тогда встретил. Он вслушивался, в своих невероятного размера наушниках, в каждое моё слово. Я его понимал, а он моё произношение разбирал с трудом. Общение не складывалось, но он не сдавался. Дед просил меня повторить что-то, переспрашивал, просил проговорить по буквам. Пытался узнать, кто я, откуда, интересы и предпочтения в еде. Я тогда растерялся. Я никогда до этого не разговаривал на английском через компьютер, да даже по телефону. Я стеснялся говорить громко по-английски, потому что боялся, что меня не поймут.
Хотя он просил меня этого не делать и уверял, что у нас получится разговор, я отключился. Я потом уже понял, то о чём он меня просил и что рассказывал:
"Сынок, просто произноси слова почётче. Я был радистом во время войны во Вьетнаме, и всякое повидал. Нужно только говорить погромче, и у нас заведётся отличный разговор. Я слышал тысячи людей по радио с разными качествами сигнала, и я умею разбирать звуки в радиоэфире даже среди сильных помех. Видишь, я тебя уже понимаю!"
Я поколебался и "повесил трубку".
И я тебя сейчас понимаю, дед. Спасибо — если бы не ты, мне было бы гораздо труднее научиться понимать собеседника и отвечать ему на другом языке. Я тогда упустил полезную практику, которую можно было бы пройти в тот день, и на несколько недель потерял возможность влиться в эти голосовые чаты. Только спустя несколько дней после разговора с радистом я осознал, что люди, в общем-то, могут меня понимать. Пришлось перебрать много конференций и собеседников, чтобы добиться такого разговора, который бы все его участники могли поддерживать.
Я был потрясён тем, что собеседника можно не только слышать, но и видеть. Напомню, что тогда самым популярным мессенджером была ICQ, в ней люди посылали свой адрес электронной почты, и уже по Email пересылали фотки с плёночного фотоаппарата, отсканированные сканером. По телевизору шла программа "Сам себе режиссёр", которая состояла из были видео, снятых на камеры с магнитными кассетами, и которые её участники присылали в телестудию по обычной почте. А тут: ты сам видишь окружение, природу, людей не только рядом с тобой, но и из разных стран! Я поначалу просил собеседников просто помахать в камеру или покрутить перед ней кружкой или книжкой, настолько казалось невероятным видеть собеседника.
Второй случай произошёл немного позже. В одной из комнат, где люди общались в общем чате, я включил камеру какого-то мужика. Увидев в списке тех, кому показывается его видео, мужское имя, он посмотрел в неё и спросил:
— Зачем ты на меня смотришь?
Я сказал, что просто хочу пообщаться. А на кого мне еще смотреть?
Он сказал:
— Смотри на девушек!
"Чёрт возьми, — подумал я тогда, —наверное, в будущем у веб-камер будут и правда стоящие применения".
Через другую программу, NetMeeting, можно было подключиться к собеседнику напрямую, введя IP-адрес. Мы попробовали общаться так через камеру с моим другом.
Для того, чтобы поговорить с видео, мы созванивались по модему через обычную телефонную линию, потом смотрели свой IP через Winipcfg, запускали NetMeeting. Один вводил IP другого, и так устанавливался видеозвонок. По-русски говорить было проще, чем по-английски, и, казалось бы, звони — не хочу, но больше созваниваться из друзей было не с кем. К тому же, нельзя было надолго занимать общий телефон, а разговаривать по телефону и лазить в Интернете в одно и то же время было невозможно. Если во время связи снять трубку телефона, то в ней будет слышен писк модемов.
Неожиданная находка и связующее звено
Мне не очень хотелось городить сложную схему из отдельных микросхем и дискретных деталей, и для простого управлением машины с LPT-порта мне была нужна связывающая моторы и порт микросхема.
В поисках подходящих микросхем я обыскал весь Интернет образца 2001 года, скачал каталоги в виде DOS-программ, даже сходил в библиотеку, но и там ничего про микросхемы, подходящие мне, не было. В отношении новых программ и программирования вообще, время тогда не летело так быстро, и программы могли писаться годами. Передо мной стояли примеры работ разных преподавателей, аспирантов и дипломников кафедры, когда вынашивали идею, разрабатывали подход к её решению, план ПО, по нескольку лет. Каталоги микросхем под DOS, которые я скачал, оказались сильно устаревшими.
Показать её работу, увы, не получится.
Когда ко мне в очередной раз приехал двоюродный брат, уже в начале следующего года, он поведал, что в Москве открылся "Такой магазин, в котором ты называешь название детали — и тебе ее продают."
— Не может быть!
— Да правда. Пошли, проверим!
И мы пошли проверять. Этим магазином, так стремительно ворвавшимся в мир творчества и радиолюбителей, и оказавшимся, уже после, лучше западных "Сделай сам", был Chip&Dip. Сначала там, насколько я сейчас помню, продавались только микросхемы, светодиоды, транзисторы-резисторы всех номиналов, но не было такого ассортимента, как сейчас. И таким образом, благодаря сарафанному радио, я нашёл недостающий элемент для моего компьютерного управления. На меня, поблёскивая глянцем прозрачного пластика, смотрел компакт-диск с названием "Микросхемы для управления электродвигателями".
На диске было описание и схемы подключения не только для простых, но и для шаговых моторчиков. Сейчас я не смогу сделать его "образ", у меня сейчас нет подключенного CD-ROM, да и за диском лезть далеко. Сейчас я такого в Интернете не нашёл, зато есть куча другой, уже новой, информации, да и микросхемы уже есть посложнее и более продвинутые, так что он вам вряд ли нужен. Если кто-то хочет, напишите в личных сообщениях, придется подождать, но, может быть, как-нибудь руки дойдут. Тому, кто не верит, что я этот диск нашёл — правда-правда! Вот чек:
Нашлись микросхемы, которые управлялись, как раз, напряжением 5В, которое было на моём LPT.
Мне ещё хотелось сделать манипулятор, чтобы можно было подвигать им, что-то захватить или переместить. Подумав, что в манипуляторе тоже используются двигатели, а управление я всё равно подключу похожим образом, я подумал, что в качестве примера для исследования управления манипулятором моя машина хорошо подходит. Она тоже может перемещать предметы, в конце концов, можно будет приделать ей захват. Я решил пробовать подключить для управления с компьютера не что-то собранное заново, а уже имеющуюся у меня машину.
Чтобы подключить что-то к чему-то, сначала нужно сделать плату. Я делал платы из текстолита с медным покрытием, опять же, с Митинского радиорынка. Покрытие нужно покрыть лаком, который повторял бы проводники и контактные площадки, затем протравить лишнее медное покрытие. Для этого нужно пролить хлорное железо на ковёр, испачкать всё и хорошенько пропитать свою одежду цапонлаком. После этого можно покрыть облитый реагентом ковёр пылью от сверления дырок в текстолите под ножки дискретных деталек, испортить несколько листов дорогого, по моим меркам, текстолита. Получается плата, типа, как печатная, только рукотворная.
Микросхема работала следующим образом. Каждая из них управляла одним двигателем. Подавала питание разной полярности на два выхода, в зависимости от наличия напряжение на, кажется, двух её управляющих ножках: вперёд и назад. Я не помню ее точное название. Если нет сигналов, то двигатель не работает. Я купил в том же Чип и Дипе и подключил две таких.
Сначала я нарисовал схему на листке бумаги, затем подключил по ней микросхемы к выходам LPT-порта. Через программу на порт выводится число, где единица присутствует или отсутствует на нужных ножках подключенной к его выходам микросхемы. Когда порт подаёт единицу, то есть, напряжение на нужные ножки — двигатели крутятся. Выходы микросхем соединил с правым и левым двигателями на моём "манипуляторе". Если оба вперёд, то машина двигается вперёд. Если в разные стороны, то поворачивает. Я сделал разворот на месте, как у некоторых настоящих танков.
Следующим шагом должно было стать подключение клавиатуры, но это уже было делом техники. Помимо стандартных для "бродилок" и "стрелялок" WASD для движения я подключил и мышку. Я сделал так, что машина копировала движения оператора ПК. Двигаешь ей вперёд — машина едет вперёд, назад — едет задом. С помощью мышки получился уже, буквально, настоящий манипулятор. Двигаешь мышью в сторону — машина поворачивает. В управлении я задействовал и и кнопки. Нажимается левая кнопка — поворот налево, правая — направо, обе — движение вперёд.
Программа для этого захватывала курсор мышки и прятала его. Но я тут же задался вопросом: если невозможно будет двигать курсором, то как остановить программу? Поэтому я добавил кнопку, на которую автоматически наводился фокус. Чтобы остановить управление, нужно надавить на Пробел, эта кнопка нажмётся, и пользователю вернётся курсор.
Странно, но ни в школе, ни в институте на уроках по программированию нас не учили, что бывают разные версии ПО и как называть переменные, и, соответственно, в моих каталогах для разработки ПО программы хранились под названиями типа: LPT_final, LPT_final2, LPT_final_latest, LPT_final_latest2, ну и так далее. Переменные назывались просто X, Y, O и т. п, и программа на скриншоте называлась, как и многие, для которых я не напрягался, придумывая названия, "Project1.exe".
Я долго испытывал управление и проходимость машины в разных условиях и разными манёврами. Управлять настоящим предметом, используя клавиатуру и мышку, прямо как компьютерным персонажем, было круто! Можно представить, что машина исследует виртуальный мир, а ты ее оператор. В этом мире были и рендер, и разрешение, и физика столкновений получше, чем в компьютерных играх. Особенно реалистичными казались ожоги от соскользнувшего с жала паяльника мне на кожу припоя.
Однако оставалась ещё одна возможность, которую стоило попробовать применить. Что если управлять им по сети? Получится ли и насколько большой будет задержка? Будет ли "пинг" настолько большой, что машиной невозможно будет рулить?
Удалённое управление
Я стал думать, как можно передать числа, которыми управляются двигатели с LPT-порта, по сети. Первое, что пришло в голову — это локальная сеть, благо, у меня был для неё коаксиальный кабель и сетевая карта, тоже снятая с Пентиума, но второго компьютера у меня не было. Не только второго, но и вообще компьютеров не было ни у друзей, ни у соседей. Компьютерами пользовались только те знакомые, кто учился в институте. Даже их родители считали компьютер бесполезной тратой денег, дорогой игрушкой, которая только портит зрение и отвлекает от прополки картошки.
Я перебрал в голове кучу вариантов, но остановился на том же Visual Basic. Для этого в этом языке существовал другой модуль под названием winsock.ocx. В качестве протокола я сначала выбрал TCP, однако меня сразу же озадачила некоторая сложность при потере пакетов. Тогда я переключился на UDP, потому что в нём не нужно было считать отправленные пакеты. Сколько пришло, тем и будем довольствоваться.UDP просто отлично подошёл для моей цели.
Я слегка изменил программу для управления вездеходом, создав внутри неё аналог передачи позиции курсора на выход LPT, но не напрямую, а через сетевые сигналы. Поэтому теперь она разделилась на две части, клиентскую и серверную. Клиент подключался к "серверу" по IP-адресу, вводимому в текстовое поле.
Как я уже упомянул, второго компьютера у меня не было, и управлять, и смотреть на картину движения вездехода, всё равно приходилось с одного и того же ПК. Для этого нужно было запустить и клиентскую, и серверную часть, на моём компьютере, и связать их, введя в клиент IP сервера.
Эта программа на современных ОС уже тоже не запускается.
Для их запуска, возможно, сработает установка Windows 98 на виртуальную машину, однако сейчас я не могу этого сделать.
При программировании в Visual Basic было очень просто вставлять компоненты различных программ прямо в "формы". По-моему, я добавил в неё одним из компонентов NetMeeting, и запаковал всё в "установщик". По крайней мере, сейчас, в одной из ошибок запуска, программа ругается на именно этот неработающий компонент. Файл "Conf.exe" — это и есть программа NetMeeting. Она, в качестве рудимента, дошла до Windows Vista.
Дату изменения исполняемого файла повредил вирус, но внутри установочного CAB все даты правильные.
Получилась программа для удалённого манипулирования машиной. Правда, тестировать работу программы мог только я у себя на компьютере, и я подсоединял программу управления к серверной её части, запускавшуюся на том же компьютере, по IP 127.0.0.1.
Поскольку у меня есть веб-камера, почему бы не попробовать установить её на трактор? Я поставил, но провод от неё был настолько толстый, что управлять ей было не удобно. Чтобы испробовать телеуправление, я решил, что проще наводить камеру на машину, а сам вездеход ездил бы по столу под ней. Пользователь мог видеть перемещения машины на своём экране, через камеру, и управлять движением устройства с помощью мышки и клавиатуры.
Программа состояла из двух частей, программа-клиент и сервер. Управляющий запускал на своём компьютере клиентскую часть, а тот, у кого был компьютер с машиной — серверную. Управляющий смотрел Winipcfg IP-адрес сервера и вводил его в клиентскую часть программы, программа сама подставляла IP-адрес в NetMeeting, и они соединялись. Управление шло с видео: видео и аудио передавались через NetMeeting.
Боевой выезд
Для связи с Интернетом бодро свистел в телефонную сеть PCI-модем 3Com, который, по идее, должен был выдавать 56 килобит в секунду. Одним из крупнейших и самых известных Интернет-провайдеров, представленных на всех выставках и больше всего раздававших там предметов и буклетов с рекламой, был Demos со своим знаменитым доменом SU, что означало Soviet Union: http://demos.su . Однако мой модем с основными провайдерами: MTU Inform, Caravan, Demos и Sitek, не всегда соединялся по Dial-up на заявленной максимальной скорости, и чаще скорость была всего 33,6 килобита в секунду.
Проверить работы удалённого управление было катастрофически не с кем. Друг, с которым мы связывались по видеосвязи, был занят.
Я подумал, что, ведь, в сущности, можно было бы проверить и без обратной связи. Управление будет работать и в том случае, если если кто-то просто запустит клиент на своём компьютере и будет видеть мою камеру. Тогда, водя мышкой, он сможет поуправлять машиной. Этого было достаточно, ну а я ему потом перезвоню, и он расскажет словами, получилось или нет! Пришлось пожертвовать обратной связью в реальном времени, и я не мог получить впечатления об управлении прямо во время сеанса связи.
Пусть оператором машины буду не я, и пусть я не буду видеть и слышать водителя машины, пусть придётся только позже услышать его впечатления. Однако нужно было провести тестирование новой системы. Без этого я не мог понять перспективы и работоспособность такого подхода к удалённому управлению.
На помощь пришёл второй друг, которого звали просто Анатолич. У него был компьютер, и тоже был модем, не было ни микрофона, ни камеры. С компьютерами разговаривать было не принято.
Я позвонил ему.
— Привет, хочешь, я тебе покажу кое-что новое?
— Хочу, давай!
Я вкратце описал, как управлять моей системой с его компьютера. Программа просто устанавливалась: я постарался, чтобы от пользователя требовалось наименьшее количество самостоятельных действий, и включил все компоненты, включая программу для видеосвязи, в архив для установки. Установочный файл я передал Анатоличу на дискете, так как он жил недалеко, и для этого было достаточно спуститься к подъезду.
— Сначала мы созвонимся по модему, ты вот сюда набирай: Winipcfg, там смотри цифры, вставляй адрес вот сюда.
— Так, понял, записал. А что дальше?
— Кнопки работают так, у тебя откроется изображение. По видео контролируешь. Потом расскажи, что получилось!
И мы сконнектились через модем. Сначала я ждал, и ничего не просиходило. Похоже, что Анатолич искал мой IP и подключался. И затем машина задвигалась. Анатолич быстро разобрался с управлением.
Вездеход поворачивался, как я и планировал, двигался вперёд-назад и пару раз чуть не свалился со стола, пришлось ловить его руками прямо в кадре у оператора.
Когда я перезвонил другу по дисковому телефону и спросил его о работе технологии, он подробно рассказал, что всё работало, как я и сказал. Анатолич рассказал, что задержка при управлении в долю секунды почти не мешала вождению, и что ему очень понравилось.
Результат тестирования и отзыв оператора
Я ещё долго не хотел устанавливать на компьютер Windows XP, который вышел недавно. С одной стороны, интерфейс Windows 98 мне нравился больше, а, с другой, мне не хотелось терять быстродействие. Ведь XP, хоть и хвалился скоростью своей работы, но, на практике, был заметно медленней.
Видимо, чтобы простимулировать популярность XP, производители нового ПО стали стремительно прекращать поддержку Windows 98, и выбора не оставалось, пришлось обновить и ОС. Когда я запустил свою программу под XP, я увидел, что в ней убрали возможность прямого управления портами, и "vbio32.dll" уже не посылал сигналы на их выходы.
Оказалось, что моя видеокамера Kensington внезапно также перестала работать с какими-либо Windows, старше Windows Millenium. Поэтому я не мог ее использовать, и долгое время оставался без веб-камеры. Денег на новую у меня не было.
Microsoft прекратила поддержку NetMeeting и MSN Messenger, и я с головой погрузился в написание диплома.
Для того, чтобы попробовать подключение к современному PC, нужно было какое-то устройство, которое было бы, с одной стороны, просто собрать, а с другой, которое бы показало дальнейшие перспективы работы с подобными системами.
Из результатов тестирования в 2002 году стало понятно, что, несмотря на некоторые неудобства, заключающиеся в том, что было слишком сложно созваниваться и искать IP-адрес, каждый раз предоставлявшийся провайдером заново, и в том, что во время связи нельзя было разговаривать по телефону, из положительного заключения оператора созданного устройства стало понятно, что скорости 33,6 кбит/с и сжатия при передаче первыми кодеками видео и аудио хватало на телеуправление, и задержка не мешала управлению и движению подключённой машины.
Даже несмотря на то, что тестирование проходило в условиях модемной связи, медных телефонных линий и передачи видеопотока через первые приложения, выпущенные для самых первых веб-камер, с прямой связью через IP-адреса собеседников. Только представьте, управлять удалённым устройством, при правильном подходе, можно было из любой точки мира и видеть результаты своих действий прямо на экране! Пусть и на пузатом семнадцатидюймовом экране ЭЛТ-монитора.
Автор:
MR_VF