Создаем робота в домашних условиях

Наверняка, насмотревшись фильмов про роботов, тебе не раз хотелось построить своего боевого товарища, но ты не знал с чего начать. Конечно, у тебя не получится построить двуногого терминатора, но мы и не стремимся к этому. Собрать простого робота может любой, кто умеет правильно держать паяльник в руках и для этого не нужно глубоких знаний, хотя они и не помешают. Любительское роботостроение мало чем отличается от схемотехники, только гораздо интереснее, потому что тут так же затронуты такие области, как механика и программирование. Все компоненты легкодоступны и стоят не так уж и дорого. Так что прогресс не стоит на месте, и мы будем его использовать в свою пользу.
Введение
Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды. Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики (расстояния, угла поворота, ускорения), видеокамеры, манипуляторы. Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать мощных роботов. Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Cи и иметь начальные знания в цифровой и аналоговой электронике. В нашем проекте мы будем использовать Cи. Программирование для МК мало чем отличается от программирования на компьютере, синтаксис языка такой же, большинство функций практически ничем не отличаются, а новые довольно легко освоить и ими удобно пользоваться.
Что нам нужно
Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в радиотехнических магазинах. Решим, как наш робот будет передвигаться. Самым удачным я считаю гусеницы, которые применяются в танках, это наиболее удобное решение, потому что гусеницы имеют большую проходимость, чем колёса машины и ими удобнее управлять (для поворота достаточно вращать гусеницы в разные стороны). Поэтому тебе понадобится любой игрушечный танк, у которого гусеницы вращаются независимо друг от друга, такой можно купить в любом магазине игрушек по разумной цене. От этого танка тебе понадобится только платформа с гусеницами и моторы с редукторами, остальное ты можешь смело открутить и выкинуть. Так же нам потребуется микроконтроллер, мой выбор пал на ATmega16 – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный. Ещё тебе потребуется закупить немного радиодеталей, паяльник, мультиметр.
Делаем плату с МК

Схема робота
В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения. Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК — DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно! Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.

Плата моего робота
Управление двигателями
Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах. Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя. Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону. Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND — их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.
Датчики препятствий
Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него два инфракрасных датчика. Самый простейший датчик состоит из ик-диода, который излучает в инфракрасном спектре и фототранзистор, который будет принимать сигнал с ик-диода. Принцип такой: когда перед датчиком нет преграды, то ик-лучи не попадают на фототранзистор и он не открывается. Если перед датчиком препятствие, тогда лучи от него отражаются и попадают на транзистор – он открывается и начинает течь ток. Недостаток таких датчиков в том, что они могут по-разному реагировать на различные поверхности и не защищены от помех — от посторонних сигналов других устройств датчик, случайно, может сработать. От помех может защитить модулирование сигнала, но пока мы этим заморачиватся не будем. Для начала, и этого хватит.

