Количество попыток собрать робота у меня – не счесть. Но, то материалов не хватало, то навыков их обработки, то каких-то узлов, то знаний, как все эти штуки связать вместе. Если знакома такая ситуация – я постараюсь рассказать свой опыт сборки робота из подручных материалов и каких-то узлов купленных на eBay.
Робот обошелся мне в 35$ и два дня отпуска, но восторг, испытанный от его первых движений, стоил намного больше. Если заинтересованы – прошу под кат (много картинок).
Собственно, когда все вышеописанное будет у вас в зоне досягаемости – можно приступать к сборке.
Для начала, сделаем из картона заготовку коробки без крышки. Главное, чтобы в основание коробки помещалась Arduino. Мое основание было с запасом где-то по 5мм с каждой стороны – это допуски для маневра, если он понадобится.
Чтобы упростить себе жизнь и заставить картон сгибаться по ровным линиям следует сделать надрезы в местах будущих перегибов. Главное не отрезать кусок. Хотя, даже если это произойдет, не надо особенно волноваться, скотч нас спасет.
Необходимо определиться, где будет тыльная сторона нашего робота, и прорезать с этой стороны отверстия под порты Arduino – один для питания, второй для USB. Чтобы не проколоться, я бы советовал, сделать отметки карандашом приложив саму плату. Все отверстия следует делать чуть меньше реальных размеров – в ходе монтажа картон еще подогнётся немного и это позволит плотно закрепить деталь.
Помимо этого делаем отверстия под сервоприводы рук и обеспечиваем себе доступ к кнопке reset Arduino.
Склеивать заготовку не стоит – сложно будет что-то в нее установить потом. Это лучше оставить напоследок.
Теперь задача еще проще — сделать крышку. Главное здесь — подгадать размеры. Крышка будет немого больше основания, из-за добавившейся ширины стенок. В крышке делаем отверстие под сервопривод, смещенное к переднему краю. Также делаем небольшое отверстие ближе к тыльной части крышки — пригодится для прокладки проводов (на фото сделано только отверстие под сервопривод). Для придания прочности я обклеил углы крышки бумажным скотчем.
Рекомендация: все отверстия под сервоприводы лучше укрепить. Сделать это можно подклеив с внутренней стороны коробки дополнительную вставку из картона с прорезью под сервопривод. Таких вставки будет всего три, сделать их очень просто, но это придаст конструкции дополнительную прочность и позволит нам, закрепить сервопривод на винтики, не пробив картон насквозь.
Руки будут у нас просто прямоугольными коробочками. Подготовим и надрежем картон.
Склеим его в нужную нам форму.
Для крепления руки к сервоприводу одну из качелек (идут в комплекте) утопим в картонном прямоугольнике, предварительно вырезав ножом в нем форму это качельки.
Я просто заклеил эту конструкцию бумажным скотчем. Держится хлипко, но со своей задачей справляется. Руки сами не отваливаются.
Повторяем все шаги по сборке руки еще раз и приклеиваем наше крепление к самим рукам. Я еще добавил пальцы — это придает роботу какой-то шарм.
Голова будет просто коробкой с отверстиями под ультразвуковой сенсор. Набив руку на прошлых элементах, собирается легко и просто. Главное не заклеить заднюю стенку (напротив прорезей под сенсор) — она должна открываться свободно. Прорезь сверху для язычка, который будет эту самую стенку удерживать.
Вид головы с другого ракурса.
Помимо этого в задней стенке необходимо проделать отверстие, такое же мы делали в крышке основания. Через это отверстие мы пропустим провода от датчика. Еще к верху задней крышки надо приклеить полоску картона – она будет служить своеобразным замком для нее.
После этого – устанавливаем сам сенсор с подкрепленными к нему проводками. У меня для этого используется цветной шлейф. Голова начинает приобретать законченный вид.
Снова взгляд с другой стороны.
Для крепления головы к сервоприводу делаем точно то же самое, что мы сделали для рук — вырезаем под качельку углубление в другом куске картона (по размеру чуть меньше, чем площадь основания) и заклеиваем там качельку скотчем. Получившийся элемент клеим к нашей голове снизу.
Фотографию я сделать забыл, но, надеюсь, понятно, что надо делать. Закрываем голову на приклеенный раньше язычок, просунув его через прорезь в верхней части коробки.
В крышку нашего основания устанавливаем сервопривод и прикручиваем его двумя винтиками, идущими с ним в комплекте.
Чтобы робот мог смотреть вперед и ворочать головой – перед установкой головы лучше найти середину между двумя крайними положениями сервопривода. Сделать это можно любой оставшейся качелькой. Ось сервопривода следует установить в среднее положение. Устанавливаем на получившееся основание голову.
Для подогрева собственного любопытства можно установить крышку с головой на основание. После этого нужно будет все же ее снять, но интерес есть интерес.
В основании склеим переднюю стенку с боковыми. Теперь вставляем сервоприводы в стенки нашего основания так, чтобы ось была смещена ближе к центру коробки.
Если взглянуть с задней стороны нашего робота, то картина будет приблизительно следующая. Кстати, тут отлично видны вставки из картона под сервоприводы, о которых я говорил ранее.
Чтобы посмотреть, как это все смотрится вместе, а заодно оценить будущий фронт работ наденем крышку, прикрепим руки и посмотрим на робота еще раз с обеих сторон.
Знакомое фото? Да, собственно с него я начал пост. И да, действительно на нем робот еще не готов, но теперь уже понятно как это будет выглядеть. Вид с другой стороны.
Понятное дело, что чтобы все это заработало – надо все это как-то соединить с Arduino. Так как у меня нет Sensor Shield, пришлось выкручиваться подручными средствами. Так родилась следующая схема.
Если очень грубо, то можно назвать это неким извращенным Arduino Shield – так как она вставляется прямо в контроллер. Но как-то у меня язык не поворачивается называть это shield, пусть будет просто схема.
Основная идея – сделать удобным подключение сервоприводов и датчика, запитав их от выхода +5V нашей Arduino. Это позволит роботу работать даже от USB порта нашего компьютера. С обратной стороны выглядит это еще хуже.
Устанавливаем на контроллер.
Как можно заметить, порты с 8-го по 13-й остались доступны, так что можно их использовать в будущем. Я бы конечно сделал расширение под все порты, но из-за нестандартного шага между двумя колодками Arduino сделать это на макетной плате не представляется возможным.
Монтаж практически подходит к концу. Остается подключить наши сервоприводы и датчик к плате.
Хотя это не имеет особенной важности и вы можете подключить по другому, но лично у меня получились следующие соотвествия портов и модулей:
Запихиваем Arduino со всеми проводами в коробку нашего основания и заклеиваем заднюю крышку этой самой коробки. После того, как клей подсохнет — пододвигаем Arduino так, чтобы порты попали в проделанные для них дырки.
Остается только радоваться — сборка полностью завершена.
Для проверки работоспособности всех механизмов напишем роботу прошивку.
После прошивки его в контроллер робот оживет. Да, для питания ему вполне достаточно обычного USB порта – сервоприводы в нем потребляют не так и много, да и датчик расстояния, если верить спецификации, тоже потребляет немногим больше светодиода. Смотрим, что получилось, на видео. Заранее прошу прощения, но для видео я немного модифицировал прошивку, чтобы было чуть более зрелищно. Все что я сделал – это добавил несколько движений руками. Однако прошивка, описанная выше, вполне сгодиться для проверки робота на работоспособность, она меньше и менее захламлена всякой ерундой.
В это время на консоли можно видеть следующее.
Ну, вот собственно и все, что я хотел рассказать. В дальнейшем планирую этого робота слегка улучшить, возможно, вставить пару датчиков (освещенности и температуры, например) и собственно поставить на полку — все же это первый мой робот. Спасибо за внимание.
Робот обошелся мне в 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 порта – сервоприводы в нем потребляют не так и много, да и датчик расстояния, если верить спецификации, тоже потребляет немногим больше светодиода. Смотрим, что получилось, на видео. Заранее прошу прощения, но для видео я немного модифицировал прошивку, чтобы было чуть более зрелищно. Все что я сделал – это добавил несколько движений руками. Однако прошивка, описанная выше, вполне сгодиться для проверки робота на работоспособность, она меньше и менее захламлена всякой ерундой.
В это время на консоли можно видеть следующее.
Выводы и планы
Ну, вот собственно и все, что я хотел рассказать. В дальнейшем планирую этого робота слегка улучшить, возможно, вставить пару датчиков (освещенности и температуры, например) и собственно поставить на полку — все же это первый мой робот. Спасибо за внимание.