Пользователь
0,0
рейтинг
18 марта 2012 в 14:59

КартонБот v1.0 — утилизируем картон с пользой для мозга из песочницы

Количество попыток собрать робота у меня – не счесть. Но, то материалов не хватало, то навыков их обработки, то каких-то узлов, то знаний, как все эти штуки связать вместе. Если знакома такая ситуация – я постараюсь рассказать свой опыт сборки робота из подручных материалов и каких-то узлов купленных на eBay.
image
Робот обошелся мне в 35$ и два дня отпуска, но восторг, испытанный от его первых движений, стоил намного больше. Если заинтересованы – прошу под кат (много картинок).

Список покупок


  1. Картон – основной материал нашего робота. Я думаю, у многих дома валяются коробки из-под техники – нам они и понадобятся
  2. Arduino — будет мозгом нашего робота. У меня под рукой оказался только китайский клон Arduino Uno. Цена с доставкой около 20$.

    image
  3. Ультразвуковой дальномер HC-SR04. Цена колеблется в районе 4$.
    image
  4. Три микро сервопривода (маркируются «9g», если кто-то будет искать). Цена около 3,5$ за штуку.
    image
  5. (опционально) Макетная плата под пайку и паяльные принадлежности. Без этого пункта вполне можно обойтись, соединив все просто проводами, но, чтобы все было хоть с намеком на надежность, придется попаять.
    image
  6. Скотч, клей, ножницы, нож для бумаги, простой карандаш, линейка.

Собственно, когда все вышеописанное будет у вас в зоне досягаемости – можно приступать к сборке.

Сделаем роботу туловище


Для начала, сделаем из картона заготовку коробки без крышки. Главное, чтобы в основание коробки помещалась Arduino. Мое основание было с запасом где-то по 5мм с каждой стороны – это допуски для маневра, если он понадобится.
Чтобы упростить себе жизнь и заставить картон сгибаться по ровным линиям следует сделать надрезы в местах будущих перегибов. Главное не отрезать кусок. Хотя, даже если это произойдет, не надо особенно волноваться, скотч нас спасет.
Необходимо определиться, где будет тыльная сторона нашего робота, и прорезать с этой стороны отверстия под порты Arduino – один для питания, второй для USB. Чтобы не проколоться, я бы советовал, сделать отметки карандашом приложив саму плату. Все отверстия следует делать чуть меньше реальных размеров – в ходе монтажа картон еще подогнётся немного и это позволит плотно закрепить деталь.
Помимо этого делаем отверстия под сервоприводы рук и обеспечиваем себе доступ к кнопке reset Arduino.
Склеивать заготовку не стоит – сложно будет что-то в нее установить потом. Это лучше оставить напоследок.
image
Теперь задача еще проще — сделать крышку. Главное здесь — подгадать размеры. Крышка будет немого больше основания, из-за добавившейся ширины стенок. В крышке делаем отверстие под сервопривод, смещенное к переднему краю. Также делаем небольшое отверстие ближе к тыльной части крышки — пригодится для прокладки проводов (на фото сделано только отверстие под сервопривод). Для придания прочности я обклеил углы крышки бумажным скотчем.
image
Рекомендация: все отверстия под сервоприводы лучше укрепить. Сделать это можно подклеив с внутренней стороны коробки дополнительную вставку из картона с прорезью под сервопривод. Таких вставки будет всего три, сделать их очень просто, но это придаст конструкции дополнительную прочность и позволит нам, закрепить сервопривод на винтики, не пробив картон насквозь.

Руки


Руки будут у нас просто прямоугольными коробочками. Подготовим и надрежем картон.
image
Склеим его в нужную нам форму.
image
Для крепления руки к сервоприводу одну из качелек (идут в комплекте) утопим в картонном прямоугольнике, предварительно вырезав ножом в нем форму это качельки.
image
Я просто заклеил эту конструкцию бумажным скотчем. Держится хлипко, но со своей задачей справляется. Руки сами не отваливаются.
image
Повторяем все шаги по сборке руки еще раз и приклеиваем наше крепление к самим рукам. Я еще добавил пальцы — это придает роботу какой-то шарм.
image

