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

в 10:59, , рубрики: arduino, роботы, Электроника для начинающих, метки: ,

Количество попыток собрать робота у меня – не счесть. Но, то материалов не хватало, то навыков их обработки, то каких-то узлов, то знаний, как все эти штуки связать вместе. Если знакома такая ситуация – я постараюсь рассказать свой опыт сборки робота из подручных материалов и каких-то узлов купленных на 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

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

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

Автор: andbas


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js