Развлечения

Как собрать робота и не облажаться

Опубликовано 28 декабря 2014 в 09:23
0 0 0 0 0

Эта статья для тех, кто ничего не понимает в радиотехнике, электронике и программировании (для дизайнеров, менеджеров и прочих, кто составляет 99% населения), но очень хочет научиться делать крутые штуки, чтобы весь офис открыл от удивления рты, а какая-нибудь Света из бухгалтерии наконец-то дала пригласить себя на чай.

Теперь ты в матрице

Disney_Movie_Wall-E_61_wallpaper

В наше время почти во всех бытовых приборах и электронных устройствах сложнее чайника есть так называемый «контроллер» — хреновина, отдающая команды различным «органам» этого устройства, которые играют для нее роль своеобразной периферии, а также принимающая сигналы от них. Например, в вашем пульте от телека есть такой контроллер – он получает сигналы от кнопок и превращает их в специальные инфракрасные импульсы, передает их на ИК-излучатель (черная лампочка на пульте, которая никогда не светится… хотя нет, светится в ИК диапазоне, который даже можно увидеть через цифровую камеру мобильника), а излучатель отправляет их в сторону ИК-сенсора на телевизоре, там уже есть свой контроллер, а то и не один, принимающий сигнал с сенсора и реагирующий на него отдачей соответствующих команд телевизору… Наша задача разобраться, как это все работает и как мы, в силу своих возможностей, можем пользоваться этим.

Разберем этот пример подробнее. Вот мы открываем пиво, берм пульт в руки, нажимаем на кнопку, и эта волшебная электроннаяхреновина в пульте ДУ получает сигнал о том, что кнопка нажата. У кнопки вообще два состояния: нажата и отжата. Следовательно, наиболее логично использовать для нее цифровой ввод, т.е. канал связи, по которому передается сигнал только двух типов: 1 и 0 – «вкл» и «выкл». Получив «единицу» на входе, соответствующем определенной кнопке, контроллер должен отправить сигнал на свой вывод и направить его к ИК-диоду. Кнопок разных много, а излучатель один, следовательно, он должен выдавать не однобитный сигнал (единица и ноль), а их последовательность, передаваемую со скоростью достаточно высокой, чтобы не вызывать дискомфорта от задержки при переключении каналов — т.е. высокочастотный модулированный сигнал… Но мы не будем углубляться в эту тему, ибо она для нас совершенно непонятная и ненужная. В общем, сигнал идет и идет именно тот, который нужен. Но как из одного бита получается этот сигнал? А очень просто. Просто сам контроллер работает согласно записанной в него программе, которая «приказывает» при получении определенных сигналов на вводы выдавать определенные сигналы на выводы. Следовательно, изменив программу, заменив кнопки датчиками, а ИК-диод чем-либо другим, мы можем заставить контроллер работать иначе, выполнять другие функции.

Микроконтроллеры для домохозяек

8881806845319b1883db64872699271_640x422

Для более комфортной работы новичков с микроконтроллерами, существуют специальные аппаратные платформы, облегчающие процесс подключения периферии и перепрошивки устройства. Одной из самых популярных любительских платформ для конструирования простых систем автоматики являются платформы на базе контроллеров AtmelAVR, особенно те, что совместимы с Arduino и его клонами. По сути своей, это миниатюрные компьютеры, способные выполнять различные функции, в зависимости от конкретной модели и прямоты рук пользователя. Главное отличие от привычных глазу «комплюктеров» — полное отсутствие интуитивно понятных интерфейсов. Это настоящий хардкор для доморощенных техномагов 80 уровня. У этих устройств есть постоянная память для хранения загрузчика и прошивки (программы, залитой туда пользователем), буквально несколько десятков килобайт, несколько килобайт оперативной памяти для хранения переменных, и процессор с тактовой частотой несколько мегагерц, которых с лихвой хватает для целей наколеночного построения грозы всех котов и кошек – домашнего робота. Да, мои продвинутые пользователи ПК, именно робота требует душа молодого некроэлектронщика-самоучки.

Порты ввода и вывода на этих устройствах представлены удобными рядами штырей, либо «мам» для них, что позволяет быстро и просто подключать приборы безо всякой пайки. Это помогает сократить время на монтаж экспериментальных схем и их последующую разборку. Есть масса хитрых штуковин – макетные платы, провода с различными разъемами, джамперы и т.п. – все это существенно облегчает работу и освобождает массу времени для плодотворного раскидывания мозгами.