Голова всему голова


Голова будет просто коробкой с отверстиями под ультразвуковой сенсор. Набив руку на прошлых элементах, собирается легко и просто. Главное не заклеить заднюю стенку (напротив прорезей под сенсор) — она должна открываться свободно. Прорезь сверху для язычка, который будет эту самую стенку удерживать.
image
Вид головы с другого ракурса.
image
Помимо этого в задней стенке необходимо проделать отверстие, такое же мы делали в крышке основания. Через это отверстие мы пропустим провода от датчика. Еще к верху задней крышки надо приклеить полоску картона – она будет служить своеобразным замком для нее.
После этого – устанавливаем сам сенсор с подкрепленными к нему проводками. У меня для этого используется цветной шлейф. Голова начинает приобретать законченный вид.
image
Снова взгляд с другой стороны.
image
Для крепления головы к сервоприводу делаем точно то же самое, что мы сделали для рук — вырезаем под качельку углубление в другом куске картона (по размеру чуть меньше, чем площадь основания) и заклеиваем там качельку скотчем. Получившийся элемент клеим к нашей голове снизу.
Фотографию я сделать забыл, но, надеюсь, понятно, что надо делать. Закрываем голову на приклеенный раньше язычок, просунув его через прорезь в верхней части коробки.
image

Собираем все вместе


В крышку нашего основания устанавливаем сервопривод и прикручиваем его двумя винтиками, идущими с ним в комплекте.
image
Чтобы робот мог смотреть вперед и ворочать головой – перед установкой головы лучше найти середину между двумя крайними положениями сервопривода. Сделать это можно любой оставшейся качелькой. Ось сервопривода следует установить в среднее положение. Устанавливаем на получившееся основание голову.
image
Для подогрева собственного любопытства можно установить крышку с головой на основание. После этого нужно будет все же ее снять, но интерес есть интерес.
image
В основании склеим переднюю стенку с боковыми. Теперь вставляем сервоприводы в стенки нашего основания так, чтобы ось была смещена ближе к центру коробки.
image
Если взглянуть с задней стороны нашего робота, то картина будет приблизительно следующая. Кстати, тут отлично видны вставки из картона под сервоприводы, о которых я говорил ранее.
image
Чтобы посмотреть, как это все смотрится вместе, а заодно оценить будущий фронт работ наденем крышку, прикрепим руки и посмотрим на робота еще раз с обеих сторон.
image
Знакомое фото? Да, собственно с него я начал пост. И да, действительно на нем робот еще не готов, но теперь уже понятно как это будет выглядеть. Вид с другой стороны.
image

Глава о мозгах или подготавливаем и вставляем контроллер.


Понятное дело, что чтобы все это заработало – надо все это как-то соединить с Arduino. Так как у меня нет Sensor Shield, пришлось выкручиваться подручными средствами. Так родилась следующая схема.
image
Если очень грубо, то можно назвать это неким извращенным Arduino Shield – так как она вставляется прямо в контроллер. Но как-то у меня язык не поворачивается называть это shield, пусть будет просто схема.
Основная идея – сделать удобным подключение сервоприводов и датчика, запитав их от выхода +5V нашей Arduino. Это позволит роботу работать даже от USB порта нашего компьютера. С обратной стороны выглядит это еще хуже.
image
Устанавливаем на контроллер.
image
Как можно заметить, порты с 8-го по 13-й остались доступны, так что можно их использовать в будущем. Я бы конечно сделал расширение под все порты, но из-за нестандартного шага между двумя колодками Arduino сделать это на макетной плате не представляется возможным.
Монтаж практически подходит к концу. Остается подключить наши сервоприводы и датчик к плате.
image
Хотя это не имеет особенной важности и вы можете подключить по другому, но лично у меня получились следующие соотвествия портов и модулей:
  • 2 – сервопривод правой руки;
  • 3 – сервопривод левой руки;
  • 4 – сервопривод головы;
  • 6 – echo датчика расстояния, 7 – trig его же.