Первый вариант датчиков моего робота
Прошивка робота
Чтобы оживить робота, для него нужно написать прошивку, то есть программу, которая бы снимала показания с датчиков и управляла двигателями. Моя программа наиболее проста, она не содержит сложных конструкций и всем будет понятна. Следующие две строки подключают заголовочные файлы для нашего микроконтроллера и команды для формирования задержек:
Следующие строки условные, потому что значения PORTC зависят от того, как ты подключил драйвер двигателей к своему микроконтроллеру:
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0».
Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны:
Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.
Заключение
Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом. Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию. Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
Список компонентов:
- ATmega16 в корпусе DIP-40>
- L7805 в корпусе TO-220
- L293D в корпусе DIP-16 х2 шт.
- резисторы мощностью 0,25 Вт номиналами: 10 кОм х1 шт., 220 Ом х4 шт.
- конденсаторы керамические: 0.1 мкФ, 1 мкФ, 22 пФ
- конденсаторы электролитические: 1000 мкФ х 16 В, 220 мкФ х 16В х2 шт.
- диод 1N4001 или 1N4004
- кварцевый резонатор на 16 МГц
- ИК-диоды: подойдут любые в количестве двух штук.
- фототранзисторы, тоже любые, но реагирующие только на длину волны ик-лучей
Код прошивки:
Тип МК : ATmega16
Тактовая частота : 16,000000 MHz
Если у тебя частота кварца другая, то это нужно указать в настройках среды:
Project -> Configure -> Закладка «C Compiler»
*****************************************************/
void main(void)
//Настраиваем порты на вход
//Через эти порты мы получаем сигналы от датчиков
DDRB=0x00;
//Включаем подтягивающие резисторы
PORTB=0xFF;
//Настраиваем порты на выход
//Через эти порты мы управляем двигателями
DDRC=0xFF;
//Главный цикл программы. Здесь мы считываем значения с датчиков
//и управляем двигателями
while (1)
//Едем вперёд
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
if (!(PINB & (1 <
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
>
if (!(PINB & (1 <
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
delay_ms(1000);
>
>;
>
О моём роботе

В данный момент мой робот практически завершён.
На нём установлена беспроводная камера, датчик расстояния (и камера и этот датчик установлены на поворотной башне), датчик препятствия, энкодер, приёмник сигналов с пульта и интерфейс RS-232 для соединения с компьютером. Работает в двух режимах: автономном и ручном (принимает сигналы управления с пульта ДУ), камера также может включаться/выключаться дистанционно или самим роботом для экономии заряда батарей. Пишу прошивку для охраны квартиры (передача изображения на компьютер, обнаружение движений, объезд помещения).
По пожеланиям выкладываю видео:
UPD. Перезалил фотографии и сделал небольшие поправки в тексте.
Статья была опубликована мною в журнале «Хакер» за август 2009 года.
Хочу стать инженером и собрать робота. У меня получится?
Можно подумать, что робототехника — занятие для умников и выпускников физтеха, но это не так. На самом деле простых роботов строят даже младшие школьники, поэтому вам это тоже под силу. Вместе с благотворительным фондом Олега Дерипаски «Вольное дело», реализующим программу по робототехнике для школьников, подростков и студентов, мы сделали простой гид для начинающих инженеров (впрочем, взрослым он тоже вполне может пригодиться). Объясняем, как собрать своего первого робота.
Что мне потребуется?
В первую очередь — микроконтроллер. Он станет мозгом будущего робота. Можно сказать, что микроконтроллер — это крошечный компьютер, размещенный на одной микросхеме. У него есть процессор, оперативная и постоянная память и даже периферийные устройства: интерфейсы ввода и вывода данных, различные таймеры, передатчики, приспособления, которые инициируют работу двигателей. Набор устройств зависит от конкретной модели. Именно микроконтроллер будет получать информацию от внешнего мира через датчики движения, фотокамеры и прочие приспособления, анализировать ее и побуждать робота совершать в ответ какие-то действия.

Микроконтроллер нужно будет установить на печатную плату, запитать его, подсоединить все необходимые устройства (датчики, лампочки, двигатели), а еще собрать из подручных материалов корпус робота. Все детали, которые для этого нужны, можно купить в любом магазине радиотехники.
Если у вас нет профильного образования или опытного наставника, который подробно объяснит, что именно и в какой последовательности устанавливать (и как пользоваться паяльником!), готовьтесь к долгой и кропотливой работе: придется перерыть интернет вдоль и поперек и испортить множество деталей.
Я в ужасе и собираюсь передумать. Нельзя попроще?
Можно. Специально для тех, кто никогда не держал в руках паяльник, но очень хочет попробовать себя в робототехнике, существуют специальные наборы-конструкторы, позволяющие сделать всё то же самое, но быстрее. Самый известный и популярный — Arduino. Его главное преимущество в том, что это не просто игрушка, а целая экосистема: множество обучающих материалов и инструкций, видеокурсы, огромное пользовательское комьюнити — можно задать любой вопрос от новичкового до самого продвинутого. Есть и другие платформы — например, совсем простой конструктор Mindstorms от Lego.
Составы наборов могут быть очень разными, но в каждом есть готовая печатная плата с уже установленным микроконтроллером и всеми дополнительными деталями, которые нужны для решения простых типовых задач. Обычно плату можно напрямую подключить к компьютеру через USB. А дальше среда разработки от производителя поможет сразу же сделать первые шаги в программировании роботов. Например, заставить мигать лампочку на плате.
Теперь всё зависит от вас. Можно, используя готовую плату, реализовать собственный несложный проект: например, сделать машинку, которая движется и останавливается по команде, или гирлянду для новогодней елки. Можно купить набор, уже включающий в себя всё, что нужно для постройки робота определенного типа, и потренироваться на нем. Плюс этого варианта: все детали в наборе подготовлены так, чтобы вы могли соединить их без паяльника или других инструментов.
Участники программы «Робототехника», которую поддерживает фонд Олега Дерипаски «Вольное дело», уже через несколько лет обучения могут создавать куда более сложные проекты и придумывают инженерные решения для самых разных задач. Например, разрабатывают системы для автоматической сортировки мусора. Если вам кажется, что всё это очень сложно, вы правы, но научиться этому может каждый.
У меня в школе была двойка по физике, и вообще я гуманитарий. Мне нужно что-то выучить, прежде чем приступать?
Штурмовать учебники необязательно. Конечно, школьная физика пригодилась бы, но если вы ее забыли, не переживайте — вспомните по ходу дела. Для начала просто погуглите, что такое ток, сопротивление, закон Ома, конденсатор, транзистор — пара десятков статей дадут вам базовые представления о радиотехнике, и этого хватит на первое время. Позже вы легко найдете в сети всю информацию, которая вам понадобится. И усвоите ее на практике — гораздо лучше, чем из учебника.
А программировать надо уметь?
Если умеете, создание первого робота окажется, возможно, даже слишком легким делом. Если не умеете — отличный повод научиться. Дело в том, что программирование робота — штука очень наглядная: вот вы написали код и сразу же загорелась лампочка. Вам нужно, чтобы ваш робот разворачивался, когда до стены осталось меньше 5 см, значит, в программе надо прописать такое условие, всё логично. Именно поэтому детей часто начинают учить программированию на примере робототехники: здесь вместо скучных абстракций сразу получается осязаемый результат в реальном мире. На этом принципе строится обучение по программе «Робототехника». Все участники сразу же могут применить полученные знания на практике.

Перед первой попыткой написать программу для робота достаточно разобраться, что такое цикл и условный оператор . Для тех, кому и это кажется слишком сложным, производители конструкторов часто предусматривают визуальные редакторы: там код вообще не нужно писать, всё настраивается перетаскиванием блоков мышкой. Конечно, никакого сложного функционала так не напрограммируешь, но это уже начало. Позже, если захотите заниматься робототехникой углубленно, полезно будет освоить язык С, который чаще всего используется в этой сфере.
Меня случайно не убьет током?
Нет. Если, конечно, вы не собираетесь начать сразу с постройки огромных промышленных роботов. Пока речь идет о небольших игрушках, сила тока и напряжение настолько малы, что даже если вас и ударит, то вы ничего не почувствуете. Самое страшное, что можно сотворить, конструируя маленького робота, — небольшой взрыв на столе. Но это случится, только если вы перепутаете «плюс» с «минусом» во время работы с электролитическим конденсатором.
Самая вероятная неприятность — некоторое количество испорченных деталей, которые вы попытаетесь подсоединить не так и не туда. Но переживать не стоит: все необходимые расходники недороги, а их поломка тоже важная часть обучения.
Мой робот сможет защитить меня от врагов? Ну или хотя бы тапочки принести?
Самый первый — вряд ли. Точнее, нет ничего невозможного, но для начала лучше поставить перед собой цель попроще. Например, на базе того же Arduino можно собрать самых разных движущихся роботов: они могут ездить просто вперед-назад, по сложной заданной траектории или по нарисованной линии. Робот, который самостоятельно объезжает препятствия или как-то еще меняет свое поведение при приближении к разным объектам, тоже посильная задача. Еще первый робот вполне сможет включать и выключать что-нибудь, ориентируясь на уровень освещенности, совершать какие-то действия в определенный момент, заданный таймером, или по нажатию кнопки.
Ну а в будущем, если продолжите заниматься робототехникой, сможете сделать и робота-помощника, и робота-охранника, который умеет стрелять. Еще можно собрать робот-пылесос собственной модели. В России и в мире постоянно проводятся соревнования по робототехнике, на которых роботы-участники сражаются, играют в футбол, участвуют в гонках и просто демонстрируют свои выдающиеся способности. Например, на «РобоФесте», который ежегодно организует фонд «Вольное дело», можно увидеть сотни разных роботов.
Умение собирать роботов как-то пригодится мне в жизни?
Да, еще как. Вы неизбежно научитесь программировать. Причем будете в состоянии не просто писать код, который что-то как-то делает, но и понимать всю цепочку, по которой набранные вами на клавиатуре символы преобразуются в действия целого механизма. Уметь программировать в наше время почти так же полезно, как знать английский язык: пригодится, даже если вы маркетолог или продавец мороженого.

Знание робототехники при желании позволит вам здорово усовершенствовать быт и даже сделать свое жилище «умным», не покупая дорогих готовых решений. Световой будильник? Запросто. Лампы с датчиками движения? Да легко. Чайник, который начинает кипятиться, получив СМС, и передает кондиционеру сигнал охлаждать, а пылесосу пылесосить? Не так легко, но вполне реализуемо.
Где можно узнать больше о роботах?
Можно пройти один из многочисленных, в том числе совершенно бесплатных онлайн-курсов. Можно выбрать курс, посвященный Arduino, — как, например, этот от МФТИ, или начать с Lego. А можно не привязываться к конкретной платформе и учиться робототехнике в целом — например, на этом курсе от Бауманки. Ну а если вы знаете английский, буквально вся Coursera с программами по робототехнике от ведущих мировых университетов к вашим услугам.
А если мне понравится и я захочу сделать это своей профессией? Куда податься?
Самое очевидное решение — в программисты. Причем не обязательно туда, где работают непосредственно с «железом»: навыки, полученные во время занятий робототехникой, пригодятся в любой сфере — от промышленного до веб-программирования.
Если возникнет желание связать свою дальнейшую судьбу именно с роботами, придется получить соответствующее высшее образование. Специальность «Робототехника и мехатроника» уже появилась во многих технических вузах — в Москве это МГТУ имени Баумана, МИФИ, МЭИ, МИРЭА. Подойдет и факультет радиотехники: большинство нынешних специалистов по робототехнике получали именно такое образование.
Как сделать робота с нуля. С чего начать
Я разрабатываю роботов и меня часто спрашивают — «как сделать робота», «где ты находишь информацию, какие ресурсы используешь»?
Если вы не знаете с чего начать и хотите сделать собственного робота — эта статья для вас — в ней я постараюсь объяснить процесс, а также расскажу какие должны быть первые шаги.

Чуть-чуть обо мне
Долгое время я работал на различных предприятиях инженером-конструктором, занимался проектированием механической части устройств. Там я овладел специализированными программами 3Д-проектирования. Также занимался обучением учеников старших классов в ЦМИТе (3Д-печать, САПР, ЧПУ).
Несколько лет назад я перешел в другую профессиональную сферу и стал фронтенд девелопером.
Также с детства я увлекался робототехникой, данная тема меня всегда интересовала. Стартовой точкой идеи создания своего робота у меня стала покупка робот-пылесоса, мне понравилась идея управления устройством через приложение на телефоне.
Что такое робот?
При анализе задачи создания собственного робота, я для себя выделил основные части:
- Механическая часть — это непосредственно тело робота: корпус, двигатели, прочие механизмы.
- Электрическая часть — это то, с помощью чего осуществляется контроль механической части: вращение двигателей, управление другими механизмами. Сюда можно отнести мини-ПК, платы управления двигателями, ультразвуковые датчики, гироскопы и прочее.
- Программная часть — эта часть, включающая в себя всю логику робота — движения, выполнение команд, интерфейс взаимодействия человека — робота. Это может быть приложение, сайт, терминал.
С чего начать
Предлагаю вам ответить на следующие вопросы:
- Что вы хотите? — Вы хотите создать все три части робота с нуля, или взять готового и написать только программную часть? Существует много готовых решений как для механической части, так и для электрической, причем все они довольно доступны в цене и продаются на таких платформах как amazon или aliexpress. Также есть полностью готовые роботы, которые нужно только собрать и написать свой собственный софт. Если вас интересует создание робота полностью с нуля, в данном случае вы можете закупить необходимые детали и полностью спаять всю электронику самостоятельно. Особенные энтузиасты создают все модули сами, начиная с редукторов и заканчивая электроникой. Также различные детали можно изготавливать на 3Д принтерах или на ЧПУ станках.
- Что будет делать ваш робот? — Здесь надо определиться с основным функционалом — будет ли это шагающий робот, робот на колесах, робот — манипулятор и т. п. В процессе никто не мешает нам добавлять новые функции, но без базы это будет сложно. Не обязательно создавать робота с какой-то полезной нагрузкой — быть социально значимым и делать общество лучше. Пусть он просто передвигается или крутит головой, этого вполне достаточно на первом этапе.
- Что вы уже умеете? Насколько вы владеете тем или иным языком программирования. Мой выбор пал на JavaScript (тут понятно почему), но можно и на C++, Python. Перед началом создания робота желательно иметь какие-нибудь навыки программирования.
Как съесть слона?
Ответ очень простой — надо разбить сложную задачу на подзадачи того размера, с которыми вы можете справиться.
Иным словами, я предлагаю начинать с чего‑то простого, например управлением светодиодом или обычным вращением двигателем. Так, постепенно усложняя задачи и двигаясь по спирали, вы будете добавлять необходимый функционал на каждой итерации и в итоге устройство превратится в полноценного робота. Нет ничего страшного в том, если придется откатиться назад и переделать какую‑либо часть, созданную раннее — это обычный подход при проектировании.
Мой личный опыт. Небольшой экскурс.
У меня была идея сделать робота, управляемого через интернет. Корпус я решил спроектировать сам и распечатать его на 3Д принтере. Различные электрические устройства приобрел на китайском маркетплейсе — это двигатели, мини-компьютер, драйвера управления двигателями, гироскоп и ультразвуковые датчики, аккумуляторы. На самом первом этапе была цель — заставить двигатель вращаться, светодиод — светиться.

Далее приступил к проектированию корпуса. Перед этим закрепил электронику на алюминиевых профилях, таким образом можно было уже тестировать управление. Среди знакомых оказался владелец 3Д принтера, и он распечатал мне детали.

Параллельно занимался разработкой приложения для управления роботом — веб интерфейса и аппаратной части. Для веб интерфейса использовался React, аппаратная и серверная части были написаны на Node.js.

В итоге был создан робот и протестирован на улице. Весь процесс занял у меня около года — с момента первого мигания светодиода до полноценного устройства.

Далее я приступил к разработке шагающего робота, но это совсем другая история.
Заключение
Если вами интересна данная тема, я напишу более подробно детали реализации. Помните, самое сложное — это начать, проверено на себе.
Дорога к свету

Наш простой робот
Многие, кто из нас сталкивался с вычислительной техникой, мечтали собрать своего робота. Чтобы это устройство выполняло какие-то обязанности по дому, к примеру, приносило пиво. Все сразу берутся за создание наисложнейшего робота, однако зачастую быстро обламываются в результатах. Своего первого робота, который должен был делать умищу фишек, мы так и не довёли до ума. По этому нужно начинать с простого, постепенно усложняя своего зверя. Сейчас мы поведаем тебе как из подручных средств, которые есть у каждого дома, можно создать простейшего робота, который будет самостоятельно передвигаться по твоей квартире.
Концепция
Мы поставили перед собой простую задачу, сделать робота за 15 минут из подручных средств. Забегая вперёд, скажу, что обошлись мы конечно не пятнадцатью минутами, а значительно более длинным сроком. Но всё же это можно сделать за один вечер.
Обычно подобные поделки делаются годами. Народ бегает по магазинам в поисках нужной шестерёнки по нескольку месяцев. Но мы сразу осознали – это не наш путь! По сему мы будем использовать в конструкции такие детали, которые можно легко найти под рукой, или выкорчевать из старой техники. В крайнем случае, купить за гроши в любом радио магазине или на рынке.
Другая идея была в том, чтобы максимально удешевить нашу поделку. Подобный робот стоит в радиоэлектронных магазинах стоит от 800 до 1500 рублей! При чём он продаётся в виде деталей, а его ещё придётся собирать, и не факт что после этого он ещё и заработает. Производители таких наборов часто забывают положить какую-нибудь детальку и всё – робот потерян вместе с деньгами! Зачем нам такое счастье? Наш робот должен по деталям быть не дороже 100-150 рублей, включая двигатели и батарейки. При этом, если моторчики выковырять из старой детской машинки, то цена его станет вообще около 20-30 рублей! Чувствуешь, какая экономия, при этом получаешь отличного товарища.
Следующая часть была в том, что будет делать наш красавец. Мы решили изготовить робота, который будет искать источники света. Если источник света будет поворачиваться, то наша машинка будет рулить вслед за ним. Такая концепция называется – робот стремящийся жить. Можно у него будет заменить батарейки на солнечные элементы и тогда он будет искать свет, чтобы ездить.
Необходимые детали и инструмент
Что же нам понадобится для изготовления нашего чада? Поскольку концепция из подручных средств, то нам понадобится монтажная плата, или даже обычная плотная картонка. В картонке можно шилом проделать дырочки для крепления всех деталей. Мы же будем использовать монтажку, ибо она оказалась под рукой, а картонку в моём доме днём с огнём не сыщешь. Это будет шасси, на которое мы будем монтировать весь остальной обвяз робота, крепить двигатели и датчики. В качестве движущий силы, мы будем использовать трёх или пятивольтовые моторчики, которые можно выковырять из старой машинки. Колёсики мы сделаем из крышек от пластиковых бутылок, например от сосасола.

Некоторые исходники
В качестве датчиков используются трёхвольтовые фототранзисторы или фотодиоды. Их можно выковырять даже из старой оптомеханической мышки. В ней стоят инфракрасные датчики (в нашем случае они были чёрненькие). Там они спарены, то есть два фотоэлемента в одном флаконе. С тестером ничего не мешает выяснить, какая ножка для чего предназначена. Управляющим элементом у нас будут выступать отечественные транзисторы 816Г. В качестве источников питания заюзаем три пальчиковых батарейки спаянные между собой. Либо можно взять батарейный отсек от старой машинки, как сделали мы. Для монтажа нужны будут проводочки. Для этих целей идеально подходят провода из витой пары, которой в доме любого уважающего себя хакера должно быть завались. Для закрепления всех деталей удобно использовать термоклей с термопистолетом. Это прекрасное изобретение быстро плавиться и так же быстро схватывается, что позволяет с ним быстро работать и монтировать простенькие элементы. Штука идеальна для таких поделок и я не раз использовал его в своих статьях. Ещё нам понадобится жёсткая проволка, за неё вполне сойдёт обычная канцелярская скрепка.
Монтируем схему

Принципиальная схема робота
Итак, мы достали все детали и сложили их на своём столе. Паяльник уже тлеет канифолью и ты потираешь руки жаждя сборки, ну что ж – тогда приступим. Берём кусок монтажки и обрезаем его по размерам будущего робота. Для резки текстолита используем ножницы по металлу. Мы сделали квадрат со стороной примерно 4-5 см. Главное чтобы на нём уместилась наша мизерная схемка, батарейки питания два двигателя и крепёж для переднего колеса. Чтобы плата не лохматилась и была ровной можно её обработать напильником, и ещё убрать острые края. Следующим нашим шагом будет запайка датчиков. Фототранзисторы, и фотодиоды имеют плюс и минус, иначе говоря анод и катод. Нужно соблюдать полярность их включения, что несложно определить простейшим тестером. В случае, если вы ошибётесь– ничего не сгорит, но робот ездить не будет. Датчики впаиваются по углам монтажной платы с одной стороны, чтобы они смотрели в стороны. Запаивать их надо не полностью в плату, а оставить где-то полтора сантиметра выводов, чтобы можно было их легко изгибать в любую сторону – это в дальнейшем нам это понадобиться при настройке нашего робота. Это будут наши глаза, они должны находиться на одной стороне нашего шасси, которая в будущем будет передом робота. Сразу можно отметить, что мы собираем две управляющие схемы: Одна для управления правым, и вторая левым двигателями.

Распаянные фотодатчики и транзисторы
Чуть поодаль переднего края шасси, рядом с нашими датчиками, нужно впаять транзисторы. Для удобства запайки и сборки дальнейшей схемы, оба транзистора мы запаяли «смотрящими» своей маркировкой в сторону правого колеса. Сразу надо отметить расположение ножек у транзистора. Если транзистор взять в руки, и повернуть металлической подложкой к себе, а маркировкой к лесу (как в сказке), а ножки будут направлены вниз, то слева на право ножки будут соответственно: база, коллектор и эмиттер. Если посмотреть на схему, где изображён наш транзистор, то база будет палочка перпендикулярная толстому отрезку в кружке, эмиттер палочка со стрелочкой, коллектор такая же палочка, только без стрелки. Здесь вроде всё понятно. Подготовим батарейки и приступим к непосредственной сборке электрической схемы. Изначально мы просто взяли три пальчиковых батарейки и спаяли их последовательно. Можно их сразу вставить в специальный держатель для батареек, который, как мы уже говорили, вытаскивается из старой детской машинки. Теперь подпаиваем провода к батарейкам и определим у себя на плате две ключевые точки, куда будут сходиться все провода. Это будет плюс и минус. Мы сделали просто – продели витую пару в края платы, запаяли концы к транзисторам и фотодатчикам, сделали скрученную петельку и туда подпаяли батарейки. Возможно не самый лучший вариант, но зато самый удобный. Ну что ж, теперь готовим провода, и приступаем к сборке электрики нашего робота. Будем идти от положительного полюса батарейки к отрицательному контакту, по всей электрической схеме. Берём кусок витой пары, и начинаем идти – припаиваем положительный контакт обоих фотодатчиков к плюсу батареек, в то же место запаиваем эмиттеры транзисторов. Вторую ножку фотоэлемента припаиваем небольшим куском провода к базе транзистора. Оставшиеся, последние ножки транзюка припаиваем соответственно к двигателям. Второй контакт моторчиков можно через выключатель подпаять к батарейке.
Но как истинные джедаи, мы решили включать нашего робота подпаиванием и отпаиванием провода, так как выключателя подходящего размера в моих закромах не обнаружилось.
Отладка электрики
Всё, электрическую часть мы собрали, теперь приступим к тестированию схемы. Включаем нашу схему, и подносим её к зажженной настольной лампе. По очереди, поворачивая то одним, то другим фотоэлементом. И смотрим что происходит. Если у нас двигатели начинают по очереди вращаться с разной скоростью, в зависимости от освещения, то значит всё в порядке. Если нет, то ищи косяки в сборке. Электроника – наука о контактах, а это значит, что если что-то не работает, то где-то нет контакта. Важный момент: правый фотодатчик отвечает за левое колесо, и левый соответственно за правое. Теперь, прикидываем, в какую сторону вращается правый и левый двигатель. Они должны оба крутиться вперёд. Если этого не происходит, то надо поменять полярность включения двигателя, который крутиться не в ту сторону, просто перепаяв провода на клеммах моторчика наоборот. Оцениваем ещё раз расположение моторчиков на шасси и проверяем направление движения в сторону, где установлены наши датчики. Если всё в порядке, то поедем дальше. В любом случае, это можно исправить, даже после того, как всё собранно окончательно.
Сборка девайса
С муторной электрической частью мы разобрались, теперь приступим к механике. Колёсики мы будем изготавливать из крышек, от пластиковых бутылок. Для изготовления переднего колеса, возьмём две крышки, и склеим их между собой.

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

Сверление отверстий для оси
После того как мы просверлим крышки, вдеваем в отверстие предварительно разогнутую скрепку.

Скрепка, КЭП – основа переднего шасси
Изгибаем скрепку в форме буквы «П», где на верхней планке нашей буковки болтается колесо.

Изгибаем скрепку
Теперь закрепляем эту скрепку межу фотодатчиками, спереди нашей машины. Скрепка удобно тем, что можно легко подрегулировать высоту переднего колеса, и этой юстировкой мы займёмся позже.
Перейдём к движущим колёсам. Их тоже будем делать из крышек. Аналогично – просверливаем каждое колесо строго по центру. Лучше всего чтобы сверло было размером с ось моторчика, а идеально — на доли миллиметра меньше, чтобы ось туда вставлялась, но с трудом. Одеваем оба колеса на вал движков, и чтобы они не соскакивали, закрепляем их термоклеем.

Закрепляем ось термоклеем

Готовое колёсико
Это важно сделать не только для того, чтобы колёса не слетали при движении, и ещё и не проворачивались в месте крепежа.
Самая ответственная часть – крепёж электродвигателей. Мы их ставили в самом конце нашего шасси, с противоположной стороны монтажной платы, относительно всей остальной электроники. Надо помнить, что управляемый двигатель ставится с напротив своей управляющей фотосистемы. Это сделано для того, чтобы робот мог поворачивать на свет. Справа фотодатчик, слева двигатель и наоборот. Для начала мы их перехватим движки кусочками витой пары, продетыми сквозь отверстия в монтажке и скрученными сверху.

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

Закрепление колёс
Стареемся сделать так, чтобы их колёса находились на одной оси. Всё – закрепляем батарейки на верхней площадке шасси и переходим к настройке и играм с роботом.
Подводные камни и настройка
Первый подводный камень в нашей поделке был неожиданным. Когда мы собрали всю схему и техническую часть, все двигатели прекрасно реагировали на свет, и вроде всё шло отлично. Но когда мы поставили нашего робота на пол – он у нас не поехал. Оказалось, что мощности моторчиков попросту не хватает. Пришлось в срочном порядке раскурочивать детскую машинку, чтобы достать от туда движки помощнее. Кстати, если брать моторчики из игрушек – точно не прогадаешь с его мощностью, так как они рассчитаны на то, чтобы возить массу машинки с батарейками. Когда мы разобрались с двигателями, то перешли к настройке и приводу косметического вида. Для начала нужно собрать бороды проводов, которые у нас волочатся по полу, и укрепить их на шасси термоклеем.
Последние штрихи и юстировка
Если робот волочиться где-то пузом, то можно приподнять переднее шасси, изогнув крепящую проволку. Самое главное фотодатчики. Лучше всего их выгнуть смотрящими в сторону под тридцать градусов от основного курса. Тогда он будет улавливать источники света, и направляться к ним. Нужный угол изгиба придётся подобрать экспериментально. Всё, вооружаемся настольной лампой, кладём робота на пол, включаем и начинай проверять и радоваться тому, как твоё чадо чётко следует источнику света, и как он ловко его находит.
Усовершенствования
Нет предела совершенству и в нашего робота можно добавлять функций до бесконечности. Были мысли даже поставить контроллер, но тогда стоимость и сложность изготовления возросли бы в разы, а это не наш метод.
Первое усовершенствование – сделать робота, который бы ездил по заданной траектории. Здесь всё просто, берётся и на принтере печатается чёрная полоса, или аналогично рисуется чёрным перманентным маркером на листе ватмана. Главное, чтобы полоса была немного уже ширины запаянных фотодатчиков. Сами фотоэлементы мы опускаем вниз, чтобы они смотрели на пол. Рядом с каждым нашим глазиком устанавливаем сверхяркий светодиод последовательно с сопротивлением в 470 Ом. Сам светодиод с сопротивлением запаиваем напрямую к батарейке. Идея проста, от белого листа бумаги свет прекрасно отражается, попадает на наш датчик и робот едет прямо. Как только луч попадает на тёмную полосу, то на фотоэлемент почти не попадает света (чёрная бумага прекрасно поглощает свет), и следовательно один двигатель начинает вращаться медленнее. Другой моторчик резво поворачивает робота, выравнивая курс. В результате робот катается по чёрной полоске, словно по рельсам. Можно такую полосу начертить на белом полу и робота посылать на кухню за пивом от твоего компутера.
Вторая идея – это усложнить схему, добавив ещё два транзистора и два фотодатчика и сделать так, чтобы робот искал свет не только спереди, но и со всех сторон, и как только находил – устремлялся к нему. Всё только будет зависеть с какой стороны появится источник света: если спереди, то поедет вперёд, а коли сзади, то покатится назад. Можно даже в этом случае для упрощения сборки, использовать микросхему LM293D, однако она стоит порядка ста рублей. Но с помощью неё можно легко настроить дифференциальное включение направления вращения колёс или, проще говоря, направление движения робота: вперёд-назад.
Последнее, что можно сделать – вообще убрать постоянно садящиеся батарейки и поставить солнечную батарею, которую можно сейчас купить в магазине аксессуаров к мобильным телефонам (или на диалэкстриме). Чтобы исключить полной потери дееспособности робота в этом режиме, если он случайно заедет в тень, можно подключить параллельно солнечной батареи – электролитический конденсатор очень большой ёмкости (тысячи микрофарад). Поскольку напряжение у нас там не превышает пяти вольт, то конденсатор можно взять рассчитанным на 6,3 вольта. Такой ёмкости и такого напряжения он будет достаточно миниатюрен. Кондёры можно либо купить, или выкорчевать из старых блоков питания.
Остальные возможные вариации, мы думаем, можно придумаешь самому. Если будет что-то интересное – обязательно напишите.
Выводы
Вот мы и приобщились к величайшей науке, движителю прогресса – кибернетике. В семидесятые годы прошлого века было очень популярно конструировать подобных роботов. Надо отметить, что в нашем создании применяются зачатки аналоговой вычислительной техники, которая отмерла с появлением цифровых технологий. Но как я показал в этой статье – не всё потерянно. Надеюсь, мы не остановимся на конструировании такого простого робота, а будем придумывать новые и новые конструкции, и удивишь нас своими интересными поделками. Удачи в сборке!
Эта статья в немного другом варианте была опубликована в 109 номере Хакера и я много времени думал, постить или не постить её на Хабре. Но я таки решился, мне не нравится вёрстка в журнале, по сему я решил её опубликовать с другими фотографиями, немного другим текстом, переписанным и адаптированным для хабра.
С сожалением могу сказать, что видео работы робота нет, как и уже в живых самого робота. Так что довольствоваться приходиться только фотографиями.