Программы для них шьют посредством программной оболочки (IDE), в которой можно очень быстро и просто сверстать простейшие вещи, пользуясь элементарными знаниями английского языка, головой и пособием по C++ для чайников. Кроме того, в интернете полно примеров программ, помогающих заставить ваш контроллер взаимодействовать буквально с любым устройством.

Домашний робот – любимец семьи или враг кота

Итак, у робота должны быть, в первую очередь, органы движения. В моем случае, я выбрал готовую платформу 2WD с двумя простыми электродвигателями. На ней можно расположить и сам контроллер, и источники питания, и вообще все, на что хватит грузоподъемности. Если включить один из двигателей на короткий промежуток времени, платформа сделает поворот, если на более долгий промежуток – разворот, если оба двигателя запущены – движение по прямой. Соответственно, пишем для каждого из этих действий свою функцию, чтобы облегчить написание и выполнения основного алгоритма в теле программы. Поскольку на выводах контроллера напряжение не превышает 5 вольт, а сила тока – 40 миллиампер, приходим к выводу, что их можно использовать только в качестве источников управляющих сигналов, отпирающих полупроводниковые ключи, либо релюшки (ну это уже для совсем безумных затей с опасными мощностями). Вместо того, чтобы городить огороды из транзисторов, я приспособил готовое решение – микросхему от драйвера шагового двигателя (когда-то прикупил несколько таких движков, но так ни одного из них и не употребил в дело). По сути, эта микросхема заменяет собой несколько транзисторных ключей. Далее, нужно определиться с самым главным – по какому принципу программа будет вызывать функции, соответствующие движению вперед, влево, вправо и т.п. Ведь если устройство автономное, т.е. «робот», то оно должно само определять, что ему делать, в зависимости от внешних факторов. Значит, у него должны быть органы восприятия, т.е. сенсоры, подключенные на вводы контроллера. Здесь я тоже долго не думал: в интернете есть масса примеров, как подобные творения движутся, ведомые ультразвуковыми измерителями расстояния. Естественно, такой у меня был, и не один. Если расположить такие датчики по кругу платформы, чтобы робот знал, сколько у него свободного пространства с каждой из сторон, то он может непрерывно кататься по дому, не натыкаясь ни на какие препятствия. Но это было бы слишком скучно и просто. Кому нужен безумный ездильщик по комнатам, если в нем нет ни капли души? Поэтому, решено было задействовать только один такой датчик. Для проведения замеров расстояния спереди, слева и справа, нужно повернуть датчик в соответствующее положение. Этим мы поручим заняться сервоприводу – двигателю с аналоговым вводом\выводом, который будет поворачиваться на тот угол, который нам нужен – 0 градусов, 90 и 180. Теперь, для того, чтобы «посмотреть», что творится вокруг, роботу приходится крутить «головой» с забавным визгом редуктора и резкими паузами, для наиболее точного замера расстояния сенсором и отбора усредненных значений. Ну и, в качестве последнего штриха к работе – голос. О да, эту штуку можно заставить говорить. Голосовым модулем стал мп3 модуль, купленный за 3 доллара в позапрошлом году на одном известном китайском интернет-сайте, а для того, чтобы заполучить хороший громкий динамик, я зверски искромсал старую «мотороллу». У модуля есть разъем под sd-карту, правда только 2-гиговую и форматированную под определенную файловую систему, точно не помню какую. Пострадавши над даташитами этого волшебного устройства из страны дошираков, я таки заставил его воспроизводить хитровымученно перекодированные аудиофайлы. Глядеть на кучу железок и проводов, теряясь в догадках,почему же оно не работает, то еще удовольствие. Поначалу были идеи заставить робота комментировать каждое свое действие голосом, звучавшимиз интеркома в первой части Half-life, но, решив облегчить творческие муки себе и доставить удовольствие зрителям, скачал пак нарезанных крылатых фраз из известных отечественных кинофильмов и скормил их своему электронному другу. Пришлось попотеть над созданием генератора случайных чисел для того, чтобы фразы каждый раз воспроизводились в действительно случайном порядке… но все удалось, и весьма удачно для первого раза.

Терминатор своими руками

В перспективе вполне возможно понавешать на свободные выводы контроллера различные датчики: температуры, давления, влажности, угарного газа, задымления, алкоголя в выдыхаемом воздухе… И запрограммировать на определенные действия в зависимости от показаний этих датчиков. Таким образом, при помощи относительно несложных манипуляций, любой желающий может создавать автоматические устройства, облегчающие повседневную жизнь, либо привносящие в нее радость в стиле hi-tech.

0 0 0 0 0