Запихиваем Arduino со всеми проводами в коробку нашего основания и заклеиваем заднюю крышку этой самой коробки. После того, как клей подсохнет — пододвигаем Arduino так, чтобы порты попали в проделанные для них дырки.
Остается только радоваться — сборка полностью завершена.
image

image

Программная часть


Для проверки работоспособности всех механизмов напишем роботу прошивку.
#include <Servo.h> 
#include <Ultrasonic.h>

#define RIGHT_HAND_PIN    2
#define LEFT_HAND_PIN    3
#define HEAD_PIN       4

#define TRIGGER_PIN    7
#define ECHO_PIN       6


Servo rightHand; 
Servo leftHand;
Servo head;
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);


void setup() {
  Serial.begin(9600);
  rightHand.attach(RIGHT_HAND_PIN);
  leftHand.attach(LEFT_HAND_PIN);
  head.attach(HEAD_PIN);
} 
 
 
void loop() { 
  head.write(90);
  delay(1000);
  
  float cmMsec;
  long microsec = ultrasonic.timing();
  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  
  Serial.print("CM: ");
  Serial.println(cmMsec);
  
  head.write(135);
  delay(1000);
  
  head.write(45);
  delay(1000);

  head.write(90);
  
  leftHand.write(0);
  rightHand.write(0);
  delay(500);
  leftHand.write(180);
  rightHand.write(180);
  delay(500);
}

После прошивки его в контроллер робот оживет. Да, для питания ему вполне достаточно обычного USB порта – сервоприводы в нем потребляют не так и много, да и датчик расстояния, если верить спецификации, тоже потребляет немногим больше светодиода. Смотрим, что получилось, на видео. Заранее прошу прощения, но для видео я немного модифицировал прошивку, чтобы было чуть более зрелищно. Все что я сделал – это добавил несколько движений руками. Однако прошивка, описанная выше, вполне сгодиться для проверки робота на работоспособность, она меньше и менее захламлена всякой ерундой.


В это время на консоли можно видеть следующее.
image

Выводы и планы


