Уже в продаже: первая в своем роде книга «BEAM-робототехника. От азов до создания практических устрйств». Книга для кружков робототехники и самостоятельного обучения на дому. Книга доступна по цене 699 руб Подробнее о книге
Решил сделать робота на Arduino. Так как на всех сайтах предлагающих даныый контроллер был обещан быстрый старт и доступность даже новичку я выбрал именно его. Для изучения начала основ программирования Ардуина использовал книгу Улли Соммера, проект робота IE-POPBOT (есть на Русском языке на сайте Терраэлектроника), статьи с сайта http://robocraft.ru , ну и конечно http://www.google.ru Итак, для будущего робота я приобрел следующие детали: 1. Arduino Uno. 2. Драйвер моторов L-Motor Shield. Как я понял делает Калининград. (http://robocraft.ru/shop/index.php?route=product/product&product_id=172). Здесь же выложена для него библиотека. Достаточно не высокая стоимость и хороший функционал. 3. Колеса с мотор редуктором в комплекте (http://www.aliexpress.com/fm-store/806307/211015222-505652927/2pcs-lot-High-quality-tyre-Reduction-motor-fasteners--TT-motor-intelligent-car-wheels.html). 4. Серво моторы SG-50. Выписывал то же с Китая. Минимум 4 шт. (http://www.aliexpress.com/fm-store/206278/211153634-478942769/free-shipping-4pcs-5g-High-Torque-Micro-coreless-motor-Servo-SG50.html). 5. ИК дальномер SHARP GP2D120. Покупал в магазине, но он довольно распространен и его легко можно найти в Интернет магазинах России, так же как и колеса и сервы. Платформу сделал из оргстекла, его легко можно приобрести в рекламной мастерской. Соединительные кронштейны сделаны из оцинковки (обрезки от водоотливов). Легко режутся ножницами по металлу и можно загнуть под любой угол. В качестве источника питания использовал 6 аккумуляторов ААА, и два блока под них один на 4, другой на 2 штуки. В качестве передней опоры использовал мебельную колесную опору за 15 руб. Вот что получилось:
Робот, при подъезду к препятсвию на расстояние 10 см. остонавливается, измеряет расстояние до препятствия с право, с лево, и выбирает приоритетное направление. Всего четыре варианта действий.
Вот на него код (вполне вероятно, что корявый, но он работает)
Code
#include <Servo.h> #include <LMotorShield.h>
LMotorShield lms; int gp2; int gp3; int gp4; int gp5; int gp24; int gp25;
void setup() { { Serial.begin(9600); lms.begin(LMS_SERVOS); } pinMode(3,OUTPUT); // Motor A скорость pinMode(7,OUTPUT); // Motor A направление pinMode(11,OUTPUT); // Motor B скорость pinMode(8,OUTPUT); // Motor B направление pinMode(2,OUTPUT); // Motor A2 pinMode(4,OUTPUT); // Motor B1 } void Forward() { // Подпрограмма движения робота вперед digitalWrite(3,HIGH); digitalWrite(7,LOW); digitalWrite(11,HIGH); digitalWrite(8,LOW); } void Backward(){ // Подпрограмма движения робота назад digitalWrite(3,HIGH); digitalWrite(7,HIGH); digitalWrite(11,HIGH); digitalWrite(8,HIGH); } void motorStop(){ // Подпрограмма остановки мотора
digitalWrite(2,LOW); digitalWrite(4,LOW); } void Spin_Left(){ // Вращение в лево digitalWrite(11,HIGH); digitalWrite(8,LOW); digitalWrite(3,HIGH); digitalWrite(7,HIGH); } void Spin_Right(){ // Вращение в право digitalWrite(3,HIGH); digitalWrite(7,LOW); digitalWrite(11,HIGH); digitalWrite(8,HIGH); } void loop() { int i; for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума gp2=(gp2+analogRead(0)); } gp2=gp2/5; gp3=(2914/(gp2+5))+1; Serial.println(gp3);
if (gp3<10){ motorStop();
lms.servoWrite(1,90); delay(500);
lms.servoWrite(1,10); delay(500); for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума gp24=(gp24+analogRead(0)); } gp24=gp24/5; gp4=(2914/(gp24+5))+2; Serial.println(gp4);
lms.servoWrite(1,175); delay(500); int i; for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума gp25=(gp25+analogRead(0)); } gp25=gp25/5; gp5=(2914/(gp25+5))+2; Serial.println(gp5);
lms.servoWrite(1,90); delay(500);
if (gp4<12&&gp5<12){ motorRun(); Backward(); delay(1000); Spin_Left(); delay(1118); } else { if (gp4<12){ motorRun(); Forward(); delay(300); Spin_Left(); delay(569); } if (gp5<12){ motorRun(); Forward(); delay(300); Spin_Right(); delay(569); } if (gp4>12&&gp5>12){ motorRun(); Spin_Left(); delay(569); }}} else { motorRun(); Forward(); // Двигаться вперед }}
Простите, а зачем дальномеру две степени свободы? ну ладно если бы помимо рыскания был бы тангаж - это оправданно, но зачем крен?
- мб таким образом автор замеряет по вертикали и по горизонтали на предмет препятствия ? Как бы у дальномера вроде луч расходится конусообразно ... или как там, наоборот сходится...
Aleks_Crow, Первоночально был такой сценарий: робот подъезжает к ладожке ребенка, останавливается, крутит головой, как бы рассматривая его, потом смотрит в право, в лево и уезжает. В ыложенной программе эта серва не задействованна. Так что все намного проще. nightmare, спасибо за подсказку, наверное так и сделаю. S-T-A-L-K-E-R(А), Ссылка на ютуб есть в сообщении после слов Вот что получилось.. Не могу понять как делать дальше. Спасибо за редактирование. :)
Робот является базой для экспериментов, и начального изучения программирования. Осталось еще две сервы, можно прикрепить их спереди, и сделать две лапки. Переделать код и заставить его находить предмет (например солонку на столе), подъезжать к нему и захватывать двумя лапками. Как то так.
Евгений, одобряю твой проект, ставлю +1 в репу я как раз подобное собираю (так же на ордуино), почти все есть, вот только детальки с Китая приедут, и начну собирать подобие твоего робота! теперь знаю к кому обратиться если затруднюсь
моя группа Вконтакте посвещённая робототехнике http://vkontakte.ru/BeamRobots
Открыт набор на БЕСПЛАТНОЕ ОБУЧЕНИЕ в кружке BEAM-робототехника на 2022 - 2023 год!
Для учащихся г. Санкт-Петербург: Уважаемые учащиеся и родители! Мы сообщаем Вам о начале открытой регистрации в кружок "BEAM-робототехника (радиоэлектронные системы управления)" Центра робототехники Президентского физико-математического лицея №239 на новый 2022-2023 учебный год!
Записаться в нашу группу может совершенно любой учащийся города Санкт-Петербург в возрасте от 10 - 18 лет. Обучение в кружке полностью бесплатное. В рамках обучения в кружке ребята получат необходимые теоретические и практические знания по электротехнике, схемотехнике, созданию электронных схем и своих собственных печатных плат для роботов. Научатся работать с ручными инструментами, 3D-принтерами для изготовления деталей робота, лазерным станком для изготовления корпусов робота. Количество свободных мест - ограниченное, успейте подать Вашу заявку первыми! Перешлите этот пост своим друзьям и знакомым, кого может заинтересовать BEAM-робототехника
***
Давайте поближе разберемся, что же мы изучаем на кружке BEAM-робототехники. И так, приступим:
1. Вы начинающий робототехник Смотрите видео BEAM-робототехника
Вы новенький в робототехнике. Вам интересно это современное направление, вы очень хотите научиться создавать крутых роботов самостоятельно, но вы пока не знаете как именно это делать? Не беда! Мы с удовольствием обучаем начинающих робототехнике всем необходимым навыкам настоящего робототехника, с которыми в последствии вы с легкостью будете собирать крутых роботов , участвовать в соревнованиях , выставках или просто делать крутые поделки для себя. Для этого мы открыли специальное направление: Радиоэлектроника (#BEAM-роботы). В ходе обучения в этом кружке вы научитесь понимать и разбираться в электронике - знать что такое резистор, транзистор, светодиод, мотор и как это работает. Закон #Ома - куда же без него :) Вы изучите схемотехнику - будете разбираться и уметь читать схемы - без этого робота не сделать. Вы научитесь делать свои собственные платы роботов (куда паяют детальки по крутому - без проводков!) Вы поработаете с механикой - нужно знать как и каким образом использовать моторчики, редукторы и различные хитрости их применения. Конечно же научитесь правильно и профессионально паять - это очень важно, иначе ваши роботы постоянно будут разваливаться. Также в рамках этого кружка вы сможете собрать несколько роботов для участия в соревнованиях, и выставках, так как мы считаем, что ваш творческий потенциал очень важен для робототехники в целом.
***
В этом году мы соберем с вами шагающих роботов, будем участвовать в соревнованиях "шагающих роботов", роботов для "следование по линии", роботов для участия в "сумо", а также в творческих выставках.
*** 2. Как подать заявку в кружок?
Прошлый год показал, что желающих заниматься аналоговой робототехникой, создавать beam'ов и участвоват ьс ними в соревнованиях - достаточно много. Поэтому на новый учебный год мы решили увеличить количество мест, создав две группы.
Первая группа по BEAM-робототехнике #261РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана на ребят, кто только начинает изучать робототехнику и кому необходимо получить базовые знания по электротехнике, схемотехнике, и самим бим-роботам. Для того, чтобы записаться в группу 261РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=796 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Вторая группа по BEAM-робототехнике #371РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана для учащихся, кто уже сталкивался с направлением BEAM или сам изучал электротехнику и схемотехнику, кто уже принимал участие в соревнованиях с этими роботами. В рамках этой группы мы будет улучшать ваши теоретические и практические навыки, создавать сложных роботов и большую часть занятий посвящать интересным проектам и соревнованиям. Для того, чтобы записаться в группу 371РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=797 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Преподаватель данного направления: Мельников Сергей Алексеевич, педагог дополнительного образования Президентского физико-математического лицея №239, руководитель образовательного проекта SERVODROID - Центр робототехники для начинающих. Группа № 261РЭ и 371РЭ. Будьте внимательны, при заполнении анкеты.
*** Краткий план годового обучения:
1. Повторение теоретических знаний по электротехнике, схемотехнике, радиоэлектронике. Закрепление знаний на практике на основе создания самых простых конструкций роботов.
2. Создание роботов для участия в соревнованиях и выставках. Творческие проекты. Много много соревнований
3. Закрепление знаний для дальнейшего перехода с аналоговой робототехники (от BEAM-роботов) к цифровой робототехнике (роботам на Arduino). На последних занятиях вы соберете BEAM-ARDUINO подобного робота ;)