Читаешь о роботах и программировании и думаешь: «Было бы круто сделать что-то подобное самому!» Те, кто немного больше одержим этой идеей, просто задумываются о том, кто и как сделал их робота.
Читайте статьи, смотрите видео.
На картинках все понятно.
Видео также обычно показывают уже готовую продукцию, а также кратко показывают технологии ее производства.
И вроде бы все понятно: отпилил, прикрутил, припаял, подключил, запрограммировал в той программе этим кодом.
Те, кто загорелся еще большим энтузиазмом, выбрав интересный и, на первый взгляд, простой вариант, переходят к действию и, часто копируя, делают своего первого робота.
Это волевое и очень значимое решение – главное начать хоть что-то делать самому! В процессе изготовления возникает масса технологических тонкостей, вплоть до того, что чтобы заказать/купить какую-то штуковину, нужно точно узнать, как она называется.
А еще - разъемы не припаяны должным образом - и как на видео все получается в одно касание? Процесс создания зачастую затягивается, но настойчивый начинающий робототехник каким-то образом добивается результата к какому-то осмысленному первому запуску, хотя бы «по прямой».
Потом, когда робот готов, приходит понимание, почему все делается именно так и именно в такой последовательности.
Процесс создания уже можно как-то реализовать, формализовать и описать.
Вот где это начинается разработка модели следующего, второго поколения.
Да, я тоже раньше с интересом читал статьи.
И теперь я читаю! Особенно мне нравятся статьи про коптеры: с земли в небо! Однако, если честно, они у меня только мысли вызвали.
Тем более, что нужно было разбираться в программировании, а когда я в последний раз работал с Си в институте, все напрочь забылось.
Я знаю, что такое Arduino, но никогда не видел его вживую.
И так далее.
Имею техническое образование, занимаюсь вопросами ЦОС на ПЛИС.
Технически для меня нет никаких препятствий взять и разобраться, но.
по факту я все это делаю на работе и у меня там, что называется, "выше крыши" со всем этим барахлом.
В результате нам нужен был какой-то хороший стимул, чтобы как-то начать это делать.
Стимул появился, когда это понадобилось кому-то другому: правда, говорят, настоящее творчество приходит тогда, когда отдаешь другим.
Мой хороший друг, один из основателей молодой (можно сказать, недавно созданной) компании.
Выносливость , зная специфику моей работы, связался со мной по ряду технических вопросов.
Оказалось, что у ребят есть разработчики в США и они уже представили свой прототип супердешевого (телефон + пластиковая платформа с колесиками на Arduino — дешевле, кажется, быть не может) робота телеприсутствия.
Но они хотели не просто заниматься маркетингом и бизнесом в стиле «купил там — продал здесь», а захотели более подробно погрузиться в техническую тему и даже запланировали разработку собственной модели (пусть даже эквивалентной по принципу и функционалу).
), но уже здесь, у нас в России, чтобы получить не только готовый результат, но и понятную для себя технологию его производства.
Это обязательное условие участия вашего покорного слуги в этом деле (на себя намекаю).
Я тоже поначалу читал статьи, смотрел, где и что покупают и как делают. Но единой картинки не было.
Вроде бы, в общем-то, все понятно, но в то же время не все ясно.
Непонятно, как управлять с компьютера, как доставить видео на компьютер.
Более того, я не разработчик программного обеспечения и мне не хотелось бы «раскапывать» эту тему программного обеспечения с нуля, хотя это было бы, конечно, интересно; Вот так я как-то успешно удовлетворил все свои потребности с помощью скриптового языка AutoIt. В результате поиска я нашел два ключевых ресурса, которые стали для меня ключевыми: интернет-магазин Кардуино и форум кибер-место .
В магазине можно было купить все необходимые комплектующие – все в одном месте.
Цены, по сравнению с ебей или али, конечно дикие, но это было не главное - можно было купить платформу и необходимый к ней обвес, а также всю мелочевку.
И было удобно забирать/заказывать.
На форуме в разделах «Сделай сам»\«Робототехника» и «Сделай сам»\»CyberWrt» можно получить общую информацию, а также как детально организовать соединение компьютера и робота через Wi-Fi. Фи.
Десятилетний опыт работы по специальности дал о себе знать, и вместо того, чтобы сразу начать что-то копировать, выкручивать или программировать, я взял в руки карандаш и бумагу.
Что значит «развивать»? Понятно, что значит «сделать робота» — берешь и… делаешь! Как это «развить»? Ниже я постарался описать процесс, а именно разработки, а не создания робота.
Создание робота, как и проектирование, изначально интуитивно понятно и вообразимо.
По мере творения прикручиваются и то, и то.
Прикрутил так - и вдруг оказалось, что ту вторую часть нужно прикрутить по-другому, тогда восьмая часть встанет как влитая, нужно просто сдвинуть провода аккумулятора влево ближе к пятой части, и так чтобы не болтались, лучше прикрепить к четвёртым, немного их подогнув, так как рядом будет десятая часть.
Сплошное творчество.
Давайте попробуем по-взрослому: сначала подумаем, что будем делать, а потом сделаем :) Итак, о чем мы поговорим в этой статье? Я решил не писать о том, как я сделал робота; Таких статей очень много и смысла в появлении еще одной скорее всего нет. Я конечно не первый и даже не десятый, кто, установив датчики на покупную площадку, сделал игрушку на радость себе и окружающим.
Я решил попробовать, так сказать, изложить свою технологию мышления.
Я постарался донести до читателей не просто тот факт, что сделать робота не так уж и сложно, а обрисовать метод, с помощью которого можно взять и попробовать сделать своего робота с нуля, а для начинающего робототехника этапы создания будут ясный и понятный с самого начала и не открывающийся по мере продвижения в неизвестное.
Представим себе человека, который никогда не занимался робототехникой.
У него есть друг-паяльник, мультиметр и всякие ручные инструменты типа кусачек, отверток и прочего.
Вы представились? Большой! Идти…
Первый этап – понимание Что мы хотим сделать? И почему это необходимо? Для меня изначально этот вопрос был решен - мне нужно сделать станок с видеокамерой, которая могла бы подключаться по Wi-Fi или интернету к компьютеру, на компьютере я бы видел картинку со станка и управлял ею, заставляя его двигаться.
Вроде понятно, но как-то скучно и чего-то не хватает. Пульт дистанционного управления – какой-то робот? Робот? Что такое робот? Робот — это своего рода автономная вещь, которая работает сама по себе.
Как это можно применить к данной задаче? Пусть машина едет сама! Постановки задачи как таковой нет - ну пусть ездит как хочет. Однако, если она будет водить машину так, как ей заблагорассудится, она будет сталкиваться с предметами.
Это как-то нехорошо, это неправильно.
Это означает, что автомобиль должен уметь видеть впереди себя и избегать препятствий, предотвращая столкновение.
Как мне это сделать? Вы можете обрабатывать данные с видеокамеры.
?-э-э.
как-то непонятно, как вообще к этому подойти.
Наверное, это непросто.
Что еще у нас есть? В продаже всевозможные инфракрасные и лазерные дальномеры! Вы можете купить один и каким-то образом дистанцироваться от него.
Вроде бред, но что-то в этом есть.
В результате размышлений рождается идея, концепция устройства.
Результат размышлений следует излагать в общих чертах, абстрактно и кратко, концентрируя суть.
Вам необходимо приобрести устройство, которое: — умеет передвигаться по поверхности по командам оператора, транслируя ему видео перед собой; - имеет автономный режим «существования»: может самостоятельно двигаться в любом направлении; - контролирует ситуацию впереди себя; — если впереди обнаружен объект, он предотвращает столкновение с ним, игнорируя команды оператора или меняет направление движения в автономном режиме.
Кажется, мы определились с целью.
Берем паяльник и ставим его на стол.
Можно завернуть его в ткань – ему будет мягче и комфортнее.
Пусть он пока привыкнет к ситуации.
Второй этап – изучение реальности После того, как мы определились с основным функционалом и стало понятно, что нужно сделать, возникает вопрос: как это сделать, как это будет выглядеть? Можно взять в руки молоток и, оглядывая свое жилище строгим взглядом, категоричным тоном рассказывать окружающим: столешница, колесики от стульев, резинка от трусов, пара китайских палочек для еды, 20 сантиметров ткани.
из шторки, защелки из босоножек, разбираем ноутбук на запчасти - все сдается мне во имя прогресса! Чтобы избежать лишних вопросов, голосу можно придать оттенки угрозы и одухотворенности одновременно.
Однако я предлагаю более эффективный метод: для этой цели идеально подходит созданный людьми инструмент под названием «Интернет».
Набираем в поисковике слово «Робот своими руками», которое позволяет использовать ваша религия, и начинаем читать, смотреть, слушать и вникать.
Этот этап может длиться гораздо дольше предыдущего, поскольку придумать что-то гораздо проще, чем придумать, как это сделать.
Тем более, что попутно можно узнать столько всего интересного! Итак, результатом этого этапа должен стать более подробный список тезисов, который определит тип того, что мы придумали на предыдущем этапе.
Наше устройство будет выглядеть так: - трехколесная платформа с двумя двигателями: два ведущих колеса, третий в качестве опорного; - питание от батареек типа АА (1,2-1,3В х 4 = примерно 5 вольт - в самый раз для двигателей); — устройство будет управляться микроконтроллером Arduino Nano (управление двигателем осуществляется через драйвер двигателя, микроконтроллер может питаться от 5В); — дальность определим с помощью ультразвукового датчика (питание 5В); — перепрошитый роутер (питание 5В) будет работать как точка доступа, подключившись к которой можно подключиться к веб-серверу и подавать команды микроконтроллеру, при этом мы будем иметь доступ к изображению с веб-камеры, подключенной к роутеру; — на устройстве установлены два переключателя: ВКЛ/ВЫКЛ питания и ВКЛ/ВЫКЛ автономный режим — теперь никаких устройств, так как он может работать автономно, значит это робот; — робот оснащен светодиодом, который загорается при обнаружении препятствия; - спереди у робота будет два ярких белых светодиода - фары - почему бы и нет: когда темно, роботу не страшно, а при ярком свете всегда как-то веселее, тут главное не оглядываться лишний раз - это значит, что видеокамера будет направлена только вперед; — у робота будет установлена веб-камера, которая будет подключена к роутеру.
Представленный нами облик основан на идеях, которые мы получили при изучении рынка комплектующих для роботов.
Подробного изображения робота до винтика нет — только общие характеристики, однако они позволяют представить, что получится в результате.
В общем приходим к выводу, что все можно купить в магазине carduino, а также организовать связь с роботом с помощью роутера и настроить его примерно так, как указано на форуме кибер-плейса.
Мы еще не разбирались в тонкостях подключения отдельных компонентов и не понимали, как программировать роутер.
Но мы поняли, что отдельные компоненты могут быть связаны друг с другом (электрически и информационно), а также определились, как минимум, со структурой и внешним видом.
Компоненты робота Платформа с колесами, двигателями и креплениями:
Плата электроники:
Микроконтроллер Carduino Nano v.7:
Ультразвуковой датчик HC-SR04:
Драйвер для управления двигателем:
Роутер TP-Link MR3020:
Хаб (компактный и миниатюрный хаб неизвестной модели):
Веб-камера (Logitech C270):
Паяльник лежит на столе и с интересом смотрит на картинки выше.
Интерес понятен - ему всё паять! Третий этап – творчество: общее развитие.
Столько времени потрачено, а результата пока не видно! Результат находится только у нас в голове в виде образов и мыслей.
Может быть, стоит как-то материализовать эти мысли? Уже примерно понятно, как будет выглядеть внешний вид робота.
Также определен набор компонентов.
Как оно будет подключаться? Как все это будет связываться между собой? Робот (это не лампочка) щелкнул выключателем, и он загорелся.
Потом я щелкнул выключателем, электричество включилось – и что дальше? И здесь, дорогие читатели, разработка начинает разветвляться на три составляющие: проектную, электрическую и программную.
Полной разработки дизайна как таковой у нас не будет, так как мы используем все готовое.
Все предвидимые работы по проектированию будут заключаться в удачной склейке отдельных коробок на двусторонний скотч и вкручивании болтов в специально отведенные места.
Справедливости ради, конечно, должен быть сборочный чертеж имеющихся компонентов.
Но если бы у нас не было платформы или основания, то нам пришлось бы прикинуть размеры всех установленных компонентов, рассчитать размеры и понять, какого размера сделать базовую плату и как к ней будут крепиться другие компоненты робота, и так далее.
Но у нас все просто, роль сборочного чертежа играют картинки конечного вида робота, поэтому в данной статье это направление развития вообще не рассматривается.
Посидев и порисовав, можно прийти к следующему функциональному виду робота:
Заранее прошу прощения за качество фотографий.
Фоток у меня получилось много, но раздувать трафик под катом не хотелось, поэтому пришёл к некоему компромиссу между качеством и объёмом, а значит, весит мало, но читабельно и понятно.
Что мы видим на картинке? Наш робот будет состоять из двух независимых частей: блока связи и блока управления.
Блок связи связывается с внешним оператором, принимает от него команды и выдает их на блок управления.
Блок управления, получая команды, выполняет их.
То есть мы разделили управление на два уровня – низкоуровневый (управление платформой, взаимодействие с датчиками) и высокий уровень (взаимодействие с оператором и командное управление низкоуровневой частью).
Задача управления была разделена на две части, которые можно решать отдельно: сначала разобраться с движущейся платформой в виде микроконтроллера Arduino, затем со связью в виде перенастраиваемого роутера.
Блок связи.
1) Леткротехника.
Тут в целом вроде все понятно: камера обеспечивает видео и звук и подключается через хаб к роутеру.
Ардуино также подключается к нему через хаб.
В том, чтобы воткнуть кабель в USB-разъем, смысла мало, вероятность сделать это неправильно или наоборот довольно мала.
Правда, кому-то и этой вероятности достаточно, но это не про нас!!! Смотрим куда вставляем, если не подходит, просто нажимаем посильнее - должно подойти, это же USB! 2) Программирование.
Никакого развития здесь нет, так как используются готовые прошивки для роутера и готовые модули для робота.
Протокол взаимодействия с блоком управления для нас уже определен – осталось только разобраться и с ним.
Как именно его прошить и что именно там настроить, разберемся позже.
Блок управления.
1) электротехника.
Вроде бы тоже все ясно.
У нас есть материнская плата, на которой все распаяно.
Вам просто нужно разобраться, куда подключаются датчики к Ардуино и при этом нигде не делать лишней работы, путая землю с питанием.
С точки зрения подключения особых проблем вроде бы нет. Правда, сразу не разберешься, где на плате что подключено, но посмотрев работы мастеров , а еще, найдя картинку ниже, все становится на свои места.
Как это и что развелось - разберемся позже, тем более правило файла никто это не отменял: если что, улучшим!
2) Программирование.
Но вот в чем проблема.
Как и что там надо делать.
А вот и команда.
Что делать? Снова возьмите карандаш и бумагу и нарисуйте.
В результате можно получить следующую функциональную схему программы (только для платформ):
В результате получились правильные квадраты.
Но сейчас это чисто программные модули.
Своего рода материализация чего-то, что нельзя пощупать или потрогать, но оно есть, поскольку робот движется исходя из логики этого уровня абстракции.
Команда должна быть принята интерфейсным модулем.
Именно он должен признать, что поступающие данные имеют смысл, что это не помеха и не неверная команда.
При идентификации команды модуль должен сообщить модулю управления, какая команда к нам пришла.
По команде модуль управления должен будет выполнить некоторые действия – начать движение, остановиться, «посмотреть», нет ли впереди препятствия, включить или выключить фары и т. д. При нажатии кнопки автономного режима модуль управления должен будет определить, есть ли впереди препятствие и двигаться вперед, подав соответствующую команду моторному модулю, а также предпринять некоторые действия в случае наличия препятствия.
Функции непосредственного управления конечными устройствами частично делегируются другим модулям в зависимости от уровня сложности.
Модуль управления, чтобы дать команду моторному модулю двигаться вперед, должен знать, возможно ли движение вперед. Скорее всего, просто так данные с ультразвукового датчика не получишь – да и зачем нам это делать? Мы умеем только командовать - для работы с датчиком есть гидроакустический модуль! Вот и просим у него отчет об оперативной обстановке перед роботом – можно ли идти вперед? Паяльник радостно и незаметно вылез из-под тряпки, с интересом глядя на розетку: интересно, сколько там вольт - 110 или 220? Четвертый этап – творчество: детальная проработка Что и как делать понятно.
Понятно почему.
Понятно, как именно это должно и будет выглядеть функционально.
Пора! Пришло время начать что-то делать! Мы столько прочитали, просмотрели, оценили, обдумали, придумали, отвергли, расписали.
Эх.
вот паяльник лежит недалеко.
Он смотрит на нас.
Он в недоумении - казалось бы, просто взять и припаять, зачем вообще заниматься всей этой фигней? Вздыхаем и накрываем паяльник бумажкой: спи пока, родной, еще не все готово.
Мало понять, как все будет выглядеть функционально, нужно понять, как все будет выглядеть конструктивно.
Вам необходимо как можно более подробно изложить свое понимание.
Блок связи.
Практически все было прояснено на последнем этапе.
Все чисто.
На форуме кибер-площадки мы познакомимся с Эта тема и понять, как перепрошить роутер TP-Link MR3020 и настроить его.
Скачайте прошивку для роутера.
Создаем файлы с описанием, куда какой IP вводить, что и куда нажимать.
Проблема только в том, что непонятно, какие команды будут отправляться микроконтроллеру.
Посидев на форуме, почитав и поговорив, все становится понятно (огромное спасибо всем, кто мне ответил и пытался помочь).
Также записываем все команды в текстовый файл и отмечаем, какая команда за что отвечает. Оказалось, что все просто — при нажатии кнопки, например «вперед», передается определенная строка ASCII-кода, а при отпускании кнопки выдается другая команда — «стоп» (какие байты передаются).
нижеприведенный).
Блок управления.
На предыдущих этапах мы определили, что именно будет подключено к блоку управления.
Сердцем блока управления является Arduino nano. Что это? За что отвечают эти лампочки и эти разъемы? К каким контактам подключены ножки сонара? И вообще: как связаться с сонаром? Начинаем упорно изучать информацию по компонентам.
К счастью, вам не нужно идти в библиотеку, если у вас есть Интернет. Составляем для себя технические описания используемых компонентов.
Вы можете прочитать на русскоязычных ресурсах, какая плата работает и как она работает, и сделать заметки.
Чтобы понять, как подключаться и как работать с конечными устройствами, они создают свои «даташиты», в которых все предельно лаконично, ясно и понятно.
Возможно, будет достаточно просто изучить англоязычный даташит от производителя, но иногда бывает, что китайский язык или сам даташит довольно объёмны (около 200 страниц), поэтому имеет смысл сделать свои краткие заметки.
Создадим для себя справку по микроконтроллеру: Кардуино Нано v.7
Затем разбираемся, как подключаются и управляются периферийные устройства.
Водитель двигателя: Драйвер двигателя на базе микросхемы L9110S.
И ультразвуковой датчик: Сонар HC-SR04
После всего этого понимания рисуется структурная схема подключения программных модулей, отражающая взаимодействие с ними и содержащая информацию о том, что и куда подключено (к каким ножкам микроконтроллера):
Рисование этой диаграммы требует хороших умственных усилий — ведь она, по сути, задает рамки, на которых потом будет размещаться код. Здесь необходимо сделать ремарку.
Дело в том, что я занимаюсь разработкой на ПЛИС, поэтому изначально структуру я рисовал так, как делал бы для ПЛИС.
Нужно понимать, что для СИ-подобного программирования количество сигналов в схеме вообще избыточно.
Но зато мы получаем определённую платформенную независимость — можно попробовать всё реализовать на ПЛИС, тем более что есть Доступные Варианты .
Давайте прочитаем эту схему слева направо.
Интерфейсный модуль будет получать данные через UART. Если данные представляют собой команду, то он выдает управляющий байт CTRL под стробом импульса SCTRL в модуль управления.
Модуль управления, получив строб, понимает, что пришла какая-то команда, считывает вход CTRL и выполняет команду.
Допустим, поступила команда «вперед».
Импульсный сигнал Get_Dist выводится, и данные о диапазоне ожидаются на входе Dist. В принципе, нам не запрещено постоянно выдавать импульсы Get_Dist; в этом случае мы можем просто удалить значение диапазона из входного порта Dist в нужный нам момент. Предположим, с дальностью все в порядке – до препятствия еще далеко, можно ехать с ветерком.
На модуль управления двигателем через шину режима отправляется сигнал, указывающий, что необходимо двигаться вперед с заданной скоростью.
При измерении дальности и при движении на соответствующие светодиоды также выводится высокий уровень (логическая единица) для индикации работы и понимания того, что происходит с системой (это будет полезно при отладке).
Есть модульная схема! Моя голова в порядке! Понятно, как и что.
Теперь нам осталось только описать — что должен делать каждый модуль и при каких условиях.
Интерфейсный модуль:
Модуль контроля:
Модуль диапазона:
Модуль управления двигателем:
Хвостик с вилкой паяльника выпал из-под края листа и из-за угла стола.
Лист немного съехал вниз и открылась его морда.
Паяльник смотрит с выражением, не требующим даже жеста «покрутки пальцем у виска»: «ТК пишет про себя — что за ересь.
Мне «повезло» с хозяином, однако» — грустно подумал он, незаметно покачивая вилкой на столе.
Пятый этап – создание Разработка практически завершена.
Все моменты полностью понятны.
Остается только сотворить чудо – из этой кучи запчастей и небольшой стопки листов бумаги с картинками, табличками, схемами и схемами собрать то, ради чего все затевалось.
Хватаем грустный паяльник и включаем его в розетку.
Он начинает нагреваться и шипеть от удовольствия в те моменты, когда мы чистим жало губкой.
Флюс и припой дружно танцуют на столе.
Солнце заглядывает в окошко, освещая место точечной пайки SMD резистора на плате.
Жизнь хороша, когда ты не торопишься паять!
Самый веселый и зрелищный этап развития, который никого не оставит равнодушным.
Здесь, прямо на наших глазах, происходит нечто интересное, очевидное для всех.
Этот этап контрастирует со всеми предыдущими, так как рисовать какие-то картинки со знаками наблюдателю не только неинтересно, но и искренне непонятно, как из этого что-то может получиться.
А тут. так здорово, когда твой первый робот проходит свой первый сантиметр по столу и почтительно останавливается от края ровно в 20 сантиметрах только потому, что ты заблокировал край стола ладонью.
Оно оказалось умным существом – оно понимает, что так дальше нельзя!
На этом этапе собираем всю механическую конструкцию, припаиваем провода и программируем микроконтроллер.
Давайте проверим, что произошло.
Мы не понимаем.
Мы думаем.
Корректируем ТЗ, так как на деле получается, пожалуй, совсем не так, как написано и представлено! Вернемся еще раз к сборке.
Мы тестируем.
Мы не понимаем.
Давайте не унывать.
Тыкаем мультиметром и заменяем севшие батарейки.
Мы радуемся.
Теги: #Производство и разработка электроники #Сделай сам или Сделай сам #Электроника для начинающих #программирование #роботы #Разработка робототехники #Робототехника #электроника #разработка электроники #сделай сам #arduino #робототехника своими руками
-
Забфикс 3.4 Выпущен
19 Oct, 24 -
Френдфид На Пути К Монетизации
19 Oct, 24 -
Небольшой Странный Баг В Браузере Iron
19 Oct, 24