Всем Доброго Времени Суток! Данная статья будет посвящена любителям электроники, робототехники, а также людям с нестандартным взглядом на окружающие вещи!
Итак сейчас я постараюсь максимально наглядно описать процесс создания, сборки робота с электронной начинкой, а именно, на Ардуино! Поехали!
Что нам понадобится:
Трёхпроводной шлейф (3 штуки). Желательно взять подлиннее.
Обычные провода
Потенциометры
Резисторы (220 Ом)
Кнопка
Батарейный отсек с аккумуляторами
Макетная плата
Ну и, безусловно, сама ардуинка
А также плата расширения к ней - что то вроде MultiservoShield, для управления большим количеством сервоприводов
И еще любой конструктор, который будет основой нашего робота, поэтому желательно выбрать "крепкий"
Из инструментов понадобится:
Набор отверток, ключей и т.п.
А также паяльник, припой и флюс
Ну теперь начнем!
Шаг№1. Изготовление основного каркаса
Для начала соберем "две буквы Н" Выглядит это вот так:
Затем некоторую конструкцию, на которой наш робот будет стоять. Совсем необязательно как на рисунке - на ваше усмотрение.. У меня получилось так:
Устанавливаем нашу "Н" на опору
Снизу закручиваем болты
На другой "Н" закрепляем первый сервопривод, отвечающий за повороты головы нашего будущего робота
Получается что-то следующее:
Почти каркас готов! Осталось скрепить эти две конструкции металлическими пластинками и придать роботу высоты!
Шаг№2 Изготовление каркаса для будущих ушей робота
Для этого нам необходимо собрать две подобные конструкции и закрепить на них сервоприводы, как показано на рисунке:
Затем с помощью болтов и гаек соединим с основным каркасом. Получится следующее:
Вид сверху:
Ну что же, некий прообраз робота почти готов! Идем дальше..
Шаг№3. Изготовление глаз и вообще всей головы нашего робота!
Именно для этого я использовал старую трубку от домофона. Лично мне она напоминает лицо! Увидите дальше..
Проделываем два отверстия и прикручиваем качалку для сервопривода к трубке
Сразу же приклеим светодиоды по бокам и припаяем к ним проводки
Я использовал тоненькие:
Шаг№4 Изготовление ушей
Будем использовать обычные крышечки от маленьких коробочек
Также прикрутим качалки для серв
Теперь смело фиксируем части тела робота на сервах
Вот так:
Вид сверху:
Сзади:
В принципе наслаждаться роботом можно и сейчас, но мы усложним задачу.. Будем поворачивать глаза и уши робота с помощью потенциометров и нашей ардуинки
Шаг№5 Электроника
Соединив ардуино с мультисервошилдом, вставляем трехпроводной шлейф от каждой сервы к пинам 9, 10, 11 (Левое ухо, Правое ухо, Цент, если поставить робота лицом к нам)
Затем на макетной плате устанавливаем потенциометр, кнопку, резисторы.. Выглядеть это будет так, некрасиво конечно, но главное работает)
Более подробно!
Как установить кнопку:
Где белый провод - питание, Красный - цифровой вход микроконтроллера №6, а резистор уходит на землю(желтый провод)
Как установить потенциометр:
Красный провод - питание, Желтый - земля, Белый - аналоговый вход микроконтроллера №0 (другой потенциометр присоединяем точно также, только аналоговый вход контроллера №1)
На плате устанавливаем также резисторы для светодиодов:
ток будет подаваться с 3 и 5 пинов ардуино, а приходить по желтому и черному проводу и через резисторы уходить в землю (GND контроллера)
Ну в принципе все, с электроникой мы закончили! Осталось только вгрузить следующий скетч и поиграться с роботом!!
#include
#include
Multiservo myservo1;
Multiservo myservo2;
Multiservo myservo3;
int b,k1,p1,p2;
int A = 0;
int i = 0;
unsigned long m2=0;
unsigned long m1=0;
int r1=70;
int r2=110;
int r3=70;
int h1=0;
int h=0;
void setup()
{
myservo1.attach(9); // левое ухо
myservo2.attach(10); // правое ухо
myservo3.attach(11); // глаза
pinMode(6,INPUT); // кнопка
pinMode(3,OUTPUT); //глаза огни PWM
pinMode(5,OUTPUT);
}
void loop()
{
while(A==0) // цикл ручного управления роботом
{
b = digitalRead(6);
if (!b) k1 = 1;
if (b==1 && k1 == 1)
{
delay(10);
b = digitalRead(6);
if(b==1 && k1 == 1)
{
A=1;
k1=0;
}
}
p1=int(analogRead(A0)/6);
p2=int(analogRead(A1)/6);
myservo1.write(p1);
myservo2.write(p1);
myservo3.write(p2);
analogWrite(3,i);
analogWrite(5,i);
if(millis() >= m1+70 && h1==0)
{
i=i+4;
m1=millis();
if(i>250) h1=1;
}
if(millis() >= m1+70 && h1==1)
{
i=i-4;
m1=millis();
if(i==0) h1=0;
}
}
while(A==1) // цикл автономной работы робота
{
digitalWrite(13,0);
b = digitalRead(6);
if (!b) k1 = 1;
if (b==1 && k1 == 1)
{
delay(10);
b = digitalRead(6);
if(b==1 && k1 == 1)
{
A=0;
k1=0;
}
}
analogWrite(3,i);
analogWrite(5,i);
if(millis() >= m1+70 && h1==0)
{
i=i+4;
m1=millis();
if(i>250) h1=1;
}
if(millis() >= m1+70 && h1==1)
{
i=i-4;
m1=millis();
if(i==0) h1=0;
}
if(millis() >= m2+15 && h==0)
{
myservo1.write(r1);
myservo2.write(r2);
myservo3.write(r3);
r1=r1+1;
r2=r2-1;
r3=r3+1;
if(r1==110) h=1;
m2=millis();
}
if(millis() >= m2+15 && h==1)
{
myservo1.write(r1); // 110
myservo2.write(r2); // 70
myservo3.write(r3); // 110
r1=r1-1;
r2=r2+1;
r3=r3-1;
if(r1==70) h=0;
m2=millis();
}
}
}
Код немаленький, но поверьте это того стоит!
Кратко, что выполняет данная программа:
У нас есть кнопка, которая отвечает за 2 состояния системы: либо мы управляем роботом вручную, либо он осуществляет уже прописанные заранее движения. При нажатии на кнопку для нас меняются состояния, а в коде - меняются 2 цикла между собой, в которых прописаны соответствующие команды. Глаза нашего робота постепенно загораются, становятся все ярче и ярче, а затем затухают. именно поэтому мы подкличили светодиоды к пинам, поддерживающим PWM - широтно-импульсную модуляцию.
Фотки робота:
Небольшая видеозапись, как и что в итоге крутится:
В заключении хочется сказать, что, конечно же, данного робота можно еще долго и долго доводить до ума, но это уже вкус каждого человека. Творите! Изобретайте! Развивайтесь! Всем Удачи!
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.