Контроллер всему голова

Краткая история программируемых игрушек с примерами и наукой

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

История контроллеров в игрушках началась спустя девять лет после окончания Второй мировой войны. В 1954 году американская компания Ideal Toy выпустила робота Роберта. Это был довольно футуристичного вида робот, способный ходить и говорить. Аналоговый контроллер робота принимал и команды с проводного пульта управления. Позднее в США и Японии были выпущены еще несколько подобных роботов, включая и первого робота, функционировавшего полностью на батарейках.

К началу 1960-х годов благодаря фантазии режиссеров и кинематографу началось фактически массовое помешательство на роботах. В 1956 году в США на экраны вышел фильм «Запретная планета», в которой одновременно раскрывались сразу две «горячие» темы — космоса и роботов. Спустя пять лет в советских кинотеатрах показали фильм «Планета бурь», о покорении Венеры смешанным экипажем советских и американских ученых. В этом фильме робот Джон сперва чуть не становится причиной гибели всей экспедиции, но потом спасает ее участников.

В 1960-м году происходит первый прорыв в робототехнике. Исследователи в Университете Джона Хопкинса создали аппарат, ставший позднее известным как «Животное Хопкинса». Электронные логические схемы робота были построены на транзисторах, довольно новой по тем временам технологии. «Животное», напоминающее бочонок, бродило по лаборатории в университете, а при разряде аккумулятора с помощью фотосенсоров искало на белых стенах черные розетки. Найдя, оно к ним подключалось штепселем, заряжалось и затем продолжало бродить.

Позднее в исследовательских лабораториях появились сложные манипуляторы, программно-аппаратные комплексы, функционирование которых задавалось оператором на программном уровне, и другие всевозможные роботы. В 1970-м году на Луну отправили самоходный аппарат «Луноход-1», который занимался, в частности, исследованием грунта. Но все эти разработки были закрыты для общественности. В первую очередь из-за своей дороговизны и неготовности к массовому производству.

Первый существенный прорыв в области именно потребительской робототехники, можно считать, произошел в 1979 году. Тогда американская компания Milton Bradley выпустила программируемый робот-танк Big Trak. В США игрушка продавалась за 49 долларов (160,7 доллара в современных ценах). Это был шестиколесный танк с пленочной клавиатурой, закрепленной на верхней части корпуса. В игрушке использовался микроконтроллер Texas Instruments TMS1000, программа в памяти которого опрашивала кнопки и запоминала команды.

В целом Big Trak мог запоминать до 16 команд и последовательно выполнять их. Была и возможность повтора предыдущей команды. Например, робота можно было запрограммировать на движение вперед на пять единиц (условная величина, определявшаяся датчиком вращения колес), остановку, выстрел, поворот на 30 градусов вправо, движение вперед на десять единиц и сброс груза из прицепа. Прицеп продавался отдельно.

Программируемый танк получился настолько футуристичным и удачным, что вскоре в мире появилось множество его копий. Европейская копия называлась bigtrak и имела несколько отличающуюся от оригинала клавиатуру. В 1980-х годах клон игрушки появился в СССР. Она называлась «Электроника ИМ-11». Всего были выпущены три разных версии танка, отличавшихся друг от друга оформлением и технической начинкой. Например, в первой версии — «Луноход» — в качестве датчика пройденного расстояния использовался геркон (устройство с ферромагнитными контактами в стеклянной колбе, замыкащимися под воздействием магнитного поля) вместо оптопары (прибор, состоящий из излучателя света и фотоприемника и реагирующий на прерывание светового луча).

Поздняя версия ИМ-11 — «Планетоход» — получила выстреливаемый по команде пропеллер, задние габаритные огни и фары. В этой игрушке использовался микроконтроллер УУ-1. Согласно инструкции, в нем содержалось десять тысяч транзисторов, что было почти на две тысячи больше, чем в оригинальном микроконтроллере TMS1000. ИМ-11 предназначался «для развития у детей 6-12 лет интереса к техническому творчеству, навыков программирования, расширения их кругозора».

Позднее по мере удешевления производства электронных компонентов всевозможные игрушки с микроконтроллерами стали появляться чуть ли не ежегодно. Так, в 1998 году компания Lego представила несколько сборных роботов серии Mindstorms, а в 1999 году Sony выпустила первую версию самообучающегося робота-собаки Aibo. В 2004 году в США начались продажи робота WowWee, спроектированного в NASA. Этот аппарат имел 84 варианта программирования, включая бег, движение руками и самостоятельное «патрулирование» дома.

Но самое интересное началось с появлением в начале 2000-х годов относительно дешевых программируемых микроконтроллеров. В частности, в 2005 году на свет появилась первая плата Arduino, сегодня выпускаемая в нескольких версиях самыми разными компаниями. Она представляет собой контроллер с несколькими портами-ввода вывода, к которым можно подключать практически любые дополнительные модули: реле, оптопары, различные датчики, подчиненные контроллеры карт памяти, дисплеи, кнопки, фотодиоды.

Имея нужные относительно недорогие модули практически любой желающий может быстро собрать какое-нибудь устройство, просто подключив провода к контроллеру Arduino. После этого достаточно лишь набросать короткую программу управления модулями, которую и будет исполнять контроллер. В Arduino программы, иначе называемые скетчами, пишутся на незначительно измененном языке C, но никто не запрещает писать программы на чистом C или C++. Если вы, конечно, обладаете соответствующими знаниями.

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

Сегодня существует множество компаний, выпускающих уже готовые наборы с контроллерами для обучения программированию и азам электроники. Например, «Амперка» выпускает конструктор «Йодо». В его состав входит контроллер Iskra JS, разработанный на основе американского Espruino, плата расширения и несколько модулей, включая ультразвуковой датчик, датчик температуры, тактовую кнопку и сервопривод.

Iskra JS — устройство, построенное на основе микроконтроллера STMicroelectronics STM32F405RG с ядром ARM Cortex M4. В отличие от других контроллеров, программирование в «Йодо» осуществляется на JavaScript, языке, сегодня активно используемом для «оживления» веб-страниц. До появления смартфонов, когда все ходили с простыми Nokia или SonyEricsson, на JavaScript писали несложные игрушки для таких телефонов.

В «Йодо» все дополнительные модули подключаются к плате расширения Troyka Shield. Эта плата имеет «развязку» для питания подключаемых датчиков и дублирует порты ввода-вывода, или пины, самой Iskra JS. Все просто — подключил нужный разъем и все. Если что-то не понятно, есть подробная инструкция с картинками. Можно собрать 25 проектов, предложенных в инструкции, или попробовать придумать что-нибудь свое.

Попробовав набор, мы решили пойти своим путем. Для разгона мы сделали простенький «радар», использовав контроллер, кнопку, «пищалку», сервопривод и ультразвуковой датчик. Несложный код уместился всего в 30 строчек. «Радар» поворачивает ультразвуковой датчик на 180 градусов и, обнаружив какой-либо объект на расстоянии метра или меньше, пищит. Набравшись терпения и обложившись справочниками по JavaScript, можно написать и графическую часть для радара.

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


Правда, точность будет низковата. Дело в том, что ультразвуковой датчик HC-SR04, идущий в комплекте «Йодо» имеет довольно небольшую точность. Поэтому и погрешность в измерении температуры составляет ± два градуса Цельсия. Точность можно повысить, если вычислять среднее арифметическое по, скажем, ста замерам расстояния и такому же количеству вычислений температуры воздуха. Но и в таком виде все получилось довольно познавательно.

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

Второй минус — сложность для новичков, не имеющих ни малейшего представления о программировании. Такие люди смогут разве что повторить подключение и код, приведенные в инструкции. Действительно научиться программировать на JavaScript или C, пусть даже на примитивном уровне, с помощью таких конструкторов будет сложно, если не невозможно. Но, конструкторы, подобные «Йодо», способны пробудить интерес к изучению языков программирования, листанию справочников, изучению электроники. А это дорогого стоит.

Василий Сычёв

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.
Подводный джетпак разгонит пловца до трех метров в секунду

Одного заряда батареи хватит на 40 минут подводного плавания