Ну, вот собственно и все, что я хотел рассказать. В дальнейшем планирую этого робота слегка улучшить, возможно, вставить пару датчиков (освещенности и температуры, например) и собственно поставить на полку — все же это первый мой робот. Спасибо за внимание.
Andrei Bas @andbas
карма
38,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (60)

  • +4
    всегда хотел — теперь точно сделаю! вдохновили=)
    • 0
      хаха :))) ооообалдеть прикол :). Тоже всегда хотел сделать что-нибудь двигающееся. В фавориты. обязательно сделаю
  • +3
    Чудесный робот и за такие-то деньги. Поздравляю!
    На полку ни в коем случае не ставьте — уж лучше на колёса с питанием от аккумулятора и управлением, скажем, по bluetooth :)
    • +3
      Сейчас он отлично пугает кота в автономном режиме — запитал по USB от зарядки Nook'а и перепрошил его на различные реакции при приближении объекта.
      • 0
        Опа… Это идея! Отпугивать кота от ноутбука, когда что то качается или просто отошёл.
        Любит, зараза, греться на клавиатуре.
      • 0
        + приделать ИК подсветку и камеру + Wifi. будет снимать кода на видео ночью :-)
  • 0
    «Ультразвуковой дальномер HC-SR04»
    А где он за 4 бакса достаётся? Через какие-нибудь китайские e-bay? Я пару раз ультразвуковые датчики в Москве искал, дешевле 700рублей их не видел в помине.
    • 0
      Да, все компоненты с eBay. Доставка затянулась на месяц где-то, но 4$ — это даже с запасом, если поискать и за 3$ с доставкой можно найти. Сам искал в Минске и Москве — меньше чем за 10$ за сам датчик без обвязки найти не получилось, а тут готовый модуль все же.
    • 0
      Поищите на www.aliexpress.com/wholesale?SearchText=HC-SR04&catId=0
      Там, конечно, ориентируются на мелкооптовые и оптовые продажи, но может кто-то еще захочет с вами заказать, в результате все-равно дешевле получится, чем покупать в магазине.
    • 0
      Ультразвуковой дальномер HC-SR04 есть на buyincoins. Там же есть подходящие сервоприводы, причем почти на 1$ дешевле. Да и сам Arduino Uno также можно взять там же, причем опять таки долларов на 5 дешевле.
      В принципе, на buyincoins есть все нужное для сборки робота, ключевые слова для поиска Arduino, Atmega, motor, servo, sensor, breadboard. Кроме колесной платформы у них, похоже, есть все нужное. Писал им, обещали найти и платформу.
      • 0
        Не) Мне не интересны не сервоприводы, ни Arduino) Мне этой развлекухи и так хватает. А УЗ датчики в паре мелких проектах использую и немножко напрягает его стоимость в Москве. Вот глаз за необычную стоимость зацепился. Да и на АлиЭкспрессе я его уже заказал, благо там аккаунт был…
  • +2
    Превосходно!
    Пожалуйста, еще и видео-запись с котом. :)
    • +2
      Да, кот стал бы финальным штрихом к этой статье=)
      • +9
        Я знаю, но в момент их знакомства не оказалось камеры под рукой, да и статья уже была готова. Впредь, без кота буду считать статью незаконченной и публиковать не буду :)
        • +12
          Блин, а мне, походу, кота с eBay заказывать придется =(
        • 0
          да, кот был бы совсем кстати!
  • +19
    Не совсем, но близко
  • +2
    А как насчёт того, чтобы поворачивать голову, скажем, за рукой, которой махают перед датчиком? :)
    • +1
      Тут сложнее, датчик всего один и невозможно определить в какую сторону руку отвели. Выхода два, как мне видится:
      — (простой) после того как рука (любой другой объект) будет выходить из зоны видимости, начинать «сканировать» местность, т.е. поворачивать голову в случайном направлении до тех пор, пока снова не «увидим» объект на похожем расстоянии. Плюс: можно реализовать уже сейчас. Минус: не будет эффекта слежения.
      — (более сложный) — напихать других датчиков расстояния, к примеру ИК, которые бы смотрели в обе стороны и останавливать голову в том случае, если оба улавливают объект. В случаях же когда только один из них видит объект — поворачиваться в его сторону. Минусы и плюсы противоположны первому варианту.
      • 0
        Вот я тоже подумал о первом варианте. Эффект слежения, в принципе, может и получится, если поворачивать голову не сильно далеко в обе стороны. Естественно, быстрые рывки объекта будут получаться плохо.
        • 0
          Ну, вопрос ведь в чем — невозможно оценить в какую сторону поворачивать голову, пусть и не на большой градус. Если объект ушел влево — мы не можем об этом знать точно и можем повернуть голову только наобум, и если этот случайный выбор падет на правую сторону — того самого эффекта не будет :)
          • +2
            Я не знаю характеристики вашего сервопривода, но при удалении объекта можно сразу же быстро повернуть голову вправо на небольшой угол и влево на этот же угол. Где расстояние меньше, там голову и оставить. Учитывая, что МК очень быстро определит смену расстояния, при достаточной скорости серво должно получиться вполне эффектно. Ну и поставить лимит на расстояние, чтобы не реагировал на всякие фоновые объекты, скажем, если ближе 30 см ничего нет, то просто медленно крутить головой в поисках. В общем, тут надо поиграться, может ничего путного и не выйдет :)
            • 0
              Ну и плюс, если объект двигался вправо, то скорее всего дальше он тоже будет двигаться вправо и наоборот. Таким образом ненужные рывки будут только при изменении направления.
              • 0
                Сервопривод в принципе должен с таким справиться. Скорость микроконтроллера — тоже не помеха мне кажется. Время считывания с датчика — чуть хуже, из-за особенностей его работы, но все равно не должно быть проблемой. Надо пробовать, что говорить. Я думаю можно придумать еще большое количество имплементаций.
      • +1
        Можно прикрутить киннет, только стоимость на порядок возрастёт :-)
    • 0
      Ну машут же, машут…
  • 0
    Это просто супер!
  • +7
    Научите его готовить и мыть посуду) Будет счастье)
    • +2
      Идея мне нравится, но в этом релизе это не планировалось. Однако, записать в бэклог все же стоит, мне кажется.
  • 0
    Показал видео вашего робота подруге: «Ути какая прелесть! Паш, а сделай мне такого же». Пойду ардуино заказывать, что уж поделаешь :)
    • 0
      Жена отреагировала приблизительно так же. Даже не думал, учитывая что она далека от всего этого.
    • +4
      Заодно научите подругу писать для своего бота прошивки. ;)
  • 0
    приноси же его уже в офис скорее… будем убивать всех багописюнов =))
    молодца! восхищаюсь!
    • +1
      Привет. Для офиса у меня другой проект немного, пока не готов по техническим причинам. По офису что-то должно ездить и всячески докучать его обитателям. Bot v1.0 — это была тренировка перед боем. Дай мне немного времени.
  • +1
    Обожаю такие посты на хабре
  • +1
    The cutest bot I saw here!
    Спасибо за позитив!
    • 0
      Всегда пожалуйста, не думал что вызову столько приятных эмоций
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      На самом деле, на видео как-то уж слишком шумно получилось — действительно. В реальной обстановке — это совершенно не мешает и не так страшно.
  • 0
    А что за лупу+штатив используете и где брали?
    • 0
      Это так называемая «третья рука». При сборке не использовалась, только для фото макетной платы, паял я в итоге её не используя. Покупал на радиорынке, в принципе должна быть в любом радиомагазине, но я бы посоветовал за ней бежать только когда ощутите реальную необходимость в ней.
  • 0
    Большой плюс к статье и к карме за творчество и усилия автора!
  • +1
    Шикарно 4000!
  • 0
    Валли?
  • 0
    Замечательно!!! Только может стоит сделать движения чуть медленней? Ато он какой-то нервный получается :)
    • 0
      Ну, это был пример, и программа писалась просто, чтобы проверить, что все действительно работает. А так — он просто молод и энергичен :)
  • 0
    Робот отличный! Начинаю поглядывать в сторону картонных коробок, чтобы их использовать в качестве материала для моего первого робота. ))
    • 0
      Это отлично, меньше картона будет на свалках, больше освоенного с толком
  • 0
    Хотел бы я такого. Посадил на монитор, чтобы он махал руками и вертел головой по пришествии письма.
    • 0
      Возможно вам будет интересно — как раз сейчас в разработке… Нет, не так, звучит слишком пафосно. В общем, сейчас вынашиваю мысль сделать внешний нотификатор для писем и не только. В главных ролях: Светодиодная Матрица, звезда экранов Arduino Uno и парочка сдвиговых регистров в статистах. Как только получится — обязательно опишу статьей.
      • 0
        Спасибо! Очень жду!
  • 0
    Подскажите, пожалуйста, как правильно называются «штырьки» припаянные к макетной плате (см фото по ссылке lh4.googleusercontent.com/-1h83lW2ykgI/T2LLRbaA5fI/AAAAAAAACYM/PABJ9_GxOug/s800/IMG_6065.JPG)?
    • 0
      Вроде бы «контактная гребенка», идет по 40 штырьков в ряду, но очень легко ломается на нужный размер.
      • 0
        Спасибо.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.