23 июня 2013

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



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

Робот обошелся мне в 35$ и два дня отпуска, но восторг, испытанный от его первых движений, стоил намного больше. Если заинтересованы – прошу под кат (много картинок).

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

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



Ультразвуковой дальномер HC-SR04. Цена колеблется в районе 4$



Три микро сервопривода (маркируются «9g», если кто-то будет искать). Цена около 3,5$ за штуку.



(опционально) Макетная плата под пайку и паяльные принадлежности. Без этого пункта вполне можно обойтись, соединив все просто проводами, но, чтобы все было хоть с намеком на надежность, придется попаять.



Скотч, клей, ножницы, нож для бумаги, простой карандаш, линейка.

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

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

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



Теперь задача еще проще — сделать крышку. Главное здесь — подгадать размеры. Крышка будет немого больше основания, из-за добавившейся ширины стенок. В крышке делаем отверстие под сервопривод, смещенное к переднему краю. Также делаем небольшое отверстие ближе к тыльной части крышки — пригодится для прокладки проводов (на фото сделано только отверстие под сервопривод). Для придания прочности я обклеил углы крышки бумажным скотчем.



Рекомендация: все отверстия под сервоприводы лучше укрепить. Сделать это можно подклеив с внутренней стороны коробки дополнительную вставку из картона с прорезью под сервопривод. Таких вставки будет всего три, сделать их очень просто, но это придаст конструкции дополнительную прочность и позволит нам, закрепить сервопривод на винтики, не пробив картон насквозь.

Руки

Руки будут у нас просто прямоугольными коробочками. Подготовим и надрежем картон.



Склеим его в нужную нам форму.



Для крепления руки к сервоприводу одну из качелек (идут в комплекте) утопим в картонном прямоугольнике, предварительно вырезав ножом в нем форму это качельки.



Я просто заклеил эту конструкцию бумажным скотчем. Держится хлипко, но со своей задачей справляется. Руки сами не отваливаются.





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

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





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





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



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

В крышку нашего основания устанавливаем сервопривод и прикручиваем его двумя винтиками, идущими с ним в комплекте.



Чтобы робот мог смотреть вперед и ворочать головой – перед установкой головы лучше найти середину между двумя крайними положениями сервопривода. Сделать это можно любой оставшейся качелькой. Ось сервопривода следует установить в среднее положение. Устанавливаем на получившееся основание голову.



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



В основании склеим переднюю стенку с боковыми. Теперь вставляем сервоприводы в стенки нашего основания так, чтобы ось была смещена ближе к центру коробки.





Чтобы посмотреть, как это все смотрится вместе, а заодно оценить будущий фронт работ наденем крышку, прикрепим руки и посмотрим на робота еще раз с обеих сторон.





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

Понятное дело, что чтобы все это заработало – надо все это как-то соединить с Arduino. Так как у меня нет Sensor Shield, пришлось выкручиваться подручными средствами. Так родилась следующая схема.



Если очень грубо, то можно назвать это неким извращенным Arduino Shield – так как она вставляется прямо в контроллер. Но как-то у меня язык не поворачивается называть это shield, пусть будет просто схема.
Основная идея – сделать удобным подключение сервоприводов и датчика, запитав их от выхода +5V нашей Arduino. Это позволит роботу работать даже от USB порта нашего компьютера. С обратной стороны выглядит это еще хуже.





Как можно заметить, порты с 8-го по 13-й остались доступны, так что можно их использовать в будущем. Я бы конечно сделал расширение под все порты, но из-за нестандартного шага между двумя колодками Arduino сделать это на макетной плате не представляется возможным.
Монтаж практически подходит к концу. Остается подключить наши сервоприводы и датчик к плате.



Хотя это не имеет особенной важности и вы можете подключить по другому, но лично у меня получились следующие соотвествия портов и модулей:
2 – сервопривод правой руки;
3 – сервопривод левой руки;
4 – сервопривод головы;
6 – echo датчика расстояния, 7 – trig его же.

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



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

Для проверки работоспособности всех механизмов напишем роботу прошивку.
#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 порта – сервоприводы в нем потребляют не так и много, да и датчик расстояния, если верить спецификации, тоже потребляет немногим больше светодиода. Смотрим, что получилось, на видео. Заранее прошу прощения, но для видео я немного модифицировал прошивку, чтобы было чуть более зрелищно. Все что я сделал – это добавил несколько движений руками. Однако прошивка, описанная выше, вполне сгодиться для проверки робота на работоспособность, она меньше и менее захламлена всякой ерундой.

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



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

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


+1

Комментарии 0

Регистрация в один клик